Suy ngẫm về kỹ thuật và nghiệp vụ sau năm năm làm việc
Lời giới thiệu: Đây là một bài viết tôi đọc cách đây hai năm và đã gây cho tôi ấn tượng khá sâu sắc. Quả thật cần học cách thích ứng với thay đổi và tích lũy năng lực. Tích lũy năng lực giải quyết vấn đề, tối ưu cách tư duy, mở rộng nhận thức.
Địa chỉ bài gốc: https://mp.weixin.qq.com/s/CTbEdi0F4-qFoJT05kNlXA
Biển khổ vô bờ, ngoảnh đầu không bến.
01 Mở đầu
Lững thững làm việc trong ngành Internet đã năm năm, lặng lẽ ngoảnh lại, bạn thấy nơi nào giống chốn đèn hoa hiu hắt?
Khi mới bước vào nghề, phần lớn lập trình viên sẽ nghĩ rằng chỉ cần khổ công học kỹ thuật thì sau này sẽ thuận lợi thăng chức tăng lương. Suy nghĩ này không sai, nhưng chưa đầy đủ; sau năm năm, bạn có tiếp tục làm kỹ thuật và viết code hay không mới là vấn đề cốt lõi.
Khi mới bước vào nghề, bạn sẽ nghĩ rằng làm thêm giờ chăm chỉ có thể không ngừng nâng cao năng lực, công ty có thể học được kỹ thuật thì dù lương thấp hơn một chút cũng chấp nhận được. Nhưng sau năm năm, bạn sẽ cho rằng làm thêm giờ chỉ không ngừng chèn ép không gian thăng tiến của mình, còn lương thấp chính là trần của cuộc đời.
Điểm mấu chốt ở đây là: nhận thức và suy nghĩ khi mới bước vào nghề phần lớn sẽ không còn phù hợp với nhận thức sau năm năm.
Áp lực lớn nhất sau năm năm làm việc chính là lựa chọn: trần sự nghiệp, trần năng lực kỹ thuật, trần lương, trần tuổi 30.
Cách đối mặt với những vấn đề này là điều phần lớn lập trình viên đều đang suy nghĩ và phân vân. Điểm tham khảo duy nhất khi lựa chọn là: tối đa hóa lợi ích, ở đây có thể hiểu là thăng chức tăng lương tốt hơn trong sự nghiệp, mọi việc thuận lợi.
Sau năm năm, thứ thay đổi lớn nhất không phải kinh nghiệm làm việc hay tích lũy năng lực, mà là tâm thế: hiểu rõ rằng giữa hiện thực và lý tưởng tồn tại một khoảng cách rất lớn.
02 Học cách thích ứng với thay đổi và tích lũy năng lực
Ngoảnh lại năm năm sự nghiệp của mình, câu nói tôi tâm đắc nhất là: học cách thích ứng với thay đổi và tích lũy năng lực.
Những thứ thay đổi là: framework kỹ thuật được cập nhật và lặp lại trong năm năm, công cụ phát triển thay đổi, môi trường công ty và đồng đội thay đổi, thậm chí phải phiêu bạt giữa những thành phố khác nhau. Ai cũng mong có thể đặt thân xác và tâm hồn vào cùng một chỗ. Có một câu nói rất kinh điển: thứ duy nhất không thay đổi chính là sự thay đổi.
Những thứ cần tích lũy là: năng lực giải quyết vấn đề, cách tư duy, mở rộng nhận thức.
Đây là những điều rất khó mô tả trực tiếp, thuộc phạm vi nhận thức cá nhân. Mỗi người có cách nhìn khác nhau, vì vậy chỉ có thể suy nghĩ từ góc độ phổ biến.
Trước hết hãy nói về kỹ thuật. Phần lớn người mới đều mong năng lực kỹ thuật của mình không ngừng nâng cao, cố gắng đạt đến cấp độ kiến trúc sư, nhưng xét trong môi trường Internet hiện nay, việc thực hiện ý tưởng này vẫn khá khó khăn. Điều này không nhằm đả kích hay cố tình tranh luận.
Bạn có thể quan sát thực tế: một đội kỹ thuật lớn có 20-30 người, đội nhỏ có 10-15 người, nhưng có một kiến trúc sư chuyên quản lý framework tầng dưới vẫn là chuyện hiếm.
Nguyên nhân của vấn đề này rất nhiều. Trước hết, chi phí của kiến trúc sư quá cao; kiến trúc hệ thống cũng không cần thường xuyên nâng cấp, nói thẳng ra thì framework có thể còn tồn tại lâu hơn vòng đời dự án.
Vì vậy, phần lớn nghiệp vụ của phần lớn công ty đều có thể được giải quyết dựa trên các framework open source trưởng thành hiện có. Điều này khiến vai trò kiến trúc sư thường do người phụ trách dự án thay thế, hoặc do developer có cấp bậc cao hơn trực tiếp đảm nhiệm. Đây là thực tế.
Điều này dẫn đến cách lựa chọn framework kỹ thuật là: chỉ chọn thứ phù hợp. Nghĩa là lĩnh vực đó có nhiều nhân lực, có nhiều giải pháp open source, từ đó giảm ảnh hưởng của kỹ thuật đối với sự phát triển nghiệp vụ của công ty.
Vậy tại sao vẫn phải không ngừng học tập và tích lũy năng lực kỹ thuật? Nếu không có năng lực này, vị trí lập trình viên có thể chẳng thể đi được đến năm năm. Cần dùng chiều sâu kỹ thuật tích lũy để không ngừng giải quyết các vấn đề trong công việc, dùng chiều rộng kỹ thuật để nâng cao ranh giới nhận thức khi thực hiện yêu cầu nghiệp vụ. Đây là nền tảng căn bản để có chỗ đứng.
Đây là nguyên nhân khiến áp lực của nhiều lập trình viên sau năm năm đột nhiên tăng cao. Một rào cản khác khi chuyển sang vị trí quản lý là tư duy và nhận thức nghiệp vụ.
03 Tích lũy và nâng cao năng lực nghiệp vụ
Lập trình viên có nên dành tâm sức nghiên cứu nghiệp vụ hay không? Vấn đề này thực sự không cần phải phân vân: chỉ cần không phải công ty thuần kỹ thuật thì đều phải đối mặt với nghiệp vụ.
Bất kể là kỹ thuật, vận hành, sản phẩm hay quản lý, tất cả đều làm việc hướng đến nghiệp vụ.
Nhìn lại quỹ đạo sự nghiệp của mình, thay đổi lớn nhất sau năm năm là năng lực giải quyết vấn đề nghiệp vụ. Khi mới vào nghề, trước nhiều bối cảnh nghiệp vụ tôi không biết bắt đầu từ đâu; vài năm sau, tôi đã có thể thiết kế giải pháp cho nghiệp vụ.
Đây là nguyên nhân cốt lõi khiến phần lớn lập trình viên có thể tăng lương khi chuyển việc trong năm năm đầu sự nghiệp: trước các bối cảnh nghiệp vụ, dựa trên kinh nghiệm tích lũy và công cụ open source hiện có, họ có thể nhanh chóng đưa ra hướng giải quyết hợp lý và quá trình triển khai.
Có thể sau năm năm làm việc, mức độ hiểu rõ tầng dưới của kỹ thuật còn không bằng một người mới vào nghề, nhưng chương trình viết ra lại có thể tránh được nhiều cạm bẫy, còn việc xem xét nghiệp vụ cũng chi tiết và toàn diện hơn.
Việc tích lũy năng lực giải quyết nghiệp vụ đòi hỏi chiều rộng tầm nhìn kỹ thuật còn cao hơn. Chẳng hạn, thời gian đầu sự nghiệp bạn bất lực trước việc xử lý lượng dữ liệu khổng lồ, nhưng sau vài năm làm việc, khi đã biết đến technology stack của ngành dữ liệu, bạn sẽ thấy đó thực sự là vấn đề về tầm nhìn trong lựa chọn kỹ thuật.
Tiêu chuẩn đo lường năng lực kỹ thuật là gì? Xét từ góc độ đồng thuận: kiến trúc hệ thống và thiết kế code có thể thích ứng với những thay đổi không ngừng và các loại yêu cầu của nghiệp vụ.
So với kỹ thuật, nghiệp vụ thay đổi nhanh và thường xuyên hơn. Sở dĩ senior engineer hoặc kiến trúc sư có mức lương cao là vì một mặt, các vai trò này có thể thích ứng với việc lặp lại của nghiệp vụ; mặt khác, họ có tính đi trước nhất định trong công việc, sẽ cân nhắc logic tái sử dụng code khi nghiệp vụ thay đổi. Năng lực này cần sự lắng đọng của tầm nhìn kỹ thuật và tư duy nghiệp vụ.
Vì vậy trong sự nghiệp: nếu có thể trình bày nghiệp vụ rõ ràng, viết code mạch lạc, khả năng nhận được cơ hội sẽ lớn hơn.
04 Cân bằng và lựa chọn kỹ thuật, nghiệp vụ ở các giai đoạn khác nhau
Nhìn nhận hai phương diện kỹ thuật và nghiệp vụ một cách lý tính có thể giúp phần lớn mọi người phát triển sự nghiệp ổn định và thuận lợi, nhưng ở các giai đoạn khác nhau, sự cân bằng và lựa chọn giữa hai bên cũng khác nhau.
Khi suy nghĩ về cách lựa chọn, bạn có thể tham khảo logic của nguyên tắc 80/20: trong bất kỳ nhóm sự vật nào, phần quan trọng nhất chỉ chiếm một phần nhỏ, khoảng 20%; 80% còn lại tuy chiếm đa số nhưng chỉ là thứ yếu, vì vậy còn được gọi là định luật 80/20.
Cá nhân tôi thực sự rất thích nguyên tắc này. Phần lớn mọi người không phải thiên tài, nên rất khó vừa làm việc này vừa làm việc kia mà đều làm tốt. Trong cùng một khoảng thời gian, nên tập trung sức lực để làm tốt một việc.
Tuy nhiên, mô hình nguyên tắc 80/20 đơn thuần có thể không phù hợp với phần lớn người mới bước vào nghề, vì giai đoạn đầu phải học rất nhiều nội dung. Muốn tồn tại trong sự nghiệp cần có năng lực chuyên môn, quan hệ nơi làm việc, cách đối nhân xử thế, thiết kế sản phẩm và nhiều thứ khác.
Tất nhiên không phải học tập có chủ đích tất cả những điều này, nhưng sắp xếp hợp lý theo nguyên tắc 2-2-6 hoặc tổ hợp khác sẽ sáng suốt hơn. Trước hết cần tập trung rèn luyện năng lực chuyên môn, sau đó có thể dựa trên sở thích của mình để lựa chọn hợp lý một hoặc hai lĩnh vực và tìm hiểu dần, chẳng hạn như sản phẩm, vận hành, vận hành hệ thống, dữ liệu. Dù sao sau ba đến năm năm có tiếp tục viết code hay không vẫn khó nói, cho bản thân thêm một cơ hội luôn là cách phòng ngừa rủi ro.
Ở giai đoạn đầu sự nghiệp, về cơ bản mọi người đều suy nghĩ vấn đề từ góc độ kỹ thuật: làm thế nào nhanh chóng nâng cao năng lực coding, làm thế nào ổn định trong công ty là mục tiêu hàng đầu. Vì vậy phần lớn thời gian được dành cho việc coding cơ bản và học quy chuẩn; lúc này có thể 90% tâm sức đặt vào coding cơ bản, 10% còn lại dùng để học về kiến trúc hệ thống.
Nhiều nhất sau một đến hai năm, bạn sẽ bắt đầu độc lập phụ trách phát triển yêu cầu của một module và phải tự thiết kế toàn bộ hướng đi của code. Lúc này nghiệp vụ sẽ lọt vào tầm nhìn, bạn cần hiểu mối liên hệ giữa các khâu trước và sau của nghiệp vụ, học cách suy nghĩ về việc thiết kế cấu trúc code, để khi yêu cầu thay đổi thì code phải sửa ít hơn. Khi đó có thể dành 20% tâm sức cho nghiệp vụ và 30% để học cách xây dựng kiến trúc.
Giai đoạn từ ba đến năm năm là lúc năng lực giải quyết vấn đề được nâng cao nhanh nhất, vì lập trình viên ở giai đoạn này về cơ bản đều đang phát triển các luồng nghiệp vụ cốt lõi, chẳng hạn như giao dịch, thanh toán, quyết toán, thương mại thông minh và các module khác. Cần có năng lực nắm bắt tương đối rõ toàn bộ nghiệp vụ, nếu không sẽ tự đào hố cho mình. Ở giai đoạn này, cần dành rất nhiều tâm sức để suy nghĩ về luồng nghiệp vụ.
Luồng nghiệp vụ càng cốt lõi thì càng dễ bùng phát đủ loại vấn đề. Nếu trong công việc hằng ngày không dành tâm sức xử lý các vấn đề chi tiết, những tin nhắn và email cảnh báo tự động lúc nửa đêm luôn dễ khiến người ta tiều tụy.
Vì vậy, nỗ lực học kỹ thuật là để nâng cao bản thân, còn trau dồi nhận thức nghiệp vụ cũng quan trọng không kém. Theo tôi, trọng lượng của hai điều này ngang nhau, chỉ là cần phân chia tỷ trọng hợp lý ở từng giai đoạn phù hợp.
05 Học cách lựa chọn và tồn tại trong sự nghiệp
Dựa trên năng lực kỹ thuật và tư duy nghiệp vụ, học cách lựa chọn và tồn tại trong sự nghiệp là cảm nhận lớn nhất của tôi sau năm năm đầu tiên đi làm.
Bất kể là kỹ thuật hay nghiệp vụ, hai khái niệm này vẫn là những đề tài rất lớn và không dễ nắm bắt, vì vậy học cách làm rõ các module chung trong hai nhóm năng lực này là điều then chốt.
Bất kể kỹ thuật hay nghiệp vụ, không thể sao chép hoàn toàn từ công ty này sang công ty khác. Tuy nhiên, có thể học framework kỹ thuật và giải pháp nghiệp vụ của một công ty rồi mang sang công ty khác. Chẳng hạn, trong lĩnh vực kỹ thuật là kiến trúc, thiết kế, quy trình, quản lý dữ liệu; trong lĩnh vực nghiệp vụ là cách tư duy, logic sản phẩm, phân tích và những thứ khác. Đây là các năng lực cốt lõi, đồng thời cũng là yêu cầu tuyển dụng nhân sự của phần lớn công ty, vì vậy đây mới là những thứ cần tập trung tích lũy trong công việc.
Tinh lực của con người là hữu hạn, hơn nữa khi đối mặt với trần tuổi 30, đủ loại việc cũng sẽ liên tiếp xảy đến. Trong sự nghiệp, học cách sắp xếp thời gian hợp lý và không ngừng nâng cao năng lực cốt lõi mới có thể bảo đảm sức cạnh tranh của bản thân.
Sự nghiệp giống như biển khổ vô bờ. Ngoảnh lại nhìn, có thể cũng chẳng có bờ để neo đậu, nhưng chỉ cần có năng lực đổi thuyền hoặc có một chiếc bè nhỏ thì cũng gần như đủ rồi.
Lời cuối
Nếu nội dung hữu ích với bạn, hãy tiện tay tặng JavaGuide một Star miễn phí để ủng hộ: GitHub | Gitee.
JavaGuide đã được duy trì gần bảy năm, tích lũy 6100+ commit, với sự chung tay hoàn thiện của 620+ contributor. Star, phản hồi và PR của bạn đều là động lực để dự án tiếp tục cập nhật.
Nếu bạn đang chuẩn bị phỏng vấn backend / phát triển ứng dụng AI, có thể tham khảo Knowledge Planet của tôi, bao gồm các project thực tế về backend và AI, tối ưu CV, hỏi đáp 1-1 và tài liệu về các trọng điểm thường gặp, đã được duy trì liên tục sáu năm.
