Làm thế nào để trở thành người phát triển phần mềm tốt

GS John Vu24/01/2025 12:00
Làm thế nào để trở thành người phát triển phần mềm tốt

Tôi nhận được email từ một người bạn hỏi về cách đánh giá người phát triển phần mềm để xác định ai tốt ai xấu.

Sau đây là câu trả lời của tôi:

Để bắt đầu, bạn nên biết về chất lượng của mã mà người ta viết ra. Giả sử bạn có một người phát triển phần mềm có thể viết được một nghìn dòng mã một ngày. Người đó có phải là người phát triển phần mềm lớn không? Không nhất thiết đâu nếu người đó có nhiều lỗi. Tất nhiên người đó phải sửa chúng nhưng cứ mười lỗi người đó sửa, người đó lại tạo ra thêm năm lỗi nữa thì đến cuối cùng, người đó vẫn cò nhiều mã bị lỗi.

Theo ý kiến tôi, người phát triển phần mềm nên được đánh giá dựa trên phẩm chất chứ KHÔNG dựa trên số lượng mã. Người phát triển phần mềm tốt nên biết mã chất lượng là gì và làm việc cẩn thận để tạo ra mã tốt, người đó nên biết cần mất bao lâu để làm công việc và lập kế hoạch công việc tương ứng, kể cả viết các trường hợp kiểm thử trước khi người đó bắt đầu viết mã.

Người phát triển phần mềm lớn nên hiểu rõ ràng vấn đề trước khi giải quyết nó. Người đó nên viết các yêu cầu ra và đề nghị gặp gỡ với khách hàng để thảo luận cách người đó sẽ thực hiện chúng dựa trên điều người đó hiểu vấn đề. Người phát triển phần mềm lớn biết rằng đáp ứng yêu cầu của khách hàng là then chốt cho thành công dự án và người đó muốn tránh việc giải quyết vấn đề sai.

Người đó muốn chắc điều người đó viết trong tài liệu đích xác là vấn đề khách hàng muốn làm việc tiếp. Nếu có hoài nghi nào, người đó sẽ hỏi các câu hỏi để đảm bảo rằng người đó hiểu hoàn toàn điều người đó phải làm. Ngay cả khi người đó hiểu các yêu cầu, người đó sẽ KHÔNG nhảy vào viết mã ngay mà nghĩ về các cách khác để giải quyết vấn đề và xác định giải pháp tốt nhất và thời gian cần để thực hiện nó.

Người phát triển phần mềm lớn sẽ phân tích cẩn thận giải pháp để xác định cách nó sẽ tác động lên công việc của các thành viên khác trong tổ và cách những người khác sẽ tác động lên việc của mình. Người đó sẽ dành thời gian để hiểu mối tương quan giữa các cấu phần trong dự án vì người đó không làm việc một mình.

Người phát triển phần mềm tốt phải là thành viên tổ tốt bởi vì người đó hiểu chiều hướng của dự án, không chỉ về phần mềm mà về các thành viên khác của tổ nữa. Người đó biết cách vấn đề cần được giải quyết thế nào cùng với mọi người như một tổ. Người phát triển phần mềm tốt kết thúc dự án của họ đúng thời gian nhưng cũng chăm nom về tổ và sẵn sàng giúp người khác khi cần.

Người phát triển phần mềm mà không thể làm việc được trong tổ, thì không thể chia sẻ được thông tin với tổ, và không thể đóng góp được cho thành công của tổ sẽ KHÔNG là người phát triển tốt. Người thích làm việc một mình hay muốn là “anh hùng” KHÔNG có chỗ trong dự án phần mềm bởi vì CÔNG VIỆC PHẦN MỀM LÀ CÔNG VIỆC TỔ.

Người phát triển phần mềm lớn bao giờ cũng nghĩ những điều mới, tìm ra các công nghệ mới, thường xuyên cập nhật kĩ năng của mình một cách dự ứng. Người đó không chờ đợi người quản lí yêu cầu mình phải tham gia khoá đào tạo, hay đọc sách để cải tiến kĩ năng.  Người phát triển phần mềm lớn cũng có khả năng học từ người khác. Bằng việc làm cho mình thành người học cả đời, người đó có thể hấp thu tri thức mới vì người đó học từ các thành viên tổ của mình và từ người khác. Với người đó, mọi người đều có thể là thầy giáo.

Bằng việc đọc qua ở đây, một số trong các bạn có thể nói: “Đó là nhiều việc cho một người rồi. Như thế có quá lí tưởng không?” Tất nhiên, đó là nhiều việc nhưng đó là chỗ bạn muốn alf – người phát triển tốt. Tôi tin rằng bạn càng cải tiến kĩ năng của mình tốt hơn, bạn sẽ càng trở nên có cơ hội tốt hơn là bạn đã từng tưởng tượng.  Nếu bạn chọn việc nghĩ về bản thân mình là “đủ tốt rồi” và chẳng có gì thêm nữa để học, bạn bao giờ cũng sẽ chỉ là người lập trình. Nếu bạn không trưởng thành, bạn thậm chí không ở được cùng chỗ mà bạn bị ở sau khi người khác đang tiến bộ.

Nếu bạn làm việc cho một công ti, người quản lí của bạn sẽ đánh giá bạn để xác định liệu có đề bạt bạn hay không. Người phát triển tốt phải là người có trách nhiện với công việc của mình và với công ti của mình. Khi cần, người đó sẽ làm việc cần mẫn hay thậm chí làm cả vào ngày nghỉ cuối tuần để cho công việc được hoàn thành. Người đó sẽ về muộn nhất có thể được và nhận trách nhiệm về việc của mình.

Tất nhiên, điều này có thể không phải là nhất thiết vì người đó có thể được trả tiền cho việc làm thêm nhưng đó là dấu hiệu về người phát triển tốt. Một số người chỉ muốn làm việc theo giờ được trả lương thì họ có thể là người phát triển, nhưng họ sẽ không bao giờ là người phát triển lớn. Người phát triển lớn là người chơi theo tổ cho tới cuối, và coi tổ mình, nhóm mình như gia đình mình.

Có nhiều người phát triển trong công nghiệp, nhưng có ít người phát triển lớn. Tại sao?  Bởi vì ai đó chỉ muốn làm việc nhưng người khác lại yêu làm việc và họ làm với đam mê. Tôi tin không có đam mê về điều bạn làm, bạn sẽ không là người phát triển lớn. Thiếu đam mê là lí do số một mà nhiều người phát triển không bao giờ trở nên lớn.  Đó cũng là lí do số một để mọi người không thành công trong nghề của họ. Người phát triển đam mê sẽ làm tốt hơn bất kì ai không có đam mê về việc của họ, vai trò của họ và dự án của họ.

Người phát triển phần mềm lớn sẽ nói: “Tôi làm nó bởi vì tôi yêu nó.” Đó là điều người phát triển phần mềm lớn tất cả là gì, chăm nom, chuyên nghiệp và với nhiều đam mê.

Engish version

How to be a great software developer

I receive an email from a friend asking about how to evaluate a software developer to determine a good one from a bad one. Following is my answer:

To begin, you should know about the quality of code that the person wrote. Assume you have a software developer who can code thousand lines of code in a day. Is he a good software developer? Not necessary if he has a lot of defects. Of course he has to fix them but for every ten defects that he fixed, he caused five more defects so in the end, he still has a lot of defective code. In my opinion, software developer should be evaluated based on the quality NOT quantity of code. A good software developer should know what quality code is and carefully work to produce good code, he should know how long it would take to do the work and plan the works accordingly, including writing test cases before he even starts to code.

A good software developer should clearly understand the problem before solves it. He should write the requirements down in a document and request meeting with customer to discuss how he would implement them based on what he understands the problem. A good software developer knows that meeting customers’ requirements is the key for project success and he wants to avoid the issue of solving the wrong problem. He wants to make sure that what he writes in the document is exactly the problem that customers want him to work on. If there is any doubt, he will ask questions to ensure that he completely understands what he should do. Even when he understands the requirements, he will NOT jump into coding right away but thinks about various ways to solve the problem and determines the best solution and the time it takes to do it.

A good software developer will carefully analyze the solution to determine how it will impact other team member’s works and how other people will impact his works. He will spend time to understand the interrelationship between components in the project since he does not work alone. A good software developer should be a good team member because he understands the direction of the project, not only on his parts but other team members too. He knows how the problem should be solved together as a team. A good software developer finishes their projects on time but also care about the team and ready to help others when needed.

A software developer who can not work in team, can not share information with the team, and can not contribute to the success of a team will NOT be a good developer. A person who likes to work alone or want to be “A hero” has NO place in software project because SOFTWARE WORK IS TEAM WORK. A good software developer always learn new things, find out about new technologies, constantly updating his skills proactively. He does not wait for their managers to ask him to take a training course, or read books to improve the skills.  A good software developer also has the ability to learn from others. By making him a lifelong learner, he can absorbs new knowledge as he learns from his team members and from others. To him, everybody could be his teacher.

By reading through here, some of you may say: “That is a lot of works for a person. Is it too idealistic?” Of course, that is a lot of works but that is where you want to be – a good developer. I believe that the better you can improve your skill, the better chance you will become greater than you have ever imagined.  If you choose to think of yourself as “good enough” and have nothing more to learn, you will always be just a programmer. If you are not growing, you are not even stay in the same place but you are behind as others are making progress.

If you are working for a company, your manager will evaluate you to determine whether to promote you or not. A good developer must be a responsible person to his work and to his company. When needed, he will work hard or even come in on the weekend to get the work done. He will stay as late as possible and take responsibility for his works. Of course, this may not be a necessity since he may not get paid for the extra works but it is the sign of a good developer. Some people just want to work according to the paid hours then they could be developers, but they will never be great. Great developers are team players to the end, and view their team, their company like their family.

There are many developers in the industry, but there are few great developers. Why?  Because some only want to work but other love to work and they work with passions. I believe without passion in what you do, you will not be a great developer. Lack of passion is the number one reason so many developers never become great.  It is also the number one reason people do not succeed in their career. A passionate developer will outperform anyone without a passion about their job, their role, and their project.

A great software developer would say: “I do it because I love it”. That is what great software developer is all about, caring, professionalism and with lot of passions.

 


Gửi bình luận
(0) Bình luận
1

Công nghệ cao

Trong bài diễn văn hàng năm với quốc hội Mĩ để báo cáo về hoàn cảnh quốc qua và nêu đại cương kế hoạch mà chính phủ Mĩ muốn theo đuổi trong tương lai, tổng thống Barack Obama đã làm nổi bật tiềm năng cho tạo việc làm trong các lĩnh vực công nghệ sinh học và công nghệ thông tin.
2

Thiếu hụt kỹ năng công nghệ thông tin

Trong vài năm qua, vấn đề thiếu hụt kĩ năng CNTT thường được nhắc tới ở Mĩ và nó làm khuấy động nhiều cuộc tranh cãi.
3

Đối thoại với sinh viên ở Nam Kinh, Trung Quốc

Tháng trước khi tôi đọc bài giảng ở Nam Kinh, Trung Quốc, tôi có cơ hội nói chuyện với sinh viên đại học và họ hỏi tôi nhiều câu hỏi. Một sinh viên ghi lại nó và công bố nó trong báo trường như sau:
4

Lập kế hoạch dự án phần mềm

Một người phát triển phần mềm tới gặp tôi: “Tôi được đề bạt làm quản lí một dự án nhỏ. Ông chủ của tôi bảo tôi hội tụ vào viết mã chứ KHÔNG lập kế hoạch bởi vì lập kế hoạch là phí thời gian. Viết mã sẽ cho tổ nhiều thời gian hơn để hoàn thành dự án. Câu hỏi của tôi là làm sao lập kế hoạch cho dự án mà không phí thời gian và vẫn đạt tới thành công?”
5

Tại sao học công nghệ tính toán?

Một người mẹ hỏi tôi: “Tại sao thầy cổ vũ học công nghệ tính toán? Con gái tôi sẽ tốt nghiệp phổ thông năm nay và nó quan tâm tới khu vực công nghệ. Chọn lựa của nó là gì?”

Bill Gates ở Đại học Thanh Hoa

Trong chuyến thăm lần thứ 10 tới Trung Quốc, chủ tịch Microsoft Corporation Bill Gates đã làm khuấy động ở Bắc Kinh

Việc làm

Tuần trước tôi nhận được email mà người viết nói “Tôi không có bằng cấp về khoa học máy tính hay kĩ nghệ phần mềm. Làm sao tôi có thể học để kiếm việc trong lĩnh vực máy tính?”

Xu hướng thị trường

Khi tôi đi tiến hành nghiên cứu về xu hướng phần mềm toàn cầu, tôi có thể thấy bằng chứng về cuộc khủng hoảng tài chính ở hầu khắc mọi nước với công nhân bị sa thải và các công ti phần mềm hết khả năng kinh doanh.

