27/11/14

Các kỹ năng quan trọng cần có cho lập trình viên năm 2014

Những kỹ năng quan trọng cho lập trình viên là gì? Làm sao để theo kịp công nghệ luôn là vấn đề quan trọng của các nhà lập trình. Do đó, với các bạn đang theo hướng lập trình cần trang bị cho mình những kỹ năng sau đây.

Lập trình viên 2014: Những kỹ năng cần có?

Trong bối cảnh nền công nghệ thông tin phát triển nhanh chóng, vượt bậc như ngày nay thì lại có rất nhiều các lập trình viên cảm thấy thỏa mãn với những gì mình đang có, không có ý định học hỏi cái mới trong khi những kiến thức họ có được, thì ngay ngày hôm sau đã có thể trở nên lạc hậu.
Trong khi đó, vẫn còn rất nhiều các lập trình viên xác định được rõ mục tiêu của mình và quyết tâm đầu tư thời gian cho những mục tiêu đã đặt ra. Dẫu vậy, công nghệ phát triển như vũ bão, những developer cần mẫn này không thể chỉ chăm chăm vào học kiến thức mới mà còn phải biết nắm bắt xu hướng, hiểu rõ được những gì cần thiết, những gì sẽ trở thành công cụ đắc lực trong tương lai. Trong một cuộc nói chuyện và phỏng vấn các ứng viên, David Tucker, Giám đốc nghiên cứu và phát triển tại Universal Mind, đã chia sẻ một số kỹ năng quan trọng cho lập trình viên năm 2014 cần có.
Nắm chắc kiến thức về một nền tảng di động nhất định
Di dộng đang và sẽ trở thành xu hướng của tương lai. Có rất nhiều cách cho các bạn học lập trình viên có thể phát triển các ứng dụng trên di động, từ việc thiết kế các website tối ưu cho di động ( web app ), phát triển ứng dụng lai dựa trên HTML ( hybrid app ) cho đến viết các ứng dụng gốc cho nền tảng ( native app ). Mặc dù có nhiều phương pháp để phát triển một ứng dụng cho di động nhưng chúng đều có một điểm chung đó là chạy trên mã gốc của một nền tảng nhất định. Do đó, khi một tổ chức muốn phát triển ứng dụng chạy trên một nền tảng nào đó, họ sẽ thường tuyển dụng các ứng viên có kiến thức chuyên sâu về nền tảng được yêu cầu, hiểu rõ các lớp, các thành phần của nền tảng dù cho ứng dụng có được phát triển theo kỹ thuật nào đi chăng nữa.
Lập trình viên 2014: Những kỹ năng cần có?

Với sự dẫn đầu của một số nền tảng phổ biến hiện nay trên thế giới như iOS, Android hay Windows Phone, các lập trình viên hoàn toàn có thể chọn cho mình một nền tảng ưng ý và thực sự tập trung học hỏi chuyên sâu về nền tảng đó trước khi chuyển sang các nền tảng khác.
Hiểu rõ về quy trình phát triển phần mềm Agile ( phát triển nhanh gọn )
Nói về quy trình phát triển phần mềm, thuật ngữ này không hẳn chỉ dành cho các quản lý dự án như nhiều người vẫn nghĩ. Một lập trình viên cũng cần phải hiểu được quá trình phát triển của một phần mềm như thế nào, theo dõi các tác vụ, tiến độ ra sao, làm việc với các lập trình viên khác như thế nào thì hiệu quả… Kể cả khi một lập trình viên "chiến" một mình một dự án thì cũng cần hiểu rõ về vấn đề này. Agile là một process giúp cho việc phát triển phần mềm được nhanh gọn và linh hoạt hơn do đó, nếu như các developer nắm bắt được process này và áp dụng một cách hiệu quả, quá trình phát triển phần mềm sẽ được rút ngắn và tinh gọn đi rất nhiều.
https://d262ilb51hltx0.cloudfront.net/max/812/1*9DkPsjO0lc5CsufTvnsGOw.png

