Bài viết được dịch từ trang web Life Hacker

Lập trình viên giỏi cần có những kỹ năng gì?
Lập trình viên giỏi cần có những kỹ năng gì?

Có rất nhiều thứ cần thiết để trở thành một lập trình viên chuyên nghiệp hơn chỉ là viết code đơn thuần. Từ làm việc nhóm để giải quyết các vấn đề cho đến kiểm soát phiên bản, bạn sẽ không thể chuyên nghiệp nếu thiếu đi một tập những kỹ năng quan trọng khác. Chúng tôi đã đặt câu hỏi độc giả và một số những lập trình viên chuyên nghiệp rằng những kỹ năng đó là gì, và đây là những gì mà chúng ta đã nhận được.

Với tất cả những ồn ào xung quanh việc học lập trình, rất dễ để nghĩ rằng việc biết một ngôn ngữ lập trình là tất cả những gì cần thiết để trở thành một lập trình viên chuyên nghiệp. Tuy nhiên, cũng giống như những công việc khác, cần phải có nhiều hơn một kỹ năng để trở thành một lập trình viên giỏi. Chúng tôi không thể liệt kê ra đây tất cả mọi thứ mà một lập trình viên cần có, nhưng đây là một số trong những kỹ năng quan trọng nhất (bên cạnh việc viết code) mà bạn nên trau dồi nếu bạn thực sự muốn trở thành một lập trình viên chuyên nghiệp.

Học cách giao tiếp

Lập trình viên cần học cách giao tiếp

Trong khi một số phương tiện truyền thông mô tả việc lập trình như là một nghề của những người cô độc, nhưng thực ra công việc này bao gồm rất nhiều giao tiếp và làm việc với những người khác. Nếu bạn làm việc cho một công ty, thì bạn sẽ là một phần của một đội ngũ phát triển phần mềm và cần giao tiếp để làm việc tốt với những người khác.

Tuy nhiên, Jeff Bargmann, một lập trình viên của Lifehacker nhấn mạnh rằng việc biết cách nói chuyện và viết lách rõ ràng cùng khả năng thuyết phục thậm chí còn quan trọng hơn đối với những lập trình viên tự do:

Trường học đã không trang bị cho tôi khả năng truyền đạt thông qua viết lách mà tôi cần có. (Chúng ta đâu chỉ có viết code thôi, phải không?) Trong sự nghiệp chuyên nghiệp của bạn - nếu bạn muốn phát triển lên - bạn sẽ phải dành rất nhiều thời gian để học cách truyền thông rõ ràng, súc tích và thuyết phục - hãy tập suy nghĩ từ góc nhìn của người đối diện - thông qua email tới các đồng nghiệp, người quản lý, khách hàng/đối tác và hy vọng một ngày nào đó là cả những giám đốc điều hành nữa. Với tư cách một lập trình viên tự do thì kỹ năng này là mang tính sống còn và bắt buộc bạn phải học được nó.

Jeff cũng có một số lời khuyên cho việc phát triển các kỹ năng giao tiếp của bạn:

Để xóa bỏ rào cản này và tiến về phía trước, bạn sẽ muốn thực hành trên thực tế (Cũng giống như cách để bạn trở nên viết code tốt hơn!). Hãy xuất bản một số bài viết ngắn, đọc các email thành tiếng, đối mặt với những chỉ trích, và hơn thế nữa là hãy tạo cho mình những kinh nghiệm; giống như bạn đã làm với pet project của bạn vậy.

Nếu bạn không có cơ hội để phát triển với một team ngay bây giờ, thì hãy tập trung vào việc nâng cao khả năng giao tiếp ở trường đại học, các bài phát biểu, và tham gia các lớp tập viết để học cách truyền thông đúng cách. Trang web Lynda hiện cung cấp rất nhiều các khóa học về giao tiếp rất tuyệt vời, và bạn nên tham gia nếu đang tự học.

Tham khảo các khóa học lập trình online, onlab, và thực tập lập trình tại TechMaster

Nâng cao các kỹ năng giải quyết vấn đề

