Mình biết, mình biết, cả bạn và mình đều yêu công nghệ, mình biết rằng title của bài có thể sẽ làm bạn cảm thấy khó chịu. Nhưng có một điều thế này, mình ở đây để nói cho bạn biết những sự thật mà bạn cần biết, lần này, sự thật là có rất nhiều kiến thức, kỹ năng quan trọng hơn đống công nghệ kia. Quan trọng hơn rất nhiều.

Công nghệ, ngôn ngữ đến rồi đi, không sao mà lường hết được. Một công nghệ năm ngoái còn được săn đón nhưng năm nay đã bốc hơi là chuyện hết sức bình thường. Mà cũng chẳng cần nói đến công nghệ bốc hơi, một gã developer hôm nay còn ung dung code Android ngày mai phải chuyển sang code IOS cũng chẳng có gì là lạ, đơn giản là công ty họ yêu cầu như thế. Mình nói như thế để bạn thấy rằng, bên cạnh việc học hỏi những công nghệ mới hoặc học lung tung hết cái này đến cái kia, developer chúng ta nên rèn luyện những kỹ năng “đường dài”, những kỹ năng giúp chúng ta phát triển bất kể thời thế có thay đổi ra sao.

1. How to structure code

Khi nói đến structure code, mình đang nói đến toàn bộ những kỹ năng, kỹ thuật giúp cho code của bạn trở nên rõ ràng hơn, cấu trúc tốt hơn, dễ thay đổi, mở rộng hơn… Chung quy lại là trở nên nghệ thuật hơn.

Nhưng code thì cứ code thôi chứ cần gì dễ hiểu với cả nghệ thuật? Không phải như thế, thực tế không bao giờ dễ dàng, đơn giản như những ví dụ trong sách, khóa học.

Những dự án phần mềm trong thực tế thường lằng nhằng phức tạp với nhiều component kết hợp với nhau. Đặc biệt là theo thời gian, source code qua tay nhiều team lập trình khác nhau nên có thể trở nên rối rắm, cấu trúc lộn xộn, không có khả năng mở rộng… Bạn có nhiệm vụ cần ngăn cho những điều này không xảy ra, tất nhiên là bạn không ngăn được rồi, nhưng ít nhất là cần hạn chế chúng.

Có rất nhiều bậc tiền bối khuyên thế này. Khi code, hãy code làm sao cho một người không biết gì về code cũng có thể đọc và hiểu logic của code. Hãy code làm sao cho người đọc có cảm giác như đang đọc thơ.

Bạn có thể học một công nghệ mới hết sức nhanh chóng, nhưng để luyện được kỹ năng viết code có cấu trúc tốt thì không phải chuyện ngày một ngày hai. Có 2 quyển sách về chủ đề này mà bạn có thể tham khảo là Code Complete và Clean code.

2. How to read code

Có thể bạn không tin, nhưng đôi khi đọc code khó hơn viết code rất nhiều. Thời gian một developer dùng để đọc code thông thường cũng nhiều hơn thời gian họ dùng để viết code.

Để có thể phát triển, mở rộng tính năng, bạn cần phải đọc hiểu code cũ, code của mọi người trong team, thậm chí là code của chính bạn. Nếu may mắn, bạn sẽ được hỗ trợ bởi document, nhưng chẳng may gặp những dự án không có document đầy đủ thì bạn cần phải tự tìm hiểu logic thông qua code có sẵn. Lúc này bạn cần có khả năng đọc code để biết nên bắt đầu từ đâu, tập trung vào những phần nào…

Để có thể rèn luyện khả năng đọc code, thay vì học thêm Nodejs trong khi bạn đã biết ASP.NET thì bạn có thể lên Github tìm hiểu vài open source hay ho để đem về đọc dần, phân tích những điểm hay, chưa hay của code có sẵn. Một nhạc công giỏi cần dành nhiều giờ mỗi ngày để nghe người khác chơi nhạc, chúng ta cũng nên làm như vậy.

3. How to learn

