Nội dung chính
- Vì sao anh lại chọn trở thành Software Developer?
- Suốt quá trình mình làm Software Development, anh có thấy điểm cộng và điểm trừ gì không?
- Quan niệm của anh như thế nào về 1 Developer giỏi?
- Anh có thể kể lại những con đường anh đã đi qua để trở thành 1 Lead Programmer như hôm nay?
- Công việc thường ngày của Lead Programmer là gì vậy anh?
- Công việc của Lead chắc hẳn là phải có dẫn dắt cả con người. Vậy anh có bí quyết gì trong việc quản lý con người và giúp đỡ các bạn Developer trẻ phát triển không ạ?
- Đâu là sự khác biệt lớn nhất giữa Software Developer và Lead Programmer?
- Tố chất nào là quan trọng nhất với 1 Software Developer vậy anh?
- Anh từng trải qua sai lầm nào và anh học được gì từ nó?
- Anh nghĩ cơ hội nghề nghiệp đối với các bạn Developer sẽ như thế nào ạ?
- Anh có lời khuyên nào dành cho các bạn Developer trẻ?
“Khi công ty đưa một người có kỹ thuật tốt mà không có khả năng quản lý lên làm quản lý, công ty mất 1 người làm kỹ thuật tốt, đồng thời có thêm 1 quản lý tồi.”
Cùng đọc bài phỏng vấn của ITviec với anh Đào Minh Khánh – Lead Programmer của Pixelz – để nghe anh chia sẻ về:
- Những con đường anh đã trải qua để trở thành 1 Lead Programmer
- Những kỹ năng và tố chất cần thiết của 1 Developer giỏi
- Lời khuyên anh dành cho các bạn Developer hiện tại
Xem việc làm Technical Lead tại ITviec
Vì sao anh lại chọn trở thành Software Developer?
Thật ra lúc anh học cấp 3 xong, anh cũng không biết làm gì. Khoảng năm 1996-1997, anh hay mua linh kiện rồi lắp thành máy bộ để bán. Lắp nhiều thì thấy máy tính cũng hay, tò mò nên anh học lập trình luôn.
Suốt quá trình mình làm Software Development, anh có thấy điểm cộng và điểm trừ gì không?
Anh làm Software Development được 12 năm.
Có 1 câu rất nổi tiếng là: “I am a Developer. I control your life.” (Tạm dịch là “Tôi là Developer. Tôi kiểm soát cuộc sống của bạn.”)
Anh thích việc mình làm chủ phần mềm, phần cứng, điều khiển nó chạy, tự động hóa mọi thứ. Anh hài lòng khi thấy sản phẩm mình làm ra được đưa vào sử dụng thực tế ở các công ty hoặc được người dùng đón nhận.
Điểm dở là anh ít có thời gian dành cho bạn bè, gia đình. Hầu như lúc nào anh cũng bận.
Bận rộn đến từ nhiều yếu tố: 1) công việc của anh nhiều; 2) chất lượng sản phẩm của lập trình viên Việt Nam nói chung chưa cao, tỉ lệ lỗi nhiều.
Những người giỏi trong ngành phần mềm không nhiều. Anh từng phỏng vấn cho rất nhiều vị trí Developer của công ty. Nhưng tỉ lệ gặp được người tốt, làm được việc thì không nhiều.
Quan niệm của anh như thế nào về 1 Developer giỏi?
Theo anh, 1 Developer giỏi đáng giá bằng 10, thậm chí 100 Developer bình thường.
Người giỏi là người:
- Có thể hiểu vấn đề ngay
- Không mất quá nhiều thời gian để hiểu logic của phần mềm
- Giao tiếp với khách hàng ở mức vừa đủ để tìm hiểu chính xác yêu cầu
- Chất lượng phần mềm tạo ra đủ tốt để không gây nhiều hậu quả về sau
Ví dụ 1 bạn Developer kém có thể viết ra chương trình chạy được, nhưng sau này khi xảy ra sự cố thì bạn đó phải bỏ nhiều công sức để sửa chữa, maintain sản phẩm. Chắc chắn nó mất nhiều thời gian hơn là làm mới.
Nguyễn Xuân Huy – Tech Architect của Cybozu Vietnam: Developer giỏi không nhất thiết phải biết nhiều ngôn ngữ
Anh có thể kể lại những con đường anh đã đi qua để trở thành 1 Lead Programmer như hôm nay?
Anh bắt đầu với vị trí Junior Programmer ở FPT Software, rồi lên Senior Programmer, Project Manager. Xong anh cảm thấy mình không phù hợp làm Project Manager, nên anh chuyển lại làm Senior Programmer. Và hiện tại anh đang làm Lead Programmer của Remove The Background.
Trong nhiều công ty, nhất là công ty ở Việt Nam, người Developer thật sự làm được việc không nhiều. Vì vậy, người làm được việc thường được đẩy lên vị trí quản lý.
Nhưng có những người tuy kỹ thuật giỏi nhưng không biết gì về quản lý. Vậy thì, khi công ty đẩy người đó lên làm quản lý, công ty mất 1 người làm kỹ thuật tốt, đồng thời có thêm 1 quản lý tồi.
Thực ra các bạn Developer không nhất thiết phải trở thành một Manager. Anh biết nhiều bạn không thích làm những việc như quản lý team, tương tác con người nhiều thì các bạn có thể trở thành một Technical Lead làm chuyên sâu về kỹ thuật.
Tuy nhiên nếu làm Manager, trách nhiệm và tầm ảnh hưởng của bạn sẽ lớn hơn vì bạn trực tiếp quản lý con người, đưa ra các định hướng và quyết định quan trọng cho team. – Theo anh Phú, Country Manager của Knorex Việt Nam.
Anh nghĩ là mình rơi vào đúng tình huống đó, vì anh không biết gì và cũng không có hứng thú về quản lý. Anh thích làm kỹ thuật, thích code hơn.
Dĩ nhiên, đó chỉ là trường hợp của anh. Có những bạn khác phù hợp với vị trí quản lý, bạn đó có thể làm quản lý. Vấn đề anh đang nói ở đây là chuyện có phù hợp hay không. Không nhất thiết mình thấy 1 người làm kỹ thuật tốt thì nghĩ rằng họ cũng là 1 Project Manager giỏi.
Sebastien Auligny – Tổng Giám đốc khu vực Đông Nam Á của Gameloft: 3 lý do bạn không nhất thiết phải trở thành một Manager
Công việc thường ngày của Lead Programmer là gì vậy anh?
Nói chung thì nó cũng là công việc sản xuất phần mềm, là code thôi. Ngoài ra, có 1 số vấn đề, anh đưa ra quyết định làm gì, không làm gì và chịu trách nhiệm về quyết định của mình.
Có nhiều khi khách hàng đưa ra giải pháp và bắt mình phải thực hiện. Lúc đó, anh phản đối. Vì khách hàng chỉ được phép đưa ra yêu cầu. Giải pháp phải do những người có chuyên môn kỹ thuật đưa ra.
Lúc trước, anh từng gặp khách hàng như vậy. Và để họ vẫn vui vẻ chấp nhận chỉ-là-người-đưa-ra-yêu-cầu, thì đơn giản anh hỏi họ rằng “ai sẽ là người chịu trách nhiệm về giải pháp đó?”. Và họ không bao giờ dám chịu trách nhiệm hết.
Thỉnh thoảng anh gặp phải khách hàng không biết là họ muốn cái gì, họ mô tả rất mơ hồ. Thế là anh phải ngồi lại nói chuyện để làm rõ yêu cầu của họ. Với những khách hàng “mơ hồ” thế này, nếu không làm rõ mong muốn khách hàng mà nhảy vào làm phần mềm luôn thì rất dễ làm nên 1 dự án thất bại.
Anh Lê Việt An – Test Project Manager của TMA Solutions: Nhiều lúc cần phải cứng, nói “Không” với khách hàng
Công việc của Lead chắc hẳn là phải có dẫn dắt cả con người. Vậy anh có bí quyết gì trong việc quản lý con người và giúp đỡ các bạn Developer trẻ phát triển không ạ?
Công việc của anh là tạo động lực cho cả team. 2 điểm quan trọng nhất mà anh áp dụng trong công việc của mình là:
- Tạo điều kiện tốt nhất để mọi người hoàn thành công việc,
- Cho họ quyết định trong phạm vi công việc đang làm.
Anh luôn tạo môi trường làm việc thoải mái nhất cho các bạn, về cả cơ sở vật chất, phương tiện làm việc, quản lý thời gian, quyền hạn của cá nhân từng bạn.
Ví dụ, anh thấy máy tính của bạn A chậm, anh thay máy tính khác chạy nhanh hơn cho bạn đó. Thấy có bàn phím cơ dùng rất thích, anh mua cho mỗi bạn 1 cái.
Anh cho các bạn tự quản lý thời gian của mình. Không quan trọng là từng bạn đến sớm hay muộn, về sớm hay muộn, 1 ngày làm bao nhiêu giờ, xin nghỉ nhiều hay ít. Miễn sao các bạn xong việc đúng thời hạn là được.
Các bạn có quyền quyết định trong phạm vi công việc của mình. Không cần lúc nào cũng phải đi xin ý kiến, chờ đợi cấp trên duyệt từng chút một.
Anh muốn trao cho các bạn 1 quyền hạn đủ lớn để tự ra quyết định và tự chịu trách nhiệm cho công việc của mình. Cái đó không chỉ giúp các bạn trong công việc hiện tại, mà còn giúp các bạn rèn luyện kỹ năng ra quyết định tốt hơn. Để về sau nếu các bạn không còn làm ở đây, mà đi công ty khác, các bạn vẫn mang theo kỹ năng đó để có thể dễ dàng lên vị trí Senior, Leader hay Manager.
Đâu là sự khác biệt lớn nhất giữa Software Developer và Lead Programmer?
Điểm khác biệt lớn nhất chính là: người Lead phải đứng ra giải quyết các tình huống khó khi Developer không quyết định được, không biết nên làm hay không, hay nên làm theo hướng nào.
Như ví dụ ở trên, khi khách hàng đưa ra cả yêu cầu lẫn giải pháp, thì Developer không biết là nên làm gì với giải pháp đó của khách hàng. Lúc ấy anh đã nhảy vào và phản đối chuyện làm theo giải pháp đó. Đồng thời đề nghị các bạn Developer tự đưa ra giải pháp cho yêu cầu của khách hàng.
Dĩ nhiên là để đưa ra được quyết định, mình cần có cái nhìn tổng thể về sản phẩm, cũng như cái nhìn về xu hướng công nghệ. Hoặc phán đoán tương lai người dùng, khi sử dụng sản phẩm người ta mong muốn điều gì. Cái này phải dựa vào kinh nghiệm, tức là em làm nhiều thì em sẽ phát triển được suy luận của mình.
Anh Thành Phan, Head of R&D Atlassian tại Việt Nam: Sự khác nhau giữa coding và managing
Tố chất nào là quan trọng nhất với 1 Software Developer vậy anh?
Anh nghĩ tính kiên nhẫn là quan trọng nhất. Kiên nhẫn để theo đuổi đến cùng.
Nhóm ngành kỹ thuật nói chung, muốn giỏi phải rèn luyện và thực hành rất nhiều. Phải trải qua nhiều dự án, “bị đánh đập nhiều” thì mới giỏi được. Nếu không kiên nhẫn thì không thể trải qua quá trình khổ luyện đó.
Anh từng trải qua sai lầm nào và anh học được gì từ nó?
Lúc trước, có 1 dự án, anh hiểu sai yêu cầu của khách hàng. Vì hiểu sai nên khi thực hiện, thì làm sai hết, kết quả là dự án thất bại. Kết quả là anh cũng tự xin nghỉ khỏi bộ phận đó luôn.
Hồi đó anh cũng gặp 1 khó khăn về mặt khách quan là khách hàng thì nói tiếng Nhật mà anh thì không biết tiếng Nhật. Hai bên phải nói chuyện qua 1 bạn phiên dịch.
Khó khăn về mặt chủ quan là do anh. Anh nghĩ rằng mình đã đủ giỏi, đã hiểu yêu cầu khách hàng mà không xác nhận lại, không hỏi ý kiến ai hết, tự mình làm luôn.
Khi trải qua hết mọi chuyện, anh học được rằng, kỹ năng nhận yêu cầu của khách hàng là 1 trong những kỹ năng quan trọng nhất khi làm phần mềm. Vì người làm phần mềm là cầu nối giữa yêu cầu khách hàng và sản phẩm. Nếu mình không hiểu yêu cầu khách hàng thì sản phẩm sai là chuyện không tránh khỏi.
Anh Phan Duy Khánh – Project Manager của Studio 60: Giao tiếp tồi phá hủy sự nghiệp Project Manager
Anh nghĩ cơ hội nghề nghiệp đối với các bạn Developer sẽ như thế nào ạ?
Ngành nào cũng có nhiều cấp độ để mình tiến lên, kể cả ngành kỹ thuật.
1 bạn Software Developer có thể đi theo hướng Fullstack Developer, hoặc Software Architect. Những con đường này, nếu đi lên đỉnh cao, cũng vinh quang không kém gì Manager.
1 hướng đi khác nữa là tập trung chuyên sâu về 1 domain nào đó. Ví dụ như ngân hàng tài chính, hay là chuyên sâu về 1 ngôn ngữ như C++ hoặc Python, làm khoảng 10-20 năm cũng cực kì có giá trên thị trường.
Dĩ nhiên không phải ai cũng có thể vươn lên trình độ cao, vì nó còn phụ thuộc nhiều yếu tố. Nhưng mà rõ ràng là mình đã nhìn thấy con đường như vậy mà mình lại không cố gắng thì không được. Ít nhất phải nói được rằng là “tôi đã cố hết sức.”
Anh có lời khuyên nào dành cho các bạn Developer trẻ?
Anh nghĩ rằng Tiếng Anh rất quan trọng. Việt Nam có nhiều thứ thua kém thế giới. Hầu hết các thứ hay ho đều được nói hoặc viết bằng tiếng Anh. Có tiếng Anh thì mình mới vượt qua rào cản ngôn ngữ đầu tiên để nghe, học, đọc những thứ hay ho từ thế giới.
Còn chuyện sau đó, mình có biến nó thành của mình được không là chuyện khác. Nhưng trước mắt là mình phải biết, hiểu người ta có gì hay đã.
Riêng chuyện lấy yêu cầu của khách hàng, thì khách hàng dùng tiếng Anh, mình không biết tiếng Anh thì sẽ không lấy được yêu cầu.
John Sonmez: 7 sai lầm thường gặp trong sự nghiệp lập trình
Tiểu sử:
Anh Đào Minh Khánh tốt nghiệp trường Aptech năm 2003. Anh làm ở FPT Software khoảng 7 năm, sau đó anh chuyển qua vài công ty nhỏ khác.
Từ năm 2011, anh công tác ở Pixelz, một công ty của Đan Mạch với vị trí Lead Programmer. Công việc của anh nói chung cũng là code như bao Developer khác thôi.
Nếu bạn nghĩ những chia sẻ này có thể giúp ích cho bạn bè hoặc đồng nghiệp thì đừng ngại nhấn nút Share bên dưới nhé!
Tham khảo việc làm Technical Lead tại ITviec!