Từ Fresher Developer tới Senior Developer mất bao lâu?

Chia sẻ:

Nhiều đàn em Fresher Developer mới đi làm thường hay hỏi mình: ”Cần bao lâu để đạt được level Senior Developer?”  hay ”Thước đo tiêu chuẩn nào để đánh giá trình độ chuyên môn dành cho vị trí Developer”.  Câu trả lời tùy vào mỗi người mà sẽ khác nhau đó. Với kinh nghiệm gần 10 năm làm Dev, mình muốn chia sẻ một chút quan điểm của bản thân về câu hỏi này dựa trên trải nghiệm bản thân đã đúc rút ra được.

Hành trình từ Fresher Developer lên Senior Developer của chính mình

Sau khi tốt nghiệp cấp 3, mình đã định hướng theo khối ngành kinh tế. Lý do đơn giản là mình rất thích tìm hiểu về kinh tế tài chính, mặc dù tính cách của mình có thể không phù hợp thật đó. Ấy vậy mà, duyên nghề đã đưa đẩy mình theo học ở Học Viện Công Nghệ Bưu Chính Viễn Thông, khối ngành Công Nghệ Thông Tin. Và từ đó, mình quyết định gắn bó và phát triển sự nghiệp theo ngành luôn.

Ngành mình học thuộc khối kĩ thuật nên ngày từ đầu mình đã tự ý thức rằng: một người kĩ sư thì cần phải thực chiến, phải vận dụng và sáng tạo được kiến thức thực tế thay vì ôm mớ kiến thức hàn lâm. Chính vì thế, mình đã quyết tâm đi thực tập sớm so với các bạn cùng trang lứa. Khi vừa bắt đầu kì 2 năm 3, mặc dù còn lơ ngơ như bò đeo nơ, nhưng mình vẫn quyết định thử sức thực tập ở một công ty phần mềm ở Hà Nội. Mình đăng ký team Java vì đó là ngôn ngữ mình vững nhất. Nhưng vì team mobile đang thiếu nên mình được xếp vào team mobile luôn, cụ thể là làm quen với ngôn ngữ Objective-C để lập trình native iOS. Khoảng thời gian đầu tiên khá khủng hoảng, vì anh phụ trách mình bận việc gia đình nên mình phải tự mày mò khá nhiều. Objective-C là ngôn ngữ khó, chưa kể yêu cầu hệ sinh thái macOS đi kèm – một thứ quá xa xỉ với một sinh viên như mình. Mình quan niệm rằng bước nhanh hay bước chậm không quan trọng, quan trọng là luôn luôn bước. Điều đó giúp mình làm quen với cường độ công việc, cân bằng giữa việc học và làm. Dần dần mình thấy được cái hay của ngành lập trình, ở một khía cạnh khác hoàn toàn so với những gì mình được dạy trên giảng đường. Đam mê đã giúp mình thêm quyết tâm gắn bó với nghề lập trình.

 

 

Quyết định đi làm sớm tuy vất vả nhưng đã giúp mình giữ thân hình siêu mẫu 45kg suốt 5 năm đại học. Tuy nhiên giờ nghĩ lại, mình cảm thấy rất đáng và tự hào về lựa chọn đó. Khi mình tự tin đã đạt được trình độ junior iOS Developer thì các bạn cùng trang lứa mới bắt đầu ở vị trí Fresher Developer.

Sau khi tốt nghiệp, mình tiếp tục phát triển sự nghiệp theo hướng tập trung vào native iOS dựa trên nền tảng sẵn có. Mình bắt đầu đọc nhiều sách về kĩ thuật, mở rộng quan hệ, tham dự các techtalk, community, viết blog, training cho các bạn mới,… Mình giữ vững cường độ và chiến thuật trên trong 3 năm tiếp theo. Đến đầu năm 2019, mình đã thử interview một số công ty trong ngoài nước và được họ đồng đánh giá ở level senior iOS Developer. Đó là một tin vui đối với mình, cũng như đó là kết quả minh chứng cho quá trình làm việc, nghiên cứu nghiêm túc trong suốt 5 năm.

Điểm khác biệt giữa Senior Developer với Fresher hay Junior Developer?

Trình độ chuyên môn

Theo mình khác biệt lớn nhất giữa senior và các level khác là cách tư duy giải quyết vấn đề. Ví dụ với một bài toán, nếu bạn ở level fresher-junior developer thì mục tiêu của bạn là đưa ra giải pháp và xử lý bài toán. Nếu bạn ở level middle thì mục tiêu của bạn sẽ là tối ưu giải pháp. Còn nếu bạn ở level senior developer thì mục tiêu của bạn là giải pháp bạn đưa ra phải là chuẩn xác nhất, cân bằng đầy đủ các yếu tố thời gian, con người, hệ thống,…. Và dĩ nhiên để làm được điều đó, một senior đòi hỏi phải có hiểu biết sâu sắc về lĩnh vực mà mình đang làm.

