23/12/2018, 23:14

How to Become a Better Software Developer

Cách đây khá lâu tôi có một bài phát biểu ở hội nghị kỹ thuật hàng tháng của Mobify và nội dung tôi nói là về các sách lược có thể giúp bạn trở thành một nhà phát triển phần mềm tốt nhất có thể. Tôi thấy điều này cũng có thể hữu ích với cả những người khác và đã quyết định chia sẻ nó trong bài viết ...

Cách đây khá lâu tôi có một bài phát biểu ở hội nghị kỹ thuật hàng tháng của Mobify và nội dung tôi nói là về các sách lược có thể giúp bạn trở thành một nhà phát triển phần mềm tốt nhất có thể. Tôi thấy điều này cũng có thể hữu ích với cả những người khác và đã quyết định chia sẻ nó trong bài viết này.

Chúng ta sẽ cùng đi qua 12 ý tưởng mà bạn có thể áp dụng để trở thành một nhà phát triển tốt hơn:

Các bạn có thể xem slide ở đây

#1 - Read books

Những người thông minh viết rất nhiều những quyển sách hay về các ngóc ngách của phát triển phần mềm. Đọc sách là một trong những cách tốt nhất để học những ngón mới. Sách có thể đưa ra cái nhìn toàn diện giúp chúng trở nên một cách tuyệt vời để học nếu bạn muốn đi sâu vào một chủ đề. Chúng sẽ không thật tuyệt neesy như bạn cần tìm hiểu hiểu ra cái gì cần học lúc ban đầu. Nhưng một khi bạn biết được hướng đi, bạn sẽ tìm những quyển sách về chủ đề đó. Dưới đây là một vài trong số những quyển sách yêu thích của tôi:

  • Clean Code bởi Robert C. Martin
  • The Clean Coder bởi Robert C. Martin
  • The Passionate Programmer bởi Chad Fowler

#2 - Watch recorded conference talks

Những bài nói hội thảo đầy ở trên mạng. Điều đó có nghĩa là bạn có thể nghe nhiều điều mà những người thông minh nói về lập trình. Miễn phí. Tôi gợi ý rằng các bạn nên tập trung vào những bài nói chất lượng trước. Ví dụ pyvideo.org chẳng hạn. Nếu bạn thích Objective-C thì Apple’s WWDC sessions là một sự lựa chọn tuyệt vời.

#3 - Get your code reviewed

Review code là một cách rất tốt để học và cải thiện kỹ năng của bạn. Hãy yêu cầu những người review code cho bạn phải thật cẩn thận và chi tiết, thậm chí nó thực sự làm bạn phiền lòng lúc ban đầu. Cũng hãy yêu cầu nhiều hơn một người review code của bạn và biết ơn về những feedback mà bạn nhận được.

Nếu bạn không làm việc với những người có thói quen review code thì hãy đóng góp cho các dự án mã nguồn mở và được review code ở đó. Các feedback thường chỉ ra các kỹ năng và kỹ thuật mà bạn cần học. Tôi thấy cách hiệu quả nhất chính là đọc các cuốn sách về những chủ đề này.

#4 – Keep a journal

Thật tuyệt khi ghi lại những thử thách mà bạn phải đối mặt cũng như là những điều bạn đã học khi vượt qua chúng. Do đó tôi có hai quyển nhật ký cho công việc:

Quyển đầu tiên là nhật ký hàng ngày ghi lại những thứ tôi làm mỗi giờ. Tôi cũng sử dụng nó để ghi chú những quan sát hay ý tưởng bất chợt. Tôi dùng những ghi chú này để so sánh những điều tôi muốn làm với những điều tôi thực sự làm được.

Trong quyển thứ hai, tôi theo dõi những thứ tôi học được về phát triển phần mềm trong quá khứ. Tôi update nó mỗi khi tôi nhận ra điều mà tôi cần nhắc nhở bản thân.

Nếu bạn muốn tìm hiểu rõ hơn, hãy đọc bài viết này.

#5 – Read the source code of ‘gold standard’ projects

Chọn một dự án open source trong lĩnh vực mà bạn thích và đọc. Có rất nhiều dự án "đẹp" ở ngoài kia và thưởng xuyên đọc source code của chúng dễ như llaf việc lướt GitHub hay Bitbucket.

Tôi đã bỏ ra rất nhiều thời gian để đọc Quake source code và nó đã dạy tôi rất nhiều về kiến trúc và triết lý. Đọc source code chất lượng cao thường truyền cảm hưởng cho bạn trong việc refactor lại code của chính bản thân mình.