Kỹ năng quan trọng nhất mà bạn cần học là làm sao để học hiệu quả. Một developer cần phải học đủ loại kiến thức mới mỗi ngày, dĩ nhiên là tự học rồi, bạn không thể đến trường đến lớp mãi được. Đây là một kỹ năng khó, nhưng một khi đã nắm được những kỹ thuật cơ bản về cách học thì bạn gần như có thể học bất cứ kiến thức, công nghệ mới nào mà bạn muốn. Vì vậy, thay vì học thêm React trong khi bạn đã biết Angular thì bạn nên tìm hiểu, rèn luyện, đúc kết cho bản thân cách học hiệu quả. Mình có viết một bài về cách mình học công nghệ ở đây, bạn có thể tham khảo thêm.

4. How to manage time

Thật ra thì không phải là quản lý thời gian, mình chưa nghĩ ra được cụm từ phù hợp hơn nên đành phải dùng chữ thời gian vậy. Mỗi chúng ta đều có 24h một ngày, 60 phút một giờ, thời gian thì cứ thế trôi, không ai có thể quản lý được thời gian cả. Cái chúng ta có thể quản lý là quản lý cách chúng ta sử dụng thời gian.

Cách bạn sử dụng thời gian sẽ tạo nên tương lai của bạn, ai đó đã nói thế. Nếu như bạn không biết cách sử dụng thời gian, bạn sẽ dễ dàng bỏ qua những điều quan trọng, tiêu tốn thời gian vào những việc vô bổ. Tại sao có những developer hoàn thành được rất nhiều dự án, học được rất nhiều thứ mới mẻ, kiếm được nhiều tiền mà vẫn có thời gian cho gia đình, giải trí? Đơn giản là họ biết cách lên kế hoạch, quản lý cách họ sử dụng thời gian. Mình đã viết một bài khá chi tiết về cách lên kế hoạch, nâng cao hiệu suất ở đây, bạn có thể đọc thêm để hiểu về cách quản lý việc sử dụng thời gian.

5. How to talk and write

Bạn đọc đúng rồi đấy. Cách nói và viết. Nói và viết làm sao để người khác có thể hiểu, chấp nhận những gì ta nói là một kỹ năng mà mọi developer cần rèn luyện.

Mình thấy rất nhiều bạn developer giỏi công nghệ, giỏi code nhưng không thể nói một câu tiếng việt đầy đủ, dễ hiểu. Điều này hết sức lạ lùng và nguy hiểm.

Lạ lùng ở chỗ tất cả chúng ta đều là những con linh trưởng mang trong bộ gen lối sống cộng đồng, có nghĩa là sống dựa vào nhau. Nhưng có nhiều developer bỏ qua kỹ năng giao tiếp, kỹ năng quan trọng nhất cho lối sống cộng đồng.

Nguy hiểm ở chỗ công việc của chúng ta đòi hỏi giao tiếp khá nhiều. Bạn cần phải giao tiếp, trao đổi với đồng đội trong team để tìm ra giải pháp cho những vấn đề khó khăn. Thuyết trình, trình bày ý tưởng của bản thân cho sếp, cho team. Thuyết phục mọi người tin vào ý tưởng, cách giải quyết, quyết định của bạn… Về viết, bạn cần viết comment code, viết đủ loại document khác nhau, viết report…

Hãy nhớ như thế này. Nếu bạn không muốn trở thành một con tốt trên bàn cờ, bạn cần biết cách chỉ huy, thuyết phục người khác. Nhưng trước hết là cần nói, viết đủ tốt để người khác có thể hiểu đã.

Kết

Nếu có thể, mình muốn bạn chọn một trong 5 kỹ năng mình nêu ở trên để rèn luyện. Bạn có thể đọc sách, mua khóa học, tìm người hướng dẫn…, bất cứ cách nào cũng được. Quan trọng nhất là cần phải làm một điều gì đó và hoàn thành nó.

Đó là tất cả những gì mình muốn nói với bạn hôm nay. Take care!