Đây không phải là một bản hướng dẫn hay định hướng nghề nghiệp, bài này chỉ đơn giản là "nhìn lại" của bản thân mình.
“Giá trị thật sự không nằm trong sản phẩm, nó nằm ở người bạn trở thành để làm ra nó.”
Còn nhớ lần đầu tiên mình chạm tay vào code là những ngày cuối năm lớp 11,
lúc đó do chuẩn bị cho kì thi đại học và những năm tháng học đại học sắp tới (có
lẽ
cha mình tin mình chắc chắn đậu :vvv) cha mình đã mua cho mình một chiếc laptop
cũ xách tay.
Lúc đầu mình chưa biết phải làm gì với nó cả, mình chỉ có một thắc mắc duy nhất,
làm sao mà người
ta có thể tạo ra một thứ gì đó từ hư không? Ý mình là, sao người ta có thể tạo
ra một thế giới
của chính họ như game? Lúc đó trong trường cấp ba mình cũng có học về môn tin
học, có lẽ mình
khá có năng khiếu với môn này, lúc này trường dạy lập trình Pascal, lập trình
về cách giải phương
trình bậc hai, mình lại thắc mắc từ những dòng code này lại có thể làm ra một
thế giới riêng sao?
Mình bắt đầu học code, qua các khóa học online, từ lập trình web, lập trình app
android, lúc đó
mình cũng có thử publish app lên Google Play nữa. Vậy là gần như thời gian năm
lớp 12 ngoài học trên
trường, thì gần như mình danh toàn bộ thời gian cho việc học code và lập trình
dù nó chỉ là sở thích lúc này.
Cuối năm 12 mình quyết định thi vào ngành liên quan đến phần mềm, có thể là Công Nghệ Thông Tin hoặc Kỹ Thuật Phần Mềm, mình đậu vào ngành Công Nghệ Thông Tin của trường Đại học Sư Phạm và Kỹ thuật Thành phố Hồ Chí Minh (HCMUTE), thật ra không phải vì lúc đó ngành này là nghành hot hay gì đâu, chỉ là mình cảm giác tự học như vầy là chưa đủ, mình muốn làm ra một thứ riêng của mình, một thế giới riêng, một đế chế riêng, mộng mơ của tuổi trẻ nói với mình là như vậy.
Năm 3 đại học mình bắt đầu đi làm, có thể nói là cột mốc bước vào đời với việc
chọn phần mềm sẽ là con đường
theo đuổi chuyên nghiệp, nghe như thể thao ha :vvv, mình bắt đầu với vị trí lập
trình app di động (mobile developer)
chuyên môn là Flutter, lúc này tại Việt Nam có thể nói là hiếm người làm về
Flutter, lúc này người ta
ưa chuộng React Native hơn và Flutter là một cái tên mới nổi, mình chọn Flutter
đơn giản vì nó dễ cài hơn
React Native. Tại nơi làm việc đầu tiên này, mình được làm việc trực tiếp với
một anh tech lead, có thể nói
là hình mẫu cho mình lúc đó. Khi làm việc chung với anh mình có cảm giác, anh là
một nghệ nhân, chứ không
chỉ là một người code. Code của anh nó chăm chút, kỹ lưỡng và dễ mở rộng, phải
nhấn mạnh từ "dễ mở rộng"
vì với một đứa nào giờ chỉ code một mình, làm theo bản năng như mình thì "dễ mở
rộng" là một cái tình chất
rất xa lạ và trong trường cũng không dạy nhiều về cái tính chất này. Mình có cảm
giác như code của anh lead
đó viết có thể sử dụng lâu dài (có thể nói là 2-3 năm kế tiếp) mà không cần phải
thay đổi một dòng nào dù
cho kế hoạch kinh doanh của công ty, của sản phẩm có thay đổi ra sao, có lẽ anh
có khả năng nhìn xuyên thời
gian về tương lai và chuẩn bị trước cho nó. Cách anh code giống như một người
thợ điêu khắc, chăm chút và tập
trung tuyệt đối vào tác phẩm của mình, như cách mà Richard Sennett[02] nói trong
The Craftman (2008): "The desire
to do a job well for its own sake", tạm dịch là muốn làm tốt công việc bởi vì
chính công việc đó đã có ý nghĩa.
Anh là một nguồn cảm hứng lớn đối với mình, mình cũng bắt đầu tập trung vào làm
sao có thể làm ra một sản phẩm
tốt như cách của một nghệ nhân, kiên nhẫn, cần mẫn và chăm chút. Giờ nghĩ lại,
có vẽ đó là khoảng thời gian khá
tốt và chất lượng để nuôi dưỡng tinh thần này, vì thật sự chắc do công ty cũng
nhỏ nên không có quá nhiều việc
để chạy đua.
Cũng chính tại công ty này mình nhận ra một điểm xấu đầu tiên tới từ chính bản thân mình, đó là mình làm việc nhóm như hạch và giao tiếp nhóm kém hơn bản thân mình nghĩ rất nhiều. Mình không thể nói rõ suy nghĩ, giải pháp của bản thân, không thể làm rõ yêu cầu, mình ghét khi bị người khác review code, mình muốn trở về làm việc một mình. Mình biết chứ, rằng trong ngành này không thể tạo nên cái gì lớn lao khi đi một mình cả, à mà chắc ngành nào cũng vậy thôi, nên mình quyết định sửa. Mình học cách để nói rõ ràng hơn, khúc chiếc hơn, học cách nhìn nhận code review khác đi, nó không phải là để bắt lỗi mà là để nâng cao tiêu chuẩn của cả nhóm. Từ từ thì mình cũng thoải mái hơn, nó không phải là chuyện một sớm một chiều, nhưng khi chấp nhận bước đi bước đầu tiên thì sớm hay muộn cũng sẽ đến đích thôi nhỉ.
Sau công ty đó mình đến với công ty tiếp theo tại đây mình lại học được kha khá điều quan trọng khác. Đây là một công ty outsource, cũng nhỏ nhưng lớn hơn công ty trước một chút, tại đây mình được làm việc trực tiếp với các khách hàng, đi một quy trình xuyên suốt từ requirement, implement, validation, operation, ...etc, đó cũng là một sự may mắn, tại đây mình cũng đã lead vài dự án dù có thể nói là mình là người trẻ nhất công ty tại thời điểm đó. Tại đây mình hiểu được làm việc với khách hàng và operation trên môi trường production là một thử thách, một chân trời hoàn toàn khác với việc chỉ trong R&D. Trách nhiệm gánh trên vai phải gọi là lớn hơn rất nhiều, vì phải đối mặt với khách và phải đảm bảo quyền lợi của anh em đồng nghiệp bên dưới. Tại đây mình học về cách phân chia công việc, à không, cách phân tách công việc trước mới đúng. Mình học được lúc nào nên xin thêm nhân lực, lúc nào không, lúc nào chấp nhận trễ deadline và nghe chửi thay vì cứ bán mạng OT để cho kịp. The Mythical Man Month[01] là một trong số những quyển sách đã giúp đỡ mình rất nhiều trong giai đoạn này và mình gợi ý các bạn nào làm chuẩn bị làm lead (hay đã lead) nên đọc quyển này, dù rằng có nhiều thứ đã có thay đổi, đặc biệt trong thời đại nhanh như hiện nay, nhưng những nguyên tắc cốt lõi gần như không thay đổi.
Tại công ty thứ hai này mình biết đến một cái tốt khác, một niềm vui khác của ngành phần mềm, đó chính là "nụ cười khách hàng". Thành thật mà nói, từ lớp 11 cho đến lúc mình nhận ra điều này, mọi thứ mình làm trong ngành vì cái tôi cá nhân rằng "tôi muốn xây dựng một thứ tuyệt vời của riêng tôi" chứ không phải là "làm một cái gì đó tuyệt vời cho thế giới" hay giúp đỡ một ai đó. Trong project làm một ứng dụng quản lý giường bệnh và ca làm việc cho bệnh viện, mình có cơ hội làm việc trực tiếp và nghe những feedback trực tiếp từ những y tá, hộ lý và những quản lý ở bệnh viện, họ nói ứng dụng đã giúp công việc hàng ngày của họ trở nên nhẹ hơn một chút, họ không còn tốn quá nhiều thời gian như trước và có thể dành thời gian dư ra đó để dành cho bản thân, nghỉ ngơi một chút và điều đó làm họ khá là vui. Cảm xúc mình khi nghe được những feedback như vậy khá là lân lân, là rằng wow một tốt cũng là làm điều tốt nhỉ, nó có thể giúp đỡ người ta như vậy. Và có lẽ từ khoảng khắc đó, bên cạnh cái tôi cá nhân, mình có thêm yếu tố "nụ cười khách hàng" vào những sản phẩm mình làm, liệu sản phẩm này có thể làm họ cười không? Có thể giúp cuộc sống họ tốt hơn một chút gì đó không?
Nhưng biết tới "nụ cười khách hàng" cũng là một lời nguyền, mình nghĩ lời nguyền này sẽ ám ảnh những ai muốn làm ra được một sản phẩm có ý nghĩa, muốn thấy công sức của bản thân thực sự đến được và thay đổi cuộc đời của ai đó. Ám ảnh là vì điều này thật sự rất hiếm trong giới này, những con số theo dõi về trải nghiệm người dùng, của khách hàng hiếm khi đến được với những người chính tay làm ra sản phẩm đó, đội ngủ R&D, các developer. Những người bị ám bây giờ sẽ bị kẹt giữa một vòng lặp vô tận, "tôi muốn làm một thứ có ý nghĩa" và "nó thực sự có ý nghĩa không", đây là cái xấu tiếp theo mà mình nghĩ các bạn dev nên để ý tới, hãy cẩn thận với nó.
Mình cũng học được nhiều điều từ công ty thứ hai này, cả trong code hay không trong code, mình từ bỏ việc tập trung vào những pattern sang tập trung vào nguyên lý, bản chất. Mình học được rằng những kỹ năng không phải code cũng những kỹ năng quan trọng trong ngành phần mềm nào là giao tiếp, nào là quản lý expectation, nào là có trách nhiệm với khách hàng và người dùng. Nhiều lần phải thức thâu đêm debug, cùng anh em đồng nghiệp xử lý vấn đề trên production cũng cho mình bài học về technical debt và trải nghiệm của developer. Tiêu chuẩn code chuyển từ ready thành production-grade. Hành trình tại đây góm phần lớn giúp mình hình thành con người như mình hiện tại.
Sau gần ba năm làm việc tại công ty thứ hai, mình quyết định nghỉ việc, mình đến
với công ty thứ ba, lần này là một công ty
phần mềm lớn, đa quốc gia, chuyên về bảo mật. Đây là một hành trình đặc biệt vì
ngày trước khi mình vào công ty nó đã cho mình
một bài học, người ta chỉ thấy bạn qua những thứ bạn thể hiện, vì vậy hãy thể
hiện nhiều vào, ý mình không phải là phô diễn mà
là hãy thể hiện hết mức khả năng của bản thân có, hãy tự tin lên, chuẩn bị kỹ
lưỡng đến mức gần như bạn không thể sai.
Tại đây mình làm việc trong hệ thống lớn và mọi thứ rất khác biệt, khách hàng là
những doanh nghiệp lớn và có tiếng tăm, tất nhiên,
họ sẽ có yêu cầu rất cao. Khi làm với những khách hàng nhỏ họ đề cao sự đa
nhiệm, sáng tạo và nhanh, với các khách hàng lớn
họ đề cao tuyệt đối sự bền bỉ và ổn định. Những khái niệm về SLA, SLO cần
được tuân thủ sát sao hơn bao giờ hết. Việc làm trong
một hệ thống lớn đem lại một sự kích thích trí tuệ rất lớn và mình rất thích nó.
Có cái tốt mới thì cái xấu mới cũng sẽ đi kèm, trong một hệ thống lớn, tính "quy trình" luôn là một rào cản cho sự "tốc độ" của ngành phần mềm, việc phối hợp giữa các team, các phòng ban luôn có rào cản. Và khó chịu nhất chính là "chính trị văn phòng", mình không ghét nó, nó là điều tất yếu trong một hệ thống lớn, nhưng mình kiệt sức khi nó chiếm quá nhiều không gian trong quyết định. Tại đây mình học được một bài học quan trọng khác, hãy tập trung vào làm những việc thực sự quan trọng. Hãy can đảm để làm điều đó, tại sao lại cần can đảm ư, vì trong môi trường công ty lớn điển hình, mọi hoạt động phải gắn liền với lợi nhuận và những điều quan trọng thường tốn khá nhiều thời gian để đem lại lợi nhuận đó. Quản lý xung đột, giao việc và trainning cho team member cũng là những kỹ năng cần có thêm ở môi trường này.
Trải qua bảy năm trong ngành này với tư cách từ một dev chuyên nghiệp nói riêng và hơn mười năm kể từ dòng code đầu tiên những điều đẹp đẻ mà ngành này đem lại cho mình không ít.
Lập trình giúp mình thỏa mãn cái tôi của bản thân, mình muốn hiểu mọi thứ, muốn thử tạo ra mọi thứ trên đời, lâp trình cho mình cái cảm giác đó, nó đem lại cho mình cảm giác có thể tạo ra một cái mới từ hư không, hiện thực hóa một ý tưởng trong suy nghĩ ra đời thực. Và có thể có cả những phép màu đem lại tiếng "WoW" cho người dùng.
Lập trình là một ngành có lương khá cao so với mặt bằng chung có thể nói mình gia nhập vào thời đại vàng của ngành này nên lợi ích kinh tế nó đem lại cho mình khá nhiều. Mình có thể tự nuôi sống bản thân từ những ngày đầu đi làm và còn có thể phụ giúp gia đình một chút.
Công nghệ, phần mềm là luôn phải học hỏi và trau dồi không ngừng nghỉ, không có khái niệm "đủ rồi", luôn có thứ mới được sinh ra và luôn phải học. Điều này giúp bản thân mình luôn phải trau dồi và tiến lên, là động lực cũng là áp lực. Trong ngành này sẽ không ngoa nếu nói rằng "đứng yên là đi lùi". Mà thật ra trong bối cảnh hiện đại, ngành nào cũng như vầy thôi, tri thức luôn sinh ra mà.
Những cái xấu mình cảm nhận trong ngành này cho đến hiện tại, gọi là xấu nhưng không có nghĩa là chúng thật sự xấu xa, chỉ là với mình những cái xấu sẽ lấy đi năng lượng của bản thân nhanh và nhiều hơn những cái bình thường.
Đặt con người vào đây không phải vì bản thân họ xấu, ý mình là việc giải quyết các vấn đề liên quan tới con người luôn khó hơn là liên quan tới hệ thống, với hệ thống bạn có thể chuẩn bị, có phương án dự phòng, có metrics để đo, có log để xem. Còn với con người, bạn không có gì cả, không biết suy nghĩ của họ và mỗi người lại là một cá nhân khác biệt và phải xử lý khác nhau. Có người kỹ năng giỏi nhưng cái tôi quá lớn, có người kỹ năng bình thường nhưng lại là trái tim tinh thần của cả team, có người, có người nói thì hay, làm thì ít, còn có người nói ít lại làm nhiều. Hãy học cách đừng "trông mặt mà bắt hình dong", hãy quan sát, "kiểm tra" một chút, hãy hòa nhã nhưng có khoảng cách, và quan trọng là hãy giữ tốt giới hạn của bản thân.
Các công ty công nghệ luôn ám ảnh về tốc độ, nó dường như là một truyền thống của ngành này, làm nhanh, release nhanh, lead time phải ngắn,...etc. Bạn phải học cách làm quen với điều này và yeah áp lực lớn là chuyện hiển nhiên.
Môi trường làm việc có tác động rất lớn tới bản thân, một môi trường tốt có thể làm cho bạn thấy tôi sẽ cống hiến mọi thứ cho công ty này, ngược lại, một môi trường tệ sẽ bòn rút năng lượng của bạn và mỗi ngày đi làm sẽ giống như địa ngục trần gian. Nếu bạn hỏi mình làm sao để biết môi trường đó tốt hay tệ, well, câu trả lời tốt nhất mình có thể đưa ra là hãy tự cảm nhận, nếu bạn đi làm thấy vui vẻ thoải mái, tinh thần phấn chấn, có lẽ nó là môi trường tốt, ngược lại thì nó tệ. Và có một tin vui và một tin buồn, không có môi trường nào là tốt hay tệ mãi mãi. Và khi bạn thấy nó không còn phù hợp nữa, hãy rời đi nhanh nhất có thể.
Những cái tệ được mình liệt kê ở đây vì nó tác động đến chính bản thân của mình. Ý mình là, nó không chỉ là những thứ bên ngoài, mà là trong chính thân tâm trí của bản thân.
Càng đi làm lâu, sức khỏe sẽ là thứ càng được quan tâm trong ngành này vì áp lực liên miên lên tinh thần, ngồi hoài một chỗ, ít vận động, sẽ làm cho tình hình sức khỏe ngày càng xuống cấp. Nó sẽ không xuống một cách đột ngột, nhưng sẽ từ từ và âm ỉ. Có thể là đau lưng, mở máu, stress, ...Hãy chú ý chăm sóc sức khỏe bản thân tốt hơn, một cái ghế tốt, tập thể dục thường xuyên sẽ giúp ích rất nhiều nếu bạn theo đuổi ngành này.
Người ta thường hay nghĩ "burn out" là một cái gì đó do làm quá nhiều, quá stress,...thật ra mình không nghĩ vậy, burn out sẽ xuất hiện khi không thấy được ý nghĩa trong việc làm hàng ngày của mình. Nó là một biểu hiện của lời nguyền "nụ cười khách hàng" mình đã nói ở trên. Nhiều việc có thể gây stress, cái này cũng cần quan tâm, burn-out đến từ những thứ sâu sắc hơn, mình nghĩ vậy. Mình nghĩ nếu bạn đột nhiên cảm thấy sao mọi ý nghĩa mình từng theo đuổi đột nhiên biến mất, bạn thấy trống rỗng, có lẽ bạn đang bị burn-out và tin mình đi, bạn cần một khoảng thời gian thực sự nghỉ ngơi để xem xét lại hành trình của bản thân. Ngoài sức khỏe vật lý, sức khỏe tinh thân là thứ mà ngành này tấn công mình nhiều nhất.
Well, chỉ vì, mình còn thích nó, vậy thôi. Mình vẫn muốn làm ra một thứ gì đó, mình vẫn muốn trải nghiệm "nụ cười khách hàng", mình vẫn muốn được kích thích trí tuệ bởi những vấn đề khó.
Mình ở trong ngành này đủ lâu và nó cũng cho mình đủ thứ cơ hội để phát triển, để tiến bộ và tiền nữa, haha. Có thể mình sẽ làm ở một ngành nghề khác sau này, nhưng phần mềm, công nghệ vẫn sẽ luôn là một phần trong cuộc sống và công việc của mình.
Nếu có thể gặp lại bản thân ở tuổi 20 và bước những bước đầu chuyên nghiệp trên con đường náy mình sẽ khuyên phiên bản trẻ đó của mình vài điều sau đây
Còn lại nhiều thứ khác, nhưng trên con đường làm việc và trong đời sống, sớm muộn những bài học cũng sẽ đến đúng thời điểm đúng lúc và hãy tự trải nghiệm.