Xem thêm

Từ coder đến developer – Hành trình của một lập trình viên giỏi

Huy Erick
Chào mừng năm mới! Sau một kỳ nghỉ tết vui vẻ, đây là bài viết đầu tiên trong năm mới của Tôi Đi Code Dạo. Đầu năm, sau khi nhận thưởng tết, chúng ta nên...

Chào mừng năm mới! Sau một kỳ nghỉ tết vui vẻ, đây là bài viết đầu tiên trong năm mới của Tôi Đi Code Dạo.

Đầu năm, sau khi nhận thưởng tết, chúng ta nên xem xét những mục tiêu mới, đòi hỏi tăng lương, hoặc cố gắng trở nên tốt hơn, giỏi hơn.

Vì vậy, trong bài viết này, tôi sẽ chia sẻ một số kinh nghiệm của chính bản thân tôi và cũng như những lập trình viên giỏi khác xung quanh, về cách trở thành một lập trình viên giỏi.

1. Cách viết code sạch và chặt chẽ

Tôi tin tưởng rằng một lập trình viên không chỉ biết viết code. Tuy nhiên, hầu hết thời gian khi làm việc, chúng ta dành để viết code.

Chúng ta viết code để triển khai các tính năng, tạo ra những sản phẩm. Viết code ít lỗi sẽ tạo ra những sản phẩm tốt, code sạch sẽ giúp người khác dễ đọc và bảo trì.

Hơn nữa, đồng nghiệp và cấp trên sẽ đánh giá khả năng và trình độ của bạn dựa trên những dòng code bạn viết. Viết code tồi, code tạm bợ sẽ khiến bạn bị chế nhạo.

Vì vậy, để trở thành một lập trình viên giỏi , bạn cần học cách viết code sạch và chặt chẽ. Chi tiết có thể dài lắm, tôi đã làm việc được 4-5 năm rồi nhưng vẫn phải học mỗi ngày, khó có thể chia sẻ hết trong bài viết này.

Cuốn The Art of Readable Code Cuốn The Art of Readable Code

2. Hiểu biết sâu về một công nghệ/lĩnh vực nào đó

Đương nhiên, việc viết code tốt là điều kiện cần, nhưng chưa đủ. Để nâng cao giá trị bản thân, bạn cũng nên tập trung trở thành chuyên gia trong một công nghệ hoặc lĩnh vực cụ thể.

Ví dụ, nếu bạn thích front-end, đừng chỉ tập trung vào việc viết code, mà hãy cân nhắc cách tạo giao diện, cách thiết kế UI/UX, và cách tương tác với người dùng. Hoặc bạn có thể nghiên cứu cách tối ưu code và hiệu suất của React/Angular.

Nếu bạn thích back-end, hãy tập trung vào việc thiết kế hệ thống, tìm hiểu về cơ sở dữ liệu, tối ưu hóa hiệu suất, và quản lý hạ tầng.

Bên cạnh kiến thức về công nghệ, kiến thức về một lĩnh vực cụ thể và quy trình là cũng rất quan trọng. Ví dụ, nếu bạn từng làm việc với các công ty liên quan đến giao dịch, kiến thức về giao dịch sẽ rất có giá trị khi bạn chuyển sang làm việc cho các công ty tài chính, chứng khoán.

Những kiến thức này giúp bạn hiểu rõ về cách hệ thống hoạt động, đáp ứng nhiều trường hợp hơn và nắm bắt yêu cầu từ người dùng nhanh chóng hơn.

Những thứ này gọi là Domain Knowledge Những thứ này gọi là Kiến thức của Lĩnh vực

3. Tiếp cận vấn đề một cách có hệ thống

Sau một thời gian làm việc, bạn sẽ nắm được cách tiếp cận vấn đề một cách có hệ thống, không chỉ là tìm kiếm mò mẫm. Ví dụ:

  • Khi gặp lỗi front-end, thay vì mò mẫm, bạn có thể kiểm tra lỗi trên trình duyệt và trang web nào, sau đó thử tái tạo lỗi. Sau khi tái tạo lỗi, bạn có thể mở Developer Tool để kiểm tra lỗi, sau đó kiểm tra mã nguồn xem đoạn nào gây ra lỗi.

  • Khi gặp lỗi back-end nhưng không thể tái tạo, thay vì rối bời, bạn có thể kiểm tra log, kiểm tra các cảnh báo (alert) hay thông báo (notify) từ hệ thống.

  • Khi xây dựng một tính năng mới, hãy thiết kế luồng công việc, giao diện người dùng trước, sau đó kiểm tra xem chiến lược này đáp ứng đủ yêu cầu hay không. Sau đó, bạn có thể bắt đầu viết code.