Mình cần lưu ý chút là senior ở các background khác nhau thì sẽ có yêu cầu chi tiết về kĩ năng khác nhau, tức là không thể nói là senior mobile cũng sẽ phải có yêu cầu kĩ thuật tương đương với senior backend. Tuy nhiên cái mình muốn nhấn mạnh là điểm chung giữa các senior là phải có tư duy giải quyết vấn đề như trên. Mình cũng muốn bổ sung rằng các yêu cầu về level trên là ở mức tối thiểu, tức là fresh-junior level hoàn toàn có thể có tư duy và kỹ năng tối ưu hóa giải pháp giống như middle, tuy nhiên mức độ hoàn thiện có thể thấp hơn một middle đúng nghĩa.

Phạm vi công việc

Có một hiểu lầm khá phổ biến là senior thì sẽ không code, vì việc đó là của các level thấp hơn. Điều này có cái đúng và cũng có cái sai. Mình đã từng có cơ hội làm việc với các senior developer nước ngoài cứng tuổi (có bác còn hơn 4x) nhưng họ vẫn code bá cháy bọ chét, chấp hết hội 2x như mình. Tuy nhiên, không phải senior developer nào cũng như vậy. Như mình có nói ở trên về bản chất senior developer cần phải đưa ra giải pháp hoàn hảo nhất cho bài toán họ đang giải quyết. Vì vậy, senior sẽ nghiêng nhiều về hướng giải pháp, việc triển khai giải pháp sẽ được đẩy xuống các level thấp hơn. Trong trường hợp không có đủ resource để triển khai thì họ vẫn sẽ code vì bản chất họ vẫn là developer mà. Senior developer thường sẽ join để giải quyết các vấn đề phức tạp. Họ sẽ là người thực hiện những công việc đòi hỏi sự chính xác và tỉ mỉ cao hơn, hoặc họ có thể tham gia xây dựng nền tảng của giải pháp và đẩy những phần việc nhẹ nhàng hơn cho các developer ở level dưới.

 

 

Thu nhập

Thành thật mà nói thì khoảng thu nhập của ngành IT ở Việt Nam nói chung rất “loạn”. Nó phụ thuộc vào nhiều yếu tố chủ quan có và khách quan cũng có, hơn nữa lại có sự khác biệt nhẹ về thu nhập giữa senior developer mobile, backend, devops,… Dựa trên quan sát về thị trường lao động của mình, thì thường mức lương của senior ở Việt Nam dao động trong khoảng 1500$ – 2500$, cá biệt có một số công ty có thể trả ở mức cao hơn, tuy nhiên không nhiều.

Tham khảo một số vị trí đang tuyển tại AMELA

Từ Fresher Developer tới Senior Developer mất bao lâu?

Có một định luật khá nổi tiếng đó là để có thể trở thành chuyên gia trong lĩnh vực bất kỳ, bạn sẽ cần trung bình 10.000 giờ làm việc và nghiên cứu nghiêm túc (10000-hour rule). Định luật trên cũng đúng với trường hợp của ngành lập trình, bạn cũng sẽ phải cần từng đó thời gian tích lũy thì mới có thể trở thành senior developer được. Giả sử một ngày bạn làm việc 8 tiếng, 1 tuần làm việc bạn sẽ có 40 tiếng tích lũy, thì bạn sẽ cần khoảng 250 tuần, tương đương với khoảng gần 5 năm để có thể trở thành senior developer. Đó là lý do khi bạn tham khảo các nguồn tài liệu ngoài, bạn sẽ thấy thường họ ghi senior developer phải là 5+ năm kinh nghiệm.

Có 2 hiểu nhầm phổ biến mà nhiều người gặp phải. Thứ nhất: thời gian là điều kiện cần, còn điều kiện đủ là phải làm việc và nghiên cứu nghiêm túc trong từng đó thời gian thì bạn mới có thể hoàn thiện bản thân để bứt phá lên level senior được.

Thứ 2, thẳng thắn mà nói, số lượng người cho rằng mình đang ở level senior (mình gọi là senior tự phong) nhiều hơn số người thực sự là senior (mình hay gọi là world class senior). Lý do phổ biến nhất vẫn là ở trường hợp thứ nhất. Khi họ mới chỉ có điều kiện cần là thời gian thì đã nghiễm nhiên cho rằng mình làm lâu năm thì đã đạt level senior rồi.

