Sau khi đã chia sẻ về những lời khuyên mà tôi ước mình đã biết sớm hơn, giờ đây là lúc chúng ta tiếp tục cuộc hành trình để khám phá những điều mà tôi ước mình đã làm khác đi. Đôi khi, những quyết định mà chúng ta thực hiện hoặc những thói quen mà chúng ta hình thành có thể có ảnh hưởng lớn đến sự phát triển của sự nghiệp và cuộc sống. Hãy cùng nhau tìm hiểu và khám phá những góc khuất trong chặng đường tiến xa hơn của một lập trình viên.

II. Những điều tôi ước mình đã làm khác đi

1. Cẩn thận khi giới thiệu những điều mới mẻ cho nhóm

Điều này đặc biệt đúng khi bạn càng ở cấp cao hơn, tuy nhiên những bạn mới cũng nên chia sẻ những điều mới mẻ với nhóm, có thể là thư viện, ngôn ngữ, mô hình, cách làm việc cùng nhau, v.v. Khi còn là cấp dưới, bạn sẽ dễ dàng bị thách thức hơn bởi những người cấp trên trong nhóm của mình. Tuy nhiên, càng có thâm niên thì bạn càng dễ thuyết phục mọi người, đặc biệt là cấp dưới.

Trở lại công ty đầu tiên của tôi, một vài tháng trước khi chuyển sang một nhóm khác, tôi đã ở vị trí mà tôi có thể đề xuất… những thay đổi đầy tham vọng đối với mã nguồn. Vào thời điểm đó, tôi đã tìm hiểu về mô hình Lập trình hàm (Functional Programming) được vài năm và tôi bị ấn tượng về những ưu điểm của nó.

Tôi bắt đầu giới thiệu các khái niệm hàm nhóm của mình. Vào thời điểm đó, những bài thuyết trình này đã đủ thuyết phục mọi người để áp dụng mô hình mới này và ai cũng đều gật đầu đồng ý. Họ hiểu các khái niệm mới, ưu điểm và nhược điểm, và những gì chúng tôi có thể sử dụng để cải thiện dự án của mình.

Sau đó, chúng tôi nhận thấy rằng đây là thời điểm thích hợp để chúng tôi thực hiện một số thao tác tái cấu trúc. Tất cả chúng tôi đều bị thuyết phục về lợi ích của nó và quyết định tiến xa hơn nữa là triển khai việc này lên môi trường production. Tôi chịu trách nhiệm tạo các nhiệm vụ, lập kế hoạch những gì có thể thực hiện song song, v.v. Tôi đăng các bản cập nhật thường xuyên lên kênh Slack nơi các bên liên quan có thể theo dõi tiến trình.

Tôi đã phát triển v2 của hệ thống như một thư viện trong mã nguồn của riêng chúng tôi, biến nó thành một mô-đun độc lập nơi có thể kiểm tra mọi trường hợp nguy hiểm có thể xảy ra mà chúng tôi có thể nghĩ đến. Mặc dù giới thiệu rất nhiều khái niệm, chức năng và thay đổi mã mới nhưng mọi người đều hài lòng với nó. Tôi đã nhận được sự chấp thuận trong quá trình review code.

Tôi đã được truyền cảm hứng mạnh mẽ từ thư viện fp-ts, thư viện này có cách mã hóa khác với “JavaScript thông thường”. Chúng tôi không thể đơn giản nhập thư viện vào mã nguồn của mình do những hạn chế mà tôi sẽ không đề cập ở đây, vì vậy tôi phải tự mình giới thiệu lại một số chức năng và kiểu dữ liệu của nó với một số điều chỉnh nhỏ. Tôi đã chia sẻ thêm bài thuyết trình về những thay đổi này và nhận được phản hồi tích cực.

Sau khi hệ thống mới được hoàn thiện và thử nghiệm, chúng tôi phải thay thế hệ thống cũ nằm rải rác khắp nơi trong mã nguồn. Nó đã được sử dụng ở rất nhiều nơi nên việc di chuyển từ hệ thống cũ sang hệ thống mới rất tốn nhiều công sức.

