Software Engineer làm về Machine Learning: góc nhìn từ Cinnamon AI | Phần 4: “một ngày làm việc của SE ở Cinnamon AI”

Cinnamon AI
8 min readDec 12, 2019

--

Adrian là một SE trẻ hiện đang làm việc tại Cinnamon AI, với thời gian không quá ngắn nhưng cũng chưa quá dài gắn bó với công ty, Adrian cũng đã có những ghi nhận của riêng mình về tiềm năng phát triển cũng như cơ hội để lựa chọn hướng đi cho mình. Mặt khác, Adrian cũng sẽ mang lại cho các bạn đang quan tâm vị trí SE ở Cinnamon về công việc hàng ngày của một SE và làm thế nào để cân đối giữa nhiều yêu cầu và task khác nhau:

Backend, system & những công việc thú vị hơn

Mình đã làm việc ở Cinnamon được gần 7 tháng. Trước đó thì mình đã có 2 năm công tác ở VCCloud thuộc VCCorp làm về backend và system, sau đó mình làm cho một startup về Blockchain là Midas Protocol cũng ở vị trí tương tự. Sau đó mình có hứng thú tìm hiểu về Data và Machine Learning nên làm ở Techcombank tầm 4 tháng và cuối cùng thì chuyển sang Cinnamon AI.

Ở Cinnamon, mình trở lại công việc chính là SE: làm việc với system, thuật toán, giải quyết các vấn đề liên quan đến cấu trúc code, input — output… cùng với đó là những công việc thú vị như tham gia các dự án nội bộ liên quan trực tiếp đến kết cấu của dự án nhằm cải thiện quy trình làm việc của anh em SE.

Sự khác nhau giữa làm sản phẩm nội bộ & làm sản phẩm cho khách hàng

Cinnamon là công ty đầu tiên mình làm có các dự án mà khách hàng không ở Việt Nam, và cũng là công việc SE đầu tiên mà mình làm liên quan đến Machine Learning, các công việc trước thì thuần tuý làm về hệ thống thôi. Ở các công ty trước đây mình làm, sản phẩm hầu như mang tính nội bộ, và chỉ tập trung vào một dự án trong một thời điểm, vậy nên công việc hàng ngày của mình sẽ chỉ xoay quanh dự án đó. Còn ở Cinnamon mình có cơ hội làm nhiều dự án cùng một lúc, như hiện tại thì mình đang làm 3 dự án chính và một số dự án phụ mình tham gia với vai trò đóng góp ý kiến hay hỗ trợ. Khi có nhiều dự án trong cùng một thời điểm, mình cần phát triển các kĩ năng quản lý thời gian, ghi chép để nắm bắt được mình đang làm những cái gì. Hồi trước làm 1 dự án thì mình có thể tự tin ghi nhớ được trong đầu mà không cần ghi chép, thế nên những kĩ năng mà mình học được khi làm nhiều dự án ở Cinnamon chính là một bước tiến.

Một điểm khác là, khi làm cho khách hàng nước ngoài, họ sẽ có những thay đổi nhanh và gấp rút hơn rất nhiều so với việc phát triển sản phẩm nội bộ. Do vậy, SE phải đảm bảo được những cái thay đổi phải được kiểm tra kĩ càng trước khi bàn giao. Điểm này, về mặt kỹ thuật, SE sẽ phải viết test kĩ và khi vượt qua hết thì mới coi là hoàn thành.

Làm Software Engineering cho sản phẩm Machine Learning thì tất nhiên một SE sẽ phải học thêm về Machine Learning nhưng không cần quá chuyên sâu. Chủ yếu các kiến thức sẽ liên quan đến áp dụng model và thư viện nhằm xây dựng thành một sản phẩm như thế nào, để khi mình có một input thì ra được một output có ý nghĩa. Mặt khác, quá trình này không phải lúc nào cũng trơn tru, khi các có thể các model và thư viện trong cùng một môi trường sẽ mẫu thuẫn với nhau theo nhiều cách, thì SE cần tìm ra hướng xử lý xung đột.