Lập trình viên cần nâng cao kỹ năng giải quyết vấn đề

Nhiều lập trình viên nói rằng việc hiểu một ngôn ngữ lập trình chỉ là một phần nhỏ của công việc coding. Giải quyết vấn đề là một kỹ năng quan trọng khác mà các lập trình viên tân binh thường thiếu. Phát triển phần mềm cũng giống như việc ráp các miếng ghép lại với nhau vậy: bạn cần phải hiểu làm thế nào để kết nối một mẩu chương trình của bạn tới một mảnh ghép khác, và điều đó không phải lúc nào cũng dễ dàng. Độc giả Jsimon giải thích:

Tôi đã từng gặp những người rất rành về một ngôn ngữ lập trình, nhưng không thể giải quyết được vấn đề mà họ gặp phải khi vấn đề đó vượt ra ngoài những kiến thức của họ. Một ví dụ là khi tôi đang làm việc trong một nhóm ở trường đại học. Tôi đã được nhờ xem qua phần code thuộc về trách nhiệm của một thành viên khác vì họ không thể kết nối được tới server qua socket. Lý do là anh ta chưa thiết lập một cổng (port) và đã ngồi tìm lỗi hết mất một tuần. 

Tuy nhiên, giải quyết vấn đề là một kỹ năng rất khó học. Chìa khóa ở đây là bạn phải thực hành thật nhiều. Hãy làm những dự án nhỏ như phát triển các ứng dụng ghi chú, làm một cái calculator, hoặc bất cứ thứ gì mà bạn cảm thấy thú vị. Khi bạn làm điều này, hãy tập trung vào phần logic ở phía sau đoạn code, và học cách suy nghĩ giống như một chiếc máy tính chứ không phải là chỉ hiểu về ngôn ngữ đó.

Học cách làm thế nào để một chiếc máy tính có thể hoạt động cũng mang lại nhiều lợi ích. Bí quyết này xuất phát từ độc giả có nickname là Jacobm001:

Giải quyết vấn đề là phần lớn nhất của những gì chúng ta làm. Máy tính thường rất khó hiểu, và bạn cần phải học cách bạn suy nghĩ về các vấn đề. Để có hiệu quả, bạn cần phải thực sự tìm hiểu cách làm thế nào mà một máy tính hoạt động và hiểu cách CPU xử lý thông tin. Cá nhân tôi rất ghét ngôn ngữ assembly, nhưng tôi vô cùng biết ơn rằng mình đã tham gia một khóa học tập trung vào nó. Các lập trình viên có ít nhất một số kiến thức về assembly thì sẽ có nhiều ý tưởng tốt hơn về cách làm thế nào để mọi thứ được thực hiện đúng đắn.

Giống như Jsimon nói, việc biết cách làm thế nào để lập trình và cả giải quyết vấn đề để kết nối những mảnh ghép là chìa khóa thành công. Khi bạn bắt đầu phát triển các chương trình thực tế, hãy tập trung vào việc phát triển một cách tiếp cận có hệ thống để giải quyết các vấn đề mà bạn sẽ phải đối mặt.

Bắt đầu học cách kiểm soát phiên bản ngay lập tức

Lập trình viên cần kiểm soát phiên bản

Nếu trong trường đại học, bạn sẽ sớm bắt đầu làm việc với các nhóm trong lớp để phát triển các dự án. WindowsSVN và GitHub là hai trong số các công cụ mà các nhóm phát triển sử dụng để làm việc cùng nhau nhằm tạo ra và cập nhật các ứng dụng mã nguồn mở. Đây là những công cụ có sẵn cho tất cả mọi người, nhưng các công ty họ lại sử dụng Subversion và Apache SVN, và một số thứ khác. Bạn nên tham gia vào một công việc mới để có hiểu biết cơ bản về cách mà các hệ thống này làm việc, nhờ vậy bạn có thể làm việc tốt với những đồng nghiệp mới của mình. Phải mất một thời gian và thực hành để tìm hiểu, do đó bạn sẽ cảm thấy mình bị tụt lại phía sau nếu tham gia một công việc mà không biết làm thế nào để sử dụng ít nhất một trong những công cụ này. May mắn là chúng tôi đã chia nhỏ các bước hướng dẫn sử dụng GitHub, và giúp bạn nắm vững cách sử dụng nó.

Cách duy nhất để bạn thực sự làm chủ một hệ thống là phải thực hành thật nhiều. Nếu bạn đang là sinh viên thì nên tham gia vào các dự án làm việc nhóm trong lớp. Khi bắt tay vào làm, bạn hãy xin phép sử dụng GitHub hoặc một dạng lưu trữ code nào đó mà thậm chí ngay cả khi người hướng dẫn không yêu cầu. Hãy tìm kiếm một nhóm để làm việc cùng nếu bạn đang tự học, hoặc là bằng cách gia nhập vào một dự án đã có trên GitHub hoặc bằng cách tìm một nhóm người mà bạn muốn làm việc cùng rồi bắt đầu một dự án mới.

Phát triển cho mình một phương pháp học

Lập trình viên cần phát triển cho mình một phương pháp học

Công nghệ luôn luôn thay đổi và kiến thức của lập trình viên cũng phải thay đổi theo. Nếu bạn muốn không bị lạc hậu trong lĩnh vực này, điều quan trọng là phải luôn cập nhật những ngôn ngữ lập trình, các phần mềm và phần cứng mới. Độc giả Wakers01 giải thích:

... bạn sẽ cần học những ngôn ngữ lập trình, các công nghệ và các công cụ mới với một tần suất cho phép bạn theo kịp tốc độ phát triển. Bạn phải sẵn sàng thử nghiệm công nghệ mới, phân tích những mặt ưu và nhược điểm của nó, và "tiêu hóa" nó nhanh chóng. Chú ý rằng tôi nói "tiêu hóa" chứ không phải là "học". Ý tôi là bạn phải hấp thu hoàn toàn, hiểu và tích hợp những điều mới mẻ này vào trong tập kỹ năng của bạn, chứ không chỉ là nắm một số kiến thức mới về cách mà x hoạt động. Điều này không chỉ nói về các ngôn ngữ và công cụ, bạn cũng sẽ cần học về cách các doanh nghiệp hoạt động và cách người dùng làm việc trong doanh nghiệp đó. Miễn là bạn có thể duy trì một sự phấn khích cho việc học những điều mới thì bạn sẽ ổn.

Có rất nhiều điều bạn có thể làm để khiến cho việc học các kỹ năng mới trở nên dễ dàng và nhanh chóng hơn. Ví dụ: bạn sẽ sử dụng trí nhớ hiệu quả hơn nếu dành thời gian để hiểu chính xác cách làm thế nào mà nó hoạt động vào lúc đầu. Học tập cũng bao gồm cả việc hiểu, vì vậy ngoài những lời khuyên về giao tiếp chúng ta có ở phần trên, hãy tập trung vào việc tăng khả năng đọc hiểu của bạn, nhờ đó bạn có thể đọc qua các tài liệu kỹ thuật và các hướng dẫn liên quan một cách dễ dàng. Hiểu rằng bạn sẽ không thể ghi nhớ hết mọi thứ, do đó việc có một hệ thống ghi chú và tạo ra ý tưởng đánh chỉ số trên sách là những cách rất tốt để có thể tổ chức và nhanh chóng tìm thấy thông tin bạn cần tham khảo.

Bắt đầu với những thứ cơ bản: xem việc học như một kỹ năng bạn nên tập trung vào để làm chủ nó. Một khi bạn đã làm được điều đó, bạn sẽ dễ dàng cuốn theo dòng chảy của công nghệ và luôn dẫn đầu trong sự cạnh tranh của lĩnh vực này.

Có rất nhiều thứ trong lập trình hơn là chỉ ngồi một chỗ và viết code. Nếu bạn nhận ra điều này sớm thì bạn sẽ có một cơ hội tốt hơn để thu được nhiều kỹ năng quan trọng mà các nhà tuyển dụng và khách hàng cần ở bạn.