Nếu câu trả lời là “có” hoặc “không, tôi đi chỗ khác” thì bạn sẽ khó có thể vươn đến những vị trí senior developer/engineer đáng mơ ước nhất.
Khi làm việc tại nước ngoài cách đây vài năm, tôi có chơi thân với một senior Java developer bên phía khách hàng. Sau khi dự án kết thúc, chúng tôi vẫn giữ liên lạc, có lúc chỉ là comment nhảm trên face, có lúc lại cùng nhau “chém” những chủ đề stackoverflow thú vị được share trên timeline.
Hai năm trước, tôi nghe tin công ty phía bạn vì nhiều lý do nên quyết định sẽ không sử dụng ngôn ngữ Java nữa mà chuyển sang .NET. Năm nay, khi lại có dịp đi công tác và tới thăm các bạn, tôi thấy mọi người tán tụng anh bạn senior Java dev kia là “best developer” của cả công ty. Vẫn biết C# .NET và Java có nhiều điểm tương đồng, nhưng khi biết tin bạn tôi bất chấp một sự thay đổi lớn như vậy mà vẫn có thể giữ vững được vị trí tại một công ty lớn, thậm chí lại còn được mọi người khâm phục nhiều hơn trước, tôi quả thật là có chút bất ngờ.
Nếu tôi ở trong tình thế như vậy, có lẽ tôi sẽ “nhảy việc” mà không chút đắn đo. Xét cho cùng thì Java vẫn là một trong những ngôn ngữ phổ biến nhất thế giới.
Tôi cố gắng suy nghĩ tìm lý do. Và đây là 5 lý tại sao bạn tôi không nhảy việc mà vẫn có thể trở thành “best developer” sau khi nhận cú sốc rằng công ty của mình sẽ không sử dụng ngôn ngữ mình đã theo đuổi gần cả thập kỷ.
Lý do đầu tiên: phần mềm có thể là lĩnh vực “hot” nhất thế giới, nhưng những người làm IT luôn cần phải hiểu rằng phần mềm chỉ là một công cụ phục vụ cho các lĩnh vực khác. Khi làm việc trong bộ phận internal IT như bạn tôi, muốn vươn lên những vị trí cao trong đội ngũ phát triển phần mềm, kỹ sư phần mềm bắt buộc phải hiểu sâu về domain (lĩnh vực) của công ty. Công ty đối tác của tôi hoạt động trong lĩnh vực điện lực, là một lĩnh vực cực kỳ khó và có nhiều kiến thức chuyên ngành.
Với kinh nghiệm gắn bó 10 năm, bạn tôi đã có một khối lượng kiến thức kha khá về ngành điện. Nếu tôi là “sếp” của bạn, tôi sẽ hiểu rõ ràng rằng đào tạo một .NET developer thành một kỹ sư phần mềm có hiểu biết domain sâu rộng như bạn sẽ là một nhiệm vụ cực kỳ khó khăn. Bạn tôi hiểu rằng từ phía công ty, cho bạn một cơ hội tìm hiểu (và master) .NET vẫn sẽ là giải pháp tốt nhất.
Lý do thứ hai: những mối quan hệ. Làm phần mềm/IT mà bạn không thể có mối quan hệ tốt với user của bạn thì chắc chắn bạn là một developer/kỹ sư thất bại! Những mối quan hệ này ảnh hưởng rất lớn đến tiến độ công việc, đến mức độ hữu ích và tần suất sử dụng của hệ thống mà bạn sẽ tạo ra. Đánh đổi những mối quan hệ này chỉ để theo đuổi một ngôn ngữ lập trình nào đó quả thật là không đáng.
Lý do thứ ba: để đem đến một giải pháp phần mềm, kỹ năng quan trọng nhất của người kỹ sư không phải là nằm lòng từng dòng code mà là kỹ năng giải quyết vấn đề. Khi nói đến “vấn đề” và “giải pháp”, tôi không nói đến những vấn đề nội tại của code như vòng lặp, I/O hay thread mà là nói đến tư duy hệ thống – làm thế nào để hoạch định kiến trúc, lựa chọn middleware nào là tốt nhất, SDLC nào phù hợp…
Quan trọng nhất, làm thế nào để tạo ra những hệ thống phần mềm có thể thực sự đem lại lợi ích cho công ty khi đã cân đong tất cả các yếu tố, từ độ ổn định cho đến chi phí, từ tính năng cho đến tính tiện dụng. Một khi đã có tư duy này, khi đối diện với một bài toán nghiệp vụ mới, một loại hệ thống chưa từng có kinh nghiệm, bạn vẫn có thể vượt qua khó khăn mà chẳng cần quá quan tâm xem hệ thống đó sử dụng loại ngôn ngữ nào. Một lần nữa, đây lại là một kỹ năng mà bạn tôi có, nhưng công ty của bạn thì khó có thể đào tạo cho kỹ sư .NET mới.
Lý do thứ tư: code gần 10 năm, bạn tôi biết cách giải quyết rất nhiều vấn đề thường gặp khi code “thối”. Khi bị null pointer exception hay tràn bộ nhớ chẳng hạn, bạn sẽ biết mình (hoặc developer khác) hay mắc lỗi ở chỗ nào. Bạn sẽ nhăn mày nhiều hơn khi thấy câu lệnh SQL có nhiều JOIN, bạn sẽ không thể bỏ qua những biến string được hardcode…
Với các vấn đề này, ngôn ngữ thực chất chỉ là một lớp vỏ rất mỏng. Tất cả các kiến thức để bạn xuyên qua lớp vỏ ấy đều có trong sách hoặc… trên Google. Sinh viên đại học chỉ cần qua 1, 2 lớp là đã có thể viết ra một trang web nham nhở bằng một ngôn ngữ nào đó, bạn tôi chẳng có lý do gì để mất nhiều thời gian hơn. Khi bạn đã tiếp thu được một khối lượng kiến thức đủ cơ bản về ngôn ngữ mới và kết hợp những kiến thức đó với tất cả kinh nghiệm của bạn về kỹ nghệ phần mềm, bạn trở lại là một senior developer thực thụ.
Lý do cuối cùng: dù có chuyển đi ngôn ngữ nào thì kiến thức của bạn về HTML/CSS/JS, Jquery, SQL, Web Services… sau 10 năm tích góp cũng không thể mai một.
Thực chất, thị trường phần mềm những năm qua đã phải chứng kiến một cuộc đại dịch chuyển khi Apple ra mắt Swift để thay thế cho Objective-C già cỗi. Những xu thế công nghệ trên thế giới cũng sẽ dẫn đến nhiều xáo trộn, ví dụ như sự “trở lại” của C và C++ khi IoT lên ngôi, hoặc sự trỗi dậy của các ngôn ngữ mới và đơn giản như Perl và Python để phục vụ cho AI. Mỗi ngôn ngữ đều có một điểm mạnh và điểm yếu riêng, và nếu bạn cứ mù quáng chạy theo một ngôn ngữ nào đó, những tình huống ngớ ngẩn kiểu “mất cả tuần trên Perl để làm những điều C# có thể làm trong 4 lượt click” không phải là khó tưởng tượng.
Bạn tôi đã có lựa chọn đúng: ngôn ngữ lập trình chỉ là thứ yếu.
Vậy nên, tôi có lời khuyên này với bạn: đừng sợ công nghệ thay đổi. Đừng sợ ngôn ngữ của mình bỗng dưng có một ngày nào đó thất thế tại nơi làm việc của mình hay thậm chí là trên cả thế giới. Ngay từ bây giờ, hãy thử học một ngôn ngữ mới mẻ nào đó. Bạn sẽ thấy rằng, bất kể ngôn ngữ bạn lựa chọn là gì, senior vẫn sẽ là senior thôi!
Nguồn: genk.vn