Tôi chưa từng làm việc nhiều như vậy trong cuộc đời. Tôi thích việc tái cấu trúc mã cũ thành cái mà tôi nghĩ là một phiên bản tốt hơn, vì vậy tôi đã không bận tâm đến thời gian. Trong hai tháng, tôi phải làm việc khoảng 10h mỗi ngày, bao gồm cả cuối tuần.

Sau khi hoàn thành công việc, tôi được nghỉ hai tuần. Trong lúc tôi đi vắng, nhóm không may gặp phải một sự cố khá quan trọng. Họ gặp khó khăn trong việc xác định nguyên nhân gốc rễ và tìm cách khắc phục. Vấn đề nằm ở bên trong hệ thống mới và nhóm không quen với nó vì tôi gần như là người duy nhất phát triển nó.

Thuyết trình là một chuyện nhưng nếu bạn không thực hành những gì vừa học thì cuối cùng bạn sẽ quên nó. Ngoài ra, việc trình bày từng khái niệm riêng biệt sẽ không giống như việc sử dụng chúng. Nó làm tăng thêm sự phức tạp cho một môn học vốn đã khó học.

Tóm lại, tôi đã giới thiệu rất nhiều khái niệm mới cho nhóm của mình và khi họ tham gia trong buổi thuyết trình của tôi, những thay đổi mà tôi mang lại cho dự án đã làm tổn hại nghiêm trọng đến khả năng giải quyết vấn đề quan trọng của họ khi tôi vắng mặt.

Trên thực tế, lẽ ra ngay từ đầu tôi nên cân nhắc về giải pháp mới này. Đó không phải là một giải pháp thực tế. Những cải tiến nhỏ thật tuyệt vời, nhưng toàn bộ hệ thống chức năng mới là một sai lầm.

Bạn không nên mang lại những thay đổi quan trọng cho nhóm chỉ vì bạn quen với những thay đổi này. Tôi nghĩ rằng mình sẽ ở lại với nhóm đó đủ lâu để mọi người dần quen với mã mới và rằng tôi có thể dạy họ từng chút một.

Cho dù bạn là người đóng góp cá nhân (hay còn gọi là IC) hay người quản lý, nếu một đồng đội cấp cao đưa ra những thay đổi quan trọng như những thay đổi này, tôi thực sự khuyên bạn nên thực sự thách thức đề xuất của họ. Tôi chắc chắn rằng có thể tìm được một sự cân bằng tốt hơn trong trường hợp của tôi.

Nếu bạn ở hoàn cảnh giống như tôi, tôi khuyến khích bạn nên suy nghĩ kỹ trước khi thực hiện. Đây có thực sự là một giải pháp thực tế? Bạn có làm điều này vì lợi ích của nhóm hay vì bạn thích nó không? Nhóm sẽ cảm thấy thoải mái với nó khi bạn không ở đây để giúp họ không?

2. Đừng để cảm xúc của bạn lấn át trước mặt đồng đội

Tôi đã có những lúc hoàn toàn không đồng tình với bất cứ điều gì mà người quản lý hoặc đồng nghiệp chia sẻ với nhóm trong một cuộc họp. Tôi để mọi người trong phòng biết điều đó làm tôi khó chịu, từ đó có một sự “xung đột” ngầm giữa chúng tôi.

Tôi muốn cho các đồng nghiệp của mình thấy rằng không đồng ý với quyết định của người khác cũng là điều bình thường. Tuy nhiên, đây là hành vi không “lành mạnh”:

  • Mọi người có thể cảm thấy không thoải mái khi xung đột trở nên căng thẳng, như trong những tình huống tôi đã kể ở trên. Thật không công bằng khi đặt họ vào những tình huống như vậy.

  • Điều này có thể tạo ra sự chia rẽ trong nhóm, trong đó một số người đồng ý với người A và những người khác đồng ý với người B. Một nhóm phải đoàn kết để hoạt động hiệu quả.

  • Nó cho thấy bạn là người thiếu tự chủ và kỷ luật.