Lời khuyên cho người quản lí dự án phần mềm

Sau đây là đối thoại giữa người quản lí cấp cao (SM) người đưa ra lời khuyên cho người quản lí dự án phần mềm (PM)

CMU tại Trung Quốc

iCarnegie của Carnegie Mellon và iSofStone, một trong những công ti khoán ngoài hàng đầu của Trung Quốc, đã cùng là đối tác để mở học viện đào tạo cho các nhà chuyên nghiệp CNTT ở Vô Tích, Trung Quốc.

Vấn đề với dự án phần mềm

Theo nghiên cứu mới nhất về công nghiệp phần mềm Mĩ, nhiều dự án phần mềm vẫn thất bại với tỉ lệ cao mặc cho nhiều nỗ lực cải tiến.

Kỹ năng học tập

Kĩ năng học tập mới là điều quan trọng nhất để cải tiến và duy trì nghề nghiệp của bạn.

Tồn tại trong toàn cầu hoá

Bạn tôi, người quản lí một công ti phần mềm nói với tôi về cách cuộc khủng hoảng tài chính đã tác động lên doanh nghiệp của ông ấy.

Con đường chuyển hóa - Nói nhiều không bằng nói đúng

Ngày xưa, đức Phật ở trong rừng với các thầy đệ tử. Một hôm, Phật cầm một nắm lá lên và hỏi các thầy: “Nắm lá trong tay tôi nhiều, hay nắm lá trong rừng này nhiều?”. Các vị trả lời: “Nắm lá trong tay của đức Thế Tôn so với nắm lá trong rừng thì chẳng là bao nhiêu hết”.

Apple lưu ý người dùng không nên lạm dụng một nút bấm trên iPhone

Kỹ năng - Huỳnh Duy - 03/08/2026 11:00
Thao tác tưởng chừng vô hại này có thể khiến iPhone đối mặt với nguy cơ hư hỏng.

Bạn có đang mắc phải tình trạng “Rumination” - Càng nghĩ càng mắc kẹt?

Suy ngẫm - TĐ - 03/08/2026 10:00
Có lẽ ai cũng từng trải qua những đêm nằm thao thức vì một cuộc tranh cãi chưa có hồi kết, một quyết định sai lầm trong quá khứ hay nỗi lo về tương lai. Chúng ta tin rằng nếu tiếp tục suy nghĩ thêm một chút nữa, câu trả lời sẽ xuất hiện. Nhưng thực tế, điều xảy ra thường là ngược lại.

Khi "văn hóa đọc" không chỉ dừng lại ở việc “đọc”: Công nghệ đang định nghĩa lại cách con người tiếp nhận tri thức?

Phong cách sống - Minh Ngọc - 03/08/2026 09:00
Không còn chỉ gói gọn trong những trang sách, tri thức ngày nay được tiếp nhận qua video, podcast, AI và nhiều nền tảng số khác, đặt ra câu hỏi liệu công nghệ đang làm phai nhạt văn hóa đọc hay mở ra một "văn hóa tiếp nhận thông tin" mới.

Con đường chuyển hóa - Nói nhiều không bằng nói đúng

Từ sách - Phim - FN - 03/08/2026 08:00
Ngày xưa, đức Phật ở trong rừng với các thầy đệ tử. Một hôm, Phật cầm một nắm lá lên và hỏi các thầy: “Nắm lá trong tay tôi nhiều, hay nắm lá trong rừng này nhiều?”. Các vị trả lời: “Nắm lá trong tay của đức Thế Tôn so với nắm lá trong rừng thì chẳng là bao nhiêu hết”.

Vi công nhân: Xu hướng khoán ngoài toàn cầu mới

Blog GS John VU - GS John Vu - 02/08/2026 11:00
Thiếu hụt kĩ năng CNTT toàn cần đã đạt tới điểm găng vào lúc nền kinh tế toàn cầu đang phục hồi chậm chạp.

Bức ảnh này có bao nhiêu khuôn mặt?

Thư giãn - PV - 02/08/2026 10:00
Bức ảnh này có bốn khuôn mặt, và sau nhiều ngày tìm kiếm, tôi chỉ tìm thấy ba khuôn mặt. Tôi sẽ rất ấn tượng nếu bạn có thể tìm thấy cả bốn khuôn mặt.

