TRUNGTQ

Think Big, Act Small, Fail Fast and Learn Rapidly

NAVIGATION - SEARCH

10 Bí quyết để trở thành một lập trình viên giỏi

“Một lập trình viên giỏi là một người luôn luôn nhìn cả hai phía trước khi băng qua con đường một chiều.” ~ Doug Linder

Là một lập trình viên phần mềm làm việc trong ngành công nghiệp IT, thì thứ tạo ra động lực để chúng ta đến nơi làm việc mỗi ngày là những niềm vui và đam mê trong công việc lập trình. Nhưng để cho công việc đó trở nên là một niềm vui thích và đam mê vĩnh cửu thì một trong những điều bạn cần phải học là bám sát vào những thứ căn bản để giúp bạn trở thành một lập trình viên giỏi.

Không phải là tôi đang ghi ra một câu thần chú để bạn có thể theo đó mà trở thành một lập trình viên giỏi, mục đích của tôi là tạo ra một danh sách những bí quyết hữu ích, những điều mà tôi đã học và áp dụng trong ngành công nghiệp này để có thể đạt được khá nhiều kết quả tuyệt vời. Thực ra không có định nghĩa chính xác thế nào là một lập trình viên giỏi cả, nhưng ở đây chúng ta muốn nói đến những kiểu lập trình viên mà đã phát triển ra những giải pháp IT tuyệt vời và góp phần làm cho cả ngành công nghiệp này phát triển.

Tôi phải làm gì để trở thành một lập trình viên xuất sắc?
Những bí quyết nào giúp tôi trở thành một lập trình viên giỏi?

 

1. Làm việc từ những thứ căn bản nhất

Điều này thì đúng cho bất kỳ ngành công nghiệp cũng như là công việc nào, việc hiểu rõ mọi thứ ở mức khái niệm là chìa khóa để thành công. Nếu không có một nền tảng về khái niệm vững chắc, thì anh ta (hoặc cô ta) sẽ chẳng bao giờ có thể trở thành một lập trình viên giỏi được cả. Việc hiểu được những khái niệm cốt lõi sẽ giúp bạn trong việc thiết kế và thực thi những giải pháp theo cách tốt nhất có thể. Nếu bạn cảm thấy dường như mình đang bị hổng kiến thức nền tảng về khoa học máy tính và những khái niệm trong ngôn ngữ lập trình mà bạn đang sử dụng, thì không bao giờ là quá trễ để quay trở lại và học từ những điều căn bản nhất.

2. Luôn đặt ra những câu hỏi (Tại sao? Như thế nào?) với mọi đoạn code mà bạn viết ra

Có một thứ mà tôi thấy là từ đó nó sẽ tạo ra một ranh giới rõ ràng giữa những lập trình viên giỏi và phần còn lại, đó là sự khao khát muốn biết lý do tại sao và đoạn code đó sẽ chạy như thế nào? Một số ít lập trình viên sẽ chẳng bao giờ chịu chuyển sang tác vụ tiếp theo nếu vẫn chưa hiểu rõ đoạn code mà mình viết ra sẽ thực thi như thế nào. Tôi hiểu rằng trong sự giới hạn của thời gian kết thúc dự án thì không phải lúc nào chúng ta cũng có điều kiện để làm điều này, vì thế nhiều khi chúng ta phải viết ra những đoạn code mà chỉ biết láng máng rằng nó sẽ đáp ứng được yêu cầu công việc. Là một lập trình viên, bạn hãy luôn thử nghiên cứu ở mức sâu nhất có thể. Điều này dần dần sẽ trở thành một thói quen và sau đó bạn sẽ thực hiện nó một cách thường xuyên mà không biết.

3. Bạn học được nhiều hơn bằng cách giúp đỡ những người khác

Hầu hết ai trong chúng ta cũng đều có khuynh hướng là chỉ nhảy bổ vào các diễn đàn và các trang hỏi đáp trên mạng khi chúng ta cần sự giúp đỡ. Thêm một sự phân biệt rõ ràng giữa những lập trình viên giỏi và phần còn lại đó là họ ghé thăm những trang web này thường xuyên để giúp đỡ những người khác. Điều này giúp cho họ học được nhiều hơn sau khi giải quyết vấn đề của một ai đó. Cũng như trong một nhóm làm việc, bạn hãy giúp những người khác giải quyết những vấn đề của họ. Tin tôi đi, việc hiểu được những vấn đề của người khác trong ngữ cảnh của họ, tìm hiểu và cung cấp những giải pháp cho vấn đề đó sẽ giúp bạn học được rất nhiều.

4. Viết những dòng code đơn giản, dễ hiểu và có logic

Cũng như hầu hết mọi khía cạnh của cuộc sống, công thức KISS (Keep it simple and short – Giữ cho mọi thứ được ngắn gọn và đơn giản) cũng rất hiệu quả trong công việc lập trình. Hãy viết những đoạn code có logic và tránh sự phức tạp. Đôi khi người ta viết ra những đoạn code phức tạp chỉ để chứng tỏ khả năng của họ là có thể viết ra những đoạn code như vậy. Kinh nghiệm của tôi chỉ ra rằng chính những đoạn code đơn giản và có logic luôn luôn hoạt động rất tốt, kết quả thu được thường mắc rất ít lỗi và có nhiều khả năng mở rộng. Tôi nhớ một câu nói rất hay như sau:

Đoạn code tốt thì chính bản thân nó đã là một tài liệu hoàn hảo rồi. Vì thế khi mà bạn chuẩn bị thêm một dòng chú thích, thì hãy tự hỏi bản thân mình rằng, “Làm cách nào mà tôi có thể cải tiến đoạn code đó để không cần phải bổ dung dòng chú thích này nữa nhỉ?” ~ Steve McConnell

5. Hãy dành nhiều thời gian hơn để phân tích vấn đề, bạn sẽ cần ít thời gian hơn để sửa lỗi

Bạn hãy dành nhiều thời gian hơn để hiểu, phân tích thấu đáo vấn đề và thiết kế giải pháp cho nó. Bạn sẽ nhận thấy phần việc còn lại chỉ bao gồm những thứ tương đối dễ làm. Việc thiết kế không phải lúc nào cũng là dùng những ngôn ngữ mô hình hóa hay công cụ gì cao siêu, đôi khi chỉ cần bạn ngẩng nhìn lên bầu trời xanh và suy nghĩ về giải pháp cho bài toán đó ở trong tâm trí. Những người có thói quen lao vào viết code hùng hục ngay khi vừa nhận được yêu cầu thì thường tạo ra kết quả là một cái gì đó khác xa so với yêu cầu thực tế.

“Nếu bạn không thể hình dung ra toàn bộ cấu trúc của một chương trình trong khi đang tắm, thì bạn vẫ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à xem xét những dòng code của chính mình

Mặc dù điều này hơi khó, nhưng hãy thử “bẻ gãy” những đoạn code của bạn trước khi người khác làm điều đó và theo thời gian bạn sẽ học được cách viết ra những đoạn code mà hoàn toàn không có lỗi. Hãy thường xuyên xem lại các đoạn code của mình một cách chặt chẽ và không thiên vị. Ngoài ra cũng đừng bao giờ do dự để mời những người khác xem giúp những đoạn code của bạn. Làm việc với những lập trình viên giỏi và nhận được những nhận xét của họ sẽ đảm bảo giúp bạn cũng trở thành một lập trình viên giỏi.

7. Đừng hốt hoảng khi nhìn thấy sự thay đổi chóng mặt trong thế giới công nghệ

Trải qua nhiều giai đoạn thăng trầm trong ngành công nghiệp phần mềm, tôi gặp vô số người hoặc là thất vọng về công việc của họ hoặc thậm chí rời bỏ nghề để đi tìm một công việc khác, và họ thường nói rằng muốn học và làm việc trong những công nghệ mới nhất. Tôi không nhận thấy vấn đề gì trong nguyện vọng đó của họ ngoại trừ cụm từ ‘những công nghệ mới nhất’. Cái mà chúng ta nghe thấy mỗi ngày thường là những công cụ mới, các API (giao diện lập trình ứng dụng), các framework và những phương tiện khác sinh ra liên tục để giúp cho công việc lập trình trở nên dễ dàng hơn và nhanh hơn. Điều này dù sao cũng sẽ tiếp tục trong thế giới công nghệ. Nhưng bạn cần phải hiểu là những công nghệ nền tảng và cốt lõi thì thay đổi với tốc độ chậm hơn các framework, API và các công cụ xung quanh nó rất nhiều.

