DevOps, Thợ đụng và Generalist
Câu chuyện về con đường tìm kiếm nghề nghiệp phù hợp với bản thân và trở thành Thợ đụ...ng chuyên nghiệp trong ngành IT mà một sinh viên kinh tế đã đi qua.
First things first
Xuân thì khai bút
Bút thì khai xuân
Nay chia sẻ chút
Câu chuyện bản thân
Lời đầu tiên Minh Monmen xin được gửi đến toàn thể các quý vị độc giả Viblo (đặc biệt là những người đang ngồi xem bài viết này) lời chúc mừng năm mới vui vẻ và hạnh phúc. Hy vọng rằng năm mới của các bạn đã bắt đầu với thật nhiều may mắn thú vị trong những hành trình mới của bản thân. Năm nay mình cũng có nhiều dự định để thay đổi bản thân cũng như công việc, do đó ngày xuân cũng muốn tán gẫu thư thả chút để nhìn lại con đường mình đã chọn từ khi bắt đầu xem nó thế nào. Hy vọng rằng đây sẽ là một câu chuyện đủ hay để đàm đạo cùng quý vị độc giả trong ngày khai xuân này nhé.
Bước chân đầu tiên bao giờ cũng là khó nhất
Nếu như các bạn đã từng đọc bài viết của mình thì có lẽ đã biết rồi. Thế nhưng nếu như đây là lần đầu tiên bạn đọc một bài viết của Minh Monmen, thì mình sẽ nhắc lại chút là background của mình không phải là công nghệ. Mình cũng không học chuyên tin từ cấp 2 cấp 3 gì cả (mà lại học chuyên hóa). 4 năm (thật ra là 3 năm rưỡi) mài đũng quần ở một trường kinh tế hàng đầu Việt Nam (NEU) và thứ giá trị nhất (với mình) là hiểu biết về cách mà thế giới hiện đại hoạt động, biết được ngân hàng hoạt động ra sao, bảo hiểm kiếm tiền thế nào, doanh nghiệp khi nào thì phá sản, v.v.
Mặc dù không học công nghệ, nhưng mình vẫn có đam mê khá mãnh liệt với lập trình nên đã tự mua sách học pascal từ cấp 2, lên cấp 3 tự học PHP để cài cắm mấy cái forum VBB với phpBB, đại học thì học thêm Visual Basic để code app desktop xem điểm cho sinh viên NEU dùng. Cho đến lúc này, mọi thứ vẫn dừng lại ở mức đam mê. Mình học lập trình chỉ vì đơn thuần là thích tạo ra cái gì đó hay ho. Đó chưa phải là sự nghiệp.
Mọi thứ vẫn ổn cho đến lúc mình gần ra trường thì bắt đầu khủng hoảng. Mình được đi trải nghiệm cuộc sống văn phòng (Keangnam hẳn hoi) trong 3 ngày và làm việc với giấy tờ kế toán. Cảm giác lúc ấy là: Trời ơi mình không thể sống tiếp mấy chục năm cuộc đời chỉ để nhìn đồng hồ trôi đến 6h như thế này được.
Thật sự khoảng thời gian ấy giờ kể lại thì nhẹ nhàng chứ thực chất thì rất khó khăn với mình, kiểu mình không biết mình là ai, mình muốn gì, sắp tới sẽ làm gì khi chỉ 1-2 tháng nữa là bị đá khỏi trường và mang danh thất nghiệp. Mình không có đàn anh đi trước trong ngành IT, cũng không biết hỏi han hội nhóm nào, xong lại nghĩ nếu giờ bỏ kinh tế thì uổng phí mấy năm tuổi trẻ quá, có đẽo cày giữa đường không, có chưa làm đã bỏ cuộc sớm không, theo ngành mới liệu có ổn không,... Đó là cảm giác tương lai hoàn toàn mờ mịt như tương lai của chị Dậu vậy.
Điều duy nhất mà mình thấy rõ về bản thân khi ấy, là cảm giác quên hết thời gian mỗi khi ngồi code. Đây cũng là thứ mà sau này mình nói đi nói lại với các bạn của mình khi họ cũng gặp cảm giác mông lung trong sự nghiệp: Hãy tìm kiếm thứ gì khiến bạn quên hết thời gian khi làm, đó sẽ là một gợi ý cho sự nghiệp sau này của bạn.
Tất nhiên là các bạn nên loại trừ việc ngủ ra.
Không biết bắt đầu từ đâu thì con đường khả quan duy nhất là đi học vậy. Cũng thử tìm hiểu xem nên đi học kiểu văn bằng 2 Bách Khoa hay là học kiểu chứng chỉ, khóa học ngắn hạn. Cuối cùng mình rút kinh nghiệm từ những người đi học văn bằng 2 trường mình (NEU) mà mình đã tiếp xúc thì thật sự cái mà họ cần chỉ là cái bằng thôi chứ không phải là kiến thức cho sự nghiệp gì cả. Thế là chốt học FPT Aptech, vay tiền bà chị gái (16 củ) cho học kỳ đầu tiên và ngay trong một buổi chiều.
Bạn sẽ chỉ thật sự học được cách bay khi hai chân đã rời mặt đất. Có những quyết định trong cuộc đời mà để suy nghĩ thêm thì chắc chắn mình sẽ chùn bước, thế là mình bước ngay, VAY ngay 16 củ đi học để bản thân buộc phải tiến lên phía trước.
Bước sai, quay hướng khác, bước tiếp
Thật ra không hẳn là bước sai, mà là chọn con đường chưa nhanh lắm. Mình nhận ra điều này sau đúng 3 tháng học. Mặc dù Aptech được mệnh danh là cuộc chạy đua ngôn ngữ khi sẽ dạy cho bạn hết cái này tới cái kia trong 1 thời gian (khá) ngắn mà không có quá nhiều kiến thức căn bản, đúng chất để các bạn đi ra làm thợ code Java hay .NET. Mình vẫn thấy là nó chậm so với khả năng của mình.
Cái mà một trường kinh tế dạy cho bạn không phải là cách hạch toán một khoản doanh thu đơn thuần vào tài khoản 511, mà là hiểu được cái doanh thu đó đến từ bao nhiêu chi phí, dòng tiền từ doanh thu đó thế nào. Nôm na là về tính chất kinh tế - tức là dùng các nguồn tài nguyên khan hiếm để có được kết quả, thành quả nhiều hơn. Thật may mắn là dù không có đam mê đi làm trong ngành kinh tế, nhưng mình lại lĩnh hội được cái tinh hoa kinh tế này để áp dụng nó vào mọi việc mình làm. Lúc đó cái mình thiếu là thời gian, mà chờ học hết 2 năm rồi mới bước chân đi làm là quá dài và uổng phí. Thế là mình xin đi làm ngay với hành trang trong tay là 1 project HTML mới hoàn thành. Các bạn có thể đọc thêm về nó ở đây: Chiếc CV đầu tiên của một sinh viên kinh tế chuyển ngành
Mặc dù chỉ có mức lương khởi điểm là 500k, gọi là trợ cấp đi lại thui. Các bạn sinh viên mới ra trường giờ có thể chê mức lương 5tr, 7tr thậm chí 10tr, thế nhưng với 1 người đi làm trong tâm thế chưa có gì trong tay như mình thì thế là may mắn lắm rồi. Và quả thật là quyết định đi làm ngay của mình trở thành một quyết định vô cùng sáng suốt. Mình học được vô vàn thứ trong quá trình làm, cả về chuyên môn lẫn business.
Đến 2017, mình lấy chứng chỉ Aptech với xếp loại cao nhất (Distinction) và có trong tay 2 năm kinh nghiệm xây dựng Hệ thống analytic "sương sương" từ dữ liệu 30 triệu người dùng .
Điều mình vẫn tự hào ở giai đoạn mông lung khó khăn khởi đầu sự nghiệp là mình không bỏ dở những gì mình đã bắt đầu - ngay cả khi đã chọn rẽ sang con đường khác. Mình vẫn hoàn thành bằng cử nhân tài chính ngân hàng NEU dạng xuất sắc (và còn ra trường sớm nửa năm) sau khi bắt đầu đi học Aptech, và cũng hoàn thành chứng chỉ Aptech đúng hạn sau khi mình đã đi làm ngay kỳ 1. Biết khi nào nên từ bỏ để đi con đường khác đã khó, nhưng đi con đường khác rồi mà vẫn không bỏ dở công sức cũ của mình còn khó hơn.
Đi làm vài năm rồi sự nghiệp sẽ đi đâu?
Đây chính là giai đoạn mất phương hướng tiếp theo sau khi đã đi làm. Cái giai đoạn mà tầm 2-3 năm kinh nghiệm ấy. Bạn cảm giác mình cũng học được nhiều thứ rồi, code cũng cứng tay chút, có khi lại còn quản lý 1-2 đứa fresher nữa. Nhưng rồi làm mãi làm mãi bạn sẽ có lúc tự hỏi: sự nghiệp tiếp theo của mình sẽ đi về đâu?
Mình cũng rơi vào hoàn cảnh ấy, đặc biệt là thời điểm rời công ty đầu tiên để tìm kiếm công việc mới. Cảm giác lúc ấy phải chuẩn bị phỏng vấn rất nhiều công ty và điều mà nhà tuyển dụng hỏi mình đến chính mình cũng không biết và chả bao giờ nghĩ đến: Em thấy mình ở đâu sau 5 năm nữa?. Thật sự nghe câu hỏi thì rất là buồn cười, trưa nay ăn gì em còn chưa biết nữa là 5 năm nữa. Thế nhưng đúng là ở giai đoạn này cần phải định hình lại sự nghiệp và con đường phát triển tiếp theo. Thời gian vẫn là nguồn tài nguyên khan hiếm mà tuổi trẻ đã dần lấy đi mất của bạn, và thứ bạn quyết định trong giai đoạn này sẽ là thứ xác định xem 10 năm tiếp theo của bạn có phải chỉ tương đương 1 năm kinh nghiệm hay không.
Nói thì trừu tượng thế chứ thật ra lúc đó cụ thể với mình chỉ là: mình đang là 1 backend PHP, vậy giờ mình sẽ xin việc là backend PHP tiếp, rồi học sâu thêm về Laravel hay Yii à? Mình sẽ học thêm gì để trở thành Senior? Senior thì hơn gì mình? Cũng chỉ ngồi code echo rồi die như mình hay sao?
Hành trình phỏng vấn gian nan đã dạy cho mình nhiều thứ, có những ngày mình phỏng vấn cả ngày từ 8h sáng đến tận 6h tối (4 công ty mỗi công ty đều ngồi 2 tiếng). Mình cảm giác rằng đây không phải là mình đang đi tìm công ty, mà là mình đang đi tìm chính mình trong tương lai vậy.
Có một công ty phần mềm mình không nhớ của Đức hay Thụy Điển lúc phỏng vấn có hỏi mình những câu cực kỳ cụ thể về PHP kiểu như là: muốn làm cái này thì dùng function nào luôn. Lúc phỏng vấn họ cũng nói thẳng họ tìm Senior PHP tức là 1 người chỉ chuyên sâu về PHP thôi, làm 5-7 năm và biết hết mọi ngõ ngách của PHP và framework Zend. Ok không phù hợp mình đi về. Thế nhưng buổi phỏng vấn cũng làm mình suy nghĩ khá nhiều về định nghĩa Senior mà nhiều công ty đang đăng tuyển. Vậy là họ chỉ muốn tuyển 1 người làm PHP quen tay đến mức có thể code trên giấy (bài test code PHP của họ trên giấy) và gọi đó là Senior?
Tiếp tục phỏng vấn thêm nhiều công ty khác, cũng vẫn với vị trí PHP developer và điều mình nhận ra: phần lớn các công ty outsource thường tìm người na ná như công ty mình phỏng vấn ở trên, hỏi cũng thường liên quan nhiều đến kỹ năng php chuyên sâu, OOP, design pattern,... Trong khi đó ở những công ty product thì phạm vi hỏi sẽ rộng hơn, từ việc mình đã tối ưu database như nào, đóng góp của mình vào quy trình triển khai ra sao, mình giải quyết bài toán tổng thể như nào, xây tính năng sản phẩm ra sao blablo,... Kích thước công ty cũng quan trọng, tập đoàn to thì thường tìm người làm 1 việc nhiều, còn công ty nhỏ thì hay tìm người làm được nhiều việc.
Có vẻ như mình thích cách tiếp cận của công ty product nhỏ hơn, nhưng khi có 1 nhà tuyển dụng hỏi tại sao mình lại thích product hơn là outsource thì mình lại không trả lời được. Đây chính là lúc mình thấy mông lung nhất trong sự nghiệp. Không biết nên làm môi trường nào, không biết phát triển tiếp sự nghiệp hướng nào.
May mắn là mình đã đọc ở đâu đó trong mấy cái bí kíp chuẩn bị phỏng vấn cách để thấu hiểu bản thân đơn giản nhất là đi ngồi viết ra chính những sở thích, điểm mạnh, điểm yếu của mình. Nghe thì khá stupid nhưng mà việc viết hẳn ra giấy khoảng 20 sở thích, 20 điểm mạnh, 20 điểm yếu mà bạn có thể nghĩ ra về chính mình thật sự là một việc rất thách thức chứ không dễ đâu nhé. Mình ngồi viết thử và kinh hoàng nhận ra có những về mình nó vẫn ở đó nhưng mình không nhận ra, hoặc mình không dám thừa nhận, không chịu thừa nhận.
1 số kết quả quan trọng mình thu lượm được từ quá trình này:
- Cách học hiệu quả với mình là trả lời câu hỏi của người khác, điều này thì đã thể hiện từ thời đi học rồi.
- Mình có trí nhớ kém, nhưng lại thích viết, nên viết ra kiến thức để thoải mái quên đi. Đây cũng là thời điểm mình bắt đầu viết blog.
- Mình có khả năng học cái mới rất nhanh, nhưng lại bị cái là nhanh chán. Thế nên cách để mình luôn giữ được lửa nghề là làm công việc nào cần liên tục học cái mới, những công việc của một Generalist (người biết tổng quát) sẽ cực kỳ phù hợp.
- Mình có khả năng tổng hợp kiến thức ở nhiều lĩnh vực khá tốt, cũng có nhiều góc nhìn đa chiều với 1 vấn đề, nên sẽ phù hợp với những vị trí kiểu kết hợp của nhiều team, kiểu như DevOps, Business Analyst, Data Engineer,...
- Mình thích các vị trí chuyên môn giải quyết vấn đề hơn là quản lý, do đó phát triển theo hướng quản lý team sẽ không phù hợp mà nên theo hướng chuyên gia, cố vấn kiểu như Solution Architect. Đây cũng là định hướng xa xôi nhất mà mình đang theo đuổi.
Ngoài việc hiểu bản thân ra, điều mà mình nhận ra từ việc đọc rất nhiều JD là các công ty đều thiếu người có kiến thức ở nhiều mảng bởi để giải quyết 1 vấn đề trong thực tế thì không phải chỉ biết mỗi lập trình hay database mà xong được, và những nghề có sự kết hợp kiến thức như thế (kiểu như DevOps - dù 2018 mình còn chưa biết DevOps là gì) sẽ là xu thế phát triển tất yếu.
Vậy là mình chọn 1 công ty product dạng startup nhỏ trong lĩnh vực ecommerce, nơi mà 1 người sẽ làm nhiều việc khác nhau, động đến nhiều business khác nhau. Với định hướng về Solution Architect mà bước đầu sẽ là DevOps, mình tập trung vào mở rộng kiến thức của mình về backend, quản lý hạ tầng, vận hành app, thiết kế hệ thống micro-services, tối ưu performance,... Có đích đến thì từng bước chân nhỏ của các bạn sẽ vững chãi và có động lực hơn.
Thợ đụng và những sai lầm
Làm một thợ đụng, hay một Generalist là một công việc rủi ro và dễ sa ngã. Khác với 1 Specialist là người có kiến thức chuyên sâu về một mảng, con đường của họ thường không có nhiều ngã rẽ mà thẳng cánh cò bay, kiên trì đi sẽ tới thì con đường của một Generalist đầy rẫy những ngã rẽ, những lựa chọn và rất nhiều ngõ cụt.
Bạn sẽ học công nghệ nào, học nó sâu tới đâu, cái này có cần thiết phải học không, học cái này như này đã đủ chưa, lựa chọn cái này hay cái kia,... là rất nhiều câu hỏi mà mình đã phải trả lời qua khi đi theo con đường Generalist. Không phải mọi sự lựa chọn đều đúng đắn. Bạn có thể đọc thêm về 1 số những lựa chọn sai lầm đó ở đây: Software Architect: Bad practices, hay ở đây: Performance Optimization 102: Scalability và câu chuyện về ảo tưởng distributed.
Thế mới thấy: bạn càng biết nhiều thứ, bạn càng biết nhiều công nghệ thì lại càng lậm và càng dễ bị dắt theo những ảo tưởng dẫn đến lựa chọn sai lầm. Nhưng thôi không sao, quan trọng là sau đó bạn có rút ra được bài học và có thể bước tiếp hay không. Một phương pháp học khá phổ biến đối với Generalist là phương pháp học theo mô hình chữ T:
Tư tưởng của nó là:
- Chọn lấy 1 mảng kiến thức lõi (như mình là chọn công nghệ backend) để học sâu
- Tìm hiểu nhiều kiến thức liên quan (như Operation, Business, Finance, Data,...) để biết nhiều hơn và ứng dụng được nhiều hơn trong công việc.
Biết được chữ T của mình sẽ giúp các bạn xác định được trọng tâm kiến thức ở đâu là gốc rễ, ở đâu là tán cây để biết chỗ nào thì nên đi sâu, chỗ nào thì nên phủ rộng.
Cụ thể hơn trong case của mình:
- Kết hợp giữa kiến thức chuyên sâu Backend và phủ rộng về Operation, mình xây dựng được quy trình DevOps, CI/CD và lập đội phản ứng nhanh với sự cố.
- Kết hợp giữa kiến thức chuyên sâu Backend và phủ rộng về Business và Data, mình xây dựng được hệ thống Data Lake, Data Warehouse và chính là người hiểu dữ liệu nhất để xây dựng hệ thống Data Analytic.
- Kết hợp giữa kiến thức Developer và Finance, mình xây dựng được kế hoạch tài chính và hệ thống dự báo doanh thu cho startup giai đoạn đầu.
Phần khó nhất ở đây chính là đoạn: Sâu tới đâu là vừa đủ ấy. Cái này thật sự là cần tự trải nghiệm thì mới xác định được chứ cũng không có công thức nào cả.
Ví dụ khi mình học về JWT, thì mình sẽ đào sâu xuống những gì?
- JWT gồm những thành phần nào
- Mã hóa trong JWT gồm những thuật toán nào, tính chất chung gì
- Cách tạo, kiểm tra signature, lấy data
Mình sẽ KHÔNG ĐÀO SÂU THÊM vào từng thuật toán mã hóa cụ thể, cách mã hóa đó được implement thế nào,...
Nhiêu đó là vừa đủ kiến thức chiều sâu để mình có thể sử dụng JWT trong dự án, biết nó vận hành ra sao, bảo mật nó thế nào,... rồi. Bạn có thể đi sâu thêm, nhưng hãy luôn nhớ: Thời gian là nguồn lực hữu hạn, hãy tận dụng nó hiệu quả.
Tổng kết
Câu chuyện cũng dài, mình xin tóm tắt lại bằng vài ý sau và action plan cho ai cần:
- Tìm hiểu bản thân bằng danh sách 20 sở thích, 20 điểm mạnh, 20 điểm yếu
- Dựa trên danh sách này chọn cho mình hướng đi nghề nghiệp phù hợp (Specialist hay Generalist)
Nếu lựa chọn của bạn là Generalist, hãy tạo ra chữ T của mình bằng cách:
- Chọn lựa một loại kiến thức nền tảng mà mình mạnh nhất làm gốc rễ. Học chuyên sâu về nó bằng các khóa học trên udemy hay coursera.
- Tham gia vào business nhiều hơn để mở rộng kiến thức của mình về các hướng khác nhau. Ví dụ tham gia triển khai hạ tầng để mở rộng về System, tham gia thiết kế tính năng sản phẩm trên design để mở rộng về UI, UX, tham gia xây dựng các báo cáo thống kê, phân tích chỉ số để mở rộng về data,... Mỗi khi đụng 1 mảng kiến thức mới, hãy tham khảo roadmap của nghề ấy kiểu roadmap.sh để biết sơ lược về những kiến thức đó.
- Tìm cách liên kết kiến thức ở mảng mới ấy với cái gốc của mình. Ví dụ mình học thêm frontend nhưng tập trung ở phần hiểu cách website hoạt động, cách render html, css, js từ server,... để liên kết kiến thức này với backend, hoặc học thêm system nhưng tập trung ở phần deploy app và monitor app để link nó với backend chứ không đi quá sâu vào quản trị hạ tầng.
- Luôn đặt tư duy hiệu quả, kinh tế lên khi lựa chọn. Kiểu hãy chọn công nghệ giúp sản phẩm nhanh tới tay user nhất, đem lại thành quả nhanh chóng nhất chứ đừng chỉ để thỏa mãn cái tôi: Tôi biết dùng dao mổ trâu khi giết gà.
1 practice rất hay mà mình học được khi theo đuổi Generalist là quá trình này:
- Tạo 1 sản phẩm hoàn chỉnh
- Hoàn thiện nó trên nhiều góc độ
- Ghi lại quá trình làm
- Demo: An Educational Side Project
Hết rồi, cảm ơn các bạn đã theo dõi tới giờ và xin 1 upvote nếu như các bạn cũng đang mông lung tìm hướng đi tiếp nhé.
Ngoài ra thì mình cũng đang open to work và có thể support các cá nhân, tổ chức tối ưu performance, thiết kế hệ thống, review hệ thống, giải quyết vấn đề,... với giá cả rất phải chăng, kaka =)))
All rights reserved