“Vì sao mình chọn start-up sau Facebook?” Hiếu Phạm – Software Engineer tại ROCKSET

Chuyện IT
“Vì sao mình chọn start-up sau Facebook?” Hiếu Phạm – Software Engineer tại ROCKSET
Trong mục “Chuyên gia nói” lần này, chúng ta sẽ trò chuyện cùng anh Hiếu Phạm – Software Engineer tại Rockset . Từng là nhân viên của 3 công ty công nghệ lớn như Google, Microsoft và Facebook, hãy cùng tìm hiểu vì sao anh Hiếu chọn Rockset là nơi phát triển sự nghiệp. Về khách mời Hiếu Phạm Hiện đang là Senior Software Engineer ở công ty Rockset, công ty làm về realtime database được 4 năm Công việc đầu tiên là ở tập đoàn Facebook. Và trước khi ra trường, anh thực tập ở 3 công ty, tập đoàn lớn là Google, Microsoft và Facebook. Rockset là 1 công ty khởi nghiệp software access và service về mảng realtime database. Rockset được thành lập bởi những kỹ sư ngày trước cũng từ facebook và google. Là những kỹ sư ban đầu thiết kế các hệ thống rất là lớn như là RocksDB, HDFS hay Gmail. Rockset giải quyết vấn đề gì? Rockset thực ra là 1 realtime database giúp khách hàng có thể chạy những sql query trên datahost mà trước giờ họ không support cái SQL query ấy, thí dụ như là DynamoDB, Kafka, hay S3 của Amazon hoặc là google course query của Google. 1 điểm hay của Rockset đó chính là realtime, có nghĩa là khi mà data đến mình query được luôn, chứ mình không phải đợi 1 đến 2 ngày. Và cái hay nữa là khi khách hàng dùng Rockset không cần phải tune query, không phải tạo index để làm gì hết, khỏi cần phải data rockset và rockset sẽ tự động làm cho tới cái query họ nó nhanh hơn. Mình chỉ mới làm ở đây được mấy tháng và dự án mà mình thích nhất hiện giờ là giúp cho...

Trong mục “Chuyên gia nói” lần này, chúng ta sẽ trò chuyện cùng anh Hiếu Phạm – Software Engineer tại Rockset. Từng là nhân viên của 3 công ty công nghệ lớn như Google, Microsoft và Facebook, hãy cùng tìm hiểu vì sao anh Hiếu chọn Rockset là nơi phát triển sự nghiệp. 

Về khách mời Hiếu Phạm

  • Hiện đang là Senior Software Engineer ở công ty Rockset, công ty làm về realtime database được 4 năm
  • Công việc đầu tiên là ở tập đoàn Facebook.
  • Và trước khi ra trường, anh thực tập ở 3 công ty, tập đoàn lớn là Google, Microsoft và Facebook.
  • Rockset là 1 công ty khởi nghiệp software access và service về mảng realtime database. Rockset được thành lập bởi những kỹ sư ngày trước cũng từ facebook và google. Là những kỹ sư ban đầu thiết kế các hệ thống rất là lớn như là RocksDB, HDFS hay Gmail.

Rockset giải quyết vấn đề gì?

Rockset thực ra là 1 realtime database giúp khách hàng có thể chạy những sql query trên datahost mà trước giờ họ không support cái SQL query ấy, thí dụ như là DynamoDB, Kafka, hay S3 của Amazon hoặc là google course query của Google. 1 điểm hay của Rockset đó chính là realtime, có nghĩa là khi mà data đến mình query được luôn, chứ mình không phải đợi 1 đến 2 ngày.

Và cái hay nữa là khi khách hàng dùng Rockset không cần phải tune query, không phải tạo index để làm gì hết, khỏi cần phải data rockset và rockset sẽ tự động làm cho tới cái query họ nó nhanh hơn. Mình chỉ mới làm ở đây được mấy tháng và dự án mà mình thích nhất hiện giờ là giúp cho hệ thống Rocket chứa được hình nhiều thông tin hơn, và với 1 giá tiền rẻ hơn, vì mình càng chứa nhiều thông tin hơn AWSB của mình sẽ rất là lag, nên công việc của mình bây giờ là làm cho nó càng rẻ càng tốt. 

Anh hãy giới thiệu hoặc giải thích đơn giản về architecture của Rockset? Vai trò của một người làm về Search Engine là xử lý ở quá trình nào trong mô hình này?

Hệ thống của Rockset chia làm 3 phần, gọi là Tailer – Leaf – Aggregator. Tailer nói nôm na là nơi xử lý những dữ liệu thô, và đưa cái dữ liệu đã được xử lý đó vào leaf, và leaf là nơi chứa dữ liệu đó để cho aggregator đó query cái dữ liệu đó 1 cách hiệu quả. Sau khi aggregator query những dữ liệu đó xong sẽ làm các phép tính sequel đó rồi trả lại dữ liệu cho người dùng, đó là cái nhìn chung về architecture của rockset, thật ra cái architecture này được dùng ở rất nhiều nơi.