Tôi không nói rằng việc kiềm chế cảm xúc của chúng ta là điều dễ dàng. Suy cho cùng, chúng ta là con người chứ không phải máy móc. Tuy nhiên, điều quan trọng là phải thể hiện sự tôn trọng với đồng nghiệp và tránh làm ảnh hưởng đến diễn biến của cuộc họp.

Theo tôi, việc làm đúng đắn là chờ cuộc họp kết thúc thì ngay lập tức:

  • Nói chuyện với người đó trong cuộc họp 1-1.

  • Trò chuyện với người quản lý của bạn về tình huống mà bạn cảm thấy không đồng tình và tìm cách khắc phục.

Quan trọng là phải nói chuyện 1-1 với người mà bạn cảm thấy vướng mắc ngay sau cuộc họp. Thời gian càng trôi qua, tình hình càng tồi tệ hơn.

Theo kinh nghiệm của tôi, việc nói chuyện với người khác luôn giúp cải thiện tình hình và giao tiếp là chìa khóa. Nếu không có sự tương tác, chúng ta không thể tiến xa trong công ty (hoặc cuộc sống cá nhân của mình).

3. Tham gia vào thị trường tuyển dụng

Khi tôi gia nhập công ty đầu tiên với tư cách là thực tập sinh, tôi đã có một cuộc phỏng vấn dài 30 phút với người quản lý tương lai của mình. Và thế là xong. Sau đó, tôi đã không bước chân vào thị trường tuyển dụng trong bảy năm rưỡi. Một khi tôi quyết định rời đi, trải nghiệm tuyển dụng duy nhất và ngắn gọn của tôi rõ ràng không phản ánh đúng những gì tôi sắp phải đối mặt. Quy trình tuyển dụng khi bạn nộp đơn cho các vị trí cấp cao với khoảng tám năm kinh nghiệm chắc chắn không chỉ bao gồm một "cuộc phỏng vấn 30 phút".

Sau khi đọc các bài viết chia sẻ kinh nghiệm về tìm việc, tôi cảm thấy mình đã sẵn sàng thử nó. Tôi đã cập nhật hồ sơ LinkedIn của mình, sau đó chuyển sang chế độ “Open To Work”.

Tuy nhiên tôi cảm thấy khá choáng ngợp. Việc phải đối mặt với tất cả những lời đề nghị làm việc đổ xuống đầu tôi thật mệt mỏi. Từ tháng 9 năm 2021 đến hết tháng 10 năm 2021, tôi phải nhận được 5 đến 10 lời mời như thế mỗi ngày. Tôi đã phải sử dụng PTO (Thời gian nghỉ cá nhân) và phần lớn thời gian cuối tuần để giải quyết vấn đề này.

Ban đầu, tôi có thể trả lời mọi tin nhắn của nhà tuyển dụng. Nhưng khi tôi rơi vào tình huống:

  • Tôi phải làm việc cả ngày vì lúc đó tôi vẫn đang làm việc tại công ty hiện tại.

  • Tôi đang chuẩn bị chuyển đến một thành phố khác, điều này khá căng thẳng đối với tôi.

  • Tôi đã tham gia vào quá trình tuyển dụng của một số công ty.

  • Tôi liên tục nhận được những lời mời làm việc mới.

Từ đó, tôi ngày càng khó trả lời tất cả các tin nhắn mới từ nhà tuyển dụng.

Cuối cùng tôi đã viết mẫu tin nhắn của riêng mình chứa đựng những mong muốn của tôi cho công việc tiếp theo. Tôi đã chia sẻ nhiều thông tin chi tiết nhất có thể: quy mô của công ty, văn hóa kỹ thuật, làm việc từ xa, lương thưởng, thách thức kỹ thuật, v.v. Nhưng dù có như vậy, tôi vẫn không thể nào trả lời hết các tin nhắn.

Nhưng xử lý các tin nhắn LinkedIn không phải là phần khó khăn nhất. Phần mệt mỏi nhất thực sự là thực hiện các cuộc phỏng vấn. Tôi chưa bao giờ có cơ hội đào tạo DSA (Cấu trúc dữ liệu và thuật toán) trước đây vì tôi chưa bao giờ cảm thấy cần phải thay đổi công ty. Ngoài ra, tôi phải nhớ và trình bày chi tiết một số dự án có ảnh hưởng nhất mà tôi đã thực hiện. Đây là lúc nhật ký công việc mà tôi đã đề cập trước đó có thể phát huy tác dụng.

Cuối cùng khi tôi chấp nhận lời đề nghị, tôi đã nộp đơn từ chức cho người quản lý của mình. Nếu tôi nhớ không lầm thì tôi đã được tăng lương cơ bản +25% với lời đề nghị mới này. Có một số khoản bồi thường bổ sung và phúc lợi cho nhân viên cũng tốt hơn đối với hoàn cảnh của tôi lúc bấy giờ (làm việc từ xa).

Như vậy, tôi khuyến khích bạn thỉnh thoảng thử phỏng vấn là vì:

  • Bạn sẽ có được một số kinh nghiệm trong quá trình làm việc, vì vậy khi gia nhập một công ty mới, bạn sẽ cảm thấy bớt choáng ngợp hơn.

  • Bạn có thể kiểm tra giá trị của mình trên thị trường và có thể yêu cầu một số điều chỉnh thù lao tại công ty hiện tại của bạn. Nếu bạn có thể nhận được một lời mời làm việc, rất có thể nó sẽ giúp bạn có được những gì bạn nghĩ mình xứng đáng ở vị trí hiện tại.

Vì tôi được tăng lương cao trong phần lớn thời gian làm việc tại công ty cũ nên tôi chưa bao giờ cảm thấy muốn kiểm tra xem mình có giá trị như thế nào trên thị trường tuyển dụng. Tôi ước tôi đã làm việc ấy sớm hơn. Nhờ đó mà tôi cũng đã tích lũy được một số kinh nghiệm và có thể yêu cầu điều chỉnh lương cho phù hợp với giá trị của mình.

Thực hiện các cuộc phỏng vấn không buộc bạn phải rời khỏi công ty. Bạn có thể thực hiện hàng chục cuộc phỏng vấn khi vẫn làm việc tại công ty hiện tại, miễn là bạn không hy sinh công việc của mình để thực hiện các cuộc phỏng vấn. Đây là lý do tại sao tôi phải thi PTO và phải phỏng vấn vào sáng sớm và trong giờ nghỉ trưa.

Một điều cuối cùng tôi muốn chia sẻ với bạn: hãy giữ liên lạc với một số đồng nghiệp cũ, đặc biệt là những người đã truyền cảm hứng cho bạn. Họ có thể đã là quản lý xuất sắc hoặc là những nhà lãnh đạo về technical có ảnh hưởng mà bạn thực sự đánh giá cao. Điều này quan trọng vì họ sẽ giúp bạn tiến bộ và trở thành một lập trình viên giỏi hơn. Hơn hết những kết nối đó còn có thể mang đến những vị trí công việc tốt trong tương lai.

Lời kết

Trong cuộc hành trình không ngừng phát triển của một lập trình viên, việc học hỏi và áp dụng những lời khuyên đúng đắn là chìa khóa để tiến xa hơn trong sự nghiệp. Từ việc xây dựng kỹ năng mềm đến việc cải thiện kỹ năng kỹ thuật, mỗi bước tiến mới đều mang lại cơ hội để trở thành một phiên bản tốt hơn của chính mình. 

Hy vọng rằng 9 lời khuyên mà chúng ta đã thảo luận sẽ là nguồn động viên và hỗ trợ đắc lực cho bạn trên con đường chinh phục mục tiêu nghề nghiệp của mình. Hãy không ngừng học hỏi, thách thức bản thân và không bao giờ ngừng mơ ước về những thành công lớn lao trong tương lai. Chúc bạn may mắn và thành công trong sự nghiệp của mình!

>> Xem thêm: 9 lời khuyên đắt giá mà lập trình viên nên biết nếu muốn nhanh thăng tiến trong sự nghiệp (Phần 1)

Nguồn: Benoit Ruiz

VietnamWorks inTECH