Ý tưởng của bài viết này xuất phát từ một câu hỏi vừa thú vị vừa hơi … buồn cười của một bạn đọc:
Ủa anh ơi, lập trình viên mình thì công việc chính là viết code. Vậy chỉ cần viết code giỏi là thành lập trình viên giỏi thôi! Cần gì những kĩ năng này nọ v...v nữa ạ?
Đây là một câu hỏi rất bình thường và hiển nhiên, không phải hỏi ngu hay gì cả; vì thời mới ra trường mình cũng từng có thắc mắc tương tự.
Giờ đây, sau khi đã bị cuộc đời coder vùi dập vài năm, mình đã trải nghiệm tạm đủ để có thể trả lời câu hỏi này (cho bạn đọc, cũng như cho mình ngày xưa)
Chàng trai à, thật ra, code không quan trọng như bạn nghĩ đâu. Bởi vì, công việc chính của lập trình viên... không phải là viết code!
Công việc chính của lập trình viên không phải là viết code!
Hẳn các bạn sẽ thắc mắc: Ủa, dân developer tụi mình ngồi máy gõ code hoài mà?
Hãy thử nhìn qua những ngành nghề khác một chút:
- Công việc chính của nhà văn không phải là viết chữ, mà là viết truyện ngôn tình, đam mỹ, truyện bựa, tiểu thuyết
- Công việc chính của tài xế không phải là lái xe, mà là di chuyển con người/hàng hóa tới nơi một cách an toàn.
- Công việc chính của designer không phải là nghịch Photoshop, mà là tạo ra một tấm poster/banner đẹp, một design đẹp
Ngành lập trình cũng vậy. Trong ngành này, code chỉ là công cụ, không phải là mục đích cuối cùng. Viết code giỏi chỉ giúp bạn làm coder giỏi chứ không phải là developer giỏi.

Công việc chính của chúng ta là đem lại giá trị cho công ty, cho khách hàng bằng cách tạo ra sản phẩm (web, app), giải quyết vấn đề (quản lý thông tin, báo cáo) … thông qua code.
Công ty không trả tiền cho bạn để bạn ngồi code. Công ty trả tiền cho bạn để bạn viết code và giải quyết vấn đề mà công ty cần.
Không nên “lậm” quá sâu vào kĩ thuật
Không thể phủ nhận, yếu tố kĩ thuật là một trong những yếu tố quyết định sự “sống còn” của một dự án.
Chọn nhầm công nghệ/technical stack không phù hợp với dự án sẽ khiến ta mất nhiều thời gian code và sửa lỗi hơn. Đôi khi xui xui còn phải đập đi làm lại (Ví dụ làm web bán hàng mà dùng C, C++ chẳng hạn)!
Tuy thế, dân developer mình đôi khi khoái đi sâu về kĩ thuật, thích thử nghiệm những framework mới, công nghệ mới mà quên đi những yếu tố khác như: trình độ thành viên trong team, deadline của dự án, nhu cầu của công ty.
Làm việc lâu, bạn sẽ biết rằng, sự thành công của một dự án không phụ thuộc vào việc bạn code chuẩn ra sao, bạn dùng công nghệ hiện đại gì, mà phụ thuộc vào việc nó có đạt được mục tiêu mà bên business đề ra hay không?

Ví dụ nhé, bên cấp trên họ yêu cầu 1 trang landing page, một trang web bán hàng nhỏ với deadline là 1 tháng:
- Bạn có thể dùng React/VueJS để làm front-end, dùng NodeJS + Express để làm back-end. Setup CI/CD và linter đủ thứ, áp dụng kiến trúc microservice để hệ thống có thể scale được cho nghìn người sử dụng, sau đó deploy lên cloud. Sau một tháng bạn chỉ hoàn thành được 30%
- Hoặc bạn cũng có thể dùng WooCommerce để làm một trang web bán hàng và landing page, sau đó customize lại cho phù hợp với công ty, hoàn thành dự án đúng hạn.
Cách thứ 2 sẽ đem lại một dự án thành công, còn cách 1 sẽ làm dự án thất bại.
Đứng từ góc nhìn kĩ thuật, cách 1 là cách tiếp cận hoàn toàn đúng và vô cùng chuẩn; còn cách 2 sẽ dẫn tới nhiều vấn đề mở rộng về sau. Tuy nhiên, từ góc nhìn của business, cách 2 giúp bạn có sản phẩm kịp thời, đúng hạn, đáp ứng được yêu cầu của công ty.
Các bạn thấy đấy, không phải lúc nào công nghệ tốt nhất, qui trình chuẩn nhất … cũng là lựa chọn đúng đắn!
Note: Nếu là một dự án lớn, về lâu về dài thì cách 1 sẽ tiết kiệm nhiều công sức hơn, dự án dễ mở rộng hơn. Một người technical lead/software architecture sẽ biết cách lựa chọn cách 1 hay 2 tùy vào quy mô và bản chất của dự án.
Code chỉ là một phần rất nhỏ trong thành công của dự án
Trong một dự án phần mềm, vai trò của team dev khá là quan trọng. Các bạn hẳn đã nghe nói đến các startup có founder tự tay code lên toàn bộ sản phẩm!
Trên thực tế, thành công của một sản phẩm/dự án còn phụ thuộc vào team test, team sale, team marketing chứ không chỉ mỗi team dev.

Do vậy, mong bạn đừng nghĩ rằng developer là trung tâm của vũ trụ mà quên đi đóng góp của các bộ phận khác:
- Đừng chửi ông PM hoặc manager không biết gì về code. Không có ổng thì bạn làm gì có team để code, làm gì khách hàng chịu đưa tiền, đưa thưởng
- Đừng trách mấy lão sale ngồi chém gió với khách hàng, kiếm cái deadline trên trời về cho anh em OT mệt nghĩ. Không có họ thì anh em mình đói meo râu ra không có việc để làm ấy chứ.
- Đừng trách các bạn tester hay bới lông tìm bug. Phải có họ thì phần mềm mới hoàn hảo, ít lỗi, ít bị khách hàng chửi được.
Kết
Túm cái váy lại, mình chỉ muốn nhắn nhủ với các bạn đôi điều:
- Dân developer chúng mình rất thích code, viết rất nhiều code. Tuy nhiên, hãy nhớ rằng code không hề quan trọng như bạn nghĩ đâu.
- Thứ quan trọng chính là giá trị bạn đem lại, sản phẩn bạn làm ra, vấn đề bạn giải quyết! Do vậy, trước khi code, hãy nghĩ mình cần giải quyết vấn đề gì? Làm sao để đem lại giá trị cho công ty, cho người dùng.
- Có rất nhiều yếu tố phi kỹ thuật ảnh hưởng đến thành công của một dự án. Để thành công, hãy cố gắng quan sát, đưa ra lựa chọn phù hợp với những yếu tố này nhé!
Cảm ơn anh nhiều. Kinh nghiệm xương máu mà ít khi mấy ai chia sẻ. Chúng e rất cần những kinh nghiệm của bậc tiền bối đi trước ! Ahihi…..
LikeLike
Chọn đúng plarform thì coder nhiều khi không code dòng nào vẫn làm xong việc. Quan trọng là xong việc thôi 😀
LikeLike
anh ơi, trong sách Tôi Đi Code Dạo a có đề cập đến việc anh đi du học, vậy a giải thích rõ để đi du học như a thì phải làm như nào ạ?
LikeLike
À e xem bài này nhé https://toidicodedao.com/2015/10/27/tam-biet-viet-nam-chia-se-kinh-nghiem-nop-don-du-hoc-phan-1/
LikeLike
Theo phong cách sát thủ
có môt ông kia kêu bạn đi giết thằng nọi
Bạn hét cái giá trên trời vì bạn có công phu sử dụng giao rất diêu luyện nhưng khi bạn tiếp cận ông ta thì lại fail.
Thằng nọ lấy giá thấp hơn cả chục lần nó chỉ đứng đằng xa bắn cái đùng thế là xong việc.
LikeLike
dev minh chu yeu suy nghi de giai quyet van de thoi gian code chi chiem 10% deadline la cung
LikeLike
Chào Hoàng, tôi vừa đọc mấy bài blog của bạn đều hay. Nhất là bài này, rất đồng ý kiến với tôi về các kỹ năng của một developer. Mình rất muốn làm quen để giao lưu với bạn.
LikeLike
Cảm ơn bạn, bài viết rất hay!
LikeLike