Một ngày của Adrian: rất nhiều task, cái nào cũng quan trọng và deadline “càng sớm càng tốt”

Công việc hàng ngày của mình cũng có những task khác nhau lẫn lặp đi lặp lại. Các dự án có các cấu trúc giống nhau, ví dụ như các dự án PoC, thì sẽ có các task giống nhau như là: meeting hàng ngày, nhận về các model mới hoặc cập nhật của AI model để tích hợp với nhau, và nếu trong trường hợp có lỗi thì SE sẽ phải sửa. Còn về các task đa dạng sẽ thường nằm ở các dự án không phải PoC, thường là đóng góp ý kiến cho các thay đổi ở team khác, viết tài liệu hướng dẫn để trợ giúp cho người mới hoặc người cũ nắm bắt rõ hơn về những công cụ đang được Cinnamon phát triển để tăng năng suất trong công việc.

Nếu các thư viện code có điểm chưa ổn hay bug gây xung đột, SE cũng có thể chủ động đưa các bản vá lỗi lên để khắc phục.

Khó khăn đầu tiên là khi làm việc trong nhiều dự án khác nhau thì SE có thể có nhiều task có tầm quan trọng như nhau tại cùng một thời điểm và đòi hỏi kết quả phải càng sớm càng tốt. Mình làm thế nào để sắp xếp và hoàn thành được các task? Đôi khi thì mình có thể sắp xếp được, nhưng cũng có lúc không. Lúc đó thì SE lại phải biết cách làm việc với PM để thương lượng về thời gian và thứ tự ưu tiên của các task. Điều này đòi hỏi việc giao tiếp thường xuyên để biết điều gì thực sự quan trọng đối với khách hàng — sẽ phải đặt thứ tự ưu tiên lên trước — hoặc mình có thể yêu cầu dành phần lớn thời gian cho một task quan trọng để hoàn thành nó trước khi chuyển sang các task khác.

Một khó khăn nữa là trong quá trình thương lượng thì có thể xảy ra sai lệch thông tin dẫn đến hiểu lầm, thì làm sao để giảm thiểu rủi ro, tiết kiệm thời gian và công sức cho từng task cũng là một thách thức lớn. Những trường hợp như vậy xảy ra thì SE buộc phải tìm cách nhìn nhận lại công việc dưới một góc độ lớn hơn để tìm ra gốc rễ của vấn đề chứ không chỉ gói gọn trong việc vá lỗi — sửa lỗi xong những lần sau cũng vá lỗi — sửa lỗi tương tự.

Có gì thú vị khi làm SE ở Cinnamon?

Những dự án chưa thực sự hoạt động trơn tru với nhau lắm, do đó mục tiêu lớn nhất của team SE là làm thế nào để các dự án trở nên nhất quán và vận hành dễ dàng. Vì một trong những lộ trình phát triển của một SE chính là trở thành System Architect mà, thì vấn đề đó liên quan trực tiếp đến Architect, làm thế nào để có một kiến trúc hệ thống vững chắc và các dự án được xây dựng từ đó sẽ hoạt động trơn tru. Đây là một thách thức mà hình cảm thấy rất hứng thú.

Một điểm thú vị nữa khi làm việc ở Cinnamon AI là tường văn phòng công ty chúng tôi có thể đổi màu tuỳ theo ý muốn của người được chụp ảnh :)

Team SE cùng với các team khác sẽ phải làm việc với nhau để chuẩn hoá các quy trình hiện tại, các chiến dịch trong các dự án, hoặc các thư viện — làm thế nào để giảm bớt thời gian kiểm tra lỗi, giảm bớt sự lòng vòng trong quá trình bàn giao dữ liệu và model, làm thế nào để giảm thời gian và công sức của một SE phải bỏ ra khi dự án xảy ra lỗi xuống mức thấp nhất. Hoặc, khi có lỗi xảy ra thì mình phải có phương án backup như thế nào… Đó là những vấn đề về tổng thể mà bản thân mình thấy rất thú vị để giải quyết.

Hỗ trợ định hướng phát triển toàn diện cho SE

Tại Cinnamon có chương trình mentorship và cũng có những buổi training 1on1, qua những buổi này thì SE có thể trao đổi kĩ hơn và cởi mở với mentor của mình hoặc các anh senior, qua đó cũng thẳng thắn đưa ra những vấn đề mình gặp phải, những vấn đề mình cảm thấy cần khắc phục, cải thiện. Qua đó SE sẽ có được lộ trình rõ ràng, mentor và các đàn anh có thể trợ giúp rất nhiều, gợi ý cho mình những con đường tốt hơn so với mình tự nghĩ. Những công ty trước mình làm có thể nói là công việc cũng hơi lặp đi lặp lại, các buổi meeting chỉ xoay quanh vào các vấn đề kĩ thuật của dự án, việc sửa lỗi và ra kết quả có thể chạy được… không có những meeting về lộ trình phát triển rõ ràng như ở Cinnamon.

Cá nhân mình thì đang có định hướng phát triển thuần kỹ thuật hơn. Tức là 80% về kỹ thuật, trở thành Software Architect còn tất nhiên ngoài ra mình cũng phải phát triển các kĩ năng làm việc nhóm để có thể điều phối tốt hơn, nên 20% còn lại là để phát triển các kĩ năng mềm. Thời gian từ khi bước vào Cinnamon cho đến nay thì lộ trình này cơ bản vẫn đúng hướng, hiện tại việc phát triển sản phẩm nội bộ đang rất tốt, mặc dù team SE đang thiếu nhân lực nên cũng có khó khăn, nhưng đây cũng là một cơ hội rất tốt để bản thân mỗi SE trong team hiểu được mình phải làm gì đó mang tính đột phá phát triển. Team SE cũng phải nghĩ ra phương pháp thật sự hiệu quả với nguồn lực hiện tại, những giải pháp đưa ra bỗng có động lực hơn rất nhiều. Lúc trước thì khá là nhàn nên thường có tâm lý làm xong vứt đấy, còn bây giờ khi tài nguyên hạn hẹp hơn thì bỗng dưng công sức trở nên quý báu hơn nên mình phải tận dụng mọi thứ trong khả năng.

Theo ý kiến của mình, các sản phẩm nội bộ hiện nay ở Cinnamon mở ra nhiều cơ hội để các bạn trẻ mới vào chủ động trực tiếp tham gia vào quá trình phát triển và ứng dụng, ý kiến được tập hợp nhanh hơn, các feedback để cải thiện sản phẩm được đưa ra nhanh chóng (hơn trước) rất nhiều. Chu kì phát triển sản phẩm nhờ thế ngắn lại, thay đổi diễn ra nhanh hơn và ảnh hưởng tốt hơn.

Nếu các bạn SE đến với Cinnamon với kì vọng về một môi trường lý tưởng: với công việc không lặp lại mỗi ngày, mọi thứ đều ở đúng vị trí khi giờ làm việc kết thúc… thì sẽ khó. Nhưng ở Cinnamon có cơ hội công bằng để tham gia phát triển những vấn đề cốt lõi của cả team, chứ mình không chỉ là một SE hàng ngày nhận task, hoàn thành task và ra về như ở nơi khác.

Động lực trong công việc của SE chính là tìm ra những phương pháp tự động hoá, giảm bớt những bước lặp đi lặp lại giúp cho công việc trở nên dễ dàng hơn và SE tiết kiệm được thời gian và nguồn lực để xử lý những công việc mang tính thú vị hơn.

— — -

Các bạn quan tâm đến vị trí Software Engineer tại Cinnamon có thể tham khảo Job Description tại đây:

🌟 Software Engineer Intern

🌟 Software Engineer

Nếu bạn muốn có cơ hội trao đổi thêm về công việc và lời khuyên từ team SE, hãy gửi cho Cinnamon về social@cinnamon.is hoặc inbox trực tiếp fanpage nhé! ;)

--

--

Cinnamon AI
Cinnamon AI

Written by Cinnamon AI

Cinnamon AI is the pioneer company in consulting and designing innovative solutions using AI technology for business. Follow our official Medium for more :)

No responses yet