Thứ Năm, 28 tháng 12, 2017

Làm thế nào để trở thành lập trình viên giỏi?

Bạn đang học lập trình? Cho dù bạn đang học lập trình web hay lập trình ứng dụng hay bất kể bạn nhắm đến là công việc lập trình cụ thể gì. Điều cốt yếu vẫn là công việc, có thể là làm thuê hoặc tự làm. Tự làm thì dĩ nhiên phải giỏi, và làm thuê cũng vậy. Nhà tuyển dụng luôn cần một lập trình viên giỏi.

Vậy làm thế nào để trở thành lập trình viên giỏi?

Vậy làm thế nào để trở thành lập trình viên giỏi?


Để trả lời câu hỏi này thì phải đi vào vấn đề đầu tiên đó là "Học cái gì?"

1. Design pattern: 23 Patterns, OPP, SOLID...


Design patterns


Design patterns là các giải pháp đã được tối ưu hóa và được tái sử dụng cho các vấn đề lập trình mà chúng ta gặp phải hàng ngày. Nó là khuôn mẫu đã được tối ưu nhất mà các lập trình viên đi trước suy nghĩ và giải quyết trong tình huống cụ thể.

Các vấn đề bạn gặp phải có thể bạn tự nghĩ ra cách giải quyết (chưa tối ưu) nhưng vấn đề đó đã được giải quyết và tối ưu ở Design pattern.

Các bạn có thể google theo các Keyword để tìm hiểu rõ hơn.

2. Software Engineering: XP, Scrum, Lean, Kanban, Waterfall..


Software Engineering là một lĩnh vực kỹ thuật bao gồm tất cả các mặt của việc sản xuất phần mềm.

Mục tiêu:
  • Sử dụng chi phí hiệu quả
  • Đúng thời hạn
  • Chất lượng cao
  • Thỏa mãn nhu cầu người dùng
Biết, hiểu và giải quyết công việc theo qui trình Software Engineering là một lợi thế lớn bởi khi bạn đi làm, việc bạn cần làm là giải quyết yêu cầu của khách hàng, và sếp của bạn muốn tối thiểu chi phí, đúng deadline mà còn chất lượng tốt. Software Engineering là quy trình để hướng tới những mục tiêu đó.

3. Methods: TDD, BDD, Pair programming...


Đây là các phương thức phát triển phần mềm. Trong đó, Pair Programming là lập trình đôi, hai lập trình viên sẽ lập trình trên cùng 1 máy tính, cùng 1 bàn phím, sẽ đổi nhau mỗi nửa giờ một lần.

Kiểu lập trình đôi này được nghiên cứu và cho thấy trong ngắn hạn 2 người cùng lập trình trên 1 máy sẽ bổ sung những thiếu sót của người còn lại cũng như tăng tính trách nhiệm trong công việc.

TDD là phương thức phát triển phần mềm trong đó khi bắt đầu bạn đã phải viết Test theo yêu cầu từ phía Client.

Quy trình như sau:
  1. Viết 1 test cho hàm mới. Đảm bảo rằng test sẽ fail.
  2. Chuyển qua viết code sơ khai nhất cho hàm đó để test có thể pass.
  3. Tối ưu hóa đoạn code của hàm vừa viết sao cho đảm bảo test vẫn pass và tối ưu nhất cho việc lập trình kế tiếp
  4. Lặp lại cho các hàm khác từ bước 1
Đây là phương thức để giải quyết vấn đề viết test sau khi viết code có thể bị ảnh hưởng bởi lối tư duy viết test để code pass.

TDD thì ngược lại, nó hướng đến giải quyết vấn đề đúng với yêu cầu, do đó bạn sẽ phải viết code để pass test.

Mục tiêu quan trọng nhất của TDD là hãy nghĩ về thiết kế của bạn trước khi viết mã nguồn cho chức năng. Do đó các nhà tuyển dụng thường thích những lập trình viên biết TDD.
BDD là một sự mở rộng của TDD.

4. Tools: UML, Source control, SonarQue...

Đây là những công cụ bạn sử dụng trong quá trình phát triển phần mềm. Sử dụng thành thạo nó sẽ giúp bạn quản lý code tốt hơn và làm việc nhóm tốt hơn.

5. Technology: ACP, Microservice, React, Cloud, NoSQL....


Đây là những công nghệ bạn cần nắm giữ, tất nhiên là không cần biết tất cả mới xin được việc. Nhưng công nghệ thay đổi rất nhanh, có thể bạn sẽ phải học dài dài.

6. Language: NodeJS, Python, Scala, R, Gem...

Nắm giữ ngôn ngữ lập trình mới chỉ là một phần nhỏ. Để trở thành một lập trình viên giỏi và có công việc tốt bạn cần học hỏi thêm nhiều thứ.

Hiện tại NodeJS đang được đánh giá rất cao.

Python thì thích hợp với AI, Machine Learning không phải vì nó tốt hơn hay tốt nhất, đơn giản là những thuật ngữ AI hay Machine Learning là thuật ngữ mới xuất hiện và Python là ngôn ngữ rất trong sáng, nó khá dễ dàng để có thể cho các bạn mới bắt đầu nghiên cứu về AI, Machine Learning.

Nếu để xin được việc thì bạn cần phải nắm giữ 6 phần trên và mỗi phần ít nhất 2 loại. Như vậy thì mức lương của bạn mới khá được.

3 phần đầu tiên là rất khó để thay đổi, do đó chỉ cần học một lần thì sử dụng rất lâu. Những phần sau thì có thể thay đổi ngay trong hôm nay. Nhưng bạn đừng sợ, việc học cái mới đối với lập trình viên là bắt buộc, không phải bàn cãi và bạn không phải là người duy nhất phải học. Vì vậy hãy cứ sẵn sàng.

Vậy thì học như thế nào?

Theo kinh nghiệm cá nhân, tôi khuyên bạn nên chuẩn bị khả năng tiếng anh tốt. Sau đó hãy bắt đầu với một ngôn ngữ tốt nhất theo mục đích của bạn. Sau đó hãy ghé thăm trang web này: codekata.com

CodeKata

CodeKata

CodeKata là những bài tập dành cho các lập trình viên cải thiện kỹ năng của mình bằng cách thực hành và tìm ra giải pháp tốt hơn cho các vấn đề khác nhau.

CodeKata dựa trên nguyên lý của võ thuật. Các võ sư cấp cao thường dành hầu hết thời gian để tập luyện những bài tập cơ bản. Nền móng của ho rất vững chắc do đó các kỹ thuật cấp cao hầu như chỉ biểu diễn và nhiều khi không cần vì đòn cơ bản đã rất uy lực.

Giống như Lý Tiểu Long đã từng nói “Tôi không sợ người luyện tập 10.000 cú đá chỉ một lần mà chỉ sợ người thực hành 1 cú đá 10.000 lần”

Sau đó bạn có thể lên những trang Codewar, Codefights để luyện tập với người khác.

Điều quan trọng nhất trong lập trình đó là luyện tập và phải đúng với tinh thần luyện tập, luyện tập hàng ngày, hàng tuần, ... 

Chúc bạn thành công!

Share:

0 nhận xét:

Đăng nhận xét

Fanpage

Tổng số lượt xem trang