TP.HCM, vợ chồng mang "nhà di động" 1,5 tỷ đồng đưa bố mẹ phượt 2.000km

Phong cách sống - Mộc Khải - 02/08/2026 09:00
Mong muốn đưa bố mẹ đi khám phá những vùng đất mới, gia đình chị Đoàn Thanh Giang đã huy động hai chiếc ô tô, trong đó có một "nhà di động", đưa 3 thế hệ rong ruổi hơn 2.000km xuyên miền Bắc.

Tiệm bánh nửa đêm

Tủ sách - FN - 02/08/2026 08:00
Ở Hwawoldang, mỗi món bánh sẽ giúp người đã khuất tìm lại ký ức, nói lời còn dang dở trước khi đi qua thế giới bên kia. Đó là Tiệm bánh nửa đêm.

Đối thoại với sinh viên ở Nam Kinh, Trung Quốc

Blog GS John VU - GS John Vu - 01/08/2026 11:00
Tháng trước khi tôi đọc bài giảng ở Nam Kinh, Trung Quốc, tôi có cơ hội nói chuyện với sinh viên đại học và họ hỏi tôi nhiều câu hỏi. Một sinh viên ghi lại nó và công bố nó trong báo trường như sau:

Sự im lặng là hình thức bác bỏ cao nhất

Suy ngẫm - Tr. Quang - 01/08/2026 10:00
Trong các mối quan hệ giữa người với người, khi đối mặt với mưu mô và những lời vu khống vô căn cứ, phản ứng đầu tiên của hầu hết mọi người là tranh cãi, phản bác và đối đầu trực diện.

Cứ 10 người trẻ Hàn Quốc thì 9 người sợ gặp bạn bè, khi các mối quan hệ thành khoản chi tiêu bị cắt giảm

Phong cách sống - Dun - 01/08/2026 09:00
Khi giá một bữa ăn tăng nhanh hơn thu nhập, thứ bị cắt không phải là món ăn mà là chính cuộc hẹn. Từ Seoul đến New York và Tokyo, "friendflation" đang cho thấy lạm phát không chỉ làm nhẹ giỏ hàng đi chợ mà còn làm nguội đi các mối quan hệ, và với nền kinh tế, đó là cú đòn giáng thẳng vào sức cầu nội địa.

‘Sức mạnh của Đạo’ - Nghệ thuật sống trong dòng chảy của Đạo

Từ sách - Phim - FN - 01/08/2026 08:00
​​​​​​​Trong nhịp sống hiện đại, hội chứng cuồng công việc (workaholism) hay kiệt sức (burnout) đang dần trở thành “căn bệnh thời đại”. Con người bận rộn theo đuổi thành công, không ngừng tối ưu hiệu suất và lấp kín từng khoảng thời gian trong ngày, nhưng lại hiếm khi cảm thấy viên mãn, hạnh phúc trong việc mình làm.

Công nghệ cao

Blog GS John VU - GS John Vu - 31/07/2026 11:00
Trong bài diễn văn hàng năm với quốc hội Mĩ để báo cáo về hoàn cảnh quốc qua và nêu đại cương kế hoạch mà chính phủ Mĩ muốn theo đuổi trong tương lai, tổng thống Barack Obama đã làm nổi bật tiềm năng cho tạo việc làm trong các lĩnh vực công nghệ sinh học và công nghệ thông tin.

Giới khoa học chụp não người đang toan tính trả thù và phát hiện ra thứ đáng sợ hơn cả ma túy

Suy ngẫm - Long Vân - 31/07/2026 10:00
"Quân tử trả thù mười năm chưa muộn", câu nói cửa miệng quen thuộc hóa ra không chỉ đơn thuần là một triết lý sống. Dưới lăng kính của thần kinh học hiện đại, nó là mô tả chính xác về một chu kỳ gây nghiện đáng sợ.

Nhạc sĩ Trần Tiến đi xe ôm lên tận đỉnh núi, ước mơ bỏ hết thế gian

Phong cách sống - Tùng Ninh - 31/07/2026 09:00
"Tôi đi 43 nước, không nước nào thân yêu bằng Việt Nam" – nhạc sĩ Trần Tiến nói.
HẠT GIỐNG TÂM HỒN
2019 Bản quyền thuộc về hatgiongtamhon.com.vn. Phát triển bởi ONECMS