Một số ví dụ tiêu biểu về các dự án thực với chất lương code cao:

  • The Linux kernel
  • Doom 3
  • The Minix operating system
  • jUnit testing framework

#6 – Listen to podcasts

Điều làm tôi bất ngờ là có rất nhiều những podcast chất lượng về phát triển phần mềm. Đây là một cách tuyệt vời và kinh tế để học những điều mới và nắm bắt được xu hướng - thậm chí cả khi bạn đi ngoài đường hay chuẩn bị cho bữa ăn.

Hai podcast liên quan đến lập trình mà tôi thích là Debug và Software Engineering Radio

#7 – Work on side projects

Các side project (dự án phụ) thực phù hợp để bạn mài giũa những kỹ năng của bạn và khám phá những vấn đề mà bạn không bắt gặp trong công việc. Những dự án này thường không lớn hay phức tạp. Thân chí là một side project nhỏ cũng thực sự thú vị.

Publish side project của bạn là điều không bắt buộc nhưng nó có thể là một cách tốt để show ra hồ sơ năng lực của bạn (portfolio). Ví dụ, gần đây tôi có release một cái tool sắp xếp ảnh mà tôi thực hiện trong vài giờ.

#8 – Immerse yourself

Chọn một vài thứ được liệt kê ở đây và thực hiện chúng cùng một khoảng thời gian để đắm mình trong một chủ đề đặc biệt. Ví dụ, nghe podcast trên đường đi làm, hỏi lời khuyên từ đồng nghiệp và đọc một chương sách trước khi đi ngủ.

Vì bạn bè và gia đình - hãy cẩn thận và đừng làm quá việc này. Tôi thường rơi vào trạng thái rối loạn ám ảnh cưỡng chế (OCD - Obsessive Compulsive Disorder) khi có một vấn đề đặc biệt cần giải quyết.

#9 – Read postmortems

Có một lượng lớn các dự án phần mềm là các câu chuyện trên internet và trong sách. Nhiều trong số những câu chuyện này hoàn toàn bổ ích và chúng có thể dạy bạn rất nhiều về cách nâng cao tay nghề.

Một quyển sách tôi đặc biệt khuyến khích chính là Coders at Work của Peter Seibel. FoxTales của Kerry Nietz và Showstopper của G. Pascal Zachary cũng thật tuyệt.

#10 – Learn a new language

Nghe có vẻ sáo rỗng nhưng việc học một ngôn ngữ lập trình mới là một cách tốt để trở thành một lập trình viên tốt hơn. Hãy học một ngôn ngữ đi theo một triết lý khác so với những ngôn ngữ khác mà bạn đang sử dụng.

Ví dụ, nếu bạn đang lập trình với JavaScript hoặc Python thì hãy học Clojure hoặc Haskell thay vì Ruby. Các hội thảo một ngày (one-day conference workshop) sẽ phù hợp để bạn bắt đầu. Koan cũng là một ý tưởng không tồi để cảm nhận về một ngôn ngữ mới:

  • Clojure: http://clojurekoans.com/
  • Ruby: http://rubykoans.com/
  • Python: https://github.com/gregmalcolm/python_koans
  • ...

#11 – Start a ‘software craftsmanship guild’ at work

Tôi thích ý tưởng của Spotify về việc có các hội (guild) trong các team phát triển. Một hội là một nhóm gồm những người có cùng sở thích / đam mê gặp nhau thường xuyên để làm presentation và tọa đàm.

Ví dụ, hãy thành lập / tham gia một hội những người làm về phần mềm ở công ty của bạn mà ở đó các kỹ sư gặp nhau hàng tháng để nói về những thứ mới mẻ và các vấn đề mà họ gặp phải.

#12 – Find a (virtual) mentor

Học từ một lập trình viên có nhiều kinh nghiệm hơn bạn thật tuyệt vời. Bạn sẽ vỡ ra được rất nhiều điều bằng sự thẩm thấu từ việc làm việc cùng với những người thông minh. Tuy nhiên, bạn cũng nên quen biết một người nào đó mà bạn có thể nhờ tư vấn.

Bạn không cần phải tạo một mối "quan hệ cố vấn" (mentoring relationship) một cách công khai, mặc dù hầu hết mọi người sẽ cảm thấy hãnh diện nếu bạn hỏi họ. Một người cố vấn có thể là ảo (virtual). Ví dụ, họ có thể là một tác giả giống như Robert C. Martin hoặc có thể là một nhà phát triển thành công giống như Peter Norvig - người có sự nghiệp truyền cảm hứng cho bạn.

0