5 Điều tôi ước gì được biết khi mới bắt đầu nghề phát triển phần mềm

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

Tôi bắt đầu vào nghề phát triển phần mềm khoảng 15 năm về trước. Nhưng chỉ trong khoảng 5 năm gần đây, tôi mới thực sự bắt đầu nhận thấy có một sự phát triển vượt trội trong nghề nghiệp lập trình viên của mình.

Sau đây là một số điều mà tôi ước gì mình biết được khi mới chân ướt chân ráo bước vào nghề phát triển phần mềm; những điều này sẽ giúp cho tôi thành công nhiều hơn hoặc sớm hơn, nếu tôi có được những kiến thức đó.

1. Không có một “phương pháp đúng” trong phát triển phần mềm

Tôi đã tốn một lượng thời gian rất lớn, cả trong việc học và tranh luận ở giai đoạn đầu trong nghề nghiệp của mình; tôi đã sai lầm trong việc tin rằng có một “phương pháp hoàn toàn đúng” trong nhiều mặt của phát triển phần mềm.

Một số điều trước đây tôi cứ nghĩ rằng nó là đúng trong phát triển phần mềm, nhưng sau này tôi lại nhận ra nó là sai lầm.

Nghề lập trình viên.Nếu biết trước những điều này thì tôi đã thành công sớm hơn trong nghề phát triển phầm mềm.


Nhưng một điều quan trọng hơn, tôi nhận ra rằng có rất ít thứ rạch ròi trắng đen. Hầu hết mọi quyết định khi viết code và phát triển phần mềm thì chủ yếu dựa trên những hoàn cảnh hiện tại.

Như tôi đã nói trước đây về Sự sùng bái về công nghệ có thể gây hại cho lập trình viên phần mềm, nhưng chủ đề này còn đi xa hơn là việc chỉ nói về công nghệ.

Chúng ta phải công nhận một điều rằng không có một thực tiễn nào là tốt nhất trong vũ trụ. Thậm chí trong những chủ đề có sự tranh luận rất cao như là có nên hay không sử dụng Unit Test, hoặc sử dụng phương pháp agile hay waterfall trong phát triển phần mềm là tốt nhất, thì cũng không có một câu trả lời nào luôn luôn đúng trong những trường hợp này.

Trong nghề nghiệp của mình, tôi đã tốn rất nhiều thời gian để tìm ra một “phương pháp đúng nhất” để rồi chẳng dẫn mình đi đến đâu cả; thay vì đó đáng lẽ tôi nên chọn lấy phương pháp “thực dụng” (thực tiễn), mà điều này sẽ mang tôi đi được xa hơn.

2. Đọc một cuốn sách từ đầu đến cuối thì không phải là cách tốt nhất để học

Trước đây, khi tôi muốn nâng cao kiến thức của mình về lĩnh vực lập trình và những công nghệ khác, tôi đã dùng rất nhiều thời gian để đọc các cuốn sách kỹ thuật về một công nghệ riêng biệt từ đầu đến cuối.

Nên đọc sách nào và đọc phần nào của sách rất quan trọng.Việc đọc sách từ đầu đến cuối không phải là cách học hay.

Không có gì sai trong việc đọc các cuốn sách cả, nhưng thường thì việc lựa chọn cuốn sách nào để đọc và phần nào của cuốn sách đó nên đọc là rất quan trọng.

Một ví dụ, tôi nhớ rằng trước đây mình đã đọc một cuốn sách rất dày về hướng dẫn lập trình Visual C++ (Nếu tôi nhớ không nhầm thì nó là một phiên bản trước đây của cuốn sách này). Dù sao, cuốn sách đó là một cuốn khá hay và chứa rất nhiều thông tin, nhưng việc đọc từ đầu đến cuối cuốn sách đó không phải là phương pháp tốt nhất để học về Visual C++.

Tôi đã học và ghi nhớ được rất nhiều bằng cách đọc lướt một lượt qua các chương của cuốn sách để nắm được nội dung chính, rồi liệt kê ra những phần đã biết về Visual C++ và những phần nào là quan trọng nhất để học trước tiên.

Tôi cũng đã gặt hái được khá nhiều thành công bằng cách ngồi xuống và thực sự thực hành từ những bước cơ bản nhất bằng cách xây dựng một ứng dụng thực tế, hơn là việc chỉ ngồi đọc và lướt qua những ví dụ có nói đến trong sách. Bạn sẽ không thực sự học được một công nghệ cho tới khi bạn giải quyết những vấn đề thực tế cùng với nó.

3. Học quá chuyên sâu vào một công nghệ đặc thù thì chỉ tổ tốn thời gian

