Phát Triển Phần Mềm: Làm sao để từ nghiệp dư thành chuyên nghiệp?

Phát Triển Phần Mềm: Làm sao để từ nghiệp dư thành chuyên nghiệp?

Tác giả Curly Rae Braces – Kỹ sư phần mềm hệ thống tại công ty Tesla sẽ chia sẻ về hành trình bản thân từ vị trí nghiệp dư lên chuyên nghiệp như hiện tại, cho người đọc sẽ có một góc nhìn toàn cảnh về những kỹ năng, thái độ cần thiết để thăng tiến trong ngành Kỹ sư phần mềm.

Tác giả: Curly Rae Braces – Kỹ sư phần mềm hệ thống tại công ty Tesla (Bài này trích trong cuốn NTMN-IT)

Khép lại thập kỷ 2010, thế giới đã thay đổi đáng kể. Việc sử dụng được máy tính vốn được xem là một kỹ năng cộng thêm thì bây giờ đã trở thành kỹ năng cần có cho bất cứ ngành nghề nào. Ngày này, các công việc liên quan đến máy tính như lập trình, làm web, tự động hóa cho đến phát triển phần mềm đều là những vị trí có nhu cầu nhân lực cao. Vậy nên trong bài viết này, tôi sẽ tập trung vào lĩnh vực phát triển phần mềm, đi từ câu chuyện của bản thân về hành trình từ nghiệp dư lên chuyên nghiệp như hiện tại.

Trước tiên, điều quan trọng là phải nhận thức được rằng việc làm chuyên nghiệp khác với nghiệp dư, và làm phần mềm không nằm ngoài quy luật đó. Rất nhiều người làm code vì thích. Cá nhân tôi viết phần mềm đầu tiên từ khi 12 tuổi và viết báo PCWorld về lập trình từ năm 14 tuổi để lấy tiền tiêu vặt. Phần mềm đầu tiên tôi viết “nguồn mở” cũng là vào những năm đấy. Nhưng đó đều là những việc làm chơi, nghiệp dư. Tôi bây giờ được người ta trả tiền để viết phần mềm – nghĩa là tôi đã chuyển từ việc làm chơi thành làm thật.

Trong thời gian đó, rất nhiều khi tôi tự hỏi: Khi đã xác định được tôi thích gì thì làm cách nào để biết là tôi đang làm đúng hay đang đi đúng hướng? Làm cách nào để chuyển từ làm chơi thành làm thật? Tôi đã từng có những hiểu sai về việc này – điều mà nếu tôi biết trước thì đã tiết kiệm được vô khối thời gian.

Nên học đến hết đại học chuyên ngànhPhát Triển Phần Mềm Là Gì? 6 Mô Hình Phát Triển Phần Mềm

Bạn không nên nghĩ rằng có thể “tự học” được tất cả mọi thứ bằng cách mày mò, và dành thời gian đó để làm việc khác. Tuy “nghề” kỹ sư phần mềm còn mới so với nhiều nghề khác nhưng khi một con đường đã được người khác khai hoang từ trước thì bạn nên đi con đường người khác đã biết và đã tạo lập sẵn, chứ không cần phải khai phá lại. Bạn có thể nghĩ mình có thể học phần mềm bằng cách tự học, tự làm nhưng việc đó sẽ rất tốn thời gian và bạn sẽ phải đối mặt với muôn vàn câu hỏi mà không có câu trả lời (nhưng người khác có, và nếu bạn theo người ta thì bạn đã không vướng vào đó rồi).

Sẽ có nhiều điều bạn không biết rằng mình không biết nếu không học đại học. Bạn không nên nghĩ rằng mình sẽ hiểu được kỹ thuật phần mềm bằng cách ngồi ở nhà và tự học: Học đại học và được đào tạo chính quy, nghiêm chỉnh luôn là con đường tốt nhất, ngay cả khi bạn đã có vốn liếng kha khá về kiến thức phần mềm trước khi vào đại học/master. 

Lưu ý: Ở đây tôi giả thiết là vào được một trường tốt, học một chương trình tốt. Nếu học ở trường không phù hợp, tôi nghĩ cần phải chuyển qua trường khác tốt hơn. Giải pháp không khôn ngoan là bỏ học hẳn rồi tự học.

Làm phần mềm là một công việc kỹ thuật sáng tạo, nhưng trước tiên nó là một công việc kỹ thuật

Viết code không phải là viết thơ hay viết văn. Viết code là viết lệnh mạch lạc để máy tính có thể làm việc rõ ràng. Làm phần mềm là học cách làm một người kỹ sư chứ không phải là làm nghệ sĩ. Vì thế về mặt kỹ thuật, viết code, viết tài liệu cho phần mềm, viết comment cho code, viết commit message đều phải mạch lạc, rõ ràng và đi vào gốc rễ của vấn đề. Mỗi dòng lệnh bạn viết cần phải có một mục đích cụ thể và duy nhất. Bạn sẽ sai rất nhiều và sẽ phải rất thẳng thắn về việc nhận cái sai của mình.

Về công việc, bạn cần có kỷ cương và làm việc một cách chuyên nghiệp chứ không phải làm tùy hứng. Bạn cần nhận ra đâu là làm có hiệu quả và đâu là làm để lấy le với người khác. Trong đó, làm không điều độ, thức đêm hôm là những việc điển hình của người làm việc nghiệp dư.

Người làm việc chuyên nghiệp không chỉ biết làm một việc hiệu quả, mà biết làm việc để người khác hiểu được mình, kế tục được việc tôi làm và ít bị bất ngờ nhất. Nếu bạn muốn tỏ ra là người thông minh nhất, bạn cần phải tham gia gameshow chứ không phải đi viết phần mềm.

Có rất nhiều người trên thế giới này giỏi hơn bạn và bạn sẽ học được rất nhanh khi làm việc với người giỏi hơn mình

Một vấn đề của người làm vì thích là việc thấy mình có thể tự làm được rất nhiều thứ. Bạn có thể nhốt mình ở trong phòng 24/7 không tiếp xúc với ai, không nói chuyện với ai, không ai biết bạn đang làm gì, và bạn nghĩ mình vẫn học được nhiều điều mới lạ từng ngày. Bạn vẫn có những sáng tạo của riêng mình và thấy việc đó rất tốt. Vấn đề là khi làm việc một mình, bạn không thấy điểm mù của bản thân và dễ vùi đầu vào một việc không đáng làm, hoặc nếu có người chỉ sẽ nhanh hơn rất nhiều. 

Để giải quyết vấn đề tự hát tự thâu băng tự đưa lên Youtube này thì giải pháp là phải học thầy và học bạn. Khi bạn có những người ít nhất là tốt bằng mình thì bạn sẽ nhận ra cần phải làm gì rất nhanh. Để làm được điều đó, việc tốt nhất là thay vì làm một dự án của riêng mình hay làm trong nhóm nhỏ thì bạn nên tìm hiểu và tham gia vào một dự án phần mềm chuyên nghiệp. Các dự án này phải có một đội ngũ làm việc nghiêm túc hẳn hoi. Tất cả các dự án có nhiều người làm ở các công ty làm phần mềm chuyên nghiệp (như Google, Facebook, Redhat) tham gia điều hành và gửi mã nguồn lên đều là những dự án “đạt chuẩn”. Những dự án như thế không khó để tìm trên Internet, có thể kể ngay ra như Debian, Linux Kernel, Buildroot, OpenWRT, KDE, GNOME, OpenSSL, Python đều là những dự án rất chuyên nghiệp và họ luôn tìm người tham gia. Khi bạn commit code vào những dự án đó, những người đi trước sẽ rất nhanh chóng chỉ cho bạn những lỗ hổng trong kiến thức và kỹ năng. Một điểm cộng nữa là bạn có thể nói với mọi người rằng bạn đã tham gia đóng góp mã nguồn vào những dự án đó.

Các dự án nhỏ hơn của những cá nhân làm web, như các web framework, thư viện javascript hay ứng dụng nhỏ trên Github, trừ khi có lý do rõ ràng, tôi nghĩ rằng sẽ không hiệu quả cho việc phát triển cá nhân bằng việc tham gia các dự án của tổ chức. Lý do là những người làm những framework hay dự án nhỏ cũng chỉ là những người nghiệp dư và họ sẽ không có thời gian, công sức hay kinh nghiệm để nắn sửa cho bạn nếu bạn sai.

Nếu bạn muốn tham gia nghiên cứu, các lab có uy tín ở trường đại học lớn sẽ tốt hơn các lab có ít người ở các đại học nhỏ hơn. Các lab có nhiều sinh viên học Khoa học máy tính cũng sẽ có nhiều người để bạn học hỏi hơn. 

Có tiền hay sự quan tâm của xã hội là tốt nhưng nó không phải là vấn đề chính

Tôi nghĩ một cạm bẫy lớn của các bạn trẻ là nghĩ việc làm của mình sẽ rất tốt, rất quan trọng nếu như mình làm được tiền hoặc sự chú ý của ai đó. Bạn sẽ gây dựng nên được Microsoft, Facebook vì bạn thu được một ngàn đô la một tháng hay vì bạn nghĩ ra một điều gì đó mọi người đang cần. Tôi nghĩ việc nông nổi đó sẽ giảm dần đi theo thời gian khi mỗi người lớn lên. Có chút tiền không thôi thì không phải là lý do để không học đại học, không mở rộng chân trời của mình. Mặt khác, đó có thể là lý do ngốc nghếch nhất để không học tiếp.

Còn hack để kiếm tiền hay phục vụ mục đích của người khác thì luôn luôn sai. Cái đó không cần bàn cãi, và nếu ai nghĩ rằng tôi hoành tráng vì có thể hack thì người đó không chỉ không có khả năng, nghiệp dư, trẻ con mà còn là một người độc hại cho cuộc sống.

4 điểm trên đây đều không dễ thay đổi, dễ làm trong ngày một ngày hai. Đó chính là lý do tôi viết bài này: Nếu tôi biết trước thì đã dễ dàng tiết kiệm được rất nhiều năm rồi. Nhưng tôi hy vọng, ai đọc được may ra có thể tiết kiệm được vài năm chăng? 

Chúc bạn sẽ trở thành những kỹ sư phần mềm chuyên nghiệp hơn trong thập kỷ tới!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *