Topic AMA (Ask me anything) Dat - DayNhauHoc Founder / Ex-Meta / Ex-Sea (Garena/Shopee) / Ex - tùm lum

Hi mọi người mình là Đạt.

Mình đi làm cũng nhiều năm, tầm hơn 12 năm, công việc chính là gõ code và gõ tài liệu(design doc). Làm qua công ty nhỏ, công ty startup và FAANG / MAANG rồi. Mình làm việc tầm hơn 2 năm ở VN còn lại là làm ở Singapore và USA. Mình làm về nhiều lĩnh vực khác nhau trong thời gian đi làm ví dụ mình đã làm qua

  1. Ngôn ngữ cấp thấp như C, viết kernel code, embedded software, linux device driver, viết app trên linux dùng C/C++, làm web app trên embedded device dùng lua.
  2. Làm app trên Windows dùng Qt C++, C#, Làm Android App với Java
  3. Làm Web backend với Python, PHP, Java, NodeJS, Kotlin, xài Django, Flask, NextJS, Spring Boot
  4. Làm Web front end với vanila Javascript, HTML, CSS, tới ReactJS, VueJS
  5. Làm DevOps với Jenkins, CircleCI, setup CI/CD, setup memcache/Redis server, load balancer từ thủ công tới xài cloud.
  6. Làm về big data với Scala Spark, Python Spark, Airflow, Airbyte, MySql, Hive, Presto, mongoDB
  7. Làm với Google Cloud, AWS
  8. Vân vân và mây mây

Nói chung là làm tá lả giống thợ đụng, đụng đâu bể đó :stuck_out_tongue:

Mình thấy mình có nhiều kiến thức có thể chia sẻ về cách tìm việc, cách nhảy việc, cách làm sao làm việc hiệu quả ở công ty mới, công ty cũ, làm sao lead team, làm sao từ fresher lên senior lên staff etc …

Nếu các bạn có câu hỏi gì liên quan đến nghề nghiệp, phỏng vấn, đi làm nước ngoài, cách làm việc hiệu quả, cách quản lý dự án lớn/nhỏ, cách handle stress at work, cách cư xử với đồng nghiệp khó chơi và manager khó nhằn thì cứ hỏi nhé. Đừng hỏi về tech cụ thể vì các topic khác ở trên DayNhauHoc là quá đủ :wink:

Mình hi vọng kinh nghiệm làm việc và góc nhìn của mình có thể giúp được ai đấy. Mình cũng muốn thông qua topic này học hỏi thêm từ các bạn khác.

16 Likes

Senior trong cty work from home hết, cả PM cũng work from home luôn. Lên cty chỉ toàn fresher đi đầy đủ thì làm sao học hỏi kinh nghiệm vậy anh? Nhóm chat thì senior thấy fresher đông quá nên lập group chat riêng :rofl:

1 Like

Trường hợp này khó quá, mới nghe xong đã thấy muốn nhảy việc :frowning:

Okay, để anh thử trả lời theo hướng này nhé. Về bản chất mình phải xem thử vấn đề gốc nằm ở đâu. Theo anh thì fresher cần được làm việc trực tiếp với senior và những fresher khác để học hỏi kinh nghiệm. Trong trường hợp của công ty em thì công ty không setup để giúp cho fresher học hỏi thì mình phải tự tạo ra mội trường này. Anh có một số bước như sau

  1. Lên lịch hẹn nói chuyện với senior engineers thông qua Zoom hoặc tools tương tự. Trước khi hẹn thì em phải chuẩn bị topic để hỏi, có thể là về vấn đề technical cũng có thể là về vấn đề khác như career growth, giải quyết conflict với người khác etc … nhưng mấu chốt là phải chuẩn bị topic trước khi hẹn. Lúc đầu có thể hẹn ad-hoc, khi nào cần thì hẹn trước một vài hôm. Về sau có thể nâng lên làm weekly, chọn một ngày cụ thể.

  2. Khi nào có câu hỏi mà có thể hỏi ngay, gửi tin nhắn vào group chat, tag tên senior mình cần giúp vào rồi ngồi chờ :smiley: Nhớ là nên nghiên cứu vấn đề mình cần hỏi trước tầm 10-30p mà không thấy hướng giải quyết thì phải hỏi ngay, không nên chần chờ. Nhưng mấu chốt là không được hỏi bừa, đụng gì cũng hỏi, mà phải chuẩn bị trước một chút

  3. Hẹn senior engineers, PM đi cafe: lâu lâu hẹn team ra cafe chém gió để build connection. Tranh thủ thời gian chém gió hỏi về các chủ đề khác.

  4. Hẹn nói chuyện với manager, ở VN thì anh không rành nhưng mà ở Singapore và USA thì anh thấy là mỗi tuần mỗi người đều có 1:1 30p với manager để mình nói chuyện giãi bày tâm tự và lên hướng đi trong mấy tháng tới. Nếu công ty không có cái này thì em có thể hẹn manager 30p và chia sẻ là em cần có cơ hội làm việc với senior. Nói nhẹ nhàng thôi. Em có thể suggest mọi người lên công ty đúng 1 ngày nào đó trong tuần, ví dụ như mỗi thứ 4 hoặc thứ 5 mỗi tuần.

  5. Học hỏi ở ngoài, có thể lên Udemy học hoặc mấy cái platform khác để đọc và học thêm kiến thức ngoài giờ làm

  6. Nhảy việc =))

5 Likes

Là một người đi gõ code 3 năm chủ yếu làm c/c++. Em muốn hỏi làm cách nào mà anh có thể học và làm việc với nhiều mảng thế ạ. Vì em trái ngành sang code nên nhiều khi học cái mới thấy rất là lâu và khó

Hi anh Đạt,

Thật sự em thấy chủ đề nào anh nói ở trên cũng hay, đáng quan tâm. Nên nếu có thời gian, anh có thể chia sẻ theo từng chủ đề được không ạ? Em nghĩ những chia sẻ này sẽ rất hữu ích cho những người đi sau như bọn em ạ. Cám ơn anh! <3

Hi a Đạt, e background về toán không giỏi, tư duy logic ở mức trung bình (mặc dù đỗ hcmus chính quy :joy:) thì nên định hướng lâu dài ntn ạ ? e mới tốt nghiệp và đang dev c++ đc gần 1 năm. Thanks a

Hi anh Đạt.
Em là sinh viên năm 3 và rất muốn có cơ hội làm việc tại nước ngoài.
Nhưng không có điều kiện du học. Nhưng còn rất nhiều điều mông lung. E định đi làm ở vn rồi cty nào có dự án onsite thì đi theo diện đó. Không biết là hướng này có những vấn đề gì ? Và còn hướng đi nào khác thích hợp hơn không ạ ?
Em cảm ơn!

Chào anh Đạt, em muốn hỏi là trong mấy cái lĩnh vực anh kể trên thì cái nào LƯƠNG cao nhất với cái nào làm việc DỄ HỌC DỄ LÀM nhất thế anh ? Em cảm ơn <3!

Trong các nước anh làm thì anh thích nước nào nhất? Và anh nghĩ sao về việc làm product ở VN (có thể là về khó khăn, thuận lợi…)

Hi a Đạt, anh có thể chia sẽ về quá trình ôn luyện để phỏng vấn vào FAANG ko ạ?

Hi a Đạt! Anh có thể chia sẻ quá trình cũng như kinh nghiệm tìm việc ở nước ngoài được không ạ?

Em ko giỏi về thuật toán thì có thể tiếp tục với ngành được ko ạ :frowning:

Học cái mới lâu và khó là một vấn đề chung không chỉ có trong lập trình mà trong tất cả các loại kiến thức khác. Cách anh có thể học và làm việc với nhiều mảng là do hai lý do chính

  1. Anh thích học nhiều thứ và cần phải học và làm nhiều thứ để có thể tồn tại trong ngành này.
  2. Anh có phương pháp học hiệu quả. Về phương pháp học hiệu quả thì anh nghĩ mỗi người có một cách riêng nhưng chung quy lại thì anh nghĩ cái quan trọng nhất là em phải sắp xếp được thời gian để học, xem time-boxing, và trong lúc học thì cần phải thật sự tập trung, xem pomodoro, khi học cái gì đấy thì anh cần phải có cách để ghi nhớ nó, xem anki