Tôi không chỉ tốn nhiều thời gian vào việc đọc các cuốn sách từ đầu đến cuối, mà còn thường chọn nhầm những cuốn sách tồi để đọc nữa.

Tôi đã phạm phải một sai lầm khi tin tưởng rằng việc học một công nghệ đặc thù một cách chuyên sâu sẽ là cách tốt nhất để phát triển nghề nghiệp của mình.

Tôi đã dành rất nhiều thời gian để đọc những cuốn sách về một công nghệ xác định như là ASP.NET hoặc Hibernate, thay vì nên đọc những cuốn sách kiểu như “Code Complete”, “Clean Code”, và “Agile Principles, Patterns And Practices in C#”. (Tất cả những cuốn sách này, nếu bạn chưa đọc chúng thì tôi khuyên bạn nên dành thời gian để đọc.)

Trong khi điều quan trọng là biết về công nghệ bạn đang sử dụng, nhưng điều không quan trọng là trở thành một chuyên gia hoàn toàn vào một công nghệ nhất định. Không có nhiều ích lợi gì khi biết chính xác các hàm API sẽ được gọi như thế nào, khi mà bạn có thể dễ dàng tìm thấy nó khi bạn cần đến.

Có quá nhiều công nghệ mà tôi đã dành rất nhiều thời gian để nghiên cứu sâu, đến tận cùng bản chất của nó, và cuối cùng tôi nhận ra đã làm khó chính mình. Hầu hết việc nghiên cứu về một công nghệ xác định đến tận cùng đều là một sự lãng phí thời gian to lớn.

Tôi nhận ra điều quan trọng là phải trở thành chuyên gia tại bất kỳ ngôn ngữ lập trình nào mà tôi đã sử dụng ở thời điểm đó, bởi vì để tinh thông trong một ngôn ngữ lập trình riêng biệt thường sẽ cần rất nhiều thời gian và công sức; tôi dứt khoát rằng mình vẫn sẽ dành nhiều thời gian để học sâu hơn về các ngôn ngữ C++, C# và Java, nhưng có lẽ tôi sẽ dành ít thời gian hơn trong việc nghiên cứu các vấn đề phức tạp của C++, những thứ mà không có lợi nhiều cho tôi lúc này.

4. Cộng đồng là vô cùng quan trọng trong nghề nghiệp phát triển phần mềm

Thời gian đầu mới vào nghề, tôi đã phạm phải một sai lầm là không thực sự vươn ra ngoài cộng đồng để nhờ sự giúp đỡ và cũng như giúp đỡ những người khác.

Cộng đồng đóng một vai trò quan trọng trong việc phát triển nghề lập trình viên.Kết nối cộng đồng lập trình viên là vô cùng quan trọng.

Tôi đã luôn luôn rất tốt trong việc giúp đỡ các đồng nghiệp của mình và trở nên quảng giao trong rất nhiều công việc mà tôi đảm nhiệm, nhưng tôi chưa bao giờ thực sự vươn ra ngoài công ty của mình.

Tôi đã dành phần lớn thời gian để cố gắng đầu tư vào nghề nghiệp của mình tại một công ty riêng biệt, mà đáng lẽ ra tôi nên dành nhiều thời gian hơn để đầu tư vào các cộng đồng phát triển phần mềm mà tôi hứng thú tham gia.

Tôi đã dành rất nhiều thời gian để tạo ra các buổi giới thiệu về công nghệ trong nội bộ công ty hoặc những bài thực hành tốt nhất có thể; mà đáng lẽ tôi nên dùng thời gian để tạo ra những nội dung và tài liệu để phục vụ cộng đồng, điều đó cũng sẽ khiến tôi được đánh giá cao trong cộng việc của mình.

Tôi cũng phạm phải một sai lầm của việc không nghĩ rằng mình có nhiều thứ có giá trị để đóng góp chia sẻ cho cộng đồng.

Tôi đã nói chuyện với khá nhiều lập trình viên mới vào nghề hiện nay và đôi khi tôi nghĩ rằng họ có nhiều đóng góp thiết thực tới cộng đồng nhiều hơn thế hệ lập trình viên chúng tôi, những người mà đã ở trong lĩnh vực này trong một khoảng thời gian dài; bởi vì họ hiểu tốt hơn những vấn đề những lập trình viên mới vào nghề khác đang phải vật lộn để giải quyết.

