Những kỹ năng cần thiết để trở thành 1 lập trình viên giỏi
Hôm nay rảnh rỗi ngồi nói chuyện với chatGPT, mình hỏi thử xem làm thế nào để trở thành 1 lập trình viên giỏi, thì được nó list ra nguyên 1 checklist như này:
Cái list này đọc sơ qua thì cũng không có gì sai, nhưng nếu suy nghĩ kĩ thì mình thấy thật ra nó chỉ trả lời câu hỏi làm sao để trở thành LTV, chứ k phải là 1 LTV giỏi. Mình nghĩ rằng bất cứ LTV nào cũng sẽ follow hết nguyên cái checklist này, và ít nhiều để nắm được những vấn đề trên. Nhưng sao lại có người giỏi, có người dở? Mấu chốt nằm ở đâu? Theo mình, thì những kĩ năng sau đây mới chính là điểm tạo ra sự khác biệt.
1. Khả năng tự học
Mình bắt đầu làm quen với lập trình từ hồi cấp 2, năm lớp 7 hay lớp 8 gì đó. Ban đầu chỉ là download mấy open source blog, website nhạc hay forum về tìm cách dựng lên, rồi follow mấy cái tutorial để tuỳ chỉnh theo ý mình. Sau đó mình bắt đầu mày mò học PHP, MySQL, HTML, CSS và tự viết cho mình 1 website vào năm lớp 11. Mình xuống Sài Gòn, học lập trình gần 2 năm rồi đi làm PHP, ASP.NET, NodeJS, React, Ruby và 1 mớ thứ hầm bà lằng khác. Tất cả đều là tự học. Mình hình thành một thói quen đọc official document cho tất cả những thứ mình phải làm việc với. Nhờ đó mình nắm rõ bản chất thay vì là chỉ biết làm như con vẹt. Hơn nữa, vì cái gì cũng có thể tự học, nên mình không ngại khi được giao làm những việc mình chưa biết. Rồi cũng nhờ đó mà mình được làm với rất nhiều ngôn ngữ, công nghệ, môi trường và công việc lập trình khác nhau. Vị trí trong công ty của mình cũng sẽ tốt hơn, vì mình có thể làm được những công nghệ mà hầu như trong công ty không có ai đụng đến. Hoặc khi kết nối với các phần khác, do đã làm những công việc tương tự, mình có thể hiểu hơn về những khó khăn của những phần đó, từ đó điều chỉnh để công việc suông sẻ hơn.
Gần đây, mình thấy có cả tỉ các khoá học dạng như X ngày để master ReactJS, hay X ngày để trở thành lập trình viên... Mình từng thấy nhiều bạn tham gia các khoá học như vậy rồi apply công việc, tự nghĩ là mình biết những ngôn ngữ đang trend nên rất chi và này nọ. Nhưng vấn đề là trong ngành lập trình này, mọi thứ thay đổi rất nhanh. Công nghệ chỉ là những thứ bề mặt, hôm nay có thể trend nhưng ngày mai có thể khác. Điều giữ cho bạn luôn trendy trong công việc đó là khả năng tự học để tự cập nhật cho mình những điều mới. Ngoài ra tự học ở đây không chỉ là đọc cho biết mà còn là khả năng chắt lọc thông tin và lựa chọn cho mình những điều thật sự cần thiết cho công việc. Mình từng làm việc với 1 bạn LTV lúc nào cũng nói về best practice, công nghệ này nọ, rồi code refactoring. Nhưng bạn ấy chỉ được đánh giá là junior vì thật ra những điều trên mọi người đều biết, nhưng quan trọng ở chỗ chúng ta biết chắt lọc điều gì cần cho dự án của mình và ứng dụng đúng chỗ.
2. Kĩ năng tiếng anh
Ở cái thời của mình, tiếng anh chưa được các bạn học công nghệ quan tâm một cách đầy đủ. Dẫn đến trường hợp rất nhiều bạn có kĩ năng lập trình tốt bị mất đi nhiều cơ hội. Khi bạn có khả năng giao tiếp tiếng anh tốt, bạn đã mở rộng được cơ hội nghề nghiệp của mình lên rất nhiều lần. Vì hiện tại có rất nhiều công ty nước ngoài tuyển dụng nhân sự trong mảng công nghệ. Thậm chí bạn có thể tự ứng tuyển một công ty ở nước ngoài và làm việc remote với một mức lương hoàn toàn tốt. Hiện tại, tiếng anh đã được quan tâm nhiều hơn. Nhưng không hiểu sao nhiều bạn trẻ xung quanh mình, đặc biệt là các bạn ở tỉnh vẫn không có đủ kĩ năng cần thiết sau khi ra trường để có thể có được một công việc tốt hơn.
Hơn nữa, như đã nói ở trên, kĩ năng tự học là rất quan trọng. Vậy thì để có thể tự học, kĩ năng tiếng anh là không thể thiếu. Mình từng hướng dẫn một bạn fresher, khi đưa tài liệu bằng tiếng anh. Thậm chí một câu đơn giản mà bạn ấy còn không thể hiểu chính xác, thì làm sao có thể hiểu rõ được hết vấn đề, ứng dụng, điểm tích cực và hạn chế của một công nghệ.
3. Kĩ năng giao tiếp
Đây là một kĩ năng quan trọng mà mình thấy rất rất nhiều bạn lập trình viên giỏi bỏ qua. Thường thì các bạn lập trình viên hay kiểu introvert, thích cắm mặt vào máy tính làm công việc của mình được giao mà ngại giao tiếp, thảo luận về vấn đề này nọ. Nhưng thực tế thì kĩ năng giao tiếp lại vô cùng quan trong. Trong một quy trình làm việc, để công việc được hoàn thành hiệu quả và suông sẻ:
- Bạn cần phải giao tiếp tốt với sếp để sếp có thể hiểu rõ được vấn đề, công sức bạn bỏ ra. Nếu không có sự giao tiếp tốt, bạn có thể sẽ bị đánh giá sai về năng lực, hiệu quả làm việc. Ví dụ, có những feature tưởng chừng như rất đơn giản, nhưng do kiến trúc hệ thống trước đó khiến cho việc lập trình thành feature đó đòi hỏi phải thay đổi nhiều chỗ và tốn nhiều thời gian để xử lý. Hoặc như đôi khi để sửa 1 dòng code đơn giản, bạn phải tốn cả ngày để debug và test để biết được lỗi thật sự ở đâu. Nếu bạn không biết cách trình bày, rất có thể bạn sẽ bị đánh giá là làm việc chậm.
- Bạn cần phải giao tiếp tốt với những lập trình viên khác. Vì trong một ứng dụng được chia làm nhiều phần, chắc chắn bạn sẽ phải tương tác với những phần khác. Khi bạn có thể giao tiếp tốt với những lập trình viên khác, bạn sẽ dễ dàng tìm hiểu được cách thức hoạt động và kết nôí với các phần khác, và cũng dễ dàng hợp tác để đưa ra flow kết nối giữa các phần hoặc tìm ra giải pháp khi có vấn đề.
- Bạn cũng cần phải giao tiếp tốt với những người làm công việc khác. Thông thường thì bạn sẽ trực tiếp làm việc với product manager/product owner/.... Trường hợp này thì dễ dàng hơn vì ít nhất bạn PM dù không trực tiếp làm technical, nhưng cũng có nhiều kinh nghiệm làm việc với technical nên sẽ có thể dễ dàng có được tiếng nói chung. Nhưng chắc hẳn trong quá trình làm việc, sẽ luôn có những trade-off mà nếu bạn có khả năng giải thích, trình bày tốt sẽ giúp đưa ra được một giải pháp hợp lý theo yêu cầu của PM mà vẫn không quá phức tạp cho hệ thông. Hơn nữa, trong nhiều trường hợp. Người làm việc trực tiếp với bạn là một người từ những phòng ban khác như marketing, content, ... Để có thể làm rõ được yêu cầu, tránh sửa đi sửa lại nhiều lần, bạn cần kĩ năng giao tiếp tốt để có thể cùng với đồng nghiệp đưa ra mô tả và cách thức vận hành tôí ưu nhất trước khi bắt tay vào công việc.
lập trình cơ bản, tư duy logic, giải quyết vấn đề, kiến thực về lập trình, CSDL, .... là những kĩ năng không thể thiếu của 1 LTV. Nhưng nếu ai cũng đều biết những điều này, thì điều gì làm cho bạn khác biết để thành công? Mình tin rằng 3 kĩ năng mình đề cập ở trên mới là chìa khoá để không những trở thành 1 lập trình viên giỏi mà còn giỏi trong bất cứ lĩnh vực gì mà bạn tham gia.
Tags:
vietnamese developer