Về cá nhân anh thì anh may mắn là tìm được việc đi làm ở nước ngoài sớm, nhưng cùng với cái may mắn đó thì cũng kèm theo áp lực bị mất job và mất thu nhập ở nước ngoài. Nên anh cần phải học và làm nhiều thứ khác nhau để đảm bảo là kỹ năng của mình lúc nào cũng đầy đủ để có giá trị trong thị trường công nghệ khi mà các bạn trẻ ra vừa giỏi, vừa khoẻ :smiley:

Về phương pháp học của anh thì anh cần phải setup thời gian cụ thể trong ngày để học, có thể là 30p mỗi ngày có thể là 1h mỗi ngày tuỳ ngày và tuỳ tuần. Nhưng anh luôn duy trì thói quen học mỗi ngày(time-boxing). Có những giai đoạn quá bận thì anh có thể bỏ một thời gian nhưng chắc chắn sẽ quay lại học.

Trong lúc học thì anh sẽ dùng một cái đồng hồ pomodoro, đồng hồ cơ chứ không dùng app, anh không dùng app được do a dễ bị phân tâm nếu dùng app trên điện thoại. Khi anh học xong cái gì đó mới, anh sẽ cho vào Anki để ôn lại.

Bước cuối cùng là đem kiến thức đó vào dùng trong thực tế, tức là công việc anh đang cần anh dùng luôn thì sẽ vừa kiếm được tiền mà vừa thêm được kiến thức mới.

Anh cũng nghĩ vậy nên anh mới làm topic này, vấn đề là có nhiều thứ quá anh muốn viết ra hết một lúc thì mất nhiều thời gian đấy. Nên em cứ hỏi cụ thể từng vấn đề anh sẽ giải thích từng vấn đề một :wink:

Anh nghĩ là mình không nên “label” (dán nhãn") cho bản thân mình là không giỏi toán! Việc “label” này sẽ tự giới hạn bản thân mình lại đấy. Em cứ quên đi cái việc mình “không giỏi toán” đi nhé.

Về việc định hướng lâu dài của em thì anh nghĩ là không liên quan đến việc giỏi toán hay không đâu. Anh nghĩ em cứ tiếp tục làm cái em đang làm như dev C++, cứ làm nhiều em sẽ giỏi, sẽ tự nghĩ ra hướng đi mới. Nếu em có khó khăn/khúc mắc cụ thể trong công việc thì hỏi thêm, anh sẽ trả lời sâu hơn.

Anh nghĩ là du học giúp mình rất nhiều trong việc đi làm ở nước ngoài nhưng nó không phải là điều “phải có”. Như anh là một ví dụ Anh chưa bao giờ đi du học.

Anh không có kinh nghiệm đi theo dự án onsite vì anh đã thất bại trong việc này. Lý do thất bại vì việc đi onsite hay không ít phụ thuộc vào mình mà phụ thuộc vào công ty mình đang làm cho, và phụ thuộc vào khách hàng.

Những việc gì mà mình phải phụ thuộc vào người khác thì sẽ khó thành công cho mình. Ngày trước anh thấy anh làm rất giỏi nhưng không có cơ hội đi onsite vì project của anh không có được đi onsite, vậy thôi :wink:

Nên anh chọn hướng tự đi, tức là tự apply phỏng vấn đi nước khác.
Một cách khác anh thấy cũng hiệu quả là sau khi em ra đi làm một thời gian, em để dành một ít tiền rồi lấy tiền đó đi du học tự túc hoặc là kiếm học bổng rồi đi học. Cách này sẽ dễ hơn cách ngày xưa của anh làm hơn.

Nhưng để làm điều em muốn, em phải lên kế hoạch từ bây giờ.

5 Likes

Hỏi rất thực tế, anh thik =))

Lương cao nhất hay không phụ thuộc vào cung và cầu. Nếu thị trường cần nhiều kỹ sư làm về web thì lương làm web sẽ cao. Trong trường hợp của anh thì anh thấy là làm về distributed system kiếm được nhiều tiền nhất và cũng dễ học dễ làm nhất. Nhưng cái này không nhất thiết đúng với người khác.