Quy trình phát triển phần mềm nhanh gọn ( agile ) có rất nhiều phương pháp khác nhau như Scrum, Kanban, XP…và các lập trình viên cần chọn cho dự án của mình một phương pháp phù hợp dựa trên các tiêu chí đánh giá về dự án. Các bộ công cụ được cung cấp để có thể phát triển theo hướng agile một cách hiệu quả cũng rất nhiều, có thể kể đến như Pivotal hay Trello, giúp cho việc phát triển phần mềm được rõ ràng, nhanh gọn hơn so với các phương pháp truyền thống.
Biết tính toán, ước lượng một cách hiệu quả
Quá trình tính toán, ước lượng các công việc là một trong những giai đoạn yêu cầu cả nhóm làm việc chặt chẽ với nhau. Việc một dự án có thành công hay không không chỉ phụ thuộc vào các thuật toán, giải pháp… mà còn phụ thuộc rất nhiều vào độ chính xác của việc ước lượng, tính toán với công việc. Các developer mới vào nghề thì thường xem nhẹ quá trình ước lượng, tính toán này trong khi đối với các “lão làng”, đây là một trong những phần đáng lo ngại nhất và cẩn phải được xem xét kỹ lưỡng.
Lập trình viên 2014: Những kỹ năng cần có?

Chẳng có phương pháp ước lượng nào có thể hiệu quả cho tất cả các dự án. Các lập trình viên cần phải đưa ra các ước lượng dựa trên tình hình của dự án, đánh giá các tiêu chí, tham số… để đưa ra kết quả cuối cùng. Hơn thế nữa, không chỉ tính toán, ước lượng về các công việc của cả project, mỗi lập trình viên cũng cần phải biết ước lượng đối với các công việc của mình được giao. Với người mới, việc tính toán, ước lượng ban đầu có thể có sự chênh lệch lớn so với thực tế, tuy vậy, nếu như biết chăm chỉ luyện tập, rút kinh nghiệm thì sau mỗi lần đánh giá, độ chính xác của việc tính toán, ước lượng sẽ ngày càng được gia tăng.
Thông thạo Javascript
Cách đây vài năm thì có thể lời khuyên này không thực sự chính xác, nhưng trong bối cảnh hiện nay, javascript là một công cụ đắc lực trong việc phát triển phần mềm và dịch vụ. Có thể nói đây là công cụ không thể thiếu trong các kỹ năng quan trọng cho lập trình viên. Với javascript, các lập trình viên hoàn toàn có thể viết ứng dụng di động, ứng dụng server, tạo blog và rất nhiều thứ khác nữa.
Lập trình viên 2014: Những kỹ năng cần có?

Không những thế, Javascript còn thường được sử dụng như tầng xử lý logic chung có khả năng chia sẻ giữa nhiều nền tảng như iOS và Android, giúp cho lập trình viên không phải viết lại code nhiều lần khi port ứng dụng sang nhiều nền tảng khác nhau.
Biết ít nhất một ngôn ngữ server-side
Thông hiểu ngôn ngữ server-side có thể được coi là một trong những yếu tố rất quan trọng. Dù bạn có là một lập trình viên chuyên phát triển các ứng dụng front-end ( phía người dùng ) thì bạn vẫn cần phải biết và hiểu rõ mọi thứ hoạt động như thế nào ở phần back-end ( phía server ). Khả năng có thể tạo ra các chuỗi liên kết từ phía ứng dụng front – end, thông qua API rồi truyền đến database ở phía server là một kỹ năng quan trọng.
Lập trình viên 2014: Những kỹ năng cần có?

Trong lĩnh vực này, các lập trình viên có rất nhiều lựa chọn để chọn cho mình một công nghệ phù hợp như sử dụng Java, .NET, Python hay PHP. Nếu một lập trình viên đã thông thạo ngôn ngữ javascript trước đó và nay muốn bắt tay vào tìm hiểu về back-end, NodeJS là một sự lựa chọn hoàn hảo. Bộ công cụ này cho phép các lập trình viên có thể thực hiện một số công việc cơ bản như tạo máy chủ web, chạy dịch vụ thử nghiệm cho ứng dụng di động cũng như triển khai ứng dụng lên đám mây với các dịch vụ như Heroku hay Nodejitsu.
Trang bị kiến thức về HTML và CSS
Công nghệ web đã quá phổ biến trên Internet và nó có mặt gần như khắp mọi nơi. Hầu hết các nền tảng phổ biến hiện nay đề có khả năng nhúng và xử lý nội dung web. Vì vậy, dù cho bạn không phải là một web developer thì việc hiểu biết về HTMl hay CSS cũng vẫn sẽ đem lại nhiều lợi ích cho bạn sau này. Hơn thế nữa, mỗi developer nên có cho mình một trang blog riêng giới thiệu về tiểu sử, trình độ, kinh nghiệm.. và khi cần tạo các trang blog như thế này, bạn sẽ không phải mất nhiều thời gian để xây dựng khi đã có sẵn trong đầu các kiến thức về web, đặc biệt là HTML và CSS.
Lập trình viên 2014: Những kỹ năng cần có?