Cách tốt nhất để đánh giá bản thân có phải ở level senior không chính là việc tham khảo ma trận kĩ năng (matrix skill) về yêu cầu của senior ở chuyên môn mà bạn đang công tác (mobile, devops, backend, game,…) . Thỉnh thoảng thử phỏng vấn thêm các công ty nước ngoài để có đánh giá chuẩn xác nhất về khả năng của bản thân.

Những kỹ năng cần rèn luyện để một Fresher Developer đạt được vị trí Senior Developer nhanh chóng

Kỹ năng đầu tiên mà bạn cần quan tâm đó là kỹ năng tư duy phân tích vấn đề (critical và logical thinking). Kỹ năng này rất quan trọng, công việc của senior thường phải đưa ra giải pháp, để làm được điều đó, một senior developer đòi hỏi cần phải rèn dũy cho mình khả năng phân tích bài toán và tư duy tương ứng.

Kỹ năng thứ 2 là kỹ năng giao tiếp, một senior developer nhiều khi phải trình bày giải pháp mình đưa ra cho các bên tech và non-tech khác như techlead, PM, khách hàng,… Vì vậy, khả năng giao tiếp là cần thiết. Trên phim ảnh bạn có thể thấy nhiều senior developer hoặc level cao hơn như principal, specialist developer có khuynh hướng “tự kỷ” (kiểu hơi nerd nerd ý). Nhưng xin nhớ, đó chỉ là phim ảnh thôi, ngoài đời thực mình khẳng định cũng có, tuy nhiên số lượng chắc chắn không nhiều. Vì dù sao lập trình cũng là một nghề đòi hỏi teamwork mạnh, cho nên kỹ năng giao tiếp kém sẽ là điểm yếu chết người đối với mọi lập trình viên. Kỹ năng giao tiếp không nên gói gọn ở việc nói và nói, nó còn liên quan đến vấn đề viết nữa. Một senior developer cần phải thể hiện được hiểu biết và giải pháp của mình thông qua các tài liệu kỹ thuật như là flowchart, sequence diagram, database design diagram,… Để rèn luyện tốt kỹ năng này, mình có lời khuyên là các bạn hãy tập viết blog và tự tổ chức các buổi seminar chia sẻ kinh nghiệm cũng như góc nhìn của mình về bất kỳ đề tài nào mà bạn cảm thấy yêu thích.

Kỹ năng thứ 3 là kỹ năng nghiên cứu tài liệu (research). Để đạt được trình độ senior, bạn cần phải giải quyết được những bài toán hóc búa mà không nhiều người giải được, và lẽ dĩ nhiên là không phải lúc nào bạn cũng là giáo-sư-biết-tuốt cả, sẽ có nhiều lúc bạn phải mày mò, tìm hiểu thông tin rải rác trên Internet, và ráp nối chúng lại thành câu trả lời hoàn chỉnh cho bài toán của mình. Điều này hoàn toàn phụ thuộc vào khả năng research: tìm kiếm, phân tích, tổng hợp thông tin của lập trình viên. Lưu ý rằng phần đa các tài liệu kỹ thuật được viết bằng tiếng Anh, do đó bạn cũng cần phải trang bị cho mình kỹ năng reading nữa nhé.

Kỹ năng thứ 4 là học, học và học. Sự thật là nghề lập trình gắn với sự phát triển của ngành công nghệ thông tin – một ngành mà mọi người hay đùa rằng mất Internet 5 phút cũng đủ để mình trở thành người tối cổ ấy. Đặc thù xu hướng công nghệ cập nhật từng ngày đòi hỏi lập trình viên cũng phải lên kế hoạch update bản thân tương ứng. Quá trình này ban đầu sẽ rất khó khăn, yêu cầu bạn phải thực sự nghiêm túc và chăm chỉ (đọc lại 10000-hour rule nhé). Nhưng đừng lo lắng, mọi thứ sẽ dễ dàng hơn theo thời gian, khi mà bạn đã gom góp đủ lượng kiến thức nhất định. Ngoài ra, mình cũng có lời khuyên là các bạn nên tham gia các cộng động developer trong và ngoài nước (ví dụ ở Việt Nam có team WeBuild-community rất mạnh) hay follow các developer nổi tiếng trên GithubTwitter để có thể cập nhật các xu hướng công nghệ tân thời, cũng như tìm được nơi để thảo luận các vấn đề kỹ thuật.

Từ fresher developer tới senior developer không liên quan đến việc bạn làm bao lâu mà quan trọng bạn đã tích lũy kiến thức và kinh nghiệm đủ sâu hay không. Cũng không thể nói kinh nghiệm và thời gian luôn song hành cùng nhau được.

Biên tập: AMELA