Từ coder đến developer – Tôi đi code dạo

Kì trước, mình đã chia sẻ về cái gọi là căn bản và tư duy lập trình, cùng với tầm quan trọng của việc tư duy trong ngành lập trình. Mình cũng có khuyên là rèn luyện tư duy lập trình cũng giống như tập tạ, muốn giỏi thì phải chịu khó rèn luyện thường xuyên. Nhiều bạn mới hỏi mình: Ủa vậy rèn luyện tư duy lập trình như thế nào hả anh?

Vì vậy, trong bài này mình sẽ chia sẻ về 4 phương pháp rèn luyện tư duy lập trình mà mình thấy hiệu quả nhé!

1. Học kĩ và nắm vững căn bản trước

Khi mới học code, những kiến thức căn bản như: hàm, biến, mảng, vòng lặp là những thứ nền tảng của tư duy lập trình. Bạn phải hiểu cách biến, mảng lưu giữ giá trị, cách tách hàm ra sao thì mới có thể áp dụng chúng vào giải quyết vấn đề.

Học sâu hơn, sau một thời gian, bạn sẽ biết có những thuật toán, cấu trúc dữ liệu khác ngoài mảng. Mỗi cấu trúc dữ liệu sẽ có ưu điểm nhược điểm riêng, nhưng bạn phải hiểu rõ chúng thì mới biết cách tư duy, áp dụng vào bài toán.

Giả sử, bài toán yêu cầu lưu trữ danh sách 1 triệu sinh viên, tra cứu sinh viên theo mã số sao cho nhanh nhất:

  • Nếu chỉ biết về mảng, bạn sẽ lưu toàn bộ 1 triệu sv này vào 1 mảng, sau đó loop để tìm từng sinh viên.
  • Nếu nắm vững về cấu trúc dữ liệu, bạn sẽ biết cấu trúc HashMap/Hashtable rất phù hợp để lưu trữ, lấy dữ liệu theo dạng key-value, tra cứu rất nhanh với độ phức tạp O(1)

Cấu trúc dữ liệu HashTable thường dùng để lưu trữ dữ liệu dạng Key-Value, rất tiện tra cứu

Về sau, khi học những thứ khó hơn, cao siêu hơn như thư viện/framework cũng vậy; chỉ cần bạn nắm vững căn bản của chúng thì sẽ dễ học, dễ áp dụng hơn nhiều.

2. Làm bài tập về thuật toán

Để có tư duy tốt, phải nắm vững cơ bản. Nhưng làm sao để nắm vững chúng bây giờ??

Bật mí nhỏ nè, dù bạn có học kĩ lý thuyết tới mấy, chúng cũng chỉ là … lý thuyết thôi! Để nắm vững kiến thức lập trình, thuật toán, bạn phải chịu khó .. làm bài tập để áp dụng chúng.

Ví dụ như một bài toán mà Google hay hỏi: Làm sao để cân bằng một cây nhị phân (binary tree). Bài toán này sẽ có nhiều cách giải:

  • Có cách giải đơn giản nhưng không optimize
  • Có cách giải gọn nhưng khó hiểu
  • Có cách độ phức tạp cao nhưng không cần memory
  • Có cách chạy nhanh nhưng tốn memory

Khi giải những bài tập này, bạn sẽ học được cách áp dụng những cấu trúc dữ liệu vào thực tế, cách viết code cho chúng chạy ra sao.

Nguồn học thì trên mạng có cũng nhiều, mình chỉ giới thiệu một số sách/web hay nên học:

  • Sách Cracking the Coding Interview
  • Sách Algorithm 4th Edition
  • Các trang thi thố, giải bài tập code: Hackerank, Code Fight…

Cracking the Coding Interview có những câu hỏi rất hay về giải thuật

3. Làm sản phẩm để có tư duy sản phẩm

Việc giải bài tập sẽ rèn cho bạn cách tư duy, cách giải quyết những vấn đề nhỏ. Tuy nhiên, khi đi làm thực tế, các dự án phần mềm đa phần là những vấn đề … to to, do nhiều vấn đề nhỏ ghép lại.

Vì thế, bên cạnh tư duy thuật toán, tư duy sản phẩm cũng rất quan trọng. Nó sẽ giúp bạn phát hiện được sản phẩm cần những tính năng gì, khi dự án bự lên thì code như thế nào cho không bị rối, dễ bảo trì.

Do vậy, sau khi làm toán nhiều, các bạn có thể làm một số pet project nhỏ để luyện kĩ năng sản phẩm. Bạn sẽ vô cùng ngạc nhiên trước những thứ mình có thể học được như:

  • Cách nghĩ requirement cho sản phẩm
  • Cách thiết kế flow, UI/UX cho tốt
  • Cách tổ chức code trong một project
  • Hiểu sâu hơn về ngôn ngữ lập trình, về những công nghệ mình sử dụng

Nếu bạn đã đi làm, đừng nghĩ là mình đã làm dự án thực tế rồi, cần gì phải làm pet project nhé!

Đa phần các dự án thực tế đã có cấu trúc sẵn, có qui trình rõ ràng, có design làm hết, công việc của chúng ta chỉ có implement là nhiều. Tự làm một dự án từ đầu, bạn sẽ học được nhiều điều hơn đấy!

Nếu các bạn mới học, muốn làm dự án nhưng chưa có ý tưởng thì có thể tham khảo bài Những project nhỏ bạn có thể dùng để luyện tập nha.

Làm dự án sẽ giúp bạn nâng cao khả năng tư duy sản phẩm đấy!

4. Học rộng hơn, học những thứ mình chưa biết

Một trong những cách hiệu quả để rèn luyện tư duy lập trình, đó là học hỏi cách người khác tư duy; học những thứ khác hoàn toàn với những thứ mình hay dùng để học cách tư duy mới:

  • Trước giờ bạn làm việc với những ngôn ngữ static typing như Java, C#, cảm thấy phải khai báo đủ thứ method, class rất mệt mỏi? Hãy thử những ngôn ngữ dymanic typing như Python, JavaScript sida để xem code có thể viết ngắn gọn ra sao. (Các bạn Python cũng nên thử Java, C++ xem).
  • Hoặc trước giờ các bạn code dùng OOP, tạo class và hàm, kế thừa v…v. Hãy thử dùng Scala, Haskell hoặc JavaScript, code theo phong cách Functional Programming, sử dụng function thay vì class xem sao!
  • Không chỉ gói gọn trong ngôn ngữ, bạn làm back-end có thể thử học front-end để chửi thề với CSS, JavaScript; bạn là front-end có thể học back-end để nhức đầu với server configuration, với SQL.

Học một thứ mới, bạn sẽ có cái nhìn rộng hơn, tổng quát hơn về ngành mình; đồng thời mở rộng đầu óc, nâng cao khả năng tư duy của bạn.

Nói nhỏ nhé, nếu muốn làm full-stack developer thì cũng phải nắm đủ thứ hết ấy: từ front-end, back-end, security, database, DevOps đủ cả!

Mang danh full-stack là **cái gì cũng phải chơi được hết**, không phải ngại!

Kết

Trong bài này, mình đã chia sẻ về 4 phương pháp khá hiệu quả mà mình hay dùng để nâng cao khả năng tư duy lập trình.

Nếu các bạn có kinh nghiệm, phương pháp nào mà mình cảm thấy hiệu quả thì cứ comment phía dưới nha!

P/S: Bạn nào thích ngắm khuôn mặt cute của mình, mình có vlog đấy. Các bạn nhớ subscribe tại: bit.ly/codedaotube nha

FEATURED TOPIC