Biết cách tìm kiếm thông tin nhanh chóng
Chẳng có ai cái gì cũng biết, nhưng có những thứ bạn không biết mà người khác lại biết. Internet sinh ra để gom những kiến thức lại đó giúp người dùng có thể truy cập dễ dàng hơn khi cần. Hơn ai hết, một lập trình viên cần phải có kỹ năng tìm kiếm thông tin và phải là tìm kiếm một cách có hiệu quả. Điều này giúp các lập trình viên có thể rút ngắn rất nhiều thời gian thu nạp kiến thức và có thể tập trung được nhiều hơn vào việc phát triển phần mềm. Việc tham gia vào các cộng đồng dành cho các nhà phát triển thậm chí còn rút ngắn thời gian tìm kiếm của lập trình viên hơn nữa thay vì chỉ tìm kiếm trên các công cụ phổ thông như Google hay Bing.
Lập trình viên 2014: Những kỹ năng cần có?

StackOverFlow là một trong những cộng đồng các nhà phát triển đông đảo nhất trên thế giới. Ở đây, bạn hoàn toàn được tự do học hỏi, đặt ra các thắc mắc và cộng đồng phát triển trên toàn thế giới sẽ trả lời giúp bạn. Tuy vậy, hãy nhớ tìm kiếm xem câu hỏi của mình đã được đề ra trước đó chưa và có ai trả lời chưa. Nếu như bạn có thể tìm kiếm câu trả lời mà không cần tự đặt câu hỏi, điều đó thực sự rất tuyệt.
Code có tầm nhìn
Trong quá trình phát triển dự án có rất nhiều điều có thể xảy ra. Ví dụ, sau vài năm phát hành một ứng dụng nào đó, có thể vào một ngày đẹp trời bạn quyết định biến nó thành ứng dụng mã nguồn mở cho cả cộng đồng có thể học hỏi, sử dụng; hay bạn hoàn toàn có thể phát triển thêm phiên bản Windows Phone cho ứng dụng của mình sau khi phát hành trên Android và iOS chỉ đơn thuần vì bạn nhận thấy tiềm năng của nền tảng này. Có rất nhiều yếu tố quyết định đến số phận của dự án mà bạn, một người học lập trình Android cần phải nắm được. Với tư cách là một nhà phát triển, điều quan trọng ở đây là bạn phải hiểu những lựa chọn của mình ảnh hưởng như thế nào để khả năng port ứng dụng sang nền tảng khách hay khả năng mở rộng ứng dụng trong tương lai dựa trên những gì đã được hoàn thiện. Do đó, chính bạn, developer cần phải nắm rõ được mình đã code những gì và những dòng code đó sẽ đóng vai trò như thế nào đối với tương lai, số phận của dự án.
Thông thạo về Git
Git là một công cụ phổ biến đối với hầu hết các cộng đồng phát triển phần mềm và có phần vượt trội so với các công cụ khác. Git không chỉ là một hệ thống kiểm soát phiên bản ( Version Control System ) bình thường mà hơn thế nữa, nó còn tác động đến cả quy trình phát triển phần mềm thông qua mô hình “git-flow”. Mô hình này có thể làm việc hoàn toàn hiệu quả đối với những dự án chỉ có từ vài người đến vài chục người, thậm chí là một developer cân cả dự án. Để hiểu rõ hơn về “git-flow”, bạn có thể xem sơ đồ dưới đây
https://d262ilb51hltx0.cloudfront.net/max/800/1*1gasDspx1urXbHPXqgjVGw.png

Sử dụng các công cụ quản lý tác vụ và lỗi
Việc kiểm soát các tác vụ và lỗi phát sinh là một công việc rất đỗi bình thường mà các developer vẫn thực hiện hàng ngày. Cộng đồng các nhà phát triển thường sử dụng các công cụ miễn phí nhưng hiệu quả như Github Issues hay Bitbicket cũng như các hệ thống phức tạp hơn như JIRA. Việc kiểm soát tác vụ và lỗi phát sinh là công đoạn rất quan trọng, do đó, các developer cần học cách sử dụng các công cụ hỗ trợ công việc này. Việc nắm bắt được quy trình kiểm soát tác vụ và lỗi phát sinh sẽ giúp rút ngắn thời gian phát triển một cách đáng kể.



http://icons.iconarchive.com/icons/danleech/simple/1024/github-icon.png

Để trở thành một lập trình viên giỏi, ngoài những kiến thức cơ bản, các bạn cần trang bị những kỹ năng quan trọng cho lập trình viên như trên. Công nghệ luôn luôn đổi mới, do đó cập nhật luôn là vấn đề quan trọng hàng đầu.
Chúc các bạn thành công.