Cựu sinh viên trường F, tác giả “Tôi đi code dạo” chia sẻ bí quyết trở thành lập trình viên giỏi

Chắc hẳn chúng ta không còn xa lạ với cái tên Phạm Huy Hoàng, tác giả của quyển sách nổi tiếng “Tôi đi code dạo”. Anh không chỉ là một tác giả sách mà còn là một hot Blogger với hơn 300.000 view mỗi tháng và 1 là một youbtuber với 8 triệu lượt view. Anh cũng chính là cựu sinh viên khoá 6 ngành Kỹ thuật phần mềm của Đại học FPT.

Mới đây, trên trang Blog Toidicodedao.com của mình, Huy Hoàng đã có những chia sẻ hữu ích về “5 điều nên làm để trở thành lập trình viên giỏi”. Những chia sẻ của anh không chỉ đơn  giản, dể hiểu mà còn rất thực tiễn, có thể áp dụng đối với bất cứ ai đã, đang và sẽ theo đuổi ngành này. Đại học FPT xin được trích dẫn lại để các Cóc và các bạn học sinh 12 cùng tham khảo nhé:

Nội dung bài viết

1. Cách viết code clean và code cứng

Phương châm của blog là: Lập trình viên không phải chỉ biết code. Tuy nhiên, phần lớn thời gian chúng ta bỏ ra khi đi làm là để … viết code.

Chúng ta viết code để hiện thực 1 features nào đó, để tạo ra sản phẩm. Code ít lỗi thì sản phẩm chúng ta làm ra mới tốt, code clean thì người khác mới dễ đọc, dễ bảo trì.

Chưa kể, đồng nghiệp, cấp trên sẽ đánh giá khả năng, trình độ của bạn dựa trên những dòng code mà bạn viết ra. Viết code tởm, code tạm bợ sẽ khiến bạn bị … người đời phỉ nhổ.

Do vậy, muốn thành 1 lập trình viên giỏi, trước tiên bạn phải học cách viết code clean và code cứng. Chi tiết thì dài lắm, mình đi làm 4-5 năm rồi nhưng vẫn phải học mỗi ngày nên khó chia sẻ hết trong bài này được.

Cuốn Clean Code ai cũng biết rồi nên nay mình giới thiệu cuốn The Art of Readable Code nha!


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

Tất nhiên, code giỏi là điều kiện cần chứ chưa phải là đủ. Để nâng cao giá trị bản thân, bạn cũng nên tập trung master (nôm na là làm trùn, lộn, làm “trùm”) một công nghệ, lĩnh vực nào đó.

Ví dụ, bạn thấy thích front-end. Đừng chỉ tập trung vào code, mà hãy nghĩ tới cách làm giao diện, cách thiết kế UI/UX, flow hợp với người dùng. Hoặc bạn có thể tìm hiểu cách optimize code, optimize performance của React/Angular.

Hoặc nếu bạn thích back-end, bạn có thể tập trung thêm vào thiết kế hệ thống, tìm hiểu sâu về database optimize, caching, infrastructure v…v.

Bên cạnh công nghệ, kiến thức về 1 lĩnh vực nào đó, kiến thức về qui trình cũng khá quan trọng!

Ví dụ, bạn từng làm dev cho các công ty liên quan tới trading, kiến thức trading đó sẽ rất có giá trị khi bạn nhảy qua các công ty liên quan đến tài chính, stock.

Những thứ này người ta gọi là Domain Knowledge

Những kiến thức này giúp bạn hiểu rõ hơn những về cách hệ thống hoạt động, cover được nhiều trường hợp hơn, tiếp nhận requirement từ user nhanh chóng hơn.

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

Làm một thời gian rồi, bạn sẽ luyện được cách tiếp cận vấn đề một cách bài bản, có hệ thống, có qui trình chứ không … mò mẫm nữa. Ví dụ:

  • Khi nghe thấy có bug front-end, thay vì mò mẫm thì ta có thể check bug đó ở browser nào, trang nào, sau đó thử reproduce. Sau khi reproduce ta mở Developer Tool lên để xem có lỗi gì không, sau đó mới check code xem đoạn nào gây lỗi.
  • Khi có lỗi back-end nhưng không reproduce được, thay vì vò đầu bức tai thì ta kiểm tra log, kiểm tra monitoring xem có alert hay notify gì không.
  • Khi làm 1 chức năng mới, thay vì cắm đầu code ngay thì ta thiết kế trước flow, UI, những module cần thiết; sau đó check lại xem cách nào có đáp ứng đủ yêu cầu hay không. Sau đó mới bắt đầu code.

Tiếp cận vấn đề có hệ thống sẽ giúp bạn tiết kiệm khá nhiều thời gian, công việc trơn tru hơn, chuyên nghiệp hơn!

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

4. Tiếp cận phần mềm dưới góc nhìn của user/business

Nếu chỉ biết cắm đầu vào code, giao task gì làm nấy, giá trị của bạn mang lại chỉ có hạn. Công việc của lập trình viên chúng ta không phải là code, mà là dùng khả năng code để đem lại giá trị cho sản phẩm, cho người dùng.

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

  • Chức năng này code ra cho ai dùng? UI/UX thế này đã thân thiện với người dùng chưa?
  • Chức năng này code ra có đem lại giá trị gì không? Có giúp người dùng vui hơn không? Có mang lại doanh thu/lợi nhuận thêm cho công ty không?
  • Task này mình làm tiết kiệm được thời gian cho anh em trong nhóm, cho các bạn operator và customer support hay không?

Khi làm vậy, bạn sẽ thấy được những task nào nên làm, không nên làm, công sức mình bỏ ra đã giúp được những ai.

Khi có performance reveiw, đòi tăng lương, bạn cũng có cơ sở mà đòi vì “Em đã làm cái A cái B này đem lại quá trời tiền cho công ty”.

Trước khi làm cái gì cũng nên hỏi “Code cái này có ra tiền không” nha.

5. Kĩ năng mềm/thuyết trình/chém gió

Dù bạn có giỏi thế nào, thiết kế hệ thống xịn tới mấy, mà không giải thích được cái hay, cái giỏi đó cho đồng nghiệp, cho cấp trên; thì cái sự giỏi ấy cũng không có tác dụng nhiều.

Chưa kể, khi bạn lên những vị trí cao hơn như team lead, manager, thời gian dành cho việc code sẽ ít lại; thay vào, bạn sẽ phải bỏ ra thêm thời gian để thuyết phục member, trình bày cho cấp trên, chém gió cho các team khác.

Do vậy, muốn thành lập trình viên giỏi, có sức ảnh hưởng, bạn phải có chút kĩ năng mềm để thuyết phục người khác làm theo ý mình; có kĩ năng thuyết trình/chém gió để trình bày vấn đề với cấp trên.

Phần này thì mình cũng không biết rèn luyện ra sao! Bản thân mình chỉ quan sát mấy bác manager/team lead/CEO xung quanh, sau đó kiếm thêm sách về đọc thôi.

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

Tạm kết

Trong ngành mình, khả năng quyết định tất cả, tiếp tới là may mắn. Nếu bạn có khả năng, nếu bạn đủ giỏi, bạn có rất nhiều cơ hội, thể dễ dàng nhảy việc, dễ dàng deal lương!

Do vậy, đừng quá tập trung vào vài đồng lương vụn vặt, mà hãy cố gắng biến mình giỏi hơn hàng ngày Nâng cao trình độ của mình, tiền bạc sẽ tự theo đuổi bạn nha.

Nếu bạn nào có kinh nghiệm, cách rèn luyện để trở thành lập trình viên giỏi thì cứ comment chia sẻ với mọi người nhé.

Tác giả: Phạm Huy Hoàng – Hot Blogger Toidicodedao.com