Career path của một kỹ sư phần mềm - P1
Before publish this post, I would like to say thank to Narita-san. You are my ex-customer but in my mind you are also my teacher and my friend. As your expectation, I want to share your voice to all people, not only to IT engineer, to everyone who want to be an IT engineer in the future also. ...
Before publish this post, I would like to say thank to Narita-san. You are my ex-customer but in my mind you are also my teacher and my friend. As your expectation, I want to share your voice to all people, not only to IT engineer, to everyone who want to be an IT engineer in the future also.
Thank you for sharing to me, to us about your experience and your dreams about working with Software.
Tôi nhận được rất nhiều câu hỏi về “software engineer’s career path”, không chỉ từ những kỹ sư trẻ mà cả từ những người đã có kinh nghiệm, và không chỉ developer mà cả tester cũng hỏi tôi câu hỏi này. Ai cũng đều có sự lo lắng nhất định cho sự nghiệp của mình. “Tôi sẽ làm developer trong bao lâu?”, “Lúc nào là thời điểm để chuyển sang làm quản lý?” hay “Làm thế nào để nâng cao engineering skill của mình?”. Tôi nghĩ đó đều là những câu hỏi rất thường thấy. Có một lý do rất hiển nhiên: ở Việt Nam, không có nhiều kỹ sư phần mềm kỳ cựu. Ở đây, từ “kỳ cựu” là chỉ “những kỹ sư phần mềm lâu năm”.
Với Việt Nam, các kỹ sư làm việc lâu nhất có lẽ trong 10 đến 15 năm, sau đó phần lớn họ sẽ tiếp tục con đường sự nghiệp bằng việc chuyển hướng sang quản lý. Nhưng ở Nhật hay Mỹ, có rất nhiều kỹ sư công nghệ có tuổi nghề trên 20 năm. Họ dùng kinh nghiệm của mình để vạch ra con đường tương lai cho các kỹ sư trẻ. David Cutler là ví dụ nổi tiếng nhất. Ở tuổi 73, ông vẫn là một kỹ sư công nghệ cấp cao của Microsoft. Đương nhiên ông cũng được biết đến như một nhà quản lý dự án, nhưng ông luôn là người đi đầu trong việc phát triển phần mềm của tập đoàn. Và không chỉ David Cutler, còn rất nhiều kỹ sư có nhiều năm kinh nghiệm khác cũng tiếp tục làm các công việc chuyên về mảng kỹ thuật.
Trong phần này, để giải thích kỹ hơn về “career path as a software engineer”, tôi sẽ giới thiệu một định nghĩa về skill level và chương trình triển khai về engineer's career path của một tổ chức chính phủ Nhật Bản. Tài liệu này được tạo bởi “Information-Technology Promotion Agency (IPA)” (情報処理推進機構). Chắc bạn đã nghe đến “Kỳ thi kỹ sư công nghệ thông tin căn bản” (Fundamental Information Technology Engineer Examination - FE examination) hay “Kỳ thi kỹ sư công nghệ thông tin ứng dụng” (Applied Information Technology Engineer Examination - AP examination). Những kỳ thi đó đều được quản lý bởi tổ chức IPA trên.
Chương trình thực hiện có tên gọi “ETSS Implementation Promoter’s Guide", ETSS nghĩa là “Embedded Technology Skill Standard”, được phát hành năm 2009. Nó còn khá mới và cái tên của chương trình chỉ tập trung vào kỹ sư công nghệ nhúng, nhưng các khái niệm cốt lõi này có thể áp dụng với tất cả nhánh kỹ thuật khác của công nghệ phần mềm máy tính.
Được rồi, hãy bắt đầu với cái nhìn tổng quát.
Mô tả chương trình gồm 4 phần. Phần 1 là tổng quan và mục tiêu. Phần 2 sẽ đi sâu giải thích phần trước. Phần 3 đưa ra một vài tài liệu tham khảo và phần 4 là một vài bài luyện tập cũng như các câu hỏi liên quan.
Người ta nói rằng, để hiểu được định hướng nghề nghiệp và kỹ năng, ta cần phải hiểu “Làm thế nào để ghi nhận những technical skill?”. Chúng ta sẽ bắt đầu từ chỗ này.
Đặc tả về kỹ năng được hiểu là một khái niệm 2 chiều. Một chiều là “Category” và chiều còn lại là “Level”. Thực ra rất dễ dàng để hình dung ra “skill category” là như thế nào. Database, Image Processing, Network, Security, etc. chính là skill category. Và trong thế giới kỹ thuật phần mềm, có một đặc tính hiện hữu rằng số lượng những loại kỹ năng này tăng lên hàng ngày. Như các bạn đã biết, trong 2 đến 3 năm gần đây, khái niệm về Data mining xuất hiện và trở nên phổ biến, tuy nhiên không dừng ở đó. Chúng ta đang tạo ra những công nghệ mới mỗi ngày.
Trong chương trình này, 7 loại First Layer (#1) đã được liệt kê, tuy vậy chúng có chút hơi lỗi thời rồi.
No.1 “7 first layers” in ETSS Implementation Promoter’s Guide : communications, information processing, multi media, user interface, storage, measurement control, platform.
Lớp đầu tiên được chia thành 3 lớp cấp 2 và mỗi mục nhỏ đều có các skill item. Ví dụ, “Communication” là một First layer có 3 lớp cấp 2 , 5 lớp cấp 3 và rất nhiều skill item. (Xem hình minh họa).
7 categories được đề cập trong tài liệu không mang tính cập nhật, tuy vậy, chúng ta vẫn có thể sử dụng khái niệm này. Ví dụ, coi Data Mining là lớp đầu, Big Data và AI phải là lớp thứ 2, Pattern matching, Statistic analysis, Clustering sẽ là lớp thứ 3, cuối cùng, Bayesian inference và Logistic regression là các skill item.
Trong một cái nhìn khác, các cấp độ kỹ năng được khái quát thành 4 cấp độ.
- Level 4: Supreme Capable of developing new technologies.
- Level 3: Advanced Capable of analyzing and improving tasks.
- Level 2: Intermediate Capable of performing tasks on one’s own.
- Level 1: Entry level Capable of performing tasks with support.
Những cấp độ trên rất dễ hiểu và hữu ích trong việc tự cân nhắc mức độ nào là phù hợp với mình. Hãy nhìn lại bảng biểu về Communication Technology ở trên, ví dụ, về “Internet”, kỹ năng “TCP”, nếu bạn có thể thực hiện hoặc kiểm thử với sự hỗ trợ của chuyên gia khác, bạn đã có kỹ năng cấp 1 về TCP. Nếu bạn có thể tự làm phần này, bạn đạt Cấp 2 về TCP. Nếu bạn có thể đánh giá và hoàn thiện ý tưởng về “TCP”, bạn đã đạt Cấp 3. Còn nếu bạn phát triển một công nghệ mới thay thế được “TCP”, bạn đã đạt Cấp 4 rồi đấy. Tất nhiên việc phát triển công nghệ thay thế các công nghệ tiêu chuẩn rất khó. Nhưng nó không khó đến nỗi không thể hình dung ra được, nếu bạn là người tiên phong trong một lĩnh vực công nghệ đặc biệt hay phát triển một phần mềm chưa được thực hiện bởi bất cứ kỹ sư nào khác, nghĩa là bạn đang ở Cấp độ 4 rồi.
Nhưng tôi cũng cần nhắc bạn rằng đây chỉ là định nghĩa trong chương trình triển khai ETSS của IPA. Thông thường, trong giới IT, nhắc đến “Skill level”, là nhắc đến 7 khung kỹ năng của thời đại CNTT (SFIA).
- Follow: Basic capability to complete tasks under close supervision. Not expected to use much initiative. Should be organised.
- Assist: Uses some discretion and has a wider circle of interaction than level 1, especially in speciality. Works on a range of tasks, and proactively manages personal development.
- Apply: Complete work packages with milestone reviews only. Escalates problems under own discretion. Works with suppliers and customers. May have some supervisory responsibility. Performs a broad range of tasks, takes initiative, and schedules own and others work.
- Enable: Works under general direction in a framework. Influence at account level, works on a broad range of complex activities. Good level of operational business skills.
- Ensure and advise: Broad direction, supervisory, objective setting responsibility. Influences organisation. Challenging and unpredictable work. Self sufficient in business skills.
- Initiate and influence: Authority for an area of work. Sets organisational objectives. Influences policy, significant part of organisation, and customers and suppliers at a high level. Highly complex and strategic work. Initiates and leads technical and business change.
- Set strategy, inspire, and mobilise: Authority includes setting policy. Makes decisions critical to organisation, influences key suppliers and customers at top level. Leads on strategy. Full range of management and leadership skills.
* Trích dẫn từ “Skills Framework for the Information Age" (SFIA) trên wikipedia.com
Trong bất kỳ trường hợp nào, để hiểu các khái niệm ETSS hoặc SFIA, bạn cần phải hiểu sự kết hợp của skill item và skill level. Nếu bạn học một kỹ năng công nghệ mới, hãy tự vấn bản thân xem mình đã đạt đến cấp độ nào. Nó sẽ giúp bạn xác định được giai đoạn tiếp theo.
Với quan điểm trên, sử dụng 2 chiều skill item/ domain và skill level sẽ giúp bạn xác định được vị trí của mình đang ở đâu trên bản đồ thế giới về kỹ năng IT. Nếu bạn đã có hiểu biết về TCP, IP và http, vậy bạn có thể hỏi “Thế còn UDP? DNS? DHCP?” (Security of communication là một chủ đề cập nhật khá hot). Và “Tôi hiểu sâu về nó đến mức nào?” sẽ là những câu hỏi hợp lý để bạn tự hỏi bản thân. Nếu độ hiểu chưa sâu, bạn nên học kỹ hơn nữa, kỹ năng của bạn sẽ trở nên vững chắc hơn và đương nhiên sẽ nâng cao giá trị của bạn trên thị trường kỹ sư phần mềm.
Nếu bạn tự tin đồng thời có hiểu biết sâu rộng về lĩnh vực CNTT, bạn có thể nói chuyện với Opinion Leaders trên thế giới và có khả năng đóng góp vào sự phát triển của ngành công nghệ trên thế giới. Ai dám chắc rằng đó là một giấc mơ không thực tế?
Đến đây, bạn chắc đã hiểu rằng mình nên tìm hiểu thêm về các “skill” và “skill level”. Hãy kiểm tra lại kỹ năng của bạn trên cương vị cá nhân. Nó sẽ giúp bạn biết được vị thế của mình. Và sau khi tìm ra vị trí ấy, bạn sẽ thấy được sự rộng lớn của thế giới kỹ thuật xung quanh bạn.
Trong số tiếp theo, chúng ta sẽ bắt đầu xem làm thế nào để career path của bạn cụ thể, rõ ràng hơn.
Bài viết đã được đăng tải trên tạp chí Geek and Tech