Điều này cũng giống như ngoài đại dương bao la kia, phía trên bề mặt thì sóng rất dữ dội nhưng ở mực nước sâu thì mọi thứ tương đối yên tĩnh, phẳng lặng và hầu hết các sinh vật sống và phát triển tại đây. Vì thế, hãy tự cảm nhận rằng mình đang ở mực nước sâu và tiến gần với những công nghệ cốt lõi. Ví dụ, trong thế giới Java Enterprise, có rất nhiều web framework tồn tại và hầu như mỗi tuần đều có thêm những framework mới. Thế nhưng các khái niệm cốt lõi thì đều dựa trên giao tiếp theo mô hình client-server, MVC pattern, filters/servlets/JSP, resource bundling, XML parsing v.v… và chúng đều hiếm khi thay đổi. Vì thế bạn hãy dành nhiều thời gian để học về những khái niệm cốt lõi hơn là cứ ngồi đó mà lo lắng về những framework và công cụ luôn thay đổi xoành xoạch xung quanh nó. Cùng với nền tảng vững chắc của những kiến thức cốt lõi, bạn sẽ luôn dễ dàng học được những framework, công cụ và các API mới.

8. Giải pháp tạm thời sẽ không có giá trị lâu dài

Rất nhiều lần các lập trình viên thực thi một công việc bằng những giải pháp tạm thời (có thể bởi vì do thiếu hụt thời gian, chưa hiểu rõ vấn đề hoặc không có kinh nghiệm về công nghệ đó). Nhưng khi thời gian trôi qua thì những công việc được làm bằng những giải pháp tạm thời này luôn luôn mang lại hậu quả từ những đoạn code mục nát đó, khiến cho nó không thể mở rộng hoặc bảo trì được và tốn rất nhiều thời gian để khắc phục. Vì thế bạn hãy chỉ thực thi một công việc khi đã nắm rõ đầu vào và đầu ra của giải pháp. Tôi biết là trong một số hoàn cảnh thì chúng ta cũng không thể tránh khỏi việc bắt buộc phải sử dụng một giải pháp tạm bợ, nhưng cũng giống như trong cuộc sống này thôi, bạn luôn luôn nên nói thật nhưng trong một số hoàn cảnh thì việc nói dối cũng có thể chấp nhận được.

9. Hãy đọc thật nhiều tài liệu

Một trong những thói quen thiết yếu của một lập trình viên giỏi là họ đọc rất nhiều tài liệu. Đó có thể là các bản đặc tả phần mềm, JSR, các tài liệu API, các bài hướng dẫn thực hành v.v… Việc đọc nhiều tài liệu giúp bạn tạo ra những nền tảng vững chắc và từ đó bạn sẽ lập trình theo cách tốt nhất có thể.

10. Bạn có thể học từ những dòng code của người khác

Tôi thường tiếp xúc và làm việc với rất nhiều lập trình viên tài năng, những người này luôn luôn có những dự án trong IDE của họ để có thể đọc/tham khảo trong công việc hàng ngày. Không chỉ nhằm mục đích đáp ứng khao khát biết về những thứ căn bản mà họ còn tìm những cách khác để viết ra những chương trình tốt. Việc đọc và tham khảo những dự án mã nguồn mở đáng tin cậy hoặc mã nguồn của những người có thâm niên trong ngành có thể cũng giúp cho bạn trở thành một lập trình viên giỏi hơn.

Và cuối cùng: Đừng bao giờ so sánh mình với những người khác

Nếu bạn so sánh bản thân mình với những người khác thì sẽ chỉ mang lại kết quả là tạo ra nhiều cảm xúc tiêu cực và những cạnh tranh không lành mạnh mà thôi. Ai trong chúng ta cũng có những điểm mạnh và điểm yếu của riêng mình. Điều quan trọng hơn là chúng ta hiểu mình và tập trung vào những lĩnh vực mà chúng ta có năng khiếu nhất. Tôi đã bắt gặp rất nhiều lần những lập trình viên được coi là “cao thủ” cũng phạm phải những sai lầm hết sức ngớ ngẩn. Vì thế, hãy phân tích bản thân, liệt kê ra danh sách những kỹ năng mà bạn cần phát triển và tập trung vào chúng. Lập trình là công việc thực sự mang lại rất nhiều niềm vui, bạn hãy tận hưởng nó!

Tôi xin kết thúc bài viết bằng một câu nói của lập trình viên nổi tiếng Martin Fowler rằng:

“Bất kỳ thằng ngốc nào cũng có thể viết code để một chiếc máy tính có thể hiểu được. Nhưng một lập trình viên giỏi thì viết code để những người khác có thể hiểu được.” ~ Martin Fowler

Chúc bạn sớm trở thành một lập trình viên giỏi và hãy nhớ giúp đỡ những người khác để cùng tiến bộ nhé!

 

LINK: https://vinacode.net/2014/07/07/tro-thanh-lap-trinh-vien-gioi/

Bài viết được dịch từ blog của Ashish Arya

Từng bước để trở thành một lập trình viên giỏi

Hôm nay chúng ta sẽ đọc một bài viết của tác giả John Sonmez về cách từng bước làm thế nào để trở thành một lập trình viên giỏi. Hy vọng với một hướng dẫn từng bước kiểu step-by-step này sẽ giúp một số bạn newbie có thể áp dụng và định hướng tương lai sau này.

“Tôi không sợ những kẻ tập một lần 10.000 cú đá, tôi chỉ sợ những kẻ tập 10.000 lần một cú đá.” ~ Huyền thoại võ thuật Lý Tiểu Long

Tôi phải làm thế nào để từng bước trở thành một lập trình viên xuất sắc?
Tôi phải làm thế nào để từng bước trở thành một lập trình viên xuất sắc?


Thời gian gần đây tôi có nhận được một số email mà về cơ bản đều hỏi rằng “làm thế nào để có thể trở thành một lập trình viên giỏi/ xuất sắc?”

Những dạng email kiểu này nói chung thường làm tôi cảm thấy buồn lòng, bởi vì tôi cảm thấy dường như khi bạn hỏi dạng câu hỏi này, thì bạn đang tìm kiếm một liều thuốc thần diệu nào đó khiến bạn có thể sẽ đột nhiên trở thành một lập trình viên tài ba.

Tôi nghi ngờ rằng có rất ít người trong số đã gửi email để hỏi tôi về câu hỏi này thực sự muốn biết làm thế nào để trở thành một lập trình viên xuất sắc, nhưng có lẽ họ đang chỉ muốn tìm kiếm cho mình một giải pháp nhanh chóng hoặc một câu trả lời dễ dàng.

Một mặt khác, tôi nghĩ rằng có thể có một số lập trình viên chân thật, và chỉ là họ không biết làm thế nào để đặt ra những câu hỏi cần thiết để định hướng cho tương lai của họ. Tôi nghĩ những lập trình viên này – đặc biệt là những người vừa mới vào nghề – có lẽ đang tìm kiếm cho mình một hướng dẫn từng bước để trở thành một lập trình viên xuất sắc.

Vì vậy, tôi cũng cố gắng từ chính kinh nghiệm của bản thân và những kiến thức tốt nhất mà mình có, để đưa ra một chỉ dẫn kiểu từng bước step-by-step dành cho bạn.

Lúc này đây, dĩ nhiên là tôi nhận ra rằng không có một công thức thần kỳ nào ở đây cả và rằng có rất nhiều con đường có thể dẫn đến thành công, nhưng tôi nghĩ rằng nếu làm theo những bước hợp lý được phác thảo ra sau đây thì một bạn trẻ mới vào nghề có thể vươn tới một mức trình độ khá cao và sẽ có khả năng trở thành một lập trình viên giỏi hoặc thậm chí là xuất sắc.

Bước 1: Hãy chọn lấy một ngôn ngữ lập trình, và học từ những thứ căn bản nhất

Trước khi có thể chạy, thì chúng ta phải học cách để đi trước đã. Bạn đi bằng cách học làm thế nào để lập trình trong một ngôn ngữ lập trình nào đó. Bạn đừng có học đi bằng cách cố gắng học 50 triệu thứ cùng một lúc, vì bạn không thể có phép phân thân ra như Tôn Ngộ Không được phải không nào.

Có rất nhiều lập trình viên bắt đầu bằng cách thử và nhảy vào tất cả mọi thứ một lần và không có đủ kiên nhẫn để học chỉ một ngôn ngữ lập trình duy nhất trước khi tiến lên phía trước. Họ nghĩ rằng họ phải biết tất cả những công nghệ mới đang “hot” thì mới có thể kiếm được một công việc lập trình. Trong khi đúng ra thì bạn cần biết nhiều hơn chỉ những kiến thức cơ bản của một ngôn ngữ lập trình duy nhất, bạn phải bắt đầu từ đây, vì như vậy thì bạn mới có thể tập trung được tốt nhất.

Chọn lấy một ngôn ngữ lập trình mà bạn nghĩ rằng sự nghiệp của mình về cơ bản sẽ xoay quanh nó. Ngôn ngữ lập trình đó tự bản thân nó thì không quan trọng nhiều lắm, nhưng bạn nên tính toán cả về lâu về dài nữa. Ý tôi muốn nói là bạn đừng nên thử và học một ngôn ngữ lập trình “dễ” khi bắt đầu. Hãy học bất cứ ngôn ngữ nào mà bạn cảm thấy thích thú và có thể nhìn thấy tương lai lập trình của mình trong một vài năm sắp tới. Bạn muốn chọn một cái gì đó mà sẽ mang lại giá trị lâu dài.

Một khi bạn đã chọn lấy ngôn ngữ lập trình nào đó thì bạn sẽ thử học và tìm một số cuốn sách hoặc bài thực hành mà chỉ liên quan đến ngôn ngữ lập trình đó thôi. Ý tôi muốn nói là bạn đừng tìm học các tài liệu mà dạy bạn quá nhiều thứ một lúc. Bạn nên tìm những tài liệu dành cho người mới bắt đầu mà chỉ tập trung vào ngôn ngữ đó, chứ không phải là rất nhiều công nghệ liên quan.

Khi bạn đọc xuyên suốt các tài liệu đó hoặc duyệt qua các bài thực hành mà bạn đã lựa chọn, thì hãy chắc chắn rằng bạn có thực hành viết code. Hãy làm thật nhiều bài tập có thể. Hãy thử nghiệm tất cả những gì bạn đã học được. Hãy thử gom các thứ lại với nhau và sử dụng tất cả các khái niệm mà bạn đã học được về nó. Vâng, điều này thì khá là “đau khổ”. Việc đọc hùng hục một cuốn sách từ trang đầu đến trang cuối thì rất dễ dàng, nhưng nếu bạn thực sự muốn học thực sự thì bạn cần phải thực hành.

Khi bạn đang viết code, hãy cố chắc chắn rằng bạn hiểu tất cả dòng code mà mình viết ra. Điều tương tự cũng cần làm cho bất kỳ dòng code nào mà bạn đọc. Khi viết ra những đoạn code, hãy làm chậm rãi và đảm bảo rằng bạn hiểu nó. Bất cứ điều gì mà bạn không hiểu, thì hãy tìm hiểu và làm rõ nó. Hãy dành thời gian làm điều này thì bạn sẽ không bị hổng kiến thức và mơ hồ về sau này.

Cuối cùng, hãy chuẩn bị tư tưởng là phải đọc qua một cuốn sách hoặc một hướng dẫn thực hành ít nhất 3 lần trước khi bạn có thể hiểu hết nó. Bạn sẽ không thu được phần “lập trình” trong lần thử đầu tiên – không ai từng làm được điều đó cả. Bạn cần lặp lại để bóc trần nó trước khi bạn bắt đầu có thể hiểu và thu nhận kiến thức từ nó và bạn hiểu được điều gì thực sự đang diễn ra. Cho tới một lúc bạn sẽ cảm thấy như bị lạc lối, điều đó là tốt, đó là một phần của quá trình phát triển. Chỉ việc chấp nhận nó và tiến lên phía trước.

Bước 2: Xây dựng một cái gì đó nhỏ thôi

Lúc này thì bạn đã có một hiểu biết cơ bản về một ngôn ngữ lập trình nào đó rồi, và đây là lúc để đưa những kiến thức đó vào làm việc và để nhận ra bạn đang thiếu hụt những gì. Cách tốt nhất để làm điều này là thử xây dựng một cái gì đó.

Đừng quá tham vọng tại thời điểm này – nhưng bạn cũng đừng quá nhút nhát. Hãy tìm kiếm ý tưởng tạo ra một ứng dụng mà đủ đơn giản để bạn có thể hoàn thành nó với một số nỗ lực, nhưng không phải là sẽ làm bạn mất vài tháng để hoàn thành. Cố gắng hạn chế nó chỉ trong ngôn ngữ lập trình bạn đã học nhiều nhất có thể. Đừng cố gắng để làm một cái gì đó mà phải áp dụng nhiều công nghệ khác nhau (nghĩa là, sử dụng tất cả những công nghệ từ giao diện người dùng cho đến database) – mặc dù bạn sẽ có thể cần sử dụng một vài framework hoặc API có sẵn.

Đối với ứng dụng đầu tay thì bạn có thể chọn giải pháp sao chép một cái gì đó đơn giản mà đã tồn tại rồi. Hãy tìm kiếm một ứng dụng đơn giản, kiểu như một ứng dụng dạng list nhắc việc To-Do chẳng hạn và cố gắng mô phỏng nó. Đừng cho phép các kỹ năng thiết kế của bạn cản trở việc học lập trình.

Tạo ra những ứng dụng đơn giản trước.

Tôi đề xuất bạn nên tạo ra một ứng dụng nào đó dành cho thiết bị di động, bởi vì hầu hết các ứng dụng di động thì thưởng nhỏ và khá dễ làm. Thêm nữa, việc học các kỹ năng phát triển cho di động thì rất có ích vì có rất nhiều các công ty đang bắt đầu cần các ứng dụng di động. Ngày nay, bạn có thể xây dựng một ứng dụng di động trong hầu như bất kỳ ngôn ngữ lập trình nào. Có rất nhiều giải pháp mà cho phép bạn xây dựng một ứng dụng cho các hệ điều hành di động khác nhau sử dụng rất nhiều các ngôn ngữ lập trình.

Bạn cũng có thể xây dựng một ứng dụng web nhỏ, nhưng cố gắng không nhảy quá sâu vào nhiều công nghệ phát triển web phức tạp. Về cơ bản tôi đề xuất bạn nên bắt đầu bằng một ứng dụng di động, bởi vì phát triển web thì có vẻ rắc rối hơn một chút cho người mới bắt đầu. Để phát triển một ứng dụng web thì bạn sẽ phải cần biết ít nhất là một số kiến thức về HTML, có thể một vài framework back-end và JavaScript.

Cho dù là bạn chọn cái gì để xây dựng, thì bạn có thể phải học chút ít về một vài framework – điều này thì rất tốt, chỉ đừng có quá sa lầy vào những chi tiết. Ví dụ, bạn có thể viết một ứng dụng Android khá đơn giản mà không cần phải thực sự biết nhiều về tất cả các hàm API của Android và làm thế nào Android hoạt động, chỉ bằng cách làm theo một số bài hướng dẫn đơn giản. Chỉ đừng tốn quá nhiều thời gian để cố gắng học mọi thứ về một framework nào đó. Hãy học cái mà bạn cần biết để phục vụ hoàn thành dự án của mình. Bạn có thể học về các chi tiết sau này.

Oh, và điều này có vẻ là hơi khó. Nhưng đó chính là cách bạn học như thế nào. Bạn phải vật lộn để nhận ra làm thế nào để làm một điều gì đó, sau đó bạn sẽ tìm thấy câu trả lời. Đừng bỏ qua bước này. Bạn sẽ chẳng bao giờ vươn tới đẳng cấp là một nhà phát triển phần mềm chuyên nghiệp nếu bạn không học những thứ khó khăn và nhận ra nhiều điều thú vị trong quá trình nghiên cứu. Đây là một khóa huấn luyện tốt cho tương lai của bạn.

Bước 3: Nghiên cứu về một framework

Lúc này là thời điểm để thực sự tập trung vào một framework. Vì lúc này bạn đã nắm được một lượng kiến thức kha khá về ít nhất là một ngôn ngữ lập trình rồi và đã có một số kinh nghiệm để có thể làm việc cùng một framework cho các ứng dụng di động hoặc web.

Hãy chọn một framework nào đó để học và nó sẽ cho phép bạn làm việc hiệu quả hơn trong một số môi trường. Dạng framework mà bạn lựa chọn để học sẽ được dựa trên kiểu nhà phát triển phần mềm nào mà bạn muốn trở thành trong tương lai. Nếu bạn muốn trở thành một nhà phát triển web, thì bạn sẽ muốn học một web framework cho bất cứ ngôn ngữ lập trình nào mà bạn đang làm việc trên nó. Nếu bạn muốn trở thành một nhà phát triển ứng dụng di động, thì bạn sẽ cần học về một hệ điều hành di động và framework đi kèm với nó.

Cố gắng đào sâu kiến thức của bạn về framework đó. Điều này sẽ khá mất thời gian, nhưng đầu tư thời gian để học bất cứ thứ gì về framework mà bạn đang sử dụng thì rất tốt. Đừng cố học nhiều framework vào lúc này – nó sẽ chỉ khiến phân tán sự tập trung của bạn mà thôi. Hãy nghĩ về việc học các kỹ năng bạn cần cho một công việc xác định mà bạn muốn nhận, có sử dụng framework và chính ngôn ngữ lập trình mà bạn đang học. Bạn có thể luôn luôn mở rộng tập kỹ năng của mình sau này.

Bước 4: Học về một công nghệ cơ sở dữ liệu

Hầu hết các nhà phát triển phần mềm sẽ cần phải biết về một số công nghệ cơ sở dữ liệu vì rất nhiều các ứng dụng phải có một database back-end. Vì vậy, hãy chắc chắn rằng bạn không bỏ bê việc đầu tư vào lĩnh vực này.

Bạn sẽ có khả năng nhìn thấy lợi ích lớn nhất nếu bạn học về SQL – thậm chí nếu bạn lên kế hoạch sẽ làm việc cùng cơ sở dữ liệu NoSQL như MongoDB hoặc Raven, thì việc học SQL sẽ mang lại cho bạn một nền tảng tốt hơn để làm việc sau này. Có rất nhiều công việc tuyển dụng ngoài kia mà yêu cầu kiến thức về SQL nhiều hơn là NoSQL.

Đừng quá lo lắng về nhiều loại cơ sở dữ liệu SQL. Những công nghệ SQL khác nhau thì thực ra chúng có rất nhiều điểm giống nhau và bạn sẽ không gặp phải vấn đề gì trong việc chuyển đổi qua lại giữa chúng nếu bạn biết những kiến thức cơ bản về một công nghệ SQL nào đó. Chỉ chắc chắn rằng bạn hãy học về những thứ căn bản như table, queries, và những thao tác phổ biến về database khác.

Tôi khuyến khích bạn nên chọn một cuốn sách tốt về công nghệ SQL phù hợp và tạo ra một vài dự án nhỏ, vì vậy bạn có thể thực hành cái mà bạn đang học – luôn luôn thực hành những kiến thức mà bạn đang học.

Bạn phải có đủ kiến thức về SQL để có thể:

  • Tạo các bảng (table)
  • Thực thi các truy vấn cơ bản
  • Join các bảng với nhau để truy xuất dữ liệu
  • Hiểu các kiến thức cơ bản về index làm việc như thế nào
  • Insert, update và delete dữ liệu

Ngoài ra, bạn sẽ muốn học một số dạng của công nghệ object relational mapping (ORM). Cái mà bạn học sẽ phụ thuộc vào công nghệ nào mà bạn đang làm việc trên đó. Tìm kiếm những công nghệ ORM phù hợp với framework mà bạn đã học. Có thể có một vài lựa chọn ở đây, vì vậy cách tốt nhất là bạn hãy chọn lấy cái phổ biến nhất.

Bước 5: Nhận một công việc hỗ trợ một hệ thống đang tồn tại

Ok, bây giờ bạn đã có đủ các kỹ năng và kiến thức để nhận được một công việc cơ bản như là một nhà phát triển phần mềm. Nếu bạn có thể chỉ cho tôi rằng bạn hiểu những kiến thức cơ bản của một ngôn ngữ lập trình, có thể làm việc cùng một framework, hiểu về cơ sở dữ liệu và đã xây dựng được ứng dụng của riêng bạn, thì tôi chắc chắn sẽ muốn thuê bạn – cũng như nhiều nhà tuyển dụng khác.

Bảo trì một hệ thống đang tồn tại.

Điểm mấu chốt ở đây là không quá nhắm vào một công việc nào đó yêu cầu trình độ cao. Đừng cố thử tìm một công việc trong mơ của bạn ngay lúc này – vì bạn vẫn chưa đủ trình độ. Thay vì đó, cố gắng tìm một công việc dạng bảo trì một hệ thống phần mềm đang tồn tại mà được xây dựng sử dụng ngôn ngữ lập trình và framework mà bạn đã học.

Bạn có thể không tìm thấy chính xác một công việc như vậy, nhưng nhiều khả năng là bạn có thể tìm thấy một công việc tốt hơn. Cố gắng ứng tuyển vào những công việc phù hợp chính xác với những công nghệ mà bạn đã được học.

Thậm chí với sự thiếu hụt nhiều kinh nghiệm, nếu bạn phù hợp chính xác với một tập kỹ năng và bạn lại sẵn lòng trở thành một lập trình viên bảo trì, thì bạn sẽ có thể tìm thấy một công việc.

Vâng, dạng công việc này có thể hơi tẻ nhạt một chút. Nó không được hứng thú như là việc tạo ra một cái gì đó mới mẻ, nhưng mục đích của công việc này không phải là mang lại niềm vui hoặc để kiếm tiền, nó là để học hỏi và thu được nhiều kinh nghiệm nhiều nhất có thể.

Làm việc trên một ứng dụng đang tồn tại, cùng với một nhóm các nhà phát triển khác, sẽ giúp bạn mở rộng các kỹ năng của mình và biết được một hệ thống phần mềm lớn thường được cấu trúc như thế nào. Bạn có thể sửa các lỗi và bổ sung thêm các đặc trưng nhỏ khác, ngoài ra bạn cũng sẽ học và đưa những kỹ năng của bạn vào hành động.

Dồn hết tâm trí của bạn vào công việc này. Học mọi thứ bạn có thể. Làm công việc ở mức tốt nhất bạn có thể. Đừng nghĩ về tiền bạc, đảm nhiệm nhiều vai trò khác nhau trong dự án này – tất cả sẽ đến sau đó – còn lúc này, bạn hãy chỉ tập trung vào để làm cho công việc hoàn thành một cách hiệu quả nhất có thể và mở rộng các kỹ năng của bạn.

Bước 6: Học những bài thực hành tốt nhất về cấu trúc (structural)

Bây giờ là lúc để bạn bắt đầu nâng cao chất lượng trong việc viết code. Đừng lo lắng quá nhiều về vấn đề thiết kế phần mềm tại thời điểm này. Bạn cần học làm thế nào để viết những đoạn “code sạch” (clean code) mà dễ dàng để hiểu và bảo trì. Để làm được điều này, bạn sẽ cần phải đọc rất nhiều và xem nhiều ví dụ về một số đoạn code tốt (good code).

Hãy bổ sung vào giá sách của bạn với những cuốn sách sau đây:

Các cuốn sách về cấu trúc ngôn ngữ xác định như:

Tại thời điểm này bạn thực sự muốn tập trung việc học của mình vào xử lý cấu trúc để viết ra những đoạn code hay và làm việc trên nhiều hệ thống đang tồn tại. Bạn sẽ cố gắng để dễ dàng thực thi một thuật toán trong ngôn ngữ lập trình của bạn đã chọn và làm nó theo cách dễ dàng để đọc và hiểu nhất.

Bước 7: Học một ngôn ngữ lập trình thứ hai

Tại thời điểm này bạn nên phát triển khả năng bằng cách học một ngôn ngữ lập trình thứ hai thực sự tốt. Bạn nên chọn một ngôn ngữ lập trình mà khác hẳn ngôn ngữ mà bạn đã biết.

Điều này có vẻ như là hơi kỳ quặc, nhưng hãy để tôi giải thích lý do tại sao việc này là rất quan trọng. Khi bạn biết một ngôn ngữ lập trình thật giỏi, thì bạn chỉ hiểu các khái niệm của phát triển phần mềm trong ngôn ngữ lập trình đó, mà việc phát triển phầm mềm thì lại vượt quá một ngôn ngữ hoặc công nghệ riêng rẽ nào. Nếu bạn dành thời gian trong một môi trường hoặc ngôn ngữ lập trình mới, thì bạn sẽ bắt đầu nhìn thấy mọi thứ theo một cách mới. Bạn sẽ bắt đầu để học một cách thực tiễn hơn là theo cách bắt chước.

Là một lập trình viên mới, bạn thường rất thích làm mọi thứ theo một cách đặc biệt nào đó mà không cần biết lý do tại sao bạn lại đang làm chúng theo cách đó. Một khi bạn đã học một ngôn ngữ lập trình thứ hai và nắm vững công nghệ, thì bạn sẽ bắt đầu tìm hiểu xem về lý do tại sao. Tin tôi đi, bạn sẽ phát triển nếu bạn thực hiện điều này. Đặc biệt là nếu bạn chọn lấy một ngôn ngữ lập trình mà bạn ghét.

Chắc chắn rằng bạn xây dựng một thứ gì đó cùng với ngôn ngữ mới này. Không cần phải hoành tráng, nhưng một cái gì đó đủ phức tạp để bắt bạn phải suy nghĩ động não thật nhiều và có thể thậm chí phải đập đầu vào tường – nhè nhẹ.

Bước 8: Xây dựng một cái gì đó có giá trị

Tốt rồi, bây giờ tiến đến việc kiểm tra thực sự để chứng tỏ khả năng phát triển phần mềm của bạn. Liệu bạn có thể thực sự xây dựng một cái gì đó quan trọng cho chính mình?

Nếu bạn tiếp tục tiến lên và tự tin để nhận một công việc xây dựng một cái gì đó, và có lẽ thậm chí thiết kế một cái gì đó cho một ông chủ của mình, bạn biết là bạn có thể làm nó. Không có cách nào tốt hơn để biết nó hơn là bắt tay vào làm nó.

Chọn một dự án mà sẽ sử dụng được toàn bộ các kỹ năng của bạn. Chắc chắn rằng bạn kết hợp cả cơ sở dữ liệu, framework và mọi thứ khác mà bạn cần để xây dựng một ứng dụng hoàn chỉnh. Dự án này nên là một cái gì đó mà sẽ chiếm của bạn nhiều hơn một tuần làm việc và yêu cầu một số suy nghĩ nghiêm túc và thiết kế. Thử làm một cái gì đó mà bạn có thể kiếm được tiền từ nó để bạn có một vài động lực làm việc.

Nên chắc chắn rằng bạn không phát triển nó ra quá lớn. Bạn vẫn không muốn mang quá nhiều tham vọng vào đây. Chọn một dự án mà sẽ thách thức bạn, nhưng không phải là một dự án mà bạn sẽ chẳng bao giờ hoàn thành được. Đây là một bước ngoặt quan trọng trong sự nghiệp của bạn. Nếu bạn có sự cam kết để theo và hoàn thành dự án này, thì bạn sẽ đi được rất xa, còn nếu bạn không thể… vâng, thì tôi không thể nói trước được điều gì.

Bước 9: Kiếm một công việc tạo một hệ thống mới

Ok, bây giờ là lúc để bạn lại tiếp tục đi tìm công việc tiếp theo. Bởi vào thời điểm này, bạn đã đạt được lợi ích lớn nhất từ công việc hiện tại – đặc biệt là nếu nó vẫn chỉ là công việc bảo trì.

Tham gia tạo ra một hệ thống phần mềm mới.

Đây là thời điểm để tìm kiếm một công việc mà sẽ thách thức bạn – nhưng đừng quá nhiều. Bạn vẫn sẽ phải học rất nhiều, vì vậy bạn không muốn nhận một công việc mà quá phức tạp so với bạn. Lý tưởng là bạn nên tìm một công việc nơi mà bạn sẽ có cơ hội để làm việc trong một nhóm đang xây dựng một sản phẩm gì đó mới mẻ.

Có thể bạn không phải là người kiến trúc ra hệ thống đó, nhưng việc tham gia tạo ra một ứng dụng sẽ giúp bạn mở rộng các kỹ năng của mình và thách thức bạn trong nhiều cách khác nhau hơn là chỉ ngồi bảo trì một hệ thống phần mềm đang tồn tại.

Bạn đã có một sự tự tin trong việc tạo ra một hệ thống mới rồi, bạn vừa kết thúc việc tạo ra một hệ thống quan trọng cho riêng mình, vì vậy bạn có thể bước vào buổi phỏng vấn mà không cảm thấy quá hồi hộp và cùng với niềm tin rằng bạn có thể làm được công việc đó. Sự tự tin này sẽ giúp bạn có thể nhận được bất cứ công việc nào mà bạn ứng tuyển vào.

Hãy chắc chắn rằng bạn khiến cho nhà tuyển dụng được tập trung. Hãy nêu bật lên tập các kỹ năng xác định mà bạn đã đạt được. Đừng cố gây ấn tượng với bất kỳ ai bằng một danh sách dài dằng dặc của những kỹ năng chả liên quan gì. Tập trung vào những kỹ năng quan trọng nhất và tìm kiếm những công việc mà phù hợp chính xác với chúng – hoặc ít ra thì cũng phù hợp nhất có thể.

Bước 10: Học những bài thực hành tốt nhất về thiết kế phần mềm

Bây giờ là thời điểm để bạn đi từ một junior (ít kinh nghiệm) thành một senior developer (lập trình viên lão luyện). Các junior developer thường bảo trì các hệ thống, còn senior developer thì thiết kế và xây dựng các hệ thống của họ. (Thường là vậy, dĩ nhiên là cũng có một số senior developer chuyên đi bảo trì các hệ thống.)

Bạn đã sẵn sàng để xây dựng các hệ thống ngay lúc này, nhưng bây giờ bạn cần phải học cách làm thế nào để thiết kế ra chúng.

Bạn nên tập trung vào việc nghiên cứu vào các bài thực hành thiết kế tốt nhất và một số chủ đề nâng cao kiểu như:

  • Design patterns
  • Inversion of Control (IOC)
  • Test Driven Development (TDD)
  • Behavior Driven Development (BDD)
  • Các phương pháp phát triển phần mềm như: Agile, SCRUM, v.v…
  • Message buses và integration patterns

Danh sách này có thể sẽ còn dài ra rất nhiều – bạn sẽ chẳng bao giờ có thể kết thúc việc học và phát triển các kỹ năng của bạn trong lĩnh vực này. Chỉ nên chắc chắn rằng hãy bắt đầu cùng với những thứ quan trọng nhất trước tiên – điều này sẽ phụ thuộc vào cái mà bạn cảm thấy thú vị và nơi mà bạn muốn đến trong sự nghiệp của mình.

Mục tiêu của bạn ở đây là có khả năng không chỉ là xây dựng một hệ thống mà một ai đó đã thiết kế ra, mà nó phải hình thành dựa trên quan điểm của chính bạn về phần mềm nên được thiết kế ra làm sao và những dạng kiến trúc nào thì phù hợp cho những loại vấn đề này.

