Lập trình viên học trên chiến trường

Bài viết được dịch từ blog Coding Horror

Thỉnh thoảng tôi có nhận được một số email từ một số người hỏi về việc làm thế nào để chuẩn bị cho nghề nghiệp trong lĩnh vực phát triển phần mềm. Một số sinh viên băn khoăn về việc họ nên theo học ngành nào; những người khác thì đã bị cắn bởi bug trong lập trình và họ đang quan tâm về những bước nên làm tiếp theo.

Học lập trình tốt nhất là bằng cách tham gia các dự án thực tế.Học lập trình tốt nhất là bằng cách tham gia các dự án thực tế.

Tôi luôn luôn trả lời với cùng một lời khuyên giống nhau. Không có gì có thể thay thế được việc học tập trên chiến trường.

Một điều rõ ràng với tôi rằng phát triển phần mềm thì đang xảy ra trong công nghiệp, chứ không phải trong các trường đại học. Các trường đại học là nơi tuyệt vời cho những vấn đề mà có thể được giải quyết bằng cách ngồi một mình và suy nghĩ hoặc thí nghiệm nhiều tháng trời mới kết thúc. Các trường đại học cũng là nơi tuyệt vời để mang lại cho chúng ta lý thuyết tự động, các phân tích phức tạp, các trình biên dịch và những thứ đại loại thế. Nhưng các trường đại học thì không phù hợp một chút nào tới sự hiểu biết về điều gì đang diễn ra trong suốt quá trình phát triển phần mềm.

Phát triển phần mềm tại thời điểm này thì cũng giống như là giai đoạn chế tạo trước đây của thời Samurai của Nhật Bản trong việc tạo ra các thanh kiếm, các loại khiên, và các chiến thuật trên chiến trường. Bạn tạo ra một đống gươm hoặc các chiến thuật chiến tranh, áp dụng chúng ra chiến trường, và xem cái nào hoạt động tốt hơn. Sau đó bạn lại tạo ra những thanh kiếm và các chiến thuật khác, và cứ thế. Bạn phải thực hiện trên chiến trường.

Phát triển phần mềm giống như thời kỳ Samurai vậy.Tôi không thể tưởng tượng việc mình sẽ học được những thứ mà tôi đã thu lượm được bằng cách chỉ ngồi một cách yên bình trong văn phòng của mình. Hầu hết các suy nghĩ và phỏng đoán ban đầu của tôi đều là sai. Vì vậy bất kỳ ai trong số các bạn mà cảm thấy thích thú chủ đề này thì có thể phải làm việc như là một developer hoặc một nhà tư vấn, vì vậy bạn có thể nhìn thấy những hành động tức khắc và nhận được dữ liệu tức thời.

Dĩ nhiên, phát triển phần mềm chỉ dạy bạn làm thế nào để nói chuyện với chiếc máy tính của bạn. Việc học lên cao hơn thì vẫn có giá trị bởi vì nó dạy bạn làm thế nào để nói chuyện với con người. Cùng với một nền tảng học vấn tốt, bạn sẽ học được cách làm thế nào để đọc hiệu quả, làm thế nào để viết súc tích, và làm thế nào để suy nghĩ phản biện xung quanh những người đồng cấp với bạn.

Nếu tôi sáng lập một trường đại học thì đầu tiên tôi sẽ lập ra một phòng hút thuốc; sau đó khi mà có một chút tiền trong tay thì tôi sẽ xây một phòng ngủ cho sinh viên; sau tất cả những thứ đó, hoặc có thể nhiều hơn, thì tôi sẽ xây một phòng đọc sách và một thư viện khá tươm tất. Sau tất cả, nếu tôi vẫn có nhiều tiền mà tôi không biết nên làm gì với chúng, thì tôi sẽ thuê một ông giáo sư và mua một số cuốn sách textbook. (Stephen Leacock)

Đối với một lĩnh vực phát triển rất nhanh như khoa học máy tính, công việc bạn đang làm thì khác xa hơn nội dung bất kỳ một lớp học nào mà bạn đã trải qua. Nếu bạn phải lựa chọn giữa việc học theo kiểu hình thức và làm việc để lấy kinh nghiệm, thì hãy luôn luôn chọn làm việc. Nếu bạn đang ngồi trên ghế nhà trường, hãy xông xáo theo đuổi kinh nghiệm trong thế giới thực mà có ích hơn nhiều các bài tập ở trường.

May mắn thay, trong trận chiến này thì bạn có thể chiến đấu trên nhiều tiền tuyến:

  • Nếu bạn là một sinh viên, hãy tìm kiếm cơ hội thực tập mà cuộc sống của bạn sẽ phụ thuộc vào nó. Một số trong những lập trình viên giỏi nhất mà tôi đã từng gặp đã từng là các sinh viên thực tập ngay khi còn đi học. Thực tập ở một nơi nào đó mà bạn có thể hấp thụ và học được nhiều nhất có thể. Bạn sẽ không kiếm nhiều tiền, nhưng những kinh nghiệm thu được là vô giá.
  • Tham gia một nhóm user group tại gần nơi bạn sống. Các user group là một tài nguyên không gì sánh nổi cho những ai vừa mới bắt đầu trong nghề nghiệp của họ; chúng là một nguồn tuyệt vời cho những lời khuyên và tư vấn.
  • Đóng góp tới một dự án mã nguồn mở. Có hàng ngàn dự án như vậy, vì vậy bạn hãy chọn bất cứ cái nào mà bạn cảm thấy thích thú. Nhưng mà chỉ chọn một và thực sự đào xới vào nó, trở thành một người đóng góp tích cực. Không có thứ gì là thực hành nhiều hơn việc làm việc cộng tác cùng với những nhà phát triển phần mềm khắp nơi trên thế giới, từ tất cả các hình thái của cuộc sống này.
  • Xuất bản các bài viết. Những dòng code sáng sủa nhất trên thế giới cũng sẽ không giúp được bạn nếu bạn không thể truyền thông một cách rõ ràng về cách làm thế nào mà code đó làm việc, hoặc nó để làm gì. Hãy thử tập viết lách. CodeProject là một nơi tuyệt vời để bạn luyện tập. Hãy xuất bản một bài viết tại cộng đồng lớn và sôi động như CodeProject và nó sẽ cho bạn biết bạn đang làm đúng hay sai thông qua các đánh giá và bình luận của các thành viên khác.
  • Hãy bắt đầu viết blog. Hãy chọn lấy một lịch trình viết bài và gắn chặt với lịch trình đó; tôi đề xuất bạn nên viết ít nhất một lần mỗi tuần. Lựa chọn một đề tài cho blog của bạn và viết về các chủ đề liên quan đến đề tài đó.

Bạn không phải làm tất cả những điều kể trên, nhưng nếu bạn nghiêm túc về nghề nghiệp của mình, thì hãy chọn lấy ít nhất 2 mục ở trên và áp dụng theo. Để có những lời khuyên chi tiết hơn, tôi đề xuất bạn nên đọc lời khuyên của Rob về làm thế nào để trở thành một lập trình viên.

Trong phát triển phần mềm, bạn học bằng cách làm. Miễn là bạn ra chiến trường và chiến đấu trong những cuộc chiến tốt, thì bạn càng ngày càng hoàn thiện mình hơn.

Các bài viết liên quan:

Về tác giả bài viết:

Jeff_atwood_coding_horrorJeff Atwood là một chuyên gia công nghệ tại Mỹ, hiện đang sinh sống và làm việc tại Berkeley, CA. Anh là một kỹ sư phần mềm chuyên về công nghệ Microsoft .NET, và là một blogger nổi tiếng trong cộng đồng công nghệ với blog Coding Horror, anh là người sáng lập và kiêm Giám đốc điều hành (CEO) của trang web hỏi đáp uy tín Stack Overflow và cũng là đồng sáng lập của Stack ExchangeDiscourse.

Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s