Làm phần mềm cũng như xây nhà

Xây dựng một ngôi nhà không phải là một quá trình dễ dàng, và sửa chữa một ngôi nhà còn khó khăn hơn thế. Phần mềm cũng tương tự vậy!

maxresdefault

Đây là nhà của mình lúc 5 tuổi (hình lấy trên mạng nhưng giống thật, hihi)

Nếu bạn ở vùng quê nghèo như mình, bốn bức tường và một cái mái là đã được gọi là nhà. Những căn nhà như vậy được xây rất nhanh và cũng được dùng để ở, để buôn bán, … Một người thợ hồ lành nghề có thể làm cho bạn một căn nhà như vậy.

7ed63115a23bc63562fa9618052818b6

Còn đây là nhà mà mình muốn có trong tương lai 😀

Nhưng để xây một căn nhà to lớn hơn, nhiều tầng hơn, thiết kế đẹp, tuyệt vời về hình thức và chức năng, tiết kiệm tiền, … thì bạn sẽ không thuê một người thợ hồ lành nghề. Công việc này liên quan nhiều kỹ năng và chuyên môn, đây là lúc ta cần một kỹ sư.

Mọi thứ cũng tương tự với phần mềm. Nhớ lại năm rồi, khi học xong Nhập môn Công nghệ Phần mềm, tôi cứ nghĩ là mình đã biết “xây” phần mềm (lúc đó thật ngây thơ và ảo tưởng biết bao).  Bất kỳ lập trình viên nào cũng có thể viết cho bạn một chương trình “hello world“. Nếu bạn muốn xây dựng một ứng dụng phân tán, có thể mở rộng để phục vụ lượng lớn khách hàng, đó là một câu chuyện hoàn toàn khác.

Hầu hết các dự án phát triển phần mềm “chết” trước khi họ bắt đầu vì không có kế hoạch và chuyên môn (câu này không phải mình nói đâu, xem đến cuối bài để biết nhé). Hãy cùng nhìn lại về những người có trách nhiệm trong một dự án:

the-dursleys-in-harry-potter-307910

1. Chủ sở hữu (The Owners) – Đây là những người muốn kiểm soát dự án nhiều nhất. Họ thường có ngân sách nhất định và cố gắng quản lý dự án trong phạm vi ngân sách. Điều đó là có nhiều cái mà họ phải đánh đổi và thoả hiệp, đây cũng là lúc mọi thứ trở nên sai. Điều đó có nghĩa là họ cần phải có một vài thỏa hiệp. Đây là nơi mà một số cái sai xảy ra. Khi bạn muốn làm phần mềm, bạn có một ý tưởng khá hay, hình dung nó sẽ như thế nào trước khi dự án bắt đầu.

inside_of_weasley27s_tent

Một kỹ sư giỏi sẽ giúp bạn quản lý các kế hoạch để ở trong ngân sách và phần mềm sẽ tiến triển. Nó có thể bắt đầu như một cái lều và kết thúc giống như một khách sạn trên nền của một cái lều (nhìn hình trên và hiểu ý mình muốn nói chứ?). Câu chuyện có thể tệ và diễn ra theo chiều hướng ngược lại nếu bạn chọn một người lành nghề. Có một câu nói “begin with the end in mind” – câu này rất đúng trong phát triển phần mềm.

07_pp_094

2. Người quản lí, Thầu dự án (Project Manager) là những người lập kế hoạch và họ thường biết làm thế nào để hoàn thành công việc. Các tướng lĩnh giỏi thường ước tính được chi phí khi hành quân. Họ nghĩ về thời gian, giai đoạn, … những thứ rất vĩ mô. Nếu không có PM, bạn có thể gặp rắc rối. Một số dự án phần mềm thường đem người có kỹ năng cao cấp nhất làm Tướng. Điều đó tốt đấy nhưng hãy cẩn thận, vì có thể bạn đem Trương Phi đặt vào vị trí Gia Cát Lượng, Người kỹ thuật tốt nhất là người xây dựng. Ông ấy giỏi việc xây dựng ứng dụng tốt nhất nhưng không giỏi trong việc ngân sách, việc quản lí thời gian, việc phân chia công việc …

chibi_artist_by_by_art-d9l1yp0

3. Người thiết kế (Designers): là những người thường nhìn trước cho dự án vì họ thường hiểu về người dùng. Khi làm phần mềm, đặc biệt là Web, đôi lúc ta nghĩ là việc này làm sau cũng được. Nhưng khi làm mọi thứ đã định hình thì bạn sẽ không muốn thay đổi đâu. (Database làm xong, API đã làm xong, người dùng tự nhiên muốn thêm “tí xíu” thông tin cho page nào đó  – mấy bạn freelancer chắc hiểu điều này ^^)

internal-dev-test-01-700x462

Em xin mượn cái hình ^^

4. Kiểm định chất lượng (QA) Ngay cả những dev xịn nhất cũng có lúc phạm sai lầm và đó là nơi mà “kẻ-mà-ai-cũng-biết-là-ai-đấy” thể hiện sức mạnh. QA đảm bảm cho “toà nhà” đạt chất lượng, họ nhìn vào tất cả những điều có thể sai và đảm bảo rằng nó không xảy ra. Họ sẽ làm rất nhiều “phép thử”, (nhiều trường dev không nghĩ nó có trên đời đâu >”<) để đảm bảo mọi thứ tốt đẹp.

“Code anh không có Bug, tất cả chỉ là tính năng” 

Còn rất nhiều thứ ảnh hưởng đến phần mềm, và rất nhiều vai trò quan trọng trong một dự án phần mềm. Trên đây chỉ là những gì mịnh muốn chia sẻ theo quan điểm cá nhân và những role phổ biến hiện nay. Nếu các bạn muốn biết thêm thì đọc bài này nhe: Why Building Software is Just Like Building a House – tác giả viết chi tiết, so sánh hay, các bạn học kinh tế đọc vẫn hiểu (theo mình là vậy, còn các bạn đó đọc hiểu không là chuyện các bạn đó, hihi).

 

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a website or blog at WordPress.com

Up ↑

%d bloggers like this: