Chỉ có hai loại lập trình viên
Trái ngược với điều mà chúng ta thường lầm tưởng, không phải là có 11 kiểu lập trình viên. Thực racchỉ có 2 kiểu mà thôi, như Ben Collins-Sussman đã nhắc nhở chúng ta.
Có hai “lớp” lập trình viên trong thế giới phát triển phần mềm: tôi sẽ gọi họ là nhóm 20% và nhóm 80%.
Những người thuộc nhóm 20% này thì nhiều khi được gọi là những lập trình viên “alpha” — họ là những nhà lãnh đạo (leader), người tiên phong, những người tạo ra xu hướng, là dạng người mà những công ty phần mềm lớn như Google và Fog Creek đang săn lùng để tuyển dụng. Những người này là những người đầu tiên đã cài đặt Linux tại nhà vào những năm 90; những người mà đã viết ra các trình biên dịch lisp và học về Haskell vào những dịp cuối tuần “chỉ để cho vui”; họ tích cực tham gia vào các dự án mã nguồn mở; họ luôn nắm rõ về những xu hướng và công cụ mới nhất và “hot” nhất trong lập trình.
Những người thuộc loại 80% là nhóm tạo ra phần lớn sản phẩm trong nghành công nghiệp phát triển phần mềm. Họ thì không ngốc; họ đơn thuần chỉ làm việc với máy tính như một nghề để mưu sinh mà thôi. Họ đến trường học, học chỉ vừa đủ về Java/C#/C++, và sau đó kiếm một việc làm viết những ứng dụng nội bộ cho các ngân hàng, chính phủ, các hãng du lịch, công ty luật, v.v… Thế giới thường sẽ chẳng bao giờ nhìn thấy phần mềm của họ. Họ sử dụng bất cứ công cụ nào mà Microsoft đặt vào tay họ — thường là VS.NET nếu họ đang làm C++, hoặc có thể là một GUI IDE nào đó như Eclipse hoặc IntelliJ để phát triển Java. Họ chẳng bao giờ sử dụng Linux, và thực ra họ chẳng thích thú gì với nó. Nhiều người chưa từng bao giờ sử dụng một hệ thống quản lý phiên bản mã nguồn. Nếu có sử dụng, thì nó cũng chỉ là bất cứ công cụ nào được đi kèm trong bộ công cụ lập trình của Microsoft (như SourceSafe), hoặc một vài công cụ cũ rích nào đó được đặt vào tay họ. Họ biết chính xác vừa đủ để hoàn thành công việc của mình, sau đó về nhà vui thú với vợ con vào dịp cuối tuần và quên hết mọi thứ về máy tính.
Tôi đã làm việc cùng với nhiều nhóm lập trình viên trong lĩnh vực này, và cảm thấy giật mình bởi vì khoảng cách quá lớn giữa nhóm 20% và phần còn lại của thế giới. Nó khiến cho sự phân chia giữa thế giới mã nguồn mở (open-source) và Microsoft giống như chỉ là một con mương hẹp mà thôi.
Phát biểu gây sốc #1: Hầu hết ngành công nghiệp phần mềm thì được tạo ra bởi những lập trình viên thuộc nhóm 80%. Vâng, hầu hết thế giới này là những nhóm nhỏ chuyên phát triển các sản phẩm trên Windows, hoặc những công ty nhỏ đang tuyển dụng những lập trình viên làm việc nội bộ. Hầu hết các công ty đều có một ít những người thuộc loại 20%, và họ thường là những người đưa ra lời khuyên cho những ông chủ để thay đổi chính sách, hoặc cập nhật các công cụ, hoặc sử dụng một hệ thống quản lý phiên bản tốt hơn.
Phát biểu gây sốc #2: Hầu hết những lập trình viên “alpha” đó quên hết về phát biểu gây sốc #1. Những người này làm việc trên các phần mềm mã nguồn mở, tham gia tích cực vào những tranh luận về mật mã học trên trang Slashdot, tải về phiên bản GIT mới nhất và hành động giống như không nhìn thấy một thực tế rằng có sự tồn tại của nhóm lập trình viên loại “80%” kia chút nào cả. Họ cảm thấy phấn khích về Linux distro mới nhất hoặc AJAX toolkit hoặc hệ thống phân tán SCM, và dành tất cả thời gian cuối tuần vào đó, viết blog về nó và sau đó thì điên tiết lên về việc tại sao họ không thể khiến cho công ty của mình bắt đầu sử dụng nó.
Có lẽ điều này không gây sốc đối với tôi, tuy nhiên nó là một sự nhắc nhở rất tốt và quan trọng cho mọi người. Tôi thường nghĩ rằng chúng ta đang lãng phí thời gian của mình trong việc viết blog mà phần lớn là được đọc bởi những người cũng thuộc loại 20% giống như mình. Theo kinh nghiệm của tôi, có rất ít tác động từ những lập trình viên alpha (nhóm 20%) đến tất cả những người khác. Và nếu có, thì nó cũng phải mất hàng thập kỷ. Nếu bạn thực sự muốn thay đổi tình trạng của lĩnh vực phát triển phần mềm, và nếu bạn muốn tạo ra một sự khác biệt trong năm nay, thì bạn phải giúp chúng tôi vượt ra ngoài hòn đảo cô lập của những lập trình viên alpha của chúng ta và tạo ra ảnh hưởng thay đổi phần 80% kia của thế giới. Và điều đó thì khó khăn gấp vạn lần hơn là việc thuyết giáo tới những lập trình viên đã chuyển qua nhóm 20%. Đó là lý do tại sao tôi lại ngưỡng mộ những người như Scott Mitchell rất nhiều, bởi vì anh ta hiểu được tầm quan trọng của việc vươn ra ngoài tới nhóm 80% kia:
Tôi thích lập trình và thực sự đam mê ASP.NET. Tôi nghĩ rằng thật là vui, thú vị và cool như thế nào nếu bạn có thể đi từ chỗ hoàn toàn không biết gì đến chỗ có một ứng dụng web mà có thể được sử dụng bởi nhiều người khắp nơi trên thế giới chỉ trong một khoảng thời gian nhanh chóng đến kinh ngạc. Hơn nữa, tôi muốn gieo rắc sự nhiệt tình đến cộng đồng. Tôi muốn nói với những người có thể chưa bao giờ lập trình, hoặc những người đang sử dụng những công nghệ khác, hoặc tới những ai mà chỉ mới bắt đầu rằng – “Nào bạn ơi hãy đến đây và thử công nghệ ASP.NET này đi. Đây này, hãy để tôi chỉ cho bạn về nó có thể làm được những gì!”. Đó là lý do tại sao tôi lại đi giảng dạy (lương chỉ được trả vài đồng khi so sánh với việc đi tư vấn). Đó là lý do tại sao tôi viết sách (mặc dù được trả công tốt hơn việc dạy học, nhưng cũng chẳng thấm vào đâu khi so sánh với thù lao khi đi tư vấn cho các công ty). Đó là lý do tại sao tôi lại đi diễn thuyết miễn phí tại các cộng đồng địa phương và các hội thảo ở đây ngay tại Nam California này. Tôi xin được nói ra hết ở đây!
Đối với tôi, việc nói rằng tiêu đề cuốn sách kiểu như Tự học X trong 24 giờ là làm rẻ rúng cái nghề nghiệp của chúng ta thì cũng tương đương như nói rằng, “Câu lạc bộ của chúng tôi đã đầy người. Mời bạn đi chỗ khác.” Nó không nói rằng, “Hãy chào mừng những người mới đó và làm cho họ hào hứng về công nghệ này.” Đúng hơn, nó nói rằng, “Những người mới thì ok, nhưng họ đầu tiên phải nhận ra cái này thì khó như thế nào, chúng ta đã phải làm việc vất vả ra sao, và chúng ta biết nhiều hơn họ nhiều như thế nào.” Tôi lo lắng rằng chính những ý kiến từ cộng đồng sẽ trở thành như một sự phô trương làm hoang mang tới những người khác, những người mà chúng ta nên chào mời họ tham gia.
Tôi ước gì điều này dễ dàng hơn cho mình, bởi vì tôi đồng ý với Scott. Tôi thì khá kém trong những thứ mà anh ta mô tả. Tôi nghĩ rằng phép đo lường thành công đúng nhất không phải là có bao nhiêu lập trình viên loại alpha mà bạn có thể khiến sự chú ý của họ tới bạn. Mà là có bao nhiêu lập trình viên điển hình ở mức trung bình mà bạn có thể vươn tới, nếu chỉ trong một số ít cách. Nếu bạn thực sự quan tâm về nghề phát triển phần mềm, thì bạn cũng có thể giúp chúng tôi xây dựng chiếc cầu nối giữa những lập trình viên thuộc nhóm 20% và những lập trình viên thuộc nhóm 80% còn lại nhé!
Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!