Nếu thời gian có quay trở lại và được làm lại một lần nữa, thì tôi sẽ chắc chắn tham gia nhiều hơn vào các buổi hội thảo và các nhóm lập trình viên sớm hơn trong nghề nghiệp của mình. Tôi sẽ bắt đầu viết blog sớm hơn và sẽ sử dụng nhiều thời gian trong việc học của mình để tạo ra những dự án và tài nguyên có khả năng giúp đỡ những người khác hơn là chỉ ngồi đọc sách.

5. Luôn luôn có một dự án phụ

Có lẽ điều thay đổi lớn nhất mà tôi đã làm và đã có ảnh hưởng rất lớn đến nghề nghiệp của tôi đó là tôi dứt khoát không còn xem TV và không còn chơi các trò game như Everquest, World of Warcraft nữa; những thứ mà tôi từng rất khoái chơi từ lúc thiếu niên, thay vì đó tôi tập trung làm việc trên những dự án phụ.

Tôi đã tốn rất nhiều thời gian trong cuộc đời để làm những điều mà tôi cảm thấy thích thú, nhưng chúng lại không hề tạo ra một lợi ích lâu dài cho cuộc đời tôi.

Khoảng 3-4 năm về trước, tôi đã hoàn toàn chấm dứt việc xem TV và bây giờ thì lâu lâu tôi mới xem một bộ phim. Xem TV và các bộ phim chỉ tổ tốn thời gian của bạn, và bạn nên làm điều gì đó có ích hơn. Điều tương tự cũng hầu như đúng với các trò chơi điện tử (games), nhưng ít ra thì các trò chơi video games cũng khiến bạn hoạt động tương tác gì đó chứ không phải chỉ ngồi lì một chỗ nhận những thông tin vô bổ một cách thụ động.

Tôi luôn luôn yêu thích chơi các trò chơi điện tử và tôi không nghĩ rằng mình sẽ nghỉ chơi hoàn toàn, nhưng tôi ước gì mình đã dành nhiều thời gian của việc chơi game và xem TV để làm việc trên những dự án của riêng mình.

Buồn thay, dự án thực tế đầu tiên của riêng mình là sản phẩm tôi thực sự làm khoảng 3 năm về trước, khi đó tôi bắt đầu tạo cho mình một ứng dụng Android đầu tiên.

Trong khi bạn đang làm việc cho một ai đó, điều quan trọng là phải dành thời gian làm việc cho chính mình nữa, nếu không bạn sẽ đang đi xây dựng đế chế cho một ai đó trong khi lại bỏ quên cả bản thân mình.

Không chỉ học được rất nhiều từ những dự án của riêng mình trong vài năm gần đây, mà tôi cũng được lợi rất nhiều từ chúng. Thực ra, một trong những dự án riêng của tôi đó là tạo ra các khóa học lập trình Pluralsight, và đôi khi tôi đang làm công việc này toàn thời gian.

Kết hợp những kiến thức đã học được lại với nhau

Chỉ có một số ít thứ mà tôi ước gì mình biết khi bắt đầu vào nghề phát triển phần mềm, nhưng có rất nhiều thứ khác tôi đã làm đúng ngay từ khi bắt đầu.

Thực ra tôi đang làm việc trên một dự án khá đặc biệt (tôi xin giữ kín thông tin lúc này), nó sẽ kết hợp các thông tin lại với nhau để giúp các lập trình viên thăng hoa trong nghề nghiệp của họ và học cách để tiếp thị bản thân.

Nếu bạn muốn mình là người đầu tiên được thông báo khi dự án này ra lò, thì bạn hãy đăng ký ở đây, và tôi sẽ đảm bảo gửi thông báo cho bạn sớm nhất.

Còn bạn thì sao?

Điều gì mà bạn ước giá như mình có thể biết khi bắt đầu bước chân vào nghề phát triển phần mềm của bạn? Hãy cho tôi biết trong những bình luận ở phía dưới nhé.

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

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

johnJohn Sonmez là một lập trình viên, người lập ra trang web Simple Programmer, đồng thời anh là tác giả của giáo trình học trực tuyến Pluralsight. Anh đã xuất bản hơn 50 khóa học trực tuyến về các chủ đề như iOS, Android, .NET, Java và phát triển Games. Bạn có thể liên hệ với anh qua Twitter.

7 comments on “5 Điều tôi ước gì được biết khi mới bắt đầu nghề phát triển phần mềm

  1. Mình thắc mắc chút!Mình thấy trên link gốc để là 4 Things I Wish I Would Have Known When I Started My Software Development Career nhưng sao vinacode lại chọn dịch thành “5 Điều tôi ước gì được biết khi mới bắt đầu nghề phát triển phần mềm” nhỉ 😀

Gửi phản hồ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 Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s