“Một lập trình viên giỏi là một người luôn nhìn 2 phía khi băng qua đường 1 chiều”. ~ Doug Linder
Đối với một lập trình viên trong thế giới công nghệ, có một thứ mà có thể kéo chúng ta ra khỏi nhà và đến nơi làm việc, đó là niềm vui và đam mê trong việc lập trình. Nhưng để khiến cho công việc thực sự vui vẻ và có thể tạo ra một niềm hứng khởi vĩnh cửu, chúng ta cần phải biết những điều căn bản để giúp trở thành một nhà lập trình viên giỏi.
Trong bài viết này, tôi tập hợp những mẹo mà mình đã học và thực hành trong thực tiễn để có được những kết quả tốt nhất. Không có định nghĩa thế nào là một lập trình viên giỏi, tuy nhiên tôi đang nói tới một nhóm những con người đã tạo ra những giải pháp xuất sắc cho nền công nghiệp IT và giúp cho nền công nghiệp này ngày càng phát triển.
1. Làm việc với Căn bản
Đúng với tất cả các ngành nghề và công việc, hiểu được bản chất là nhân tố quyết định cho thành công. Trừ khi một người có một nền tảng vững chắc, bằng không anh/cô ấy sẽ không bao giờ trở thành một người lập trình giỏi. Việc hiểu được bản chất giúp cho chúng ta có thể thiết kế và thực hiện những giải pháp hay với những cách tốt nhất có thể. Nếu bạn vẫn còn cảm thấy có khoảng trống trong lĩnh vực khoa học máy tính hoặc các khái niệm trong ngôn ngữ lập trình, sẽ không bao giờ là quá muộn để quay đầu và học lại những điều căn bản.
2. Hãy bắt đầu những câu hỏi (làm sao, cái gì) với tất cả nhưng đoạn code bạn viết
Một điều giúp tôi nhận ra sự khác biệt giữa những người lập trình giỏi và những người khác đó chính là sự thôi thúc muốn biết cái gì và làm cách nào điều đó lại xảy ra. Có một nhóm nhỏ những người sẽ không bao giờ rời dòng code của mình cho đến khi biết chắc chắn cái gì đang xảy ra khi dòng code đó được chạy. Đôi khi, với thời gian hạn hẹp, chúng ta không thể lúc nào cũng có được sự tự do để làm điều đó, và đôi khi ta phải bỏ dở việc đào sâu nghiên cứu và chấp nhận rằng dòng code đó có thể làm được việc. Nhưng đối với một người lập trình giỏi, chúng ta luôn có thể cố gắng hết sức để đào vấn đề càng sâu càng tốt. Và hãy tin tôi đi, việc này sẽ trở thành một thói quen và sau đó bạn làm mà không biết rằng mình đang thực hiện điều đó.
3. Bạn học được nhiều hơn nếu giúp đỡ người khác
Hầu hết chúng ta có một xu hướng phổ biến là quay lại với các diễn đàn chỉ khi chúng ta cần sự giúp đỡ. Và một lần nữa, một điều phân biệt giữa người lập trình giỏi và những người khác là họ vào các diễn đàn thường xuyên để giúp đỡ và chia sẻ. Điều này sẽ khiến họ học hỏi thêm được nhiều điều hơn là để vấn để của mình cho người khác giải quyết. Và tin tôi đi, việc hiểu được vấn đề của người khác trong bối cảnh của họ , điều tra và cung cấp giải pháp sẽ khiến bạn học được nhiều hơn so với trước đây.
4. Viết code đơn giản, dễ hiểu nhưng phải đúng logic.
Như trong hầu hết mọi khía cạnh của cuộc sống, công thức KISS (Keep It Short and Simple) cũng được áp dụng với lập trình. Hãy viết nhiều những đoạn code hợp lý và tránh sự rườm rà phức tạp. Nhiều người cố tình viết ra những đoạn mã phức tạp để chứng tỏ khả năng của mình, nhưng theo kinh nghiệm của mình, tôi thấy những đoạn code đơn giản, logic luôn làm được việc, nó thường sẽ ít có vấn đề và dễ dàng mở rộng. Tôi vẫn còn nhớ một đoạn trích dẫn : “Những đoạn mã tốt thì bản thân nó đã là một tài liệu tốt nhất. Mỗi khi bạn phải thêm vào 1 dòng chú thích (comment), hãy luôn đặt câu hỏi: Làm cách nào tôi có thể làm sáng tỏ đoạn mã này mà không cần phải chú thích thêm” ~ Steve McConnel.
5. Dành nhiều thời gian trong việc phân tích vấn đề, bạn sẽ cần ít thời gian hơn để sửa chữa nó
Dành nhiều thời gian trong việc tìm hiểu và phân tích vấn đề và thiết kế giải pháp cho nó sẽ giúp bạn dễ dàng thực hiện được phần còn lại. Thiết kế không phải lúc nào cũng có nghĩa là bằng cách sử dụng ngôn ngữ mô hình hóa và các công cụ, nó có thể đơn giản như nhìn bầu trời và suy nghĩ giải pháp trong tâm trí của bạn. Những người có thói quen nhấn bàn phím (để viết code) ngay thời điểm nhận được vấn đề, thường kết thúc với một cái gì đó khác hơn nhiều so với yêu cầu.
“Nếu bạn không thể hình dung ra cấu trúc tổng thể của một chương trình trong khi đang tắm, bạn chưa sẵn sàng để code nó”. ~ Richard Pattis
6. Hãy là người đầu tiên phân tích và kiểm duyệt mã của bạn
Mặc dù có một chút khó khăn, nhưng hãy cố gắng để khám phá những đoạn mã của bạn trước khi những người khác làm việc đó, và với thời gian, bạn sẽ học được cách để viết ra những đoạn mã mà hầu như sẽ không có lỗi. Luôn luôn xem xét chặt chẽ và không thiên vị với những đoạn mã đó; Cũng không bao giờ ngần ngại để người khác xem nó. Làm việc với các lập trình viên tốt thì các phản hồi từ họ chắc chắn sẽ giúp bạn trở thành một lập trình viên tốt.
7. Không chạy theo công nghệ
Trong giai đoạn gần đây của ngành công nghiệp IT, tôi đã gặp rất nhiều người thất vọng bởi công việc của họ, thậm chí bỏ việc để tìm những cơ hội mới. Họ nói rằng họ muốn học và tìm hiểu những công nghệ mới nhất. Những gì chúng ta nghe thấy hàng ngày về “công nghệ mới” có thể hiểu là những công cụ mới, API, framework và nó được phát triển theo từng ngày để khiến cho việc lập trình dễ dàng hơn và nhanh hơn. Điều này dù sao vẫn đang rất phổ biến và sẽ tiếp tục trong thế giới công nghệ. Nhưng những gì cần phải hiểu chính là các công nghệ cốt lõi và cơ bản thì thay đổi rất ít so sánh với các framework, tool và API xung quanh nó. Cũng giống như nước biển, nếu nước ở tầng trên thường nổi sóng cuồn cuộn và chảy đi với tốc độ rất nhanh thì nước ở tầng sâu lại ít di chuyển và đó mới chính là nơi để nguồn thủy sản sinh sôi và phát triển. Vì thế, hãy cảm nhận chính mình trong phần nước sâu, và gần gũi với những công nghệ cốt lõi. Ví dụ, trong Java Enterprise, hiện đang có rất nhiều web frameworks tồn tại và còn nhiều nữa sắp được tung ra. Nhưng những khái niệm cốt lõi của mô hình Client-Server, MVC pattern, filters/servlets/JSP, resource bundling, XML parsing thì vẫn không thay đổi. Vì thế hãy dành nhiều thời gian để tìm hiểu về những khái niệm này hơn là lo lắng và chạy theo những framework và tool xung quanh nó. Với nền tảng về các khái niệm cơ bản vững chắc, bạn sẽ luôn luôn thấy việc học công nghệ mới, tool hay các API sẽ là công việc khá đơn giản.
8. Giải pháp tạm thời (work-around solution) không tồn tại được lâu.
Rất nhiều lập trình viên sử dụng các giải pháp tạm thời, lý do có thể là do thiếu thời gian, thiếu kinh nghiệm, thiếu sự hiểu biết của vấn đề. Nhưng theo thời gian, những giải pháp đó sẽ gây ra sự hỏng hóc của chương trình hoặc mã, nó khiến ta khó có khả năng mở rộng hoặc bảo trì, dẫn đến việc tốn nhiều thời gian và công sức sau này để sửa chữa nó. Vì thế hãy luôn luôn ghi nhớ là cần phải tìm những giải pháp khi bạn biết rõ đầu vào và đầu ra của nó. Trong nhiều trường hợp, sẽ khó tránh khỏi những việc phải sử dụng work-around, cũng giống như việc người ta hay nói: “Tôi luôn luôn nói thật, nhưng trong một vài trường hợp tôi phải nói dối“.
9. Đọc tài liệu
Một trong những thói quen cần thiết của các lập trình viên giỏi là họ đọc rất nhiều tài liệu. Nó có thể là các thông số kỹ thuật, JSR (Java Specification Request), tài liệu, hướng dẫn API. Đọc tài liệu sẽ giúp bạn hình dung ra nền tảng thiết yếu dựa trên đó, bạn có thể lập trình theo cách tốt nhất.
10. Bạn có thể học hỏi từ mã của người khác
Tôi cộng tác với một số lập trình viên xuất sắc, những người lúc nào cũng có những dự án java trong IDE của họ để có thể đọc hoặc tham chiếu đến nó trong công việc hàng ngày. Họ làm điều đó không chỉ để thỏa mãn nhu cầu được hiểu về các vấn đề căn bản mà còn là một cách để viết những chương trình tốt. Đọc và tham khảo những mã nguồn uy tín hoặc từ những đồng nghiệp lâu năm, sẽ giúp cho bạn tạo ra những chương trình tốt hơn.
Và điều cuối cùng, không được liệt kê ở trên: Đừng so sánh mình với những người khác
So sánh của bạn về bản thân với người khác sẽ chỉ dẫn đến những cảm xúc tiêu cực và cạnh tranh không lành mạnh. Mọi người đều có điểm mạnh và điểm yếu riêng. Quan trọng hơn là chúng ta phải hiểu bản thân và làm việc với nó. Tôi đã nhiều lần chứng kiến những người được cho là lập trình viên kiệt xuất lại làm ra những sai lầm ngớ ngẩn. Vì vậy, phân tích bản thân, lập danh sách những thứ bạn cần cải thiện và làm việc với nó. Lập trình là một niềm vui thực sự, hãy tận hưởng nó.
“Bất kỳ kẻ ngốc nào cũng có thể viết mã để một máy tính có thể hiểu được. Các lập trình viên giỏi viết mã để cho những người khác có thể hiểu được“. ~ Martin Fowler
Bài viết của tác giả Ashish Arya
Người dịch: Phạm Thùy Dương
Một bài báo tuyệt vời. Thank for all
Một bài báo tuyệt vời. Phù hợp cho những người đam mê lập trình. Thank for all
Thank a lot!
Code giỏi rồi cũng đi làm thuê thôi, thằng chủ mới là thằng giỏi hơn, nó ko code giỏi nhưng nó thuê được những thăng code giỏi, bài viết này cũng chỉ nhằm mục đích đấy, kêu gọi mọi người làm việc đi, thằng chủ hưởng =))
phi thương bất phú,”người thôg minh thuê những người thông minh hơn họ về làm việc cho mình”
”Người thông minh thuê những người thông minh hơn họ về làm việc cho mình.”
=> Bạn có thấy mâu thuẫn không?
câu nói này: tôi bắt đầu được nghe từ câu nói của 1 nhóm kinh doanh đa cấp cách đây đã 7 năm. Nếu nói như vậy. thì có lẽ thằng ngu nhất sẽ đứng lên làm chủ.
Bạn nên nhớ, không phải cứ có nhiều tiền là bạn sẽ thuê được người khác, nếu như bạn không có đủ trình độ đi kèm để quản lý.
Bạn có vẻ khinh thợ nhỉ.
Bạn nghĩ k cần làm thợ mà được làm chủ ngay ?
“mọi người làm việc đi, thằng chủ hưởng =))” ok thằng chủ hưởng! vậy thợ có được hưởng k?
ý bạn là thằng chủ nó ngồi 1 chỗ , chẳng làm gì) rồi chờ thằng thợ đút cơm vào mồm á haha,
người giỏi nó lên làm chủ ngay. những người làm thuê đừng thất vọng nhé hay là vĩ cuồng về chút ít hiểu biết hạn hẹp của bản thân mà tưởng rằng thiên hạ này mình nhất.
“Code giỏi rồi thì cũng đi làm thuê thôi” …. bạn Vũ Công Hồng nói hơi quá rồi.
Bill Gates người giàu nhất thế giới (từ 1995 tới 2009, ngoại trừ năm 2008) cũng là một lập trình giỏi từ hồi nhỏ đấy 😛
Vậy chả có nhẽ người chủ là người code không giỏi như bạn nói sao ?:P
Đừng nói những trường hợp trên thế giới chỉ có 1, Bill Gate là người có động lực và ước mơ, có sự hiếu thắng để đạt được vinh quang. Còn thử hỏi những người comment ở trên, ai là người có mục tiêu cho cuộc sống???, thử hỏi bao nhiêu người code giỏi rồi sau này sẽ như thế nào, vào công ty lớn là cùng chứ gì, rồi cũng đi code thôi chứ gì. Bố tôi dạy, giỏi chỉ làm thằng thợ.
bố ông cũng vui đấy. Học lập trình không đi code thì đi đánh giầy ah =))
Thế bạn có động lực có ước mơ gì? nhưng sự hiếu thắng thì đã quá rõ ràng.
Chúc bạn sớm đạt được thành công!
Bạn Vũ Công Hồng ơi, đừng bao giờ nghĩ là mình không làm được điều gì đó khi mà bạn chưa cố hết sức. Đâu phải cứ code giỏi là đi làm thợ, đâu phải chỉ mình Bill Gate là đặc biệt. Tôi có đam mê mới vào đọc blog này, hy vọng bạn đừng đánh giá bậy bạ như vậy. Bài viết này chỉ dành cho những ai thích đọc và tâm huyết với nghề mà thôi. Còn nghĩ mình học để làm thợ thì bạn nên đổi ngành đi. Thân!
Chúc bạn học tập và công tác tốt theo đúng đam mê của mình còn Thượng Đế đặt chúng ta ở vị trí nào là chương trình của Ngài
Cuộc sống của ta nằm trong tay ta, không có chương trình nào của thượng đế điều khiển ta được.
Mot nguoi lap trinh vien gioi “khong duoc ha thap ban than minh cung nhu so sanh voi nguoi khac!”ca 2 ban deu sai roi!
@All: nếu đã đam mê thì nên tập trung vào những thứ mình theo đuổi. Code thuê hay làm chủ có gì khác nhau đâu. Muốn làm chủ bỏ ra vài trăm triệu, thuê cơ sở hạ tầng, tuyển vài coder gà về làm mặc dù bản thân mình cũng chẳng code giỏi hơn ai. Suy ra code k giỏi vẫn làm chủ mà code giỏi vẫn làm chủ đó thôi. Vấn đề là ông có tiền để đầu tư không? Và liệu ông có trụ được không?
Mình đã đi làm ở 1 vài công ty tư nhân, cổ phần ví dụ: AWAS, QuaCau(diễn đàn congdongcviet) nhưng thấy sự tiến bộ về kỹ thuật chẳng là bao. Vào các công ty lớn là 1 lợi thế và là ước mơ của bao lập trình viên, được va chạm công nghệ, làm các dự án thực tiễn hơn rất nhiều, quy trình đóng gói, sản xuất phần mềm cũng khác biệt so với nhiều công ty khác.
Quan điểm của mình không phải ngồi trong 4 bức tường, anh hùng bàn phím, thùng rỗng kêu to để nói lên mấy cái triết lý vớ vẩn ở trên. Học, tiếp cận, và cọ xát là những điều mà bất kỳ ai cũng nên hướng tới.
Sự thành công sẽ được đáp trả xứng đáng với những gì mà bạn bỏ ra 🙂
bạn đã từng đi làm ở : QuaCau(diễn đàn congdongcviet). Ở đó thế nào ?
admin của công ty này là. Kevin Hoàng đó (ko biết sinh năm bao nhiêu), nghe nói gã này khủng lắm, và cũng rất khó tính trên diễn đàn về vấn đề post bài.
@Đỗ Mạnh: Bác viết bài này có trên 10 năm code đấy!
@V.Khoa: thưa thầy, ý em muốn gửi lời tới bạn Vũ Công Hồng và những bình luận khác về việc giỏi thì làm gì, mà k giỏi thì làm gì chứ không bình luận về nội dung bài viết vì em đã rất thích nội dung bài viết này rồi 🙂
wa tuyet
hay wa anh ak.thank nhung loj tam su cua a nha.
cam on nhung loi nay. that su minh moi hoc java nhung that su k hieu hoc rat nhieu nhung cuoi cung van k co ket wa kha wan. sau khi doc xong minh da nhan ra rat nhieu dieu bo ich. cam on rat rat nhieu,
Em muốn học ngành lập trình viên lắm. Nhưng lại sợ không có nhu cầu về ngành này. Ước mơ để trở thành lập trình viên của em đã lâu rồi
bạn có thể coi nó như một đam mê của mình, đầu tiên hãy bắt đầu với những lúc nhàn rỗi. mỗi tối bỏ ra một hai tiếng, để đọc, để hiểu và viết những demo cơ bản.
Sau này khi bạn đã khá rồi, thì hãy nghĩ đến việc theo ngành này hay không ?
Hay
Cảm ơn, một vài viết rất hay.
Trên mạng có lưu hành quyển chân kinh “Đạo lập trình 1C” dành cho dân lập trình. Bạn nào có cuốn tiếng Việt chia sẽ nhé.
Đừng nói rằng ông chủ không giỏi, còn người giỏi thì chỉ làm nhân viên… trước hết mỗi người hãy tự đáng giá bản thân mình là chính xác nhất: giỏi hay không giỏi ? … tôi thiết nghĩ, mỗi người đều có 1 sở trường riêng, nếu khai thác đúng hướng sẽ thành công: sẽ trở thành 1 người code giỏi hay 1 quản lí giỏi hay 1 ông chủ giỏi… tôi biết bạn rất giỏi code, bạn có thể giỏi hơn bất kì ai trên thế giới này nhưng chưa chắc bạn có khả năng trở thành 1 ông chủ giỏi, 1 nhà quản lí giỏi, 1 nhà kinh doanh giỏi chính vì thế bạn phải làm công cho những người giỏi hơn bạn trong lĩnh vực kinh doanh này…
“Một lập trình viên giỏi là một người luôn nhìn 2 phía khi băng qua đường 1 chiều”.
Vậy thì Việt nam là nước có nhiều LTV giỏi nhất thế giới rồi. Ở VN đường 1 chiều xe cũng phóng ngược chiều ầm ầm. Không nhìn 2 chiều thì biết đâu bất ngờ ngay.
một website bổ ích
Chào mọi người mình có niềm đam mê rất lớn với ngành lập trình viên, nhưng do từ nhỏ gia đình không có điền kiện đi học đầy đủ nên mình đã phải gác lại niềm đam mê lớn nhất của mình. Nay mình đọc được topic này mình xin hỏi mọi người nếu muốn học lập trình thì nên bắt đầu từ đâu, và cần những gì để được đăng ký học ở những trung tâm đào tạo lập trình, hiện tại mình có thể mua những cuốn sách lập trình về học thêm không, và những cuốn sách lập trình được bán và phân phối ở đâu, mình rất mong được mọi người chỉ bảo và giúp đỡ, thân!
Bài viết này khá hay! Tiện đây bạn nào có kinh nghiệm tư vấn cho mình với :
Mình là dân coder PHP lâu năm rồi (đang làm cho cty phần mềm của Japan). Hiện cty muốn mình chuyển sang lập trình bằng Ruby on Rails hoặc Java để viết trên android. Bạn nào có kinh nghiệm lâu năm tư vấn cho mình nên theo cái nào. Suy nghĩ mãi mà vẫn không tìm đc câu trả lời thỏa đáng