Tuy nghiên, anh cũng muốn thêm vào một cái là hiện giờ AI đang hype, nếu em có cơ hội nên học thử AI/ML. Có khả năng nó là lĩnh vực lương cao nhất và dễ học dễ làm nhất đối với EM.

Anh thích USA nhất. Lương cao nhất, đất rộng nhất, lái xe đi chơi thích nhất, cảnh đẹp nhất. Nhưng bù lại làm việc cũng căng hơn ở Singapore, căng thẳng nhiều hơn, xa nhà hơn.

Ở Singapore thì lương thấp hơn, đất nước nhỏ xíu, cảnh cũng tạm nhưng mà đi chơi thì thua xa ở Mỹ. Nhưng bù lại gần nhà, sống đỡ căng thẳng hơn chán thì về VN.

Ở VN thì lương thấp nhất, đất rộng nhưng anh lại không có ịp đi chơi. Nhưng siêu thoải mái, nói nôm na là nhà mình thì mình không ngán gì cả, thất nghiệp thì về nhà.


Làm product ở VN thì anh không có kinh nghiệm gì cả, em có thể hỏi cụ thể hơn không :smiley:

Câu hỏi hay, vấn đề này thì ôn luyện rất mệt. Nhưng về bản chất nó cũng giống như học tất cả những thứ khác. Em cần phải sắp xếp thời gian để ôn luyện mỗi ngày, xem mấy trả lời trước của anh về time-boxing, pomodoro và anki.

Lúc luyện vào Facebook 2019 thì sáng nào anh cũng dậy tầm 6am để luyện tới 9am rồi đi làm. Luyện 6 tháng mới quen được Leetcode.

Nhưng khi em đã quen được rồi thì sẽ dễ hơn nhiều. Một cách khác đỡ cực hơn là em chia nhỏ khối lượng kiến thức cần phải học ra, rồi mỗi ngày học 30p, 1h là được.

Để pv vào FAANG thì em cần phải chuẩn bị kiến thức algo thật tốt, luyện Leetcode nhiều vào.

Nếu em pv vào vị trí senior hoặc cao hơn thì cần phải chuẩn bị kiến thức về system design. Hiện giờ anh thấy 2 quyển sách của Alex Xu về system design là chuẩn nhất, hoặc là em phải tự nghiên cứu ví dụ như bài viết này của anh. Sau đó em cần phải chuẩn bị về phần behaviour interview nữa, anh chưa thấy sách nào về chủ đề này hay. Anh nghĩ anh có thể viết về mảng behaviour ở một topic khác để chia sẻ, nhưng nó sẽ dài lắm.

Lần đầu tiên thì đó là vào tầm 2013, lúc đó anh mất tầm 2 tháng để tìm việc. Lúc đó anh chuẩn bị CV thật tốt, hiện giờ anh thấy có nhiều trang web ở vn đã chỉ cách làm CV và trên DayNhauHoc cũng có vài topic thảo luận về CV rồi em có thể tham khảo thêm.

Sau đó anh bắt đầu đi apply job ở nhiều trang khác nhau, lúc đó Linkedin chưa mạnh nên anh phải apply vào từng công ty hoặc là từng webiste như vietnamework ở các nước khác nhau.

Sau khi apply thì có một số công ty họ reached out và anh bắt đầu phỏng vấn. Khi có offer thì đi thôi. Nhưng lúc này em cũng phải cần chuẩn bị tiếng anh đủ tốt để nói chuyện với interviewer rồi nhé.

Một khi em đã sang được nước khác để đi làm rồi thì câu chuyện sẽ khác, anh nghĩ nó vừa dễ hơn mà vừa khó hơn. Nhưng mà với câu hỏi của em thì anh nghĩ em quan tâm về việc từ VN phỏng vấn đi làm ở nước khác đúng không?

3 Likes

Chào a Đạt, a có thể cho e biết về kiến thức cần có của lập trình viên của từng level theo góc nhìn của a được không ạ.

Và vấn đề học tiếng Anh như thế nào để hiệu quả nữa ạ.

