Hỏi - đáp Nơi cung cấp thông tin nghề nghiệp và giải đáp những thắc mắc thường gặp của bạn

Bí kịp sống còn dành cho các lập trình viên - Phần 2

>>> Xem phần 1

Những nguồn lực sẽ giúp bạn vào những năm tháng bắt đầu sự nghiệp

Bản dịch của bài viết “A Software Engineering survival guide” của tác giả Valeri Alexiev đăng trên Medium

Làm việc với tư cách là một lập trình viên

Tại giai đoạn này, nếu bạn đã thể hiện tốt trong cuộc phỏng vấn và thích cách người phỏng vấn trả lời câu hỏi của bạn, rất có khả năng bạn đã được tuyển dụng.

Chúc mừng, bạn chính thức là một lập trình viên rồi

Bây giờ thì sao nhỉ? Đã đến lúc học hỏi lại nhiều thứ về cách code và làm việc. Vì chúng ta đã làm lập trình viên rồi, hãy bắt đầu bàn luận về cách viết code thôi.

Good Industry Code

Một “good industry code” (code viết với mục đích thương mại) có những tính chất sau, theo thứ tự:

  • Đọc được (Readable) bởi vì code được đọc và bảo trì thường xuyên hơn được viết. Mục đích của đoạn code đó phải thật rõ ràng với các lập trình viên khác nhiều năm sau khi bạn viết nó.
  • Có tính phòng ngự (Defensive): Tiếp theo là code phải có tính phòng ngự. Code phòng ngự là một chủ đề riêng nhưng ý chính là: Bạn phải đảm bảo rằng các phương pháp và class bạn viết ra sẽ không làm hỏng cả phần mềm.
  • Tối ưu (optimized), là điều cuối cùng trong list vì hầu như là bạn không quá cần phải lo lắng vì nó trong quá trình code. Điều này không có nghĩa là bạn nên viết code xấu gây tác động trên O (n3) khi một giải pháp tuyến tính tồn tại. Nhưng các lập trình viên thường cố thử và tối ưu hóa quá đà khi không cần, thường gây thiệt hai cho khả năng đọc và phòng ngự của code. Bạn phải luôn chứng minh được nếu khi tối ưu mà phải hy sinh các tính năng khác thì điều đó phải thật sự cần thiết.

Bây giờ bạn đã biết cách viết những dòng dòng code hay

Bạn sẽ không code nhiều:

Có thể bạn sẽ cảm thấy ngạc nhiên, nhưng hầu như bạn sẽ không viết code mới mà thay vào đó, bạn sẽ:

  • Debug
  • Đọc các code trước
  • Họp hành hoặc là viết email
  • Tìm hiểu cái gì đó để bạn không viết code

Vì vậy các kĩ năng khác ngoài code cũng quan trong cho sự nghiệp của bạn.

Debug và đọc code

  • Bạn sẽ cần nhiều hơn là debug sử dụng các print statement. Tất cả các ngôn ngữ thông dụng đều có các tool rất quyền lực. Hãy học sử dụng chúng vì chúng sẽ khiến qua trình debug nhanh và gọn hơn
  • Hiểu được code base: Hầu hết các tech stack đều có nhiều loại tool tạo biểu đồ code giúp bạn hiểu được cấu trúc của code base. Các Doanh nghiệp IDEs thường có các chức năng này được tích hợp sẵn. Bạn cũng có thể khám phá code bằng cách sử dụng các ông cụ như ReSharper, grep hay Sourcegraph.
  • Hiểu sản phẩm. Bạn sẽ ngạc nhiên khi nhận thấy rằng nhiều lập trình viên không biết về cách thức hoạt động của sản phẩm trước khi họ cố để “sửa nó”. Chỉ cần đọc các documentation là được

Hãy sắp xếp lại suy nghĩ của bản thân

Bởi vì hầu hết thời gian của bạn sẽ dùng để giao tiếp, nghiên cứu và làm nhiều task cùng lúc, bạn sẽ cần một số công cụ để giữ mọi thứ theo trình tự.

  • TODO list/task: Công ty của bạn có thể đã sử dụng một phần mềm quản lí công việc nào đó nhưng việc có 1 hệ thống riêng của bản thân cũng rất hữu ích. Hãy sử dụng giấy note hoặc 1 số phần mềm như Trello hay Todoist
  • Ghi chú: Luôn ghi chú lại những điều quan trọng trong các cuộc họp hay công việc để cải thiện nguồn tài liệu hiện có và tạo ra nền tảng kiến thức của bản thân. Sử dụng Evernote, OneNote hoặc sổ ghi chú. Có thể một số bạn sẽ cho rằng không cần thiết, nhưng bạn sẽ tự cảm ơn bản thân sau này khi xem xét lại quy trình xây dựng sản phẩm mơ hồ mà bạn đã mất 3 ngày để hiểu rõ trước đây. Tôi chưa từng gặp một lập trình viên giỏi nào mà chưa bao giờ ghi chép.
  • Bảng biểu/ Hình minh họa: Con người là sinh vật ưa thích sự trực quan. Việc tạo ra các bảng biểu về quy trình và kiến trúc sẽ giúp bạn và những người khác hiểu rõ những topic phức tạp. Sơ đồ sẽ rất hiệu quả khi giao tiếp với những đồng nghiệp làm trong lĩnh vực non-tech. Hãy sử dụng Lucidchart, Visio hoặc thậm chí là một cái bảng trắng