Ngày xưa khi mà mình làm ở bên search họ cũng dùng những cái architect như thế này và 1 trong những người đầu tiên khi mà xây dựng hệ thống search của Facebook hiện giờ cũng đang làm ở Rockset, cho nên đó là lý do vì sao mà 2 hệ thống trông rất là giống nhau.

Data-driven app là gì? Có ý nghĩa như thế nào đối với các doanh nghiệp?

Các doanh nghiệp hiện giờ khi phải quyết định chuyện gì, họ phải phân tích nhiều về data mới biết được vấn đề hiện giờ là gì và giải pháp nên là thế nào. Khi mà họ có nhiều data họ xem có đúng không và có cần phải thay đổi giải pháp đó không. Điểm mạnh ở Rockset là đưa data cho khách hàng 1 cách realtime, tức là hiện giờ để xây dựng 1 cái hệ thống để đọc được data từ phản hồi nhiều khi rất là khó là 1, cái thứ 2 là mình phải đợi 1-2 ngày để data có thể đến được, và 1-2 ngày cũng không còn là tức thời nữa, nên điểm mạnh của Rockset là khi mà data đến được luôn, data như thế nào, cái quyết định của mình có đúng hay không, mình có thể thay đổi quyết định 1 cách tức thời.

Hệ thống của anh sử dụng cloud nào và nó có khác gì với tailer vật lý hay không?

Hiện giờ ROckset sử dụng AWS và Kubernetes chạy trên AWS, và lý do mình dùng Kubernetes là tại vì sau này mình muốn gửi sang google cloud mình có thể chuyển sang 1 cách dễ dàng.
Lý do mình sử dụng cloud vật lý là vì economics của cloud giờ nó đã rất là khác rồi, giả sử bây giờ mà mình cần chạy 1 computation mất 100 tiếng chẳng hạn thì mình có thể thuê 1 trăm máy và mình chạy mất 1 tiếng thay vì ngược lại, và khi mình thuê xong và trả lại cho AWS mình chỉ trả cho 1 tiếng đó thôi nó sẽ rẻ hơn rất là nhiều. Đó là lý do mà Rockset build for the cloud, tức là khi khách hàng cần bao nhiêu, mình thuê bấy nhiêu đó máy hỗ trợ khách hàng, sau đó mình sẽ tắt đi để tiết kiệm chi phí, như thế rất là tiết kiệm cho khách hàng cũng như Rockset.

Anh hay dùng ngôn ngữ nào và anh có thể tiết lộ về Database?

Ở Rockest có 2 phần, 1 phần người ta gọi là injection đưa data từ khách hàng vào Rockset, phần đó mình dùng Java, còn phần Leaf và Aggregator mà mình nói thì database mình dùng C++, query khi dùng C++, nó sẽ nhanh hơn và rockset được build on top of RocksDB và vì có anh engineer, ngày xưa là 1 trong những người viết ra RocksDB cũng như về HDFS. Hiện giờ anh đang làm CTO của Rockset, nên cũng là lý do RS dùng RocksDB.

Đâu là đặc điểm khác nhau giữa data stream, data lake và data warehouse?

Thực ra nó chỉ là nơi mà mình chứa dữ liệu thô, tức là dữ liệu từ khách hàng, dữ liệu từ những cái mà mình thu thập, nó nằm hết vào data lake. Còn data warehouse họ lấy data từ data lake sau đó họ chế biến để họ xử lý sao cho query 1 cách hiệu quả nhất. Tức là lấy dữ liệu thô sao đó làm sau cho nó có thể query được. Còn stream là 1 khái niệm mới khác hẳn, mình có thể tưởng tượng nó như 1 luồng thông tin luôn luôn đi vào chẳng hạn, cái data lúc nào cũng vào người ta thường đưa data stream vào data lake, sau đó rồi datawarehouse sẽ mỗi ngày lấy data từ data lake đấy họ xử lý lại và data sẽ được query và data ngày hôm sau sẽ được query từ ngày hôm trước.

Anh có thể giải thích vai trò của data source là gì? Vì sao Rockset lại lựa chọn các data source như Amazon S3, Amazon Kinesis, Amazon DynamoDB, Apache Kafka, Google Cloud Storage, Amazon Redshift? Ưu điểm của mỗi loại này là như thế nào?

Data source mình chỉ hiểu đơn giản nó là nơi người ta để data thôi, nó cũng có ưu và khuyết điểm nhất định, nhưng nhìn chung lý do Rockset support những cái datasource này là rất nhiều data scientist họ thích dùng SQL, nhưng những data source này lại không support SQL thế nên rockset muốn họ khả năng query sql trên những data source này cho công việc họ đơn giản hơn, bởi vì data scientist xem sql như ngôn ngữ mẹ đẻ của họ vậy.