Bước 11: Tiếp tục học

Tại thời điểm này thì bạn đã làm ra sản phẩm phần mềm, nhưng bạn cần phải tiếp tục phát triển để trở thành một lập trình viên giỏi, thậm chí có thể trở nên “xuất sắc”. Luôn tâm niệm rằng bạn sẽ luôn có một cái gì đó để học thêm.

Phải mất bao lâu thì bạn mới có thể tới được điểm này? Tôi cũng không biết chắc. Nó có thể mất ít nhất một số năm, nhưng có thể phải đến 10 năm hoặc hơn – nó còn tùy thuộc vào việc bạn cống hiến nhiều như thế nào và những cơ hội nào xuất hiện với bạn nữa.

Có một con đường tắt khá tốt đó là cố gắng và luôn luôn bao quanh bạn bởi những lập trình viên giởi hơn bạn để có thể học hỏi từ họ.

Một số điều cần làm trong suốt quá trình thực hiện các bước trên

Có một số điều mà bạn nên làm trong suốt quá trình mà bạn đang làm theo 10 bước nói trên. Nó sẽ rất khó để liệt kê chúng trong mỗi bước, vì vậy tôi sẽ liệt kê chúng một cách tóm tắt ở đây:

Dạy – Toàn bộ thời gian trong quá trình bạn đang học các thứ nói trên, bạn cũng nên dạy chúng cho những người khác. Không quan trọng là liệu bạn là một người mới bắt đầu hay là một chuyên gia, bạn sẽ có một cái gì đó có giá trị để dạy, dạy người khác thì cũng là một cách tốt nhất để học. Ghi lại tài liệu tất cả quá trình và chuyến hành trình của bạn, và giúp đỡ những người khác trên suốt con đường mà bạn đi.

Tiếp thị bản thân bạn – Tôi nghĩ rằng đây là một điều rất quan trọng đến mức tôi đã xây dựng một khóa học hoàn chỉnh về ý tưởng này. Học cách làm thế nào để tiếp thị bản thân và tiếp tục làm nó trong suốt sự nghiệp của bạn. Nhận ra cách làm thế nào để có thể tạo ra thương hiệu cá nhân cho chính bạn, xây dựng một danh tiếng cho riêng mình trong ngành công nghiệp phần mềm và bạn sẽ chẳng bao giờ sợ thiếu việc làm cả. Bạn sẽ quyết định về tương lai của chính mình nếu bạn học được cách tiếp thị bản thân. Có rất nhiều công việc phải làm, nhưng nó cũng mang lại giá trị xứng đáng. Bạn đang đọc bài viết này từ chính nỗ lực của tôi cho mục đích đó.

ĐọcĐừng bao giờ ngừng học. Đừng bao giờ ngừng đọc. Luôn luôn làm việc theo cách của bạn thông qua những cuốn sách. Luôn luôn phát triển bản thân. Chuyến hành trình tìm kiếm tri thức của bạn sẽ chẳng bao giờ kết thúc, vì việc học là chuyện của cả đời. Bạn có thể sẽ không biết được tất cả. Nếu bạn tiếp tục học trong suốt sự nghiệp của mình, thì bạn sẽ luôn luôn vượt trội hơn so với những đồng nghiệp khác.

Làm – Với mỗi điểm dừng chân trên chuyến hành trình đó, đừng chỉ học mà hãy làm. Hãy đặt mọi thứ mà bạn học được vào hành động. Thiết lập một quỹ thời gian bên cạnh để luyện tập các kỹ năng của bạn và viết code và xây dựng một số thứ. Cũng giống như việc bạn có thể đọc tất cả các cuốn sách về hướng dẫn chơi golf mà bạn muốn, nhưng bạn sẽ chẳng bao giờ trở thành tay golf số 1 thế giới như Tiger Woods nếu bạn không vác gậy đi đánh golf thực sự.

LINK: https://vinacode.net/2014/10/31/tro-thanh-mot-lap-trinh-vien-gioi/

Bài viết được dịch từ blog Simple Programmer

Một số lời khuyên cho các bạn trẻ đang theo đuổi ngành CNTT

  • Hãy chơi thể thao ít nhất 1 tiếng mỗi ngày: bơi – chạy – bóng bàn – bóng đá – võ thuật… Ngồi máy tính nhiều dễ bị các bệnh nghề nghiệp như: trĩ, vô sinh, tim mạch.
  • Hãy sử dụng thời gian một cách hiệu quả. Thêm một giờ tập trung code, bạn sẽ kiếm thêm tối thiểu 3 triệu VNĐ/tháng.
  • Cám dỗ và thú vui thì rất nhiều, mà thời gian thì lại có hạn. Bởi vậy để trở thành một chuyên gia tin học thực sự và không bị lạc hậu thì bạn sẽ phải hy sinh nhiều thứ. Cá nhân mình không bao giờ xem TV, không đi nhậu lai rai, tránh những buổi tiệc tùng… để có thêm thời gian cho công việc chuyên môn.
  • Hãy tích cực viết blog để chia sẻ kinh nghiệm lập trình. Vừa để ghi nhớ lại kinh nghiệm đã trải qua, vừa tạo profile tốt rất cần khi đi xin việc.
  • Copy những quyển ebook tin học hay vào máy tính bảng để tranh thủ đọc. Kiến thức sẽ bán được nếu kiến thức đó đã qua trải nghiệm thực sự. Do đó đọc xong phải lập trình thử luôn.
  • Viết và tham gia một dự án mã nguồn mở trên GitHub hoặc trả lời trên StackOverflow, trao đổi trên Quora.
  • Tích cực tìm kiếm bạn gái: tình yêu và sự lãng mạn là điều rất tốt cho lập trình và các công việc mang tính sáng tạo.

LINK: https://vinacode.net/2015/05/18/viet-blog-chia-se-kinh-nghiem-lap-trinh/

Bạn có thể lập trình đến năm bao nhiêu tuổi?

Bài viết rất hữu ích với các LTV.

 

Tác giả bài viết này đã 40 tuổi, sẽ lập trình đến năm 50. Hiện đã kiếm đủ để hạnh phúc với cuộc sống giản dị. Các bạn đừng quá lo. Cứ học, và lập trình chăm vào. Đoạn sau là hiện thực xã hội Vn. Còn bạn vẫn giỏi và đam mê, ai cấm được bạn nghĩ kiếm tiền từ lập trình.
Email của mình đây nhé: cuong[at]techmaster[dot]vn. Mình là giảng viên dạy môn iOS, Objective-C, Swift, Node.js và Python ở Techmaster.

Ngày hôm nay, đi đến bất kỳ trường đại học nào, trường cao đẳng nào, trường nghề nào, chúng ta cũng thấy có khoa đào tạo tin học.  Chi phí để mở khoa đào tạo tin học trong mắt các nhà quản lý giáo dục hay kinh doanh giáo dục khá rẻ, điều kiện cơ hội cũng thuận lợi:

  • Đầu tư phòng lab máy tính khoảng 12 triệu VND /1 máy. 20 máy tính khoảng 240 triệu VND. Bàn ghế, máy chiếu, bảng, quạt trần, điều hòa thêm khoảng 150 triệu VND. Nhìn chung là không quá cao.
  • Giảng viên có thể thuê ngoài. Giáo trình có thể mua từ Mỹ, Ấn. Thậm chí thuê vài ông lập trình viên quá đát, chán lập trình, thích làm quản lý, thích đứng lớp về dạy là chuẩn nhất. Sinh viên vừa thích nghe thầy kể chuyện, thầy có công ty ngoài, giới thiệu các em đi thực tập xin việc. Lợi cả đôi đường.
  • Đầu ra tuyển dụng lập trình viên tin học trong 20 năm trở lại đây và trong 5 năm kế tiếp luôn cao hơn nhiều số sinh viên CNTT có thể làm được việc luôn.
  • Truyền thông để tuyển sinh, ngành IT là ngành có nhiều thuận lợi nhiều so với ngành cơ khí, cầu đường, hóa chất... vì nghề IT được cho là văn minh, hiện đại ngồi văn phòng mát mẻ, điều hòa, không lấm lem dầu mỡ, hay vất vả nắng, mưa như xây dựng, cầu đường. Tấm gương ngành CNTT thông tin Ấn Độ, hay như các tỷ phủ Bill Gates, Mark Zuckerber hay Steve Jobs, bố mẹ ở thành phố đến nông thôn đều biết hoặc nghe qua.

Phụ huynh lẫn học sinh lựa chọn ngành CNTT ít đắn đo mà không hiểu rằng:

  1. Người chọn nghề, nhưng nghề cũng chọn người.
  2. Một công việc phổ thông đến một nghề kỹ thuật cần phải đào tạo. Từ một nghề để có một sự nghiệp tương đối thành công cần tối thiểu 10 năm lao động cật lực nghiêm túc. Xem bài Tự học lập trình trong 10 năm dịch từ bài gốc của tác giả Peter Novig
  3. Tuổi nghề lập trình viên (loại ngành hẹp trong CNTT có số lượng việc làm chiếm hơn 70%) ở Việt nam rất là thấp trung bình dưới 35 tuổi. Trong khi tuổi về hưu trung bình là 60 tuổi.

 Tuổi nghề lập trình viên ( loại ngành hẹp có số lượng việc làm chiếm hơn 70%) ở Việt nam rất là thấp trung bình dưới 35 tuổi. Trong khi tuổi về hưu trung bình là 60 tuổi.

Các kỹ sư làm việc cho tập đoàn điện tử lớn Hàn Quốc thường có một sức ép rất lớn khi qua tuổi 40. Hoặc phải trở thành nhà quản lý, trưởng nhóm chịu trách nhiệm nhiều hơn, thưởng cao hơn, hoặc phải nhận bồi thường để nghỉ việc. Nghe nói những nhân viên kỳ cựu của chaebol Samsung  xin bị ép nghỉ việc được bồi thường một khoản tiến đủ để mở một quán thịt nướng Samkiepsa. Nhân viên làm cho công ty tư nhân nhỏ lẻ còn tệ hơn. Xem bài này . Nhiều người về hưu sau tuổi 40 đã phải lái xe taxi, làm bảo vệ, hoặc bán hàng ăn bằng xe đẩy. Chính mắt tôi đã chứng kiến cảnh này trong thời gian du học tại Hàn Quốc từ 2004 đến 2007.

Hiện nay hàng năm, ở ba thành phố lớn: Hồ Chí Minh, Hà nội, Đà nẵng, các công ty phần mềm (600 công ty lớn nhỏ) cần tuyển thêm mới khoảng 10,000 - 12,000 lập trình viên (bạn nào có con số chính xác hơn xin cung cấp). Trong 10 năm tới, số lượng lập trình viên, người làm IT ở Việt nam sẽ trở nên một lực lượng đông nhưng không tinh, chịu nhiều rủi ro và sẽ có tình trạng thất nghiệp.

Học lập trình trực tuyến tốt nhất
2013: 156,500 người làm trong ngành phần mềm + nội dung số. 2015 có thể đạt 190,000 người.
Học lập trình trực tuyến ở đâu tốt nhất?
Trang 86, sách trắng CNTT do Bộ thông tin truyền thông phát hành 2014
Chỉ 1/5 trong số sinh

Nếu số lượng lập trình viên chuyển sang làm quản lý quá đông, mô hình tổ chức sẽ trở nên cồng kềnh, nhiều lớp quản lý trung gian, lợi nhuận giảm. Công ty khó khăn khi chuyển hướng sang công nghệ mới. Năm 2010-2014 tôi đã chứng kiến sự chuyển đổi từ mô hình client - server, nền tảng .NET sang di động, điện toán đám mây. Các doanh nghiệp Việt nam (đặc biệt ở Hà Nội) tỏ ra rất chật vật so với những đối thử xừng xỏ như Trung Quốc, Ấn Độ, Đông Âu. Lập trình viên Trung Quốc năng động hơn chúng ta, họ tích cực tham gia đóng góp vào các mã nguồn mở, tạo ra các mã nguồn mở có chất lượng như Cocos2D-X, gói phần mềm cho Node.js, Go-Lang, Docker.... Năm 2014 -2015, khi trào lưu lập trình Freelancer phổ biến, chúng ta lại gặp sự cạnh tranh từ lập trình viên Nga - Ukraina do cuộc chiến ở Ukraina, khủng hoảng kinh tế Nga, thêm cả lập trình viên Campuchia, Philipines, code vừa tốt, vừa chăm, tiếng Anh lại giỏi.

Thực tế dạy và học lập trình ở Việt Nam

  • Mỗi lập trình viên Việt nam chưa hình thành thói quen cập nhật kiến thức liên tục. Tốt nghiệp đại học năm 21 tuổi, tính đến năm 37 tuổi lập trình được 14 năm, 2 năm cuối năng suất giảm gần như về 0. Trong 14 năm, đó, lập trình viên Vn thường chỉ chuyển đổi công nghệ 1 - 2 lần.
  • Bản thân họ và nhiều người định kiến cho rằng, qua tuổi 40, vẫn tiếp tục lập trình là sự nghiệp không thành công.
  • Công ty không có chương trình bồi dưỡng chuyên gia công nghệ. Trên 70% lập trình viên làm cho công ty gia công phần mềm, phần lớn lập trình trên khuôn mẫu, mã nguồn có sẵn. Tỷ lệ chuyển việc khá cao khoảng 3-4 năm/1 công ty, khiến các công ty ngại đầu tư lâu dài vào nhân lực.
  • Khóa CNTT ở các trường đại học công ở Việt nam không có môn nào kiểu như:
    • How to start up: dạy khởi nghiệp để lập trình viên chuyển từ thợ sang người sáng tạo sản phẩm dịch vụ
    • Career path development: phát triển nghề nghiệp hay tối thiểu như đạo đức nghề lập trình. Lập trình viên VN copy, sử dụng mã nguồn một cách bừa bãi, không tôn trọng quy định không tiết lộ (NDA - Non Disclosure Agreement),... là phổ biến. Không có "Đạo" là không có con đường dẫn lối. Không có đường dẫn lối, thì làm sao có thể tiến dài và tiến xa?
    • Môn thiết kế phần mềm có dạy nhưng lạc hậu, thiếu ví dụ cụ thể. Khiến cho sinh viên CNTT ra trường phải học lại lập trình như thợ lập trình mất 2 năm. Còn khả năng kiến trúc thiết kề thì còn tùy vào từng người, từng hoàn cảnh công việc.

Lập trình viên Việt nam sẽ làm gì nếu chỉ lập trình đến năm 37? Làm gì tiếp trong 23 năm tiếp theo?

Đây là một câu hỏi mà tôi đã từng trăn trở với chính tôi khi tôi 35 tuổi (2010). Lúc đó, tôi làm nhân viên của một tập đoàn phần mềm nước ngoài ở Việt nam. Công việc liên quan đến phần mềm nhưng không thực sự phát triển phần mềm, sản phẩm. Tôi bứt rứt khó chịu đến mức 1 năm sau đó đã xin nghỉ để có thể quay lại lập trình. Những người như tôi có thể không còn nhiều. Một khi đã làm cho tập đoàn nước ngoài, cái đích tiếp sẽ là chức vụ cao hơn hoặc chuyển sang một tập đoàn khác. Khi nào đi mỏi chân 5-6 công ty, thì cũng vừa lúc về hưu non (~48-50 tuổi).

Điều gì sẽ xảy ra nếu từ 2020, ở Việt nam hàng năm có khoảng 7,000 đến 8,000 lập trình viên qua tuổi 40 bị đào thải vì không cạnh tranh được với lực lượng lao động trẻ lương thấp, được đào tạo kỹ năng hợp thời hơn? Hoặc do thị trường gia công cho Nhật Bản đi xuống vì lúc này thế vận hội Olympic 2020 tại Nhật đã xong, nhu cầu phát triển phần mềm thay mới chững lại? Internet Of Thing phát triển mạnh, nhưng Việt nam không mạnh về kỹ nghệ điện tử, cơ khí chế tạo, kiểu dáng... Đã có nhiều dịch vụ điện toán đám mây đe dọa đến các sản phẩm, dịch vụ phần mềm trong nước ví dụ như: Uber - GrabTaxi, Skype, Viber, tiếp theo là y tế, giáo dục, tài chính...

Sau 5 năm, năng lực tiếng Anh của lập trình viên Việt nam có thể cạnh tranh với Ấn Độ chưa? Khi tại thời điểm này, người Ấn Độ đã nắm nhiều vị trí chủ chốt trong các tập đoàn phần mềm Mỹ. Kỹ năng nghiên cứu chuyên sâu, tự học của lập trình viên VN có cạnh tranh được với đồng nghiệp Trung Quốc? 5 năm là thời gian quá ngắn khó cải thiện hệ thống giáo dục bảo thủ, lạc hậu tại Việt nam. 

Tham khảo thêm bài viết "Nghề lập trình trước 40 tuổi"

Tham khảo Ấn Độ:

  • Lập trình viên Ấn Độ phải đi sang nhiều nước khác. Tiếng Anh lập trình viên Ấn rất tốt, còn tiếng Anh của lập trình viên VN kém. Họ chịu khó, khả năng thuyết trình, làm việc nhóm tốt, khả năng cò cưa đẩy việc cũng tốt.
  • Chuyển sang làm Freelancer
  • Bỏ nghề, chuyển nghề khác như lái xe taxi, mở hàng ăn, kinh doanh nhỏ....
  • Ấn Độ có ngành dịch vụ BPO, Call Center rất mạnh. Nhân viên IT có thể chuyển sang làm ở BPO, Call Center hoặc liên quan. Còn Việt nam chỉ tập trung khá đơn điều vào gia công phần cứng (công nhân tập đoàn Samsung, Intel, FoxCon, Microsoft), gia công phần mềm (60% đến từ thị trường Nhật Bản).

Đây là một bài viết chưa hoàn chỉnh vì chưa có ý kiến đóng góp từ những lập trình viên và anh em khác trong ngành, tôi tạm thời chưa viết phần kết. Tôi cần thêm phản hồi từ các bạn, những lập trình viên để có thêm thông tin để hoàn thành bài viết này.

Hãy chia sẻ ý kiến của bạn vào Google Form. Tôi sẽ trích dẫn trong bài tới

Học lập trình để kiếm việc làm

LINK: https://techmaster.vn/posts/33549/tuoi-nghe-lap-trinh-vien-o-viet-nam

Lý do yếu kém của các lập trình viên Ấn Độ

Bài viết của tác giả Ấn Độ, nhưng cũng gióng Việt Nam mình.

Lúc nào cũng vậy, tôi thường nghe rằng lập trình viên Ấn Độ có chất lượng rất thấp khi so sánh với những đồng nghiệp tại các quốc gia phương Tây. Các nhóm phát triển tại các nước phương Tây thường chỉ trích các đồng nghiệp đang làm gia công bên kia bán cầu luôn làm chậm tiến độ dự án của họ. Họ nói rằng các đồng nghiệp Ấn Độ không có năng lực về kỹ thuật; viết code rất tồi và không đưa ra được một giải pháp nào để giải quyết vấn đề khi gặp phải v.v…

Tại sao các lập trình viên Ấn Độ lại có đẳng cấp thấp hơn các đồng nghiệp phương Tây?


Theo quan điểm của tôi thì những lời chỉ trích này là có cơ sở. Vâng, chúng ta đang ở đẳng cấp thấp hơn so với những lập trình viên tại các quốc gia phương Tây và đôi khi đó là một điều đáng hổ thẹn. Tôi xin nói thêm rằng đây chỉ là quan điểm của cá nhân tôi, và không phải tất cả các lập trình viên tại Ấn Độ đều có chất lượng thấp. Nó là kết quả của việc chạy theo số lượng và chúng ta đã bỏ qua mặt chất lượng trong giáo dục.

Trong bài viết này, tôi sẽ đưa ra một số lý do giải thích tại sao lập trình viên Ấn Độ bị tụt lại phía sau so với những lập trình viên ở các quốc gia khác.

1. Đa số lập trình viên Ấn Độ là do chuyển từ ngành khác sang

Ở Ấn Độ thì bất kỳ ai cũng có thể trở thành một lập trình viên phần mềm mặc cho bằng cấp của anh (hoặc cô ta) là gì. Ví dụ như tôi, ban đầu là một kỹ sư cơ khí, nhưng khi đang học trong trường đại học thì tôi đã được tuyển dụng vào một công ty phần mềm, và sau đó tôi trở thành một lập trình viên phát triển phần mềm. Giống như tôi, rất nhiều bạn bè khác cũng trở thành lập trình viên phần mềm mà chuyên ngành đào tạo lại là một ngành khác. Hầu hết các sinh viên đại học được tuyển dụng vào các công ty phần mềm mà không biết chút gì về quy trình phát triển phần mềm và kiến thức nền tảng về lập trình.

2. Kiến thức thu được từ nhà trường hầu như không giúp ích được gì

Tôi đã tốt nghiệp từ một trong những trường đại học thuộc loại tốt nhất Ấn Độ, nhưng tôi có thể nói với bạn một điều rằng chất lượng giáo dục tại Ấn Độ thì rất tồi, bất kể là bạn tốt nghiệp từ trường nào. Ở Ấn Độ, quan trọng trong học tập là điểm số chứ không phải là kiến thức thực sự, sinh viên chỉ học vẹt lý thuyết để lấy điểm cao chứ về thực hành thì hầu như không biết gì. Gần đây tôi có phỏng vấn tuyển dụng một anh chàng có gần 6 năm kinh nghiệm, tốt nghiệp từ một trường rất nổi tiếng chuyên nghành Khoa Học Máy Tính với điểm tốt nghiệp rất cao, nhưng thậm chí anh ta không thể viết nổi chương trình tính dãy số Fibonacci.

3. Lập trình viên không chịu cập nhật kiến thức mới

Nếu bạn hỏi một lập trình viên rằng Cuốn sách kỹ thuật lập trình nào bạn đọc gần đây nhất? hoặcBạn thường làm cách nào để cập nhật kiến thức? hầu như bạn sẽ không nhận được câu trả lời. Không ai muốn học thêm hoặc phát triển kiến thức cho bản thân. Thậm chí nhiều lập trình viên chưa bao giờ nghe đến Code Complete.

4. Tất cả mọi người đều muốn trở thành người quản lý

Ở Ấn Độ bạn có thể trở thành trưởng nhóm sau khi có khoảng 5 năm kinh nghiệm làm việc. Một khi đã trở thành trưởng nhóm thì cái đích kế tiếp là trở thành người quản lý và để trở thành người quản lý bạn phải rất giỏi trong việc giao công việc của mình cho người khác làm, dùng những thủ thuật trong quản lý, và điều quan trọng là không làm gì cả. Vì vậy, bạn có thể thấy chúng ta không biết chút gì về lập trình khi chúng ta lạc vào thế giới phát triển phần mềm và hầu như khi có khoảng 5 năm kinh nghiệm thì những người lập trình viên này đều muốn trở thành người quản lý.

5. Không có đóng góp gì cho cộng đồng mã nguồn mở

Tôi không biết có người bạn nào của tôi hoặc bạn của bạn tôi bao gồm cả chính mình đã từng đóng góp chút gì vào cộng đồng mã nguồn mở hay chưa. Chúng ta có thể chỉ sử dụng các dự án mã nguồn mở và khi chúng ta phát hiện được bất kỳ lỗi nào trong dự án đó chúng ta sẽ không bao giờ chịu sửa chúng, nhưng lại lên tiếng chỉ trích những lập trình viên đã viết ra mã nguồn đó.

Có thể có nhiều lý do hơn nhưng tại thời điểm này tôi chỉ nghĩ ra được 5 lý do nói trên. Tôi đang cố làm cho mình trở thành một lập trình viên tốt hơn bằng cách đọc, viết và lắng nghe nhiều hơn. Hãy cho tôi biết những suy nghĩ của bạn về vấn đề này nhé!

LINK: https://vinacode.net/2013/08/07/lap-trinh-vien-an-do/