Hiểu rõ khi nào thì nên sử dụng Libraries

Trả lời ngắn gọn: Hầu như mọi lúc đều sử dụng

Trả lời đầy đủ hơn: 99% thời gian của mình, bạn không nên tái sáng tạo những cái đã có sẵn. Trong hầu hết tất cả các vị trí làm việc của ngành phần mềm….

Điều đó không có nghĩa là bạn không cần phải biết về những thuật toán và dât structures bạn dùng trong công viêc vì điều đó sẽ giúp bạn quyết định sẽ sử dụng cái gì và khi nào.

Là một lập trình viên hiệu quả, bạn cần phải hiểu rõ Libraries mình đang sử dụng. Libraries tiêu chuẩn của hầu hết các ngôn ngữ thông dụng hiện nay hoàn toàn hữu ích và rộng lớn hơn bạn nghĩ rất nhiều. Thêm vào đó, code base cũng có thể sử dụng các libraries bổ sung. Hãy đọc các document (tài liệu) để biết cách sử dụng chúng.

Bạn cũng không nên ngại khi sử dụng thêm libraries khác nếu chúng giúp bạn tiết kiệm thời gian. Tuy nhiên, bạn cần phải đảm bảo là mình chọn đúng libraries tốt được sử dụng cho mục đích thương mại. Một libraries tốt là:

  • Open source để bạn có thể xác minh chất lượng của code và fix các bug nghiêm trọng với app của mình
  • Được cấp giấy phép như MIT và BSD để công ty của bạn không gặp phải bất kì rủi ro nào khi sử dụng nó. Hãy cẩn thân với GPL vì có thể bạn sẽ vô tình open toàn bộ source code của bạn.
  • Ổn định: có nghĩa là nó đã ra mắt được một thời gian và có nhiều tính năng phong phú
  • Bảo trì: với các bản release mới phát hành thường xuyên
  • Được sử dụng bởi công ty hay project khác: Điều này sẽ đóng vai trò đảm bảo nó có hỗ trợ cho mục đích thương mại để tiếp tục bảo trì.

Tiếp tục phát triển

Không chỉ cần phải học những kĩ năng khiến bạn tốt hơn mỗi ngày, bạn cần phải tiếp tục phát triển và học hỏi những cái mới để tạo ra cơ hội nghệ nghiệp mới cho bản thân.

Cơ hội để học rất nhiều và đa số chúng có chi phí không quá cao:

  • Khóa học online: Bạn không nên bỏ lỡ cơ hội được học từ những giáo sư tốt nhất trong lĩnh vực của bạn với một format hết sức linh hoạt. Hãy xem thử các khóa học trên Coursera, Udacity và edX để tăng cường các kĩ năng của bản thân.
  • Bằng thạc sĩ trực tuyến: Đây là một trong những xu hướng gần đây của các trường ĐH danh tiếng, bằng thạc sĩ trực tuyến là một cách rất linh hoạt để tiếp tục con đường học hành một cách chuyên nghiệp. Các khóa học này cũng rẻ hơn các khóa học tại trường, hầy hết các chương trình học sẽ tốn khoảng $10,000 cho cả khóa. Georgia Tech, UT, và UC San Diego là một trong những trường có các chương trình học như vậy.
  • Blogs: Blog là một trong những phần quan trọng của cộng đồng lập trình viên (không cần ngạc nhiên đâu, bạn đang đọc một cái đây nè). Các blog như Coding Horror, Joel on Software hoặc các website như The Daily WTF có thể giúp ích cho bạn trong việc quyết định những thứ cần làm và không làm khi là một lập trình viên. (Ở Việt Nam có một số blog rất hữu ích mà các bạn nên tham khảo như Toidicodedao, Codeaholicguy, Viblo, Techtalk…). Các trang như Medium, r/programming, HackerNews … cũng sẽ có rất nhiều bài viết hay
  • Hội nghị/Hội thảo: Cuối cùng, không thể không kể đến các hội nghị/hội thảo. Hội nghị là một cơ hội tuyệt vời để học hỏi và bạn hoàn toàn nên đề xuất công ty trích nguồn vốn cho việc training ra để cho nhân viên tham dự. Danh sách một số hội nghị nên tham gia là: GOTO; (General), Strange Loop (General), PyCon (Python), CPPCon (C++), DEF CON (Security), Fluent (Web dev) (Ở Việt Nam bạn có thể tham dự các hội nghị thường niên cho lập trình viên như Vietnam Mobile Day, Vietnam Web Summit, AWS Dev Day và rất nhiều hội nghị được tổ chức khác) Và hầu như là video của các bài thuyết trình đều có trên Youtube, bạn có thể xem lại để học hỏi thêm kiến thức khi không thể tham gia.

Hy vọng rằng bài viết này đã giúp bạn có những kiến thức hữu ích ngay từ khi bắt đầu là những lập trình viên chính hiệu và cho bạn nhiều công cụ để hoàn thành thật tốt công việc trong chuyến hành trình đầy thú vị này! Cám ơn vì đã đọc

Via Medium