Query Lambdas của Rockset là gì?

Cơ bản nó chỉ là 1 cái hàm nằm trên Rockset thôi, và nó có nhiều tham số, bình thường 1 lập trình viên khi họ lập trình phần mềm của họ mà phải cần query sql, họ phải viết cái sql vào code page của họ nên là thành ra nó có khá nhiều bug, khiến nó cũng khó làm hơn bây giờ lập trình viên họ chỉ cần để sẵn cái sql query nằm trên rockset và họ cho Rockset cái tên cũng như tham số và rockset sẽ tự động biết chạy những cái sql nào và gửi trả lại đúng cái kết quả đó chứ không cần phải viết sql trong phần mềm của họ nữa. 

Một số công nghệ hữu ích trên thế giới mà ở Việt Nam ít người sử dụng là gì? (chẳng hạn như Kafka)

Nó cũng mới phát triển gần đây thôi, mình có thể hiểu sơ rằng Kafka là 1 luồng thông tin nó rất đáng tin cậy, tức là thông tin khi mình đã viết vào Kafka rồi chắc chắn thông tin nó ở đó, nên khi mà mình đọc Kafka mình sẽ thấy cái lượng thông tin đó.

Công dụng của Kafka là gì, thí dụ mình có 2 data center 1 cái ở TPHCM và 1 cái ở Hà Nội, và mình muốn 2 cái data center này có data giống hệt nhau tại vì khi mà mình hỗ trợ khách hàng ở TPHCM hay ở Hà Nội mình muốn là 2 data giống nhau, Kafka là cái để cho khách hàng có thể copy 1 data từ nơi này sang nơi khác 1 cách rất thuận tiện, và giả sử khi mà mình copy giữa chừng mà máy mình hỏng hay sao đó và khi mình restart có thể bắt đầu tiếp ngay từ chỗ đó chứ không cần phải bắt đầu lại từ đầu. Đó là công dụng của Kafka.

Và có 1 công dụng nữa mà mình thấy là gần đây có rất nhiều doanh nghiệp hiện giờ họ dùng 1 cái gọi là hybrid cloud, nó có nghĩa là 1 phần hệ thống nằm trong server vật lý ở công ty họ, và 1 phần nằm trên cloud, nhiều khi di chuyển dữ liệu giữa 2 phần này họ hay dùng Kafka vì nó rất đáng tin cậy. 

Anh có nhận xét thế nào về khác biệt trong tư duy, cách tổ chức và xây dựng hệ thống của Việt Nam và các công ty hàng đầu trên thế giới?

Mình chưa có cơ duyên làm việc ở các công ty công nghệ ở Việt Nam, nên mình chỉ có kinh nghiệm ở một vài công ty công nghệ ở Mỹ. Đương nhiên mỗi công ty công nghệ đều có văn hoá xây dựng hệ thống khác nhau, nhưng nhìn chung đều rất data-driven, dựa trên data để tìm ra điểm khắc phục hệ thống. 

Công ty chia ra nhiều nhóm nhỏ, mỗi nhóm làm 1 phần đặc trách, và coi các nhóm khác như khách hàng của mình. Mỗi lần hệ thống có vấn đề đều được phân tích kỹ lưỡng, tìm ra nguyên nhân cũng như làm sao để điều đó không xảy ra lần sau.

Cái mình học được lớn nhất là, khi hệ thống lớn như thế, cái gì có thể hỏng chắc chắn sẽ hỏng. Kỹ sư phải xây dựng hệ thống làm sao mà nếu 1 vài máy hệ thống  bị hỏng bất cứ lúc nào, hệ thống vẫn phải chạy một cách trơn tru.

Từng là Intern tại Google, Microsoft và Facebook nhưng đâu là lý do khiến anh dừng chân?

Mỗi công ty đều có cái hay riêng, và bản thân mình cũng học được nhiều điều khác nhau ở từng công ty. Cá nhân mình thích trải nghiệm ở Facebook nhất, cũng như cảm thấy ở Facebook mình sẽ được trải nghiệm ở nhiều vị trí và nhóm khác nhau nên sẽ học được nhiều hơn.

Một văn hóa mình thích ở Facebook là move fast – tức là nếu cần làm gì thì làm luôn, chứ không cần phải đợi cấp trên ra chỉ thị. Quyết định rất nhanh. Đương nhiên cũng có cái hay và cái dở, nhưng mà mình nghĩ điều này giúp mình làm việc hiệu quả hơn rất nhiều.

Facebook cũng có cái scale mà mình muốn được thử sức nữa, vì lượng người dùng và data rất lớn.

Theo em biết, Software Engineer không chỉ đơn thuần là coder hay programmer, mà còn cần biết thu thập dữ liệu, cân bằng, khắc phục rủi ro, cũng như là về tư duy, tối ưu hóa trình duyệt. Thì theo anh vị trí Software Engineer ở từng công ty khác nhau như thế nào?

Công việc software engineer của mình nhìn chung có 2 phần: 1 là quản trị hệ thống của nhóm mình và 2 là code cho dự án mà mình đang làm.

Phần 1 thường mình có setup alert cũng như dashboard. Khi có chuyện sẽ được thông báo qua điện thoại, rồi mình lên dashboard cũng như đọc log của cái hệ thống để xem chuyện gì đang xảy ra, cũng như cách khắc phục. Nếu không khắc phục được mình sẽ gọi ai đó trong cái nhóm khác có liên quan để giúp.

Phần 2 chiếm chủ yếu thời gian của mình. 

Các dự án được lập ra tùy vào mục tiêu của nhóm. Thông thường khi bắt đầu 1 quý, nhóm sẽ họp lại để nghĩ xem mục tiêu là gì và cần làm gì cho mục tiêu đó.

Sau đó chia ra làm nhóm nhỏ hơn, và chia việc nhau ra làm. Code xong đưa lên để review, và sau khi review xong sẽ submit, và 1 tuần 2 lần sẽ launch code mới ra production. Công ty mình launch như vậy để lỡ có bug catch nhanh và revert nhanh, cũng như mỗi lần push không có quá nhiều patch để push.

Anh hãy chia sẻ quá trình tôi luyện như thế nào để có thể có vị trí như ngày hôm nay? 

Hè năm 2, mình rất may mắn (gần như là trúng xổ số) được thực tập tại nhóm quản lý MySQL ở Google. Ở đó mình được làm việc với những kỹ sư hàng đầu về database. Từ dịp đó, mình cảm thấy rất thích mảng hệ thống cơ sở dữ liệu. Năm 3 mình thực tập ở nhóm xây dựng Windows 10 ở Microsoft, và nhóm cơ sở dữ liệu thời gian ở Facebook. Mỗi lần thực tập mình đều học được 1 mảng khác nhau, nhưng đều về hệ thống máy tính. 3 lần đó giúp mình có kiến thức về C++, cũng như làm sao để xây dựng hệ thống một cách hiệu quả khi phải nhận lượng data khổng lồ.

Sau khi tốt nghiệp, mình làm 3 năm rưỡi ở Facebook, ở khoảng 3, 4 nhóm khác nhau tại Facebook. Mỗi nhóm đều có đặc thù khác nhau, cho dù đều làm về cơ sở dữ liệu. Ví dụ nhóm Search, đặc thù dữ liệu gồm các post trên Facebook, lại khác nhóm TimeSeries, khi đặc thù dữ liệu chỉ là 1 chuỗi gồm thời gian và giá trị. 

Hơn nữa, mỗi nhóm lại có vấn đề riêng, có những tiêu chuẩn riêng. Ví dụ nhóm Search không cho phép thiếu bất cứ dữ liệu nào, nhưng nhóm TimeSeries ok với việc đó, nhưng phải chứa dữ liệu càng hiệu quả càng tốt. 

Điều này giúp mình học được nhiều dạng hệ thống khác nhau, cũng như cái hay và cái dỡ ở mỗi hệ thống.

Search là một công cụ không thể thiếu và mỗi user khi search thì lại có một kết quả riêng. Vì vậy người làm về search phải có sự tinh tế, nhạy cảm riêng. Anh có thể chia sẻ thêm hệ thống unicorn của Facebook khi anh còn đảm nhiệm vị trí search Infrastructure được không? 

Unicorn cũng khá là tương tự và giống với hệ thống của Rockset hiện giờ, tức là cũng có 3 phần: Tailer-Leaf-Aggregator architecture. Cốt lõi của unicorn gọi là inverted index, nghĩa là khi tìm một từ khóa, unicorn sẽ trả lại cho họ toàn bộ post liên quan đến từ khóa đó. Giả sử mình tìm kiếm Covid nó sẽ trả về hàng trăm, hàng ngàn post liên quan đến Covid. Ngoài phần đấy, unicorn còn có phần đặc biệt, đó là ranker. Giả sử khi mình tìm kiếm, mình không muốn kết quả trả về là một trăm, một nghìn post, mình chỉ cần 10 kết quả về covid thôi, và unicorn phải biết mình quan tâm đến cái gì, đối với riêng cá nhân mình chỉ quan tâm các bài post Covid liên quan đến bạn bè mình các tổ chức y tế đáng tin cậy, và unicorn phải biết được chuyện đó và đưa lại kết quả những bài post mà mình quan tâm, đó là điểm đặc biệt của unicorn, họ phải rank được các bài post đây mà tìm được cái nào relevant nhất đối với người tìm, đó là cái hay của unicorn.

Anh có vẻ ưu tiên về C++, có phải anh luôn tin tưởng và nhìn nhận tiềm năng của nó trong tương lai hay không? Và anh có thể chia sẻ khán giả về một dự án thành công nhờ vào C++ được không? 

Bao nhiêu dự án những năm nay mình cũng chỉ dùng C++, ở 3 công ty mình làm họ đều sử dụng C++ cho cơ sở dữ liệu của họ. Lý do mình cảm thấy mình thích C++ là vì nó rất là nhanh, chạy không cần run time hay gì hết, đó là điểm mạnh của C++. Và C++ giúp cho người ta rất là nhiều option để optimize ngôn ngữ của mình, code của mình. Nhưng mà vì họ có quá nhiều option thế nên dễ dẫn đến người dùng dùng sai cách. Khi dùng C++ sai sách dễ dẫn đến phần mềm của mình bị crash và dễ bị nhiều bug; đó là điểm mạnh và điểm yếu của C++, điểm mạnh rất là nhanh nhưng điểm yếu lại rất khó dùng. Mình thấy nhiều hệ thống hiện giờ dùng C++ rất nhiều nên mình nghĩ tương lai rất là sáng sủa. 

Làm thế nào để làm một big data, data thế nào thì được gọi là big, có phải những công ty lớn trên thế giới như Google, Facebook, hay chính phủ Trung Quốc mới có thể sở hữu big data.

Theo mình đây chỉ là tương đối. Đứng về quan điểm của quản trị viên của hệ thống, người ta quan tâm về “big” có một vài lý do sau:

  1. Lượng data lớn dẫn đến số máy trong hệ thống phải lớn. Điều này có nghĩa là việc 1 trong những máy đó có vấn đề đi từ “có thể” lên “chắc chắn”. Hệ thống càng lớn thì vấn đề càng đến thường xuyên. Thế thì câu hỏi đặt ra là làm sao để xây dựng 1 hệ thống mà một vài thành phần trong hệ thống có vấn đề, nhưng cả hệ thống vẫn hoạt động bình thường.
  2. Nhưng một góc nhìn khác là số lượng dữ liệu phải so với tài nguyên hệ thống là bao nhiêu. Lượng dữ liệu lớn đương nhiên dẫn đến lượng tài nguyên hệ thống khổng lồ. Nhưng như thế thì không ổn cho các doanh nghiệp, tại vì tài nguyên hệ thống là không hề rẻ. Thế nên câu hỏi đặt ra cho các quản trị viên hệ thống là, làm sao để quản lý lượng dữ liệu đó mà không dùng quá nhiều máy. Ví dụ như, ngày trước mình ở Facebook, hệ thống mình quản lý cực kỳ to, nhưng Facebook là một công ty khổng lồ, và mình xin bao nhiêu máy họ cũng cho (đương nhiên trong mức vừa phải). Bây giờ mình sang công y nhỏ hơn, lượng dữ liệu nhỏ hơn nhiều, nhưng lượng tài nguyên hệ thống còn nhỏ hơn gấp nhiều lần, cái khó khăn là làm sao để quản lý lượng dữ liệu đó với cái mình đang khó.

Thế nên, mình nghĩ cái mình nên quan tâm không phải là lượng dữ liệu lớn bao nhiêu, mà là làm sao để hệ thống của mình hoạt động hiệu quả, không phung phí tài nguyên, và có thể chịu được vấn đề khi mà một vài thành phần trong hệ thống đó có vấn đề.

Vậy anh có thể trình bày những kỹ thuật đặc trưng để duy trì hệ thống scale lớn như vậy được không? 

Ở đây mình có thể hơi đi sâu về chuyên môn. Thông thường bài toán scaling có 2 mặt: 1 là scale từng máy một, tức là làm cho mỗi cá nhân từng thành phần hiệu quả hơn, và 2 là làm cho hệ thống hiệu quả hơn. Tương tự như trục tung và trục hoành trong toán học.

Trục tung tức là từng máy hiệu quả hơn, thường nhiều khi người ta có thể dùng chip mạnh hơn, ít điện năng hơn, chọn máy có nhiều RAM/SSD hơn. Nhưng trục này có 1 điểm bất lợi là mình chỉ có thể nâng cấp máy tính của mình đến một mức nào đó, vì những con chip mạnh thường đắt hơn rất nhiều so với hiệu năng nó mang lại.

Trục hoành là tăng số lượng máy. Nhưng điều này không phải cứ cho thêm máy là được. Ở một vài hệ thống mình đang làm, cho thêm máy chẳng khác nào đổ dầu vào lửa, vì cho thêm máy có nghĩa là số lượng data chạy qua network nhiều hơn, khả năng 1 máy hỏng cao hơn, dẫn đến vấn đề của cả hệ thống. Muốn đạt được điều này (hay từ chuyên môn là horizontal scalability), hệ thống cần phải được thiết kế đúng.

Một phương pháp mình hay dùng đó là khi service đang chạy, mình sẽ xem cái CPU profile, để xem phần nào của service đang chậm, hoặc tốn nhiều tài nguyên hơn mức cần thiết, và sau đó hiểu phần đó làm gì, và tìm ra phương pháp để làm phần đó nhanh hơn.

Lời khuyên khi chinh phục lĩnh vực Solution Architect

Theo anh, những bạn có tuýp người như thế nào thì sẽ phù hợp với lĩnh vực này? 

Thực ra không có một tuýp người nhất định trong lĩnh vực này, lĩnh vực này khá là open và rất nhiều tuýp người có thể làm trong lĩnh vực này. Khi mình nhìn lại công việc của mình  mình thấy nó cũng không khác gì nhiều công việc của những người khác, tức là mình có những vấn đề thế này, và mình có một vài solution thế này, và thế là làm sao để mình chọn ra solution, mỗi solution có điểm hay điểm dở, nó giúp giải quyết vấn đề này nhưng cũng giúp tạo ra vấn đề khác, và mình chọn solution nào cho đúng thôi. Mình nghĩ ai thích giải quyết vấn đề technical đều có thể làm trong lĩnh vực này.

Để có được vị trí trong các tập đoàn công nghệ lớn như Google, Facebook hay Microsoft, mình có điểm nào nổi trội để thu hút và hấp dẫn các nhà tuyển dụng?

Cái đầu tiên mình nghĩ là giá trị mình đem lại cho công ty là gì. Mình đặt mình vào vị trí một nhà tuyển dụng, họ tìm người để làm gì, thứ nhất họ tìm người  giải quyết vấn đề giỏi, bình thường họ không tìm những người kiểu technology này, technology kia; họ không làm như thế vì mỗi công ty họ có technology riêng của họ.

Cái thứ hai là họ muốn biết kinh nghiệm của mình có liên quan đến vấn đề họ gặp phải không. Giả sử họ tìm thấy một ứng viên đã giải quyết những vấn đề tương tự vấn đề họ đang gặp, đó là một ứng viên tuyệt vời. Gần đây mình có nhận được một vài resume của nhiều bạn, cái mình cảm thấy được là các bạn đang cố cover rất nhiều technology đấy, mình sử dụng technology này cho dự án này, sử dụng technology kia cho dự án kia, các bạn muốn chứng minh có kinh nghiệm rất nhiều technology, nhưng cái nhà tuyển dụng quan tâm muốn biết bạn có phải là người giải quyết vấn đề tốt hay không, mình nghĩ các bạn nên tập trung vào bạn làm dự án gì, vấn đề các bạn giải quyết trong dự án đó là gì và kết quả dự án ấy như thế nào. Khi nhà tuyển dụng thấy được bạn là kỹ sư giỏi, có khả năng giải quyết vấn đề rất là khó, và nhiều khi vấn đề đó chính là vấn đề mà họ đang gặp phải, bạn chính là candidate tuyệt vời cho nhà tuyển dụng, mình nghĩ đó là cái mình góp ý đến các bạn khi nộp resume đó là đổi resume để tập trung hơn vào dự án bạn đang làm và show được kết quả các bạn đã làm như thế nào.

Anh có thể chia sẻ những tips nho nhỏ hoặc mẹo vặt giúp chinh phục công ty công nghệ ở Mỹ không? 

Cá nhân mình nghĩ các bạn lập trình viên Việt Nam hoàn toàn đủ khả năng làm cho các công ty công nghệ ở Mỹ. Các bạn lập trình viên Việt Nam thực ra rất là giỏi, cái mình cảm thấy rào cản lớn nhất không liên quan đến năng lực mà đó là pháp lý, chi phí. Giả sử để có được visa đi làm ở Mỹ khá là khó, hoặc để phỏng vấn ở các công ty Mỹ họ sẽ đưa ứng viên đến tận headquarter để phỏng vấn trực tiếp. Vì chi phí đó khá lớn nên nhiều công ty không muốn đánh cược vào 1 thí sinh họ chưa chắc đã nhận. Nên thường nếu các bạn có referral từ những người đã làm bên này sẽ giúp cơ hội được phỏng vấn và nhận cao hơn nhiều.

Xin được cảm ơn những chia sẻ rất tâm huyết từ anh Hiếu, hy vọng qua bài viết này các bạn lập trình viên càng hiểu hơn về vai trò của một software engineer, hay “bỏ túi” những bí kíp giúp ứng tuyển các công ty công nghệ tại Mỹ. Hẹn gặp lại các bạn kỳ sau và đừng quên đón đọc “Chuyên gia nói” cùng Station D nhé.

Tham khảo tuyển dụng software engineer lương cao tại Station D

Bài viết liên quan

Thị trường EdTech Vietnam- Nhiều tiềm năng nhưng còn bị bỏ ngỏ tại Việt Nam

Thị trường EdTech Vietnam- Nhiều tiềm năng nhưng còn bị bỏ ngỏ tại Việt Nam

Lĩnh vực EdTech (ứng dụng công nghệ vào các sản phẩm giáo dục) trên toàn cầu hiện nay đã tương đối phong phú với nhiều tên tuổi lớn phân phối đều trên các hạng mục như Broad Online Learning Platforms (nền tảng cung cấp khóa học online đại chúng – tiêu biểu như Coursera, Udemy, KhanAcademy,…) Learning Management Systems (hệ thống quản lý lớp học – tiêu biểu như Schoology, Edmodo, ClassDojo,…) Next-Gen Study Tools (công cụ hỗ trợ học tập – tiểu biểu như Kahoot!, Lumosity, Curriculet,…) Tech Learning (đào tạo công nghệ – tiêu biểu như Udacity, Codecademy, PluralSight,…), Enterprise Learning (đào tạo trong doanh nghiệp – tiêu biểu như Edcast, ExecOnline, Grovo,..),… Hiện nay thị trường EdTech tại Việt Nam đã đón nhận khoảng đầu tư khoảng 55 triệu đô cho lĩnh vực này nhiều đơn vị nước ngoài đang quan tâm mạnh đến thị trường này ngày càng nhiều hơn. Là một trong những xu hướng phát triển tốt, và có doanh nghiệp đã hoạt động khá lâu trong ngành nêu tại infographic như Topica, nhưng EdTech vẫn chỉ đang trong giai đoạn sơ khai tại Việt Nam. Tại Việt Nam, hệ sinh thái EdTech trong nước vẫn còn rất non trẻ và thiếu vắng nhiều tên tuổi trong các hạng mục như Enterprise Learning (mới chỉ có MANA), School Administration (hệ thống quản lý trường học) hay Search (tìm kiếm, so sánh trường và khóa học),… Với chỉ dưới 5% số dân công sở có sử dụng một trong các dịch vụ giáo dục online, EdTech cho thấy vẫn còn một thị trường rộng lớn đang chờ được khai phá. *** Vừa qua Station D đã công bố Báo cáo Vietnam IT Landscape 2019 đem đến cái nhìn toàn cảnh về các ứng dụng công...

By stationd
Bộ cài đặt Laravel Installer đã hỗ trợ tích hợp Jetstream

Bộ cài đặt Laravel Installer đã hỗ trợ tích hợp Jetstream

Bài viết được sự cho phép của tác giả Chung Nguyễn Hôm nay, nhóm Laravel đã phát hành một phiên bản chính mới của “ laravel/installer ” bao gồm hỗ trợ khởi động nhanh các dự án Jetstream. Với phiên bản mới này khi bạn chạy laravel new project-name , bạn sẽ nhận được các tùy chọn Jetstream. Ví dụ: API Authentication trong Laravel-Vue SPA sử dụng Jwt-auth Cách sử dụng Laravel với Socket.IO laravel new foo --jet --dev Sau đó, nó sẽ hỏi bạn thích stack Jetstream nào hơn: Which Jetstream stack do you prefer? [0] Livewire [1] inertia > livewire Will your application use teams? (yes/no) [no]: ... Nếu bạn đã cài bộ Laravel Installer, để nâng cấp lên phiên bản mới bạn chạy lệnh: composer global update Một số trường hợp cập nhật bị thất bại, bạn hãy thử, gỡ đi và cài đặt lại nha composer global remove laravel/installer composer global require laravel/installer Bài viết gốc được đăng tải tại chungnguyen.xyz Có thể bạn quan tâm: Cài đặt Laravel Làm thế nào để chạy Sql Server Installation Center sau khi đã cài đặt xong Sql Server? Quản lý các Laravel route gọn hơn và dễ dàng hơn Xem thêm Tuyển dụng lập trình Laravel hấp dẫn trên Station D

By stationd
Principle thiết kế của các sản phẩm nổi tiếng

Principle thiết kế của các sản phẩm nổi tiếng

Tác giả: Lưu Bình An Phù hợp cho các bạn thiết kế nào ko muốn làm code dạo, design dạo nữa, bạn muốn cái gì đó cao hơn ở tầng khái niệm Nếu lập trình chúng ta có các nguyên tắc chung khi viết code như KISS , DRY , thì trong thiết kế cũng có những nguyên tắc chính khi làm việc. Những nguyên tắc này sẽ là kim chỉ nam, nếu có tranh cãi giữa các member trong team, thì cứ đè nguyên tắc này ra mà giải quyết (nghe hơi có mùi cứng nhắc, mình thì thích tùy cơ ứng biến hơn) Tìm các vị trí tuyển dụng designer lương cao cho bạn Nguyên tắc thiết kế của GOV.UK Đây là danh sách của trang GOV.UK Bắt đầu với thứ user cần Làm ít hơn Thiết kế với dữ liệu Làm mọi thứ thật dễ dàng Lặp. Rồi lặp lại lần nữa Dành cho tất cả mọi người Hiểu ngữ cảnh hiện tại Làm dịch vụ digital, không phải làm website Nhất quán, nhưng không hòa tan (phải có chất riêng với thằng khác) Cởi mở, mọi thứ tốt hơn Bao trừu tượng luôn các bạn, trang Gov.uk này cũng có câu tổng quát rất hay Thiết kế tốt là thiết kế có thể sử dụng. Phục vụ cho nhiều đối tượng sử dụng, dễ đọc nhất nhất có thể. Nếu phải từ bỏ đẹp tinh tế – thì cứ bỏ luôn . Chúng ta tạo sản phẩm cho nhu cầu sử dụng, không phải cho người hâm mộ . Chúng ta thiết kế để cả nước sử dụng, không phải những người đã từng sử dụng web. Những người cần dịch vụ của chúng ta nhất là những người đang cảm thấy khó sử dụng dịch...

By stationd
Applicant Tracking System là gì? ATS hoạt động ra sao

Applicant Tracking System là gì? ATS hoạt động ra sao

Công nghệ phát triển hướng đến giải quyết và cải tiến cho mỗi quy trình, hoạt động của doanh nghiệp cũng như đời sống. Đối với lĩnh vực tuyển dụng, sự xuất hiện của phần mềm ATS (Applicant Tracking System) mang đến nhiều thay đổi đáng kể, cả đối với nhà tuyển dụng và ứng viên. Vậy phần mềm ATS là gì? Chúng được sử dụng ra sao? Những thắc mắc về phần mềm ATS trong tuyển dụng sẽ được Station D giải đáp tại bài viết dưới đây. Hệ thống sàng lọc ứng viên ATS (Applicant Tracking System) Applicant Tracking System là gì? Applicant Tracking System (ATS) hay còn gọi là Hệ thống quản lý hồ sơ ứng viên là phần mềm quản lý quy trình tuyển dụng từ đầu đến cuối một cách tự động hóa. ATS được thiết kế để giúp nhà tuyển dụng tiết kiệm thời gian và chi phí trong việc thu thập, sắp xếp và sàng lọc hồ sơ các ứng viên. Các tính năng nổi bật của Applicant Tracking System Các tính năng nổi bật của Applicant Tracking System Applicant Tracking System (ATS) là một công cụ quan trọng giúp các công ty quản lý quy trình tuyển dụng hiệu quả hơn. Cùng chúng tôi điểm qua các tính năng nổi bật của ATS: Sàng lọc và quản lý hồ sơ ứng viên Khả năng tìm kiếm và sàng lọc ứng viên là một trong các tính năng nổi bật nhất của ATS. Với việc sử dụng từ khóa và tiêu chí cụ thể, hệ thống có thể nhanh chóng tìm kiếm và sàng lọc các hồ sơ phù hợp, tự động loại bỏ những ứng viên không đạt yêu cầu. Điều này giúp nhà tuyển dụng tập trung vào những ứng viên...

By stationd
Hiểu về trình duyệt – How browsers work

Hiểu về trình duyệt – How browsers work

Bài viết được sự cho phép của vntesters.com Khi nhìn từ bên ngoài, trình duyệt web giống như một ứng dụng hiển thị những thông tin và tài nguyên từ server lên màn hình người sử dụng, nhưng để làm được công việc hiển thị đó đòi hỏi trình duyệt phải xử lý rất nhiều thông tin và nhiều tầng phía bên dưới. Việc chúng ta (Developers, Testers) tìm hiểu càng sâu tầng bên dưới để nắm được nguyên tắc hoạt động và xử lý của trình duyệt sẽ rất hữu ích trong công việc viết code, sử dụng các tài nguyên cũng như kiểm thử ứng dụng của mình. Cách để npm packages chạy trong browser Câu hỏi phỏng vấn mẹo về React: Component hay element được render trong browser? Khi hiểu được cách thức hoạt động của trình duyệt chúng ta có thể trả lời được rất nhiều câu hỏi như: Tại sao cùng một trang web lại hiển thị khác nhau trên hai trình duyệt? Tại sao chức năng này đang chạy tốt trên trình duyệt Firefox nhưng qua trình duyệt khác lại bị lỗi? Làm sao để trang web hiển thị nội dung nhanh và tối ưu hơn một chút?… Hy vọng sau bài này sẽ giúp các bạn có một cái nhìn rõ hơn cũng như giúp ích được trong công việc hiện tại. 1. Cấu trúc của một trình duyệt Trước tiên chúng ta đi qua cấu trúc, thành phần chung và cơ bản nhất của một trình duyệt web hiện đại, nó sẽ gồm các thành phần (tầng) như sau: Thành phần nằm phía trên là những thành phần gần với tương tác của người dùng, càng phía dưới thì càng sâu và nặng về xử lý dữ liệu hơn tương tác. Nhiệm...

By stationd