Tác giả bài viết này cũng là tác giả "14 trung tâm học lập trình tại Hà nội". Nếu bạn thấy có thêm những sai lầm khác chưa được liệt kê trong đây hãy nhắn tôi, tôi sẽ bổ xung. À này, Techmaster đang tuyển giảng viên dạy lập trình tuổi trên 35. Nếu bạn thích việc dạy CNTT hãy apply ngay nhé 

  1. Sưu tầm nhiều sách, tải nhiều video học lập trình nhưng bao giờ đọc và học nghiêm túc
    Hiện nay, sách Ebook quá nhiều, hướng dẫn lập trình miễn phí đầy rẫy trên YouTube, bạn thích bất kỳ một khóa học nào trên Udemy, bạn có thể tìm trên mạng thế nào cũng link tải miễn phí. Có nhiều bạn sinh viên có cái ổ cứng di động hàng trăm Gb chứa sách và video dạy lập trình. Tuy nhiên sưu tầm chỉ để cho vui, chứ chưa đọc nghiêm túc một quyển sách, xem trọn vẹn một khóa dạy lập trình trực tuyến.
     
  2. Đọc sách chay nhưng không lập trình
    Trái ngược với thể loại 1 hời hợt, tham lam. Thể loại này lại quá ham học, đọc ngấu nghiến cả quyền ebook dày vài trăm trang. Để học về React, lập tức lên mạng kiếm quyển sách đánh giá 5 sao trên Amazon về React đọc từng trang một. Hiện đã được được 300 trang, gần hết nữa quyển nhưng chưa lập trình, bắt đầu quên những gì đọc ở chương một bắt đầu thấy chán React, có lẽ chuyển sang Vue.js dễ hơn nhỉ. 
     
  3. Muốn biết quá tường tận, mất quá nhiều thời gian để học thay vì hoàn thành sản phẩm 
    Khi đối tượng học lập trình web front end, anh sẽ thử lập trình với tất cả các loại thẻ HTML, các cú pháp CSS, rồi tất cả cú pháp Bootstrap, rồi thử tất cả cú pháp Javascript, jQuery. Một tính năng nhỏ cần làm ngay trong 2 ngày sẽ biến thành một khóa học cá nhân bài bản chi tiết trong 2 tuần thậm chí 2 tháng.
     
  4. Liên tục hỏi, nhưng chả bao giờ từ mình xem xét, quan sát, phân tích
    Đối tượng này gặp lỗi gì chưa kịp đọc message, đã quay sang hỏi đồng nghiệp. Đồng nghiệp sửa cho một lần. Lần sau lại hỏi. Hỏi mãi, hỏi hoài mà không chịu động não suy nghĩ.
    Hoặc hỏi kiểu cộc lộc post mỗi error message lên github issue hoặc stack overflow mà không cung cấp chi tiết nội tình:
    - Dùng phiên bản nào? trên hệ điều hành gì?
    - Tóm tắt mã nguồn dẫn đến lỗi là gì?
    - Các bước để lặp lỗi như thế nào?
    - Nếu có capture lại màn hình thì tốt
    Kiểu hỏi cộc lộc khiến trả lời cũng khó, mà không trả lời thì người hỏi ấm ức.
     
  5. Ngại không dám hỏi, sai không dám báo cáo
    Ngược với thể loại 4, đây là đối tượng khá nhút nhát, hoặc có học vị cao ở nước ngoài, nhưng ít kinh nghiệm thực tế. Anh ta được tuyển dụng vào team gồm nhiều dev kinh nghiệm và thực dụng, khiến anh ta có phần hoang mang. Lúc nào anh ta cũng có vẻ quan trọng, bồn chồn vì đang đương đầu với quá nhiều vấn đề cùng một lúc. Báo cáo của anh ta lúc nào cũng chung chung, mọi thứ có vẻ ổn, nhưng kết quả công việc không có gì rõ ràng đặc sắc. Ngày anh ta phắn khỏi team không xa, vì anh ta đã appy vào một ví trị cao hơn ở công ty khác.
     
  6. Thích bằng cấp màu mè, nhưng không hiểu sâu vấn đề và áp dụng cụ thể
    Những năm 200x, Microsoft, Cisco có rất nhiều môn thi chứng chỉ. Anh em lập trình viên lao vào ôn thi, tìm bộ đề để luyện thi với mong muốn được điểm cao nhất.  Anh H có đến hơn 6 chứng chỉ Microsoft, khi anh sang Mỹ xin việc,  chứng chỉ Microsoft của anh khiến mọi người nghĩ anh có kinh nghiệm tốt, cái gì cũng hỏi qua anh tư vấn. Sau vài lần phán linh tinh, anh bị đánh giá thiếu thực tế và phải về nước sau 4 tháng làm việc.
     
  7. Liên tục gặp lỗi giống nhau, nhưng không bao giờ rút kinh nghiệm hay ghi chép
    Một số lập trình viên khi lập trình một đoạn logic if then else, hay switch luôn lao vào code luôn mà không liệt kê kỹ các trường hợp. Anh để mặc cho tester phải tự tìm ra lỗi. Khi có lỗi, thì sửa thần tốc, commit code và quên luôn trong một nốt nhạc. Tuần sau lại một lỗi y như vậy ở một feature khác. Lần đầu dẫm phải phân trên một con đường là nhỡ nhàng, nhưng dẫm phải 3 bãi phân trên cùng một con đường thì rõ ràng là lỗi tại bạn chứ không phải phân!
     
  8. Đứng núi này trong núi nọ
    Dev này rất tò mò, thích đọc các bài blog so sánh hiệu năng giữa các framework, so sánh sở trường sở đoản các ngôn ngữ khác nhau. Tranh luận với anh ta bạn chắc chắn thua, vì anh ta mất nguyên 2 tiếng mỗi này để đọc tin công nghệ. Nhóm chốt framework A, ngôn ngữ X. 4 tháng sau, framework B ra đời hiệu suất tốt hơn A. WTF, đập toàn bộ hệ thống, xây mới từ đầu !
    Đặc điểm của dev này là thiếu sự ổn định, nhất quán, đôi khi sa đà vào tối ưu tốc độ, hiệu năng bằng con đường chông gai nhất.
     
  9. Bệnh nhân người Anh
    Thể loại nay chỉ bắt gặp ở dự án lớn cỡ 20 người. Anh ta đẹp trai, vui vẻ, hòa đồng, văn nghệ giỏi, luôn pha trò trong các buổi tranh luận kỹ thuật. Nhưng anh ta thường xuyên phải dừng code để tham gia các buổi văn nghệ của tập đoàn, hay giúp sếp một công việc không tên hoặc những khi dự án cấp kịch, anh ta lại đăng ký đi học một khóa học nâng cao kỹ năng quản lý. Phần khó nhất dự án xong, anh ta về trình bày một cách thức mới quản trị dự án tốt hơn, một công nghệ Cloud mới, trong khi team đang code ứng dụng di động.
     
  10. Luôn thiếu thời gian
    Lập trình loại này lúc nào cũng tất bật khổ sở. Khi ăn trưa, anh ta cũng mở máy tính vừa ăn vừa code. Khi mọi người về, anh ta vẫn làm việc thêm giờ. Đáng nhẽ học cách viết script để tự động hoá, viết Unit Test để kiểm tra lại tự động, hoặc gom các câu lệnh SQL vào một file script, thì anh thủ công hoá mọi thứ, gõ terminal như bổ củi. Anh ta không còn thời gian để học cái mới, và luôn bảo thủ với cách làm cũ của mình. Anh ta không còn thời gian để viết tài liệu dự án. Mỗi ngày anh ta commit lên git repo khoảng 20 lần, lần nào cũng chỉ với commit ngắn cụt lủn bởi anh ta rất bận rộn.
     
  11. Không chịu học ngoại ngữ và kỹ năng bán hàng
    Nếu một lập trình viên có thể đọc lưu loát tiếng Anh với tốc độ nhanh thì tốc độ tiếp thu công nghệ mới của anh ta có thể nhanh hơn những lập trình viên phải dựa vào Google Translate khoảng 2-4 lần. Để học tiếng Anh tốt cần đầu tư khoảng 2 năm, nhưng số lượng thông tin kiến thức tiếp thu được sẽ gấp 4 lần người không biết tiếng Anh: tìm cách sửa lỗi nhanh hơn, có thể trao đổi trực tiếp với lập trình viên quốc tế trong forum, github issues, áp dụng cái mới cũng nhanh hơn, tự tin hơn người cứ phải đọc tài liệu tiếng Việt. Cơ hội làm việc ở công ty nước ngoài cũng cao hơn.
    Hãy coi tiếng Anh là ngôn ngữ lập trình đầu tiên bạn cần phải làm chủ. Không chỉ đọc được, mà còn viết tốt, nói đúng âm điệu ngữ pháp như native speaker là tốt nhất.

    Kỹ năng bán hàng bắt đầu từ việc chúng ta hiểu rõ khách hàng cần gì, và làm sao nêu bật được tính năng sản phẩm, làm sao khách hàng trung thành với sản phẩm. Lập trình thuần kỹ thuật, chỉ code đủ chức năng, không lỗi chứ không nhìn sâu hơn, khách hàng sẽ dùng chức năng như thế nào. Hãy cử anh ta đi gặp khách hàng nhiều hơn, lắng nghe nhiều hơn, thuyết trình nhiều hơn...
     
  12. Code như trâu rồi ngã bệnh lăn quay
    Đây là một típ lập trình viên mình khá thích mà cũng khá ghét. Anh ta thông minh, sức làm việc tốt. Một mình anh ta code bằng cả 2-3 lập trình viên khác. Anh ta code nhanh đến nỗi,  anh em khác trong team cảm giác thừa thãi, điểm dở là anh ta không bao giờ viết document, cũng chả có thời gian chia sẻ kinh nghiệm lập trình hay để ý để kết nối phần việc người khác đã hoàn thành. Mọi chức năng đều phải xoay quanh phục vụ cho phần công việc của anh ấy. Cái gì anh ta cũng làm một mình, tự quyết rất nhanh. Nhưng một ngày anh ta quá tải ốm liệt giường 2 tuần, rồi đùng cái xin nghỉ. Cả team bàng hoàng không biết viết tiếp những phần anh ta đã viết như thế nào. Hãy cẩn thận những loại anh hùng cô đơn này trong team, cố gắng giúp anh ta tái hòa nhập cộng đồng.
     
  13. Giấu nghề như mèo giấu cứt
    Thế loại này giờ ít gặp. Bởi code đều đẩy lên git repo rồi, cả team xem được. Nhưng bực cái thể loại này viết code rất tối tăm không chịu comment, biết ít tiểu xảo chôm chỉa được trên Internet đ*o chịu dạy lại cho anh em, cứ cười tủm tỉm tự sướng một mình.
    Công ty cử anh đi dự hội thảo. Khi về đến công ty, anh chả bao giờ chia sẻ lại cho mọi người. Có người hỏi thì anh bảo, hội thảo chả có gì, khi khác anh lại hẹn một hai tuần nữa, anh rảnh trình bày. Anh đi hơn chục hội thảo, nhưng anh chưa bao giờ trình bày lấy một buổi cho đồng nghiệp của mình. Thể loại này thường bị ế vợ, hoặc bị người yêu đá vì quá ích kỷ. Nếu là sếp hãy đá đít những thằng loại này ra khỏi team càng sớm càng tốt.
     
  14. Làm lâu nhưng không bảo giờ cải tiến
    Anh X lập trình Oracle tại một ngân hàng Y. Công việc hàng ngày của anh chỉ tập trung viết những câu lệnh SQL và tuning. Ngoài nó ra, anh chả bân tâm đến tình hình thế giới. Đúng 4h anh nghỉ tay, lướt Facebook một chút, chỉ like nhưng không bao giờ viết status, hay comment. 5:30 tắt máy tính về với vợ con.
    Anh X hoặc là quá thần tượng các câu lệnh SQL hoặc là anh bàng quan, không quan tâm đến công nghệ khác.
    Loại này phải ghép nhóm với loại tò mò "Đứng núi này trong núi nọ". Hai ông sẽ bổ trợ cho nhau rất tốt. 
     
  15. Thiên vị công nghệ
    Anh Y là lập trình viên cơ sở dữ liệu quan hệ giỏi. Bất kỳ dự án nào, anh đều bắt đầu bằng vẽ Schema. Công ty cử anh đi họp lấy yêu cầu từ khách hàng. Khi về đến công ty, anh gửi cho team một bảng schema (chân quạ) chi tiết đến 20 bảng, anh vẽ trong lúc nghe khách hàng thuyết trình. Một ngày nọ, công ty cần lưu những dự liệu văn bản, nay thế này, mai kiểu khác, anh Y vẫn dày công chế tạo ra phương pháp chỉ có Y hiểu để lưu trữ trong cơ sở dữ liệu quan hệ. Kiểm thử khi phát triển ok, ứng dụng chạy thật đến tháng thứ 3 thì lăn đùng vì quá tải. 
    Thể loại này rất bảo thủ. Đã yêu là yêu đến cuồng tín, không còn biết thế giới này còn rất nhiều cô gái khác hoặc là quá lười biếng để tâm đến sự thay đổi công nghệ.
     
  16. Tối ưu tủn mủn
    Anh A dành 4 này để học cách tự tạo, cấu hình SSL miễn phí trên server. Nếu mua SSL 1 năm chỉ mất 30 USD nhưng mỗi ngày lương của A và cả team của A phải chờ A cài xong là 200 USD. Vậy là team của A mất 800 USD chỉ để tiết kiệm được 30 USD.

    Một cái listbox chỉ có tối đa 10 phần tử lựa chọn. Tèo cứ loay hoay viết thuật toán Quick Sort trong khi chỉ dùng 2 vòng lặp for là đủ.

    Công ty Z luôn chỉ cho nhân viên dùng máy tính 4GRAM. Trong khi với 8GRAM, số lượng công việc có thể xử lý nhanh hơn 1.2 đến 1.4 lần. Tính ra trong 1 năm, công ty đó có thể lãi đủ mua cho mỗi nhân viên một máy tính mới.

    Lập trình viên K chê WordPress chạy chậm, anh ta chuyển sang tự viết một blog CMS bằng Golang chạy nhanh kinh khủng. Kết quả, anh ta phải tự code thêm cùng đủ các chức năng mới, mất liền 4 tháng. Trong khi đó 4 ngày lương của K đủ nâng cấp gói hosting tốt nhất cho WordPress và mua sẵn một theme đẹp long lanh trên ThemeForest.
     
  17. Không bao giờ chịu dừng lại để nhìn sang xung quanh
    Thế loại này hoặc là rất tập trung hoặc là rất tự phụ hoặc là người ít giao tiếp dẫn đến ít thông tin. X nhìn thấy sản phẩm của đối thủ có số khiếm khuyết mà X coi là không thể chấp nhận được. X quyết định nghỉ việc, tự mình viết một sản phẩm khác tốt hơn, xuất sắc hơn, sửa hết tất cả khiếm khuyết đó. X cùng một team dành hẳn 12 tháng để viết. Ngày ra mắt sản phẩm, đối thủ cũng đã cải tiến hơn 50% khiếm khuyết cũ, bổ xung thêm nhiều tính năng mới, giá giảm 1 nửa, trong khi X vẫn phải vật lộn tìm khách hàng đầu tiên.
    Khi bạn chạy thì đừng bao giờ nghĩ đối thủ chỉ đứng yên nhìn bạn. Tốt nhất là vừa chạy vừa nhìn xung quanh để không bị vấp ngã.
     
  18. Không viết document tử tế
    Viết tài liệu phần mềm là một nghệ thuật. Dài quá chả ai đọc, ngắn đọc chả hiểu gì. Đây là kỹ năng mà hầu hết lập trình viên VN đều coi thường.
    Dự án lớn nếu chỉ viết code trong sáng để người khác đọc là hiểu thực ra là không khả thi. Cần có một Wiki của cả team, và mỗi thành viên cần viết những phần tài liệu để thành viên khác hiểu được, làm lại được. Kiến trúc, cấu hình triển khai devops, một số lưu ý, quy tắc...

    Lỗi này cũng giống lỗi số 7. Nhưng đây là lỗi của cả team. Ghi chép là việc của cá nhân. Nhưng document một sản phẩm phải là việc của một tập thể tất cả mọi người cùng tham gia.
     
  19. Kể lề về quá khứ, nhưng không chịu tiến lên
    Có những dự án phần mềm thành công vang dội, nhưng không có nghĩa thành công đó duy trì mãi mãi. Sau Flappy Bird, Nguyễn Hà Đông vẫn tiếp tục viết những game mới, không thành công như game đầu, nhưng anh ta vẫn âm thầm tiến lên. Dennis Hayes, sáng tạo modem cho phép chuyền dữ liệu máy tính qua đường điện thoại cố định, sau những thành công chói sáng của chiếc modem Hayes 56Kbps, ông ta không bận tâm cải tiến và chế tạo thêm các thiết bị mới, kết quả Hayes modem đã bị hàng loạt các nhà sản xuất Đài loan qua mặt, sau 2 năm, công ty của Hayes phá sản,