1 Like
  1. Em không ngại học kiến thức mới, tuy nhiên điều khó khăn nhất với em là ghi nhớ kiến thức cũ. Sau khoảng vài tuần - vài tháng là em quên khá nhiều những thứ đã học, mặc dù em có thực hành, có làm việc về những kiến thức đó. Khi sau vài tháng, khi công việc lặp lại thì em phải học lại từ đầu. Em không biết bây giờ anh có thể viết Linux device driver không (Em đoán rằng nó đã rất lâu với anh)? Anh có cảm thấy bản thân có trí nhớ tốt hơn người khác không?
  2. Công cụ nào để ghi Note hiệu quả?
  3. Anh có định hướng làm manager không?
1 Like

Lập trình viên là “knowledge workers” em phải có kiến thức và phải có khả năng tự học. Đồng thời em phải liên tục học để phát triển bản thân.

Theo mỗi level lên cao hơn thì mình cần phải có thêm nhiều loại kỹ năng khác nhau. Với level fresher thì chỉ cần đơn giản là hiểu được nhiệm vụ được giao và làm được việc đơn giản là được. Ví dụ, thêm một cái button vào một giao diện nào đó. Click một phát gọi một cái API. Ở level này em chỉ cần code giỏi là được.

Khi level cao hơn dần thì em sẽ bắt đầu tới mức hiểu được nhiệm vụ phức tạp và giải quyết được vấn đề phức tạp. Ví dụ như build một cái API để cho client gọi, API này phải làm một vài việc khác nhau và có thể sẽ bị chậm nếu xử lý không khéo. Ở level này em cần phải code giỏi hơn level trước và biết cách giải thích với mọi người là em đang làm gì, tại sao phải làm thế.

Tiếp theo là tự nghĩ ra được vấn đề để giải quyết và phân việc ra cho team cùng làm. Ví dụ như cũng là cái API ở trên nhưng mà em nghĩ ra được là giờ API chạy khá chậm và để giải quyết được vấn đề này thì em cần phải build lại database, thêm cache, hoặc cần phải làm việc với team infra để tối ưu hoá queries của bên team em. Tới level này thì em cần phải nhìn ra vấn đề mà manager của em hoặc người khác không nhìn ra (vì họ bận việc khác). Đồng thời em phải lên được kế hoặc để giải quyết vấn đề này vì một mình em không code hết được. Đôi khi em cần phải nói chuyện với team khác để tìm cách giải quyết.

Ở level tiếp theo nữa là em cần phải nhìn thấy được vấn đề mà team em không thể giải quyết một mình được mà phải làm việc với nhiều team khác để cùng đưa giải pháp chung. Ví dụ cũng là cái button đó, button đó để book xe giống như book grab chẳng hạn. Lúc trước thì cứ bấm vào thì mình tính giá tiền bằng một mớ services ở backend. Nhưng mà bây giờ em phát hiện ra là tỷ lệ người ta bấm vào xong thấy giá tiền cao họ lại huỷ hoặc là vì lý do gì đó mà người ta huỷ. Em muốn tăng tỷ lệ book thì cần phải thêm hệ thống monitoring, kết hợp thêm AI/ML gì gì đó. Hệ thống hiện nay không hỗ trợ được mấy cái này, thì em cần phải thuyết phục manager em, manager team khác, manager của manager em và bên bộ phận business để cho em và các team khác bắt đầu xây dựng hệ thống mới này. Có thể sẽ mất 1-3 năm mới làm xong, nhưng nếu làm xong thì sẽ được XYZ gì đó, nếu không làm xong thì mất bao nhiều tiền $$$.

Còn nhiều level phía trên nữa nhưng anh nghĩ tới đây cũng là tạm ổn rồi ha :slight_smile:

Và vấn đề học tiếng Anh như thế nào để hiệu quả nữa ạ.

Học tiếng anh thế nào cho hiệu quả thì anh nghĩ cứ học như con nít học nói ấy, con nít nghe trước, xong nói sau, rồi mới học đọc rồi cuối cùng mới học viết.

Em muốn học tiếng anh tốt thì phải có môi trường nghe/nói/đọc/viết. Anh nghĩ ở Vn mình hay chú trọng vào học đọc/viết mà không có cơ hội nghe/nói.

Em cứ cố gắng sáng tạo làm sao có thể có cơ hội nghe nói nhiều vào là được.

3 Likes

Ghi nhớ kiến thức cũ thì cứ Anki mà thẳng tiến

Em không biết bây giờ anh có thể viết Linux device driver không

Được, không có vấn đề gì. Anh quên hết sạch trơn nhưng mà nhớ vài cái mấu chốt. Nhưng cái đấy không quan trọng, cái quan trọng là anh biết cách đọc tài liệu và có nhiều kinh nghiệm code. Đầu tiên anh sẽ tìm hiểu thử problem anh cần phải giải quyết là gì, ví dụ driver gì, nhiêm vụ cần làm là gì. Sau đó anh sẽ tìm tài liệu nói về loại driver đó, xem thử có ví dụ nào về cái anh cần làm không. Sau đó bắt đầu build dần dần lên, tạo từng task nhỏ rồi làm dần dần thôi ví dụ thế này

  • [ ] đọc hiểu API
  • [ ] viết design doc / proposal cách giải quyết vấn đề
  • [ ] thảo luận với đồng nghiệp / người biết về mảng này để xem thử idea mình có đúng hướng không
  • [ ] quay lại update design doc / proposal
  • [ ] lên kế hoặch những việc cần làm
  • [ ] Build X, Build Y, Test Z,

Anh có cảm thấy bản thân có trí nhớ tốt hơn người khác không?

Anh thấy trí nhớ anh bình thường, có thể tốt hơn average 1 chút nhưng về bản chất là không tạo ra sự khác biệt gì lớn. Cái quan trọng là phương pháp học.

Công cụ nào để ghi Note hiệu quả?

Anh đang dùng obsidian nhưng mà em có thể dùng bất cứ loại note như evernote, notion, google docs, google notes, etc… nào, cái quan trọng là làm sao để viết note hiệu quả. Anh có cách của riêng anh nhưng mà nếu viết ra ở đây thì hơi dài, anh có đọc quyển này How to take smart notes và thấy khá hay.

Anh có định hướng làm manager không?

Anh đã từng làm manager nhưng anh không cảm thấy thích làm manager lắm. Có thể sau này sẽ làm manager lại xem sao.


Note: Mọi người hỏi rất hay, hỏi thêm đi nhé. Hi vọng Đạt có thể giúp được gì đó.

4 Likes

Cảm ơn anh Đạt về AMA session ạ :smile:
Em có một vài câu hỏi muốn nghe thêm từ anh. Nếu có câu hỏi nào riêng tư quá, anh cứ ignore nhé anh! :sweat_smile:

  • Em thấy anh có giới thiệu anh là Ex-meta. Sao anh lại rời Meta vậy ạ?
  • Một ngày thông thường của anh ở Facebook/Meta như thế nào ạ anh?
  • Anh đã từng làm việc với micro manager chưa ạ? Anh thường handle họ thế nào ạ?
  • Nếu như có 1 lời khuyên mà anh nghĩ các bạn SV ngành IT ở VN mới ra trường nên cải thiện để có một sự nghiệp bền vững trên thế giới, anh sẽ khuyên các bạn ấy điều gì ạ?

Rất mong nhận được câu trả lời từ anh ạ.

3 Likes

Chào anh Đạt, em có vài câu muốn hỏi ạ. Hiện giờ thì em vẫn đang là sinh viên, và sẽ ra trường trong 1-2 năm tới. Hiện tại thì em có đi xin việc thì gặp vấn đề là hầu hết các job tuyển mà em có đủ điều kiện đều không đúng chuyên môn của em lắm (ví dụ như em học .Net nhưng job tuyển Java, PHP chẳng hạn). Em có nghĩ đến việc học thêm những ngôn ngữ khác, thậm chí là lĩnh vực khác (như AI, mobile,…), tuy nhiên em thấy có một số quan điểm cho rằng trước khi có một cái cần kiếm cơm vững chắc thì chỉ nên focus vào một thứ. Anh nghĩ sao về vấn đề này ạ?

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?