Việc tiếp cận vấn đề có hệ thống sẽ giúp bạn tiết kiệm thời gian và làm việc chuyên nghiệp hơn.

Senior hơn junior ở chỗ tiếp cận vấn đề có qui trình hơn! Senior hơn junior ở chỗ tiếp cận vấn đề có qui trình hơn!

4. Tiếp cận phần mềm từ góc nhìn của người dùng/ kinh doanh

Nếu chỉ biết code mà không hiểu giá trị mà nó mang lại cho người dùng hoặc doanh nghiệp, thì tài năng cũng chỉ có giới hạn. Nhiệm vụ của chúng ta, như làm việc lập trình viên, không chỉ là viết code, mà là tận dụng khả năng code để mang lại giá trị cho sản phẩm và người dùng.

Khi code, hãy thử đặt mình vào vị trí người dùng, vị trí của CEO hoặc team lead và tự hỏi mình những câu hỏi sau:

  • Chức năng này được viết ra để người dùng nào sử dụng? Giao diện người dùng này đã thân thiện chưa?

  • Chức năng này mang lại giá trị gì? Có giúp người dùng hạnh phúc hơn không? Có mang lại doanh thu/lợi nhuận cho công ty không?

  • Việc làm công việc này có giúp tiết kiệm thời gian cho đồng đội, các nhân viên hỗ trợ hay không?

Khi làm điều này, bạn sẽ nhận ra những nhiệm vụ nên làm và không nên làm, công sức bạn bỏ ra đã giúp đỡ ai.

Khi có đánh giá hiệu suất, đòi hỏi tăng lương, bạn cũng có lý do để đòi hỏi, ví dụ "Tôi đã tạo ra tính năng này và mang lại lợi nhuận lớn cho công ty".

Trước khi làm bất cứ điều gì, hãy hỏi "Tính năng này có mang lại lợi nhuận không?" Trước khi làm bất cứ điều gì, hãy hỏi "Tính năng này có mang lại lợi nhuận không?"

5. Kỹ năng mềm/ thuyết trình/ giao tiếp

Dù bạn có giỏi đến đâu, thiết kế hệ thống tuyệt vời đến đâu, nhưng nếu không thể giải thích những điều hay ho, giỏi của bạn cho đồng nghiệp và cấp trên, thì sự giỏi của bạn cũng có hạn.

Hơn nữa, khi bạn lên những vị trí cao hơn như team lead, quản lý, thời gian dành cho việc viết code sẽ ít đi; thay vào đó, bạn sẽ phải dành thời gian để thuyết phục các thành viên khác, trình bày vấn đề với cấp trên và giao tiếp với các nhóm khác.

Vì vậy, để trở thành một lập trình viên giỏi và có ảnh hưởng, bạn cần có kỹ năng mềm để thuyết phục người khác theo ý mình, cũng như kỹ năng thuyết trình và giao tiếp để trình bày vấn đề với cấp trên.

Phần này, tôi không biết có cách rèn luyện như thế nào! Bản thân tôi chỉ quan sát các quản lý, team lead, CEO xung quanh và tìm sách để đọc.

Mình khuyến khích các bạn nên đọc Đắc Nhân Tâm Mình khuyến khích các bạn nên đọc Đắc Nhân Tâm

Trong ngành lập trình, khả năng ra quyết định là tất cả, may mắn là thứ tiếp theo. Nếu bạn có khả năng, nếu bạn giỏi, bạn sẽ có nhiều cơ hội, và tiền bạc sẽ tự đuổi theo bạn.

Vì vậy, đừng tập trung quá nhiều vào những khía cạnh nhỏ nhặt, hãy cố gắng nâng cao trình độ của bạn và tiền bạc sẽ tự theo đuổi bạn.

Nếu bạn có bất kỳ kinh nghiệm hay cách rèn luyện để trở thành một lập trình viên giỏi, xin vui lòng để lại giải đáp của bạn trong phần bình luận bên dưới.

Bonus: Nếu bạn không muốn đọc blog, bạn có thể nghe tôi chia sẻ thông qua podcast.

1