Các kĩ năng cần có của lập trình viên ngày nay

Công nghệ càng ngày càng phát triển, có nhiều đổi mới và sự thay đổi rất bất chợt đến nỗi ngày nay các lập trình viên hầu như không thể nắm rõ hiện tại là có những gì đang xảy ra. Sự phát triển nhanh vọt kéo theo những yêu cầu mới về kĩ năng, và trình độ hiểu biết của một lập trình viên.

Trong lĩnh vực công nghệ thông tin đang trên đà phát triển hiện nay, đã và đang nảy sinh khá nhiều lĩnh vực và tạo nên các nhóm ngành mới, tạo điều kiện cho các lập trình viên mới có thể tiếp cận và chọn lựa ngành phù hợp với khả năng của mình. Một số ví dụ đáng kể đến như là:

  • Full-Stack Developer: có thể hiểu là một lập trình viên yêu cầu phải nắm rõ quy trình của cả một bộ sản phẩm từ trên xuống dưới. Ví dụ như với web app thì có thể là một Full-Stack Developer phải biết: web server, cơ sở dữ liệu, triển khai các cache service, code phía back-end, code phía front-end, và còn nhiều nữa phụ thuộc vào sản phẩm. Có thể các bạn đã từng nghe nói tới MEAN stack, một stack khá phổ biến trong web app hiện nay, bao gồm:MongoDB, ExpressJS, AngularJS và NodeJS, đủ cả từ server, back-end, tới front-end.
  • Data Scientist: đây là ngành mà các chuyên gia có hiểu biết và kĩ năng phân tích, xử lý thông tin dựa trên một lưu lượng dữ liệu khổng lồ, hay còn gọi là Big Data. Dữ liệu mang tính chất và vai trò càng ngày càng quan trọng trong thời đại kĩ thuật số hiện nay vì nó chứa khá nhiều thông tin giá trị bên trong. Ví dụ điển hình như: dự đoán và phân tích hành vi người sử dụng, phân tích tìm hiểu xu hướng tiếp theo của người sử dụng là gì, tính toán và ước lượng hiệu quả của sản phẩm và dịch vụ, tìm kiếm thông tin cần thiết… Chính vì vậy mà rất cần có những người có khả năng làm trong lĩnh vực này để đáp ứng nhu cầu của thị trường. Không chỉ vậy, nghiên cứu khoa học cũng yêu cầu các chuyên gia ở ngành này.
  • Security Specialist: sự phát triển không ngừng của Internet và các dịch vụ truyển thông kéo theo sự đảm bảo an toàn về dữ liệu. Sẽ là một nỗi kinh hoàng lớn của một công ty khi bị đối thủ cạnh tranh tấn công vào hệ thống của mình và đánh cắp dữ liệu hay làm các việc xấu gây tổn hại về tài chính và uy tín doanh nghiệp. Có lẽ các bạn không còn cảm thấy xa lạ gì với thuật ngữ khá phổ biến ngày nay, hacker. Trước đây, thuật ngữ này có thể là chỉ những người tấn công các websites, hay dịch vụ với mục đích xấu nhưng hiện nay thuật ngữ này được mở rộng ra với Blackhat hacker, Whitehat hacker…để ám chỉ một cách cụ thể hơn. Việc bảo mật thông tin đang trở nên quan trọng và cấp thiết với mỗi doanh nghiệp thời công nghệ số hiện nay. Do đó, yêu cầu các chuyên gia bảo mật thông tin để giữ vững và đảm bảo ổn định cho công ty khá là quan trọng.

…etc…và còn một số ngành nghề mới nữa; trên đây chỉ là 3 ví dụ điển hình.

Công nghệ thời đại này phát triển nhanh tới chóng mặt và càng ngày yêu cầu kĩ năng đối với một lập trình viên sẽ càng nhiều và gắt gao hơn. Nếu như các bạn không chấp nhận thay đổi, không nắm bắt thời sự, thông tin, thì chỉ trong thời gian ngắn thôi những người đó sẽ bị tụt hậu và bị rơi vào nguy cơ thất nghiệp khá cao.

So với thế giới thì Việt Nam đang khá là chậm trong phát triển và đổi mới hệ thống cơ sở hạ tầng công nghệ thông tin. Có lẽ đây là một phần nguyên nhân giải thích tại sao các lập trình viên Việt Nam đa phần bị chậm và thua kém thế giới. Do tính chất phát triển của các doanh nghiệp vừa và nhỏ, chỉ cần đảm bảo làm ra sản phẩm gọi là “ăn đủ no” là được, vì thế, dẫn tới sự trì trệ, chậm chạp, ít học hỏi, và dặc biệt là không tạo ra định hướng nghề nghiệp rõ ràng cho các lập trình viên.

Để tạo ra sự thay đổi ở Việt Nam, thì không còn cách nào khác, đó là chính bản thân các bạn lập trình viên phải tìm ra con đường để thay đổi chính mình, biết mở rộng nhìn ra thế giới và phát triển các kĩ năng mà ngày nay đáng ra các bạn cần phải có.

Dưới đây, LapTrinh.IO xin đưa ra các kĩ năng tối thiểu mà các bạn lập trình viên, dù mới hay có kinh nghiệm cần có và phải vững vàng.

1. Sử dụng Git thành thạo cùng với các Git Hosting Services (GitHub, BitBucket).

git-github

Bạn là một lập trình viên, bạn phải biết quản lý source code của chính mình, và Git là một trong những công cụ hữu ích để giúp bạn điều này. Nếu bạn không biết về Git thì có lẽ bạn không phù hợp với thế giới hiện nay, bởi lẽ các công ty hiện nay đang và sẽ yêu cầu các bạn phải biết quản lý source code, không sớm thì muộn.

Git không những là hỗ trợ quản lý source code mà còn dùng để làm việc phối hợp giữa các thành viên trong dự án với nhau. Bạn đừng nên nghĩ là khi tạo một sản phẩm bạn sẽ là người duy nhất, mà sẽ có khá nhiều người làm với bạn đấy.

Từ Git và sự công tác giữa các thành viên, sẽ tạo hiệu quả cho việc trau dồi kĩ năng của mỗi người, qua cách quản lý, phương pháp lập trình, cách tư duy … Git vì thế còn chính là một công cụ để học và chia sẻ, rèn luyện kĩ năng.

Tiến xa hơn, tận dụng GitHub và tạo ra các dự án mã nguồn mở sẽ tạo ra khá nhiều cơ hội cho bạn, vì nếu dự án của bạn tốt, hữu ích cho công đồng và nhiều người biết tới, thì sẽ có nhiều công ty sẵn sàng trả nhiều tiền để kéo bạn về làm cho họ. Nếu bạn không muốn mở công ty và làm chủ, thì liệu đây là một cơ hội để đi làm thuê tuyệt vời nhất? Mỗi người một suy nghĩ, một quan điểm nhưng sử dụng Git làm một kĩ năng tối thiểu mà một lập trình viên cơ bản phải thành thạo.

2. Khả năng tự phát triển và học nhanh (Self-taught, fast learner)

signs-you-are-fast-learner

Như LapTrinh.IO đã đề cập ở trên, công nghệ phát triển khá nhanh, nếu một lập trình viên không có khả năng tự tìm tòi, tự phát triển thì người đó sẽ bị tụt hậu và bị rớt lại so với công nghệ.

Sẽ không có ai dạy bạn, hướng dẫn bạn tốt hơn là chính bản thân bạn, một lập trình viên tốt là người có khả năng tự nâng cao kĩ năng của mình, biết phát triển bản thân cho dù ở bất cứ tình huống nào đi nữa. Khi có công nghệ mới nằm trong ngành của bạn, hãy lập tức tìm hiểu và học ngay để áp dụng. Đi tắt đón đầu sẽ luôn là một lợi thế với bất cứ ai.

Không chỉ vậy, việc phát triển kĩ năng thật nhanh là một yếu tố cần thiết, nếu bạn học quá chậm thì không thể nào đi kịp với xu thế thế giới được. Không mấy lập trình nào có khả năng học nhanh ngay từ đầu, ngoại trừ những người thông minh thì không kể đến, vì thế, việc rèn luyện kĩ năng trong việc học và phát triển kĩ năng bản thân là cần thiết. Thời gian không bao giờ quay trở lại, nên hãy tận dụng thời gian đẻ học công nghệ mới là điều thiết yếu.

3. Làm việc theo mô hình Agile, quản lý việc theo Story (Agile Development)

agile

Một sản phẩm làm ra sẽ không thành công ngay từ đầu, mà cần một quá trình dài để thay đổi và cập nhật liên tục để tạo ra một thứ mà người sử dụng ưa thích. Tốc độ là quan trọng, giảm tối đa các việc thừa thãi không cần thiết để tạo ra sản phẩm một cách nhanh chóng là một điều khá quan trọng. Chính vì vậy mà mô hình agile đang được áp dụng và triển khai khá rộng rãi hiện nay. Điển hình là ở các Startups hay các doanh nghiệp làm outsource vừa và nhỏ (agency, studio).

Một trong những mô hình phổ biến nhất đó là Scrum, với việc phát triển sản phẩm một cách xoay vòng trên các giai đoạn ngắn tuỳ theo tốc độ của mỗi nhóm. Ví dụ, mỗi vòng là 1 tuần và đưa ra 2 tính năng (features)… Và để theo dõi và đánh giá hiệu quả công việc, các công cụ dành cho quản lý mô hình agile ra đời khá là nhiều, trong đó đáng kể tới là JIRA, Trello, Slack, TeamWork, Basecamp… Do đó, các lập trình viên hiện nay yêu cầu phải làm quen với mô hình agile và các công cụ này; tuỳ vào mỗi công ty sẽ sử dụng các bộ công cụ khác nhau, nhưng về cơ bản và nguyên tắc chung là đảm bảo sự phát triển các tính năng sản phẩm là nhanh và hiệu quả.

4. Trình bày và giao tiếp (Presentation and Communication)

team-room-practice

Đã làm ra được một tính năng, sản phẩm, code được thì lập trình viên phải trình bày và giải thích được cho người khác hiểu. Thật là buồn cười khi chính những dòng code cho sản phẩm của bạn viết ra mà chính bạn không thể giải thích được cho người khác. Bạn làm được thì bạn phải trình bày được, điều đó chứng tỏ bạn là người hiểu về sản phẩm. Không còn cách nào rõ ràng hơn là trình bày trực tiếp và nói chuyển để người khác, nếu bạn chưa đảm bảo được điều này, vậy hãy tập đi, nếu không sẽ xảy ra những tình huống đáng tiếc mà lẽ ra không nên có. Hãy luôn đảm bảo mọi người xung quanh đã và đang hiểu những gì bạn đang làm.

Việc này thực chất cũng không hề khó chút nào, mỗi ngày dành ra một chút thời gian trao đổi công việc với đồng nghiệp, cố gắng diễn đạt thật rõ ràng, dùng các từ ngữ quen thuộc để tiếp cận người khác. Có khá nhiều cách diễn đạt, trình bày, hãy chọn phương pháp mà bạn cảm thấy là phù hợp với bạn nhất, miễn là đảm bảo được người nghe hiểu bạn đang nói gì và làm gì.

Ngoài bốn kĩ năng mà LapTrinh.IO kể ra ở trên thì còn một số nữa mà các bạn lập trình viên Việt Nam cũng cần phải cải thiện, ví dụ như:

  • Khả năng giải quyết vấn đề (Problem Solving)
  • Làm việc hiệu quả theo nhóm  (Teamwork Eagerness)
  • Hiểu về sản phẩm (Business-domain Approach)
  • Tự động hoá quy trình phát triển sản phẩm và liên tục (Automation and Continuous Integration and Deployment)
  • ….

Tất nhiên là các bạn có thể đồng ý hoặc không đồng ý với LapTrinh.IO về các điều trên, mỗi lập trình viên có khả năng và thói quen riêng; và sẽ tốt hơn là chính bản thân các lập trình viên có thể tự tìm ra lối đi và phát triển cho chính bản thận.

Bài viết tuy có mang một vài quan điểm cá nhân riêng của LapTrinh.IO, nhưng có một phần nào đó đánh trúng được tâm lý và tình trạng thực tại của các lập trình viên Việt Nam bây giờ. Hy vọng bài viết này có thể thổi lại được sức sống mới cho nhiều bạn lập trình viên Việt Nam.

Theo Laptrinh.IO

Advertisements

Posted on March 6, 2015, in Tin học and tagged . Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: