Home Blog Page 216

“AI giờ đã được bình chọn là xu hướng của tương lai, sao developer mình còn chưa tận dụng điều đó?”

“AI giờ đã được bình chọn là xu hướng của tương lai, sao developer mình còn chưa tận dụng điều đó?”

AI – một trong những câu chuyện được bàn tán khắp các mặt báo từ đầu 2017 đến nay, đã chính thức trở thành xu hướng công nghệ không thể “tránh” được. TopDev đã có buổi gặp gỡ xoay quanh “hành trang” AI mà lập trình viên cần có với anh Nguyễn Thiên Bảo – Tiến sỹ Khoa học máy tính. Với kinh nghiệm hơn 10 năm làm việc tại nước ngoài, sự nghiệp trên đà thăng tiến nhưng anh vẫn quyết định trở về Việt Nam làm việc, giảng dạy, và hiện đang đảm nhiệm chức vụ Giám đốc của Công ty HBB Solutions, một trong những startups đang nắm trong tay những dịch vụ AI (Artificial Intelligence – Trí tuệ nhân tạo)  đầu tiên trên thị trường.

1/ Anh có thể giới thiệu một chút về HBB Solutions, về những định hướng, hình ảnh chung của công ty?

Công ty HBB Solutions được thành lập hơn một năm, vào giữa tháng 8 năm 2016. HBB chuyên cung cấp các dịch vụ về thiết kế Web, Mobile app, hỗ trợ khách hàng trong những dịch vụ làm content, quản trị website, marketing, v.v… Nổi bật của HBB chính là việc tích hợp Trí tuệ nhân tạo vào các sản phẩm Web, Mobile app của công ty. Như các trang mạng đã đưa tin thì Trí tuệ nhân tạo đang trở thành từ khóa cực nóng và được dự đoán là xu hướng không thể tránh khỏi của cuộc cách mạng công nghiệp lần thứ 4. Tuy nhiên, việc ứng dụng Trí tuệ nhân tạo còn khá xa lạ tại Việt Nam.

Điều đó thể hiện ở việc đầu tư Trí tuệ nhân tạo vào các dự án tại Việt Nam còn rất hạn chế. E ngại lớn nhất từ phía các nhà đầu tư là việc hiểu rõ về công nghệ để có thể áp dụng vào các dự án. Đó cũng chính là lý do mà HBB Solutions muốn phát triển một vườn ươm về AI để giúp đỡ các nhà đầu tư trong và ngoài nước cũng như các công ty khởi nghiệp tiềm năng tại Việt Nam. Những trợ lý ảo  mà HBB Solutions cung cấp cho khách hàng có thể làm việc  toàn thời gian 24/7, giúp tăng năng suất lao động và giảm thiểu chi phí cho doanh nghiệp cũng như xóa bỏ rào cản ngôn ngữ trong việc giúp đỡ tìm hiểu nhu cầu của từng vị khách một cách toàn diện, hiệu quả, mang lại trải nghiệm khác biệt dành cho khách hàng.

2/ Hiện tại Artificial Intelligence (AI) là một trend khá hot và các bạn lập trình viên đang muốn biết cách để học và phát triển kĩ năng của mình về AI, anh có thể chia sẻ thêm về phương hướng cho các bạn ấy không?

Theo tạp chí Forbes, dẫn đầu những xu hướng ảnh hưởng đến bộ mặt IT trong tương lai chính là AI và tiếp sau đó là Machine Learning, Big Data, IoT, Blockchain. Ở nhiều nước phát triển, việc AI được áp dụng trong công việc đã dần trở nên khá bình thường. Nhưng ở Việt Nam, tiềm năng của AI thì nhiều người nhìn thấy, nhưng việc ứng dụng AI thì lại khá hiếm hoi. Ngay cả những ông lớn như trong ngành IT tại thị trường Việt Nam như TMA, FPT, … hầu như cũng tập trung chủ yếu vào outsourcing. Việc chuyên về AI, tạo ra những ứng dụng AI thực sự thì hiếm người thực hiện. Gần đây, để bắt kịp xu thế, tập đoàn Viettel đã bắt đầu nghiên cứu về AI, sau đó FPT cũng thiết lập bộ phận nghiên cứu Công nghệ 4.0.

Nhìn lại, lập trình viên Việt Nam thực sự giỏi, cần cù, siêng năng và tư duy toán học rất cao nhưng lại không phát huy được thế mạnh đó. Các bạn làm những vị trí mà tất cả các lập trình viên khác trên thế giới đều có thể làm, dẫn đến việc cạnh tranh gay gắt trong thời kỳ toàn cầu hóa. Ngược lại, AI giờ đã được bình chọn là xu hướng của tương lai thì sao mình lại không tận dụng?

Với các bạn Lập trình viên, khi đến với AI các bạn sẽ có nhiều điều lợi ích. Thứ nhất, các bạn có thể cải thiện cuộc sống vì mức lương lập trình phát triển AI rất cao. Thứ hai, vởi việc ứng dụng AI, cuộc sống của chúng ta sẽ có nhiều tiện ích hơn, giúp cho các doanh nghiệp có cơ hội cạnh tranh cao hơn. Thứ ba, về chuyên môn, các bạn sẽ thực sự bắt kịp, và hòa nhập nền công nghệ tiên tiến của thế giới

Hãy tìm tòi, nghiên cứu những bài viết về AI, luyện tập những thuật toán, công thức viết code từ cơ bản đến nâng cao. Tích cực học thêm tiếng Anh chuyên ngành để có thể tìm hiểu được các tài liệu nước ngoài. Những khóa học online của các trường đại học về công nghệ có uy tín hiện nay trên thế giời là những địa chỉ đáng tin cậy cho các bạn.

3/ Anh có thể nói thêm về một vài dự án tâm đắc của công ty cũng như bài học rút ra được từ những project đó?

Do một vài lý do, xin phép không thể tiết lộ thông tin về dự án cho đến khi nào khách hàng phát hành sản phẩm của họ. Vì vậy mình chỉ có thể chia sẻ một cách khái quát. Chẳng hạn trước đây bạn phải tìm kiếm một sản phẩm nào đó bằng tay, thì giờ đây nhờ kỹ thuật nhận dạng lời nói,  bạn có thể dễ dàng và nhanh chóng tìm kiếm tự động các sản phẩm vừa ý. Đây chính là tính năng mới mà HBB Solutions đang áp dụng vào lĩnh vực bất động sản. Ví dụ như trong trường hợp bạn muốn tìm kiếm một căn nhà nào đó, phần mềm này cũng sẽ thu lại lời nói của bạn, tự động giúp bạn dò tìm bản đồ và chỉ đường cho bạn.

Một ứng dụng khác tương tự như Grab hay Uber, tận dụng tính năng kinh tế chia sẻ, tức là việc kết nối trực tiếp giữa người dùng và người thực hiện công việc việc mà không phải qua một phía trung gian, nhờ đó người dùng không phải trả tiền nhiều mà người trực tiếp thực hiện dịch vụ sẽ nhận được mức thù lao cao hơn. HBB Solutions cũng có một ứng dụng thông minh tương tự, dùng để kết nối giữa người chủ nhà và người giúp việc, một dịch vụ mà bạn có thể tuyển người giúp việc ở bất cứ nơi nào. HBB Solutions đã tích hợp kỹ thuật nhận diện khuôn mặt vào sản phẩm nhằm hỗ trợ xác thực nhân thân của người giúp việc một cách thông minh và chính xác.

Kỹ thuật nhận diện khuôn mặt (Face Recognition) được xây dựng bằng cách sử dụng các thuật toán trong Thị giác máy tính (Computer Vision), chạy trên nền tảng Azure của Microsoft, giúp người giúp việc cũng như chủ nhà dễ dàng xác minh thông tin của nhau. Bất ngờ hơn trong lúc HBB đang triển khai thực hiện dự án này, thì vào tháng 07/2017, Microsoft đã cho ra đời bộ công cụ CNTK (Computational Network Toolkit), phục vụ cho việc nghiên cứu trí tuệ nhân tạo. Đặc biệt, CNTK được khẳng định là rất tiềm năng cho các ứng dụng như Uber để xác minh danh tính của tài xế. Điều này chứng tỏ HBB Solutions đã nhanh chóng bắt kịp xu thế ứng dụng các công nghệ mới trên thế giới.

4/ Trong quá trình ứng dụng AI thì không biết mình có gặp những khó khăn nào không?

Làm sao có thể đưa ứng dụng trí tuệ nhân tạo đến gần hơn với các doanh nghiệp là một trăn trở khó khăn lớn nhất. Khắp nơi trên thế giới, AI đã chứng tỏ vị thế và sức mạnh trong mọi lĩnh vực, nhưng ở Việt Nam, chúng ta vẫn chậm chân với ứng dụng này do chưa hiểu rõ về AI, về sức mạnh và hiệu quả mà AI có thể mang lại trong kinh doanh. Do vậy, HBB Solutions phải từng bước giúp mọi người thấy rõ và định hướng thị trường, từ đó mới mong có thể góp phần phát triển ứng dụng AI trong sản xuất kinh doanh.

Khó khăn trước mắt là quá trình tuyển dụng. HBB Solutions cần các bạn có kiến thức cơ bản về AI với khả năng học hỏi cao thì mới bắt kịp tiến độ dự án. Khi là thành viên của HBB Solutions, các bạn phải có sự sáng tạo vì ứng dụng AI vào thực tế là một đề tài còn rất mới. Với những vấn đề như Nhận diện khuôn mặt (Face recognition), Nhận dạng giọng nói (Speech recognition), hệ thống chatbot tự động với các thuật toán phức tạp tùy thuộc quy mô, các bạn sẽ phải tìm hiểu và nghiên cứu để tìm ra giải pháp. Vì vậy, với công ty, quá trình tuyển dụng, tìm kiếm những tài năng phù hợp là một vấn đề lớn.

5/ Khi ứng tuyển vào các vị trí liên quan đến AI, các bạn cần phải có kiến thức về AI, bằng cấp hay background như thế nào anh?

Thật ra, khi nói về đào tạo AI ở Việt Nam, hiện tại mới chỉ đếm trên đầu ngón tay với một số trường như ĐH Bách Khoa, ĐH Khoa học Tự nhiên, ĐH Công nghệ Thông tin; ở phía Bắc có ĐH Công nghệ, ĐH Bách Khoa, … nhưng việc giảng dạy và đạo tạo mới chỉ dừng ở giới thiệu về Trí tuệ nhân tạo chứ chưa thực sự nhấn mạnh đến việc ứng dụng. Nhìn chung, các trường đa phần đào tạo để các bạn để trở thành lập trình viên, số ít còn lại mới về nghiên cứu, tìm tòi, trong khi AI lại thiên về R&D hơn.

Điều này đòi hỏi các bạn phải thật sự có niềm đam mê với AI thì mới có thể đi cùng với bọn mình. HBB Solutions cũng xác định các bạn hầu hết chưa hề có kinh nghiệm làm các dự án về AI, nên công ty chỉ đánh giá kiến thức nền chung và khả năng suy luận logic. Phần này sẽ được kiểm tra và đánh giá qua quá trình phỏng vấn. Tất nhiên sau một thời gian làm việc tại công ty, cũng có một vài bạn thấy không phù hợp với AI nên đã chuyển sang công vị trí, kéo theo công tác tuyển dụng diễn ra liên tục, thường xuyên. Nói chung, để làm được AI, các bạn cần phải rất vững thuật toán và suy luận logic; còn về ngôn ngữ lập trình thì chỉ cần 3 đến 6 tháng là các bạn đã có thể nắm bắt.

6/ Vậy không biết văn hóa làm việc của HBB Solutions như thế nào? Khi làm về AI, ắt hẳn sẽ gặp trường hợp khối lượng công việc rất nhiều, không biết công ty mình có những chính sách như thế nào?

Công ty tạo điều kiện thuận lợi, thoải mái nhất cho các bạn tự do và sáng tạo nhằm nâng cao tính hiệu quả trong công việc. Vì vậy, công ty theo hướng “Tây hoá” môi trường làm việc như: thoải mái không đồng phục, cafe, trái cây mỗi ngày vào buổi trưa để các bạn xả stress, tán gẫu, trao đổi với nhau về công việc lẫn cuộc sống. Các bạn có một môi trường làm việc năng động, trẻ trung. Ngoài ra còn có những hoạt động vui chơi cuối tuần, teambuilding. Công ty thường xuyên tổ chức buổi sinh nhật chung để mọi người thắt chặt mối quan hệ hơn.

Điểm đặc biệt là HBB Solutions hạn chế OT (tăng ca) và không khuyến khích các bạn OT thường, giúp các bạn có thêm thời gian tự do làm những việc khác.
Môi trường làm việc thoải mái cũng đến từ mong muốn đồng hành lâu dài cùng các bạn, cũng như thúc đẩy sự sáng tạo trong công việc. Đến công sở với tâm thế thoải mái như đi café với bạn bè, không hề áp lực. Tuy thoải mái nhưng deadline thì phải đúng hẹn với khách hàng. Các leader, quản lý dự án, thậm chí cả CEO luôn hổ trợ, trao đổi, và theo dõi sát sao tiến độ để đảm bảo tính hiệu quả của công việc.

7/ Anh có thể chia sẻ thêm về định hướng tương lai của HBB Solutions không?

Tương tự như câu slogan “Better Technology, Better Life”, HBB Solutions đã và đang cố gắng tạo ra những dịch vụ tốt nhất để phục vụ cho khách hàng. Với mục tiêu có thể đưa AI ứng dụng vào cuộc sống không chỉ trong nước mà còn cả khu vực và trên thế giới. Việc ứng dụng AI còn khá mới mẻ đối với thị trường Việt nam, và HBB Solutions hiện vẫn là người đi những bước đầu tiên với nỗ lực phát gây dựng và phát triển tiềm lực AI nước nhà.

Tuy nhiên chắc chắn trong vài năm tới, thị trường Việt Nam sẽ bắt đầu xuất hiện các đối thủ cạnh tranh. Công ty cần phải phải tận dụng thế mạnh của người tiên phong và khẳng định vị trí của mình bằng cách làm cho 100% khách hàng dùng dịch vụ của mình phải hài lòng. Nhờ đó, khi nhắc đến sản phẩm có mang tính AI, các đối tác trong và ngoài nước, không chỉ Việt Nam mà ngay cả Đông Nam Á, cũng sẽ nhắc đến HBB Solutions như một phản xạ tự nhiên.

Muốn như vậy, công ty rất cần nguồn nhân lực chất lượng hiểu biết về công nghệ thông tin và có đam mê với AI. Để làm việc đó, HBB Solutions sẽ kết hợp với các trường Đại học trong và ngoài nước, thành lập các trung tâm đào tạo nghiên cứu chuyên về AI, Machine Learning, …, tổ chức các lớp đào tạo ngắn hạn, mời các giáo sư, CEOs nhiều kinh nghiệm đến trao đổi, chia sẻ. Những hoạt động này trước mắt sẽ tạo nguồn nhân lực nhằm phục vụ cho công ty, sau đó về lâu dài là nhằm xây dựng cộng đồng AI lớn mạnh tại Việt Nam.

8/ Được biết HBB Solutions là startup, không biết trong quá trình khởi nghiệp, anh có bài học nào muốn chia sẻ đến người đọc?

Bài học đầu tiên đó là nhân lực. Mình phải xây dựng đội ngũ nhân lực có trình độ “cứng” và có kinh nghiệm. Công ty thời gian đầu phải dành thời gian tuyển và đào tạo các bạn Leader, Manager cho các bộ phận khác nhau như Marketing, Sale, Dev, v.v… Đây là quá trình rất khó khăn vì nhiều bạn có kinh nghiệm, và rất giỏi nhưng lại không phù hợp với văn hóa công ty, không phù hợp với mục tiêu đề ra là sản phẩm phải có ứng dụng AI. Vấn đề khác nữa là về mức lương. Vì là công ty start-up nên HBB Solutions không thể nào đáp ứng mức lương cao. Trong khi đó những bạn trẻ ngành công nghệ thông tin lại hay thay đổi, mức lương tăng theo cao nên công ty phải cân nhắc rất kĩ và đòi hỏi cao theo yêu cầu.

Bài học thứ tiếp theo là quy trình. Khi công ty phát triển, sẽ có rất nhiều quy trình cần đưa ra, áp dụng và liên tục update để phù hợp với yêu cầu của khách hàng. Mỗi yêu cầu của khách hàng là những đặc tính rất riêng trong kinh doanh của họ. Do vậy, mọi quy trình xử lý đều phải kĩ lưỡng và chi li, những thuật toán phải chính xác đến từng chi tiết. Với việc lấy phương châm “Better Technology – Better Life” làm kim chỉ nam, HBB Solutions luôn phải tự làm khó mình, chỉn chu đến từng đơn vị, chi tiết sản phẩm. Đây là cách mà HBB Solutions tôn trọng và làm hài lòng khách hàng của mình.

9/ Đối với CV các bạn muốn vào làm vị trí AI, đâu là điểm gây ấn tượng với anh đầu tiên?

Như mình đã nói ở trên, AI thực sự rất khó, chỉ những người giỏi và có niềm đam mê với AI mới đủ sức theo đuổi. Mặt khác, công việc tại Việt Nam cho những bạn theo học AI cũng khá ít ỏi so với các bạn học những chuyên ngành khác. Hai điều này làm cho số người biết và làm về AI đã ít, còn ít hơn. Vậy cơ sở nào để HBB Solutions lựa chọn cho mình những ứng viên phù hợp nhằm xây dựng một đội ngũ chuyên về AI thực sự? Thứ nhất là về kiến thức nền, HBB Solutions sẽ xem xét kĩ phần kiến thức toán và thuật toán của ứng viên. Những phần này trong các trường đào tạo chuyên ngành Công nghệ thông tin đều được giảng dạy kỹ lưỡng và bài bản. Và đây cũng là nền tảng để giúp sinh viên phát triển thêm nữa sau khi ra trường. Vì vậy các ứng viên của HBB Solutions cần phải đáp ứng đủ tiêu chí này.

Ngoài ra các ứng viên cũng cần có sự nắm bắt nhất định về các sự kiện IT hay công nghệ gần đây trên thế giới. Điều này cho thấy ứng viên có niềm đam mê đối với ngành mình theo đuổi. Phần kiến thức này sẽ được kiểm tra và đánh giá qua quá trình phỏng vấn trực tiếp.

Điều cuối cùng mà HBB Solutions rất quan tâm là tiếp là nhân cách và thái độ làm việc. Thái độ và nhân cách là một yếu tố khá quan trọng trong việc tuyển lựa nhân viên của HBB Solutions bởi vì bất kỳ công ty nào muốn xây dựng một đội ngũ nhân viên tốt, chuyên nghiệp, đều luôn xem xét tiêu chí này. Nhân cách  thể hiện qua việc các bạn ấy chuẩn bị CV có kĩ lưỡng, cụ thể, thờii gian các bạn có gắn bó với công ty cũ… Thái độ làm việc được đánh giá qua việc các bạn có hòa đồng cùng các đồng nghiệp khác trong công ty, có khả năng chịu khó tìm tòi và học hỏi cái mới, có trách nhiệm với công việc hay không, …

Cảm ơn anh đã dành thời gian chia sẻ với TopDev.

Nhà tuyển dụng xem gì trên trang mạng xã hội của bạn?

Nhà tuyển dụng xem gì trên trang mạng xã hội của bạn

Bạn vừa mới có một buổi vui chơi hoành tráng cùng đám bạn thân, bạn muốn khoe điều đó với 964 người bạn của mình trên Facebook bằng những bức ảnh selfie. Bạn nghĩ rằng mình xứng đáng có được một chút thời gian giải lao sau những giờ làm việc căng thẳng, bạn muốn chia sẻ điều đó trên trang mạng xã hội của mình: facebook, zalo, instagram,….

60% nhà tuyển dụng tiết lộ rằng họ dùng các trang mạng xã hội để tìm hiểu về các ứng viên tìm việc. Điều này có nghĩa là gì – và khả năng được tuyển dụng của bạn là bao nhiêu? Bạn có thể sẽ không muốn nhấn nút “Public” nếu biết được những điều này về các nhà tuyển dụng.

Họ có thể đang dõi theo bạn.

Theo khảo sát mới nhất về cu hướng thị trường tuyển dụng trên các trang truyền thông xã hội của hơn 2.000 nhà tuyển dụng, các chuyên gia nhân sự và hơn 3.000 nhân viên toàn thời gian của Hoa Kỳ trên CareerBuilder cho thấy: 60% nhà tuyển dụng tiết lộ rằng họ sử dụng các trang web mạng xã hội để nghiên cứu các ứng viên. Con số này đã tăng một cách đáng kể từ 52% so với năm trước, 22% trong năm 2008 và 11% vào năm 2006 (khi cuộc điều tra được tiến hành đầu tiên). Ngoài ra, 59% nhà tuyển dụng sử dụng công cụ tìm kiếm để nghiên cứu các ứng viên so với 51% vào năm ngoái.

Và nếu những CON SỐ trên chưa đủ để làm bạn giật mình, thì hãy suy nghĩ theo hướng này: Số lượng nhà tuyển dụng sử dụng các công cụ mạng xã hội để sàng lọc ứng viên đã tăng 500% so với thập kỉ trước. Đúng rồi, bạn không đọc nhầm đâu: 500% so với thập kỉ trước.

49% các nhà tuyển dụng sử dụng mạng xã hội để sàng lọc ứng viên cho biết họ đã tìm thấy những thông tin quyết định không tuyển ứng viên đó. Sau đây là nội dung khiến nhà tuyển dụng có ấn tượng không tốt với bạn:

  • Hình ảnh khêu gợi, video hoặc thông tin không phù hợp – 46%
  • Thông tin về việc uống rượu hoặc sử dụng chất kích thích – 43%
  • Những câu bình luận phân biệt đối xử liên quan đến chủng tộc, tôn giáo, giới tính… – 33%
  • Nói xấu công ty cũ hoặc nhân viên đã từng làm việc chung – 31%
  • Kỹ năng giao tiếp kém – 29%

Nói một cách rõ ràng, hầu hết các nhà tuyển dụng không cố ý tìm kiếm điểm xấu của ứng viên (chỉ có 21% nhà tuyển dụng nói rằng họ xem các mạng truyền thông để tìm kiếm lí do không thuê ứng viên đó)

Các nhà tuyển dụng trong lĩnh vực công nghệ thông tin và bán hàng là những người hầu hết tìm kiếm thông tin của các ứng viên thông qua các trang mạng xã hội, ở mức 76% và 65% tương ứng.

Vì vậy, đây chính là thời điểm để chỉnh sửa lại các trang mạng xã hội của bạn.

Số lượng các nhà tuyển dụng tìm kiếm thông tin của các ứng viên ngày càng tăng. Đây chính là một cơ hội tuyệt vời cho bạn để làm nổi bật lên những điểm mạnh của mình và sử dụng chúng như một công cụ để giúp bạn có thể ghi điểm với nhà tuyển dụng. Những trang mạng xã hội trực tuyến là công cụ hoàn hảo để tạo sự khác biệt giữa bạn với những ứng viên khác và nó cũng chính là công cụ giúp nhà tuyển dụng có được nhiều thông tin hơn là một hồ sơ xin việc. Hãy bổ sung thêm một số thông tin về kinh nghiệm làm việc của bạn như: dạy kèm học sinh lớp năm 3 buổi/tuần, hoặc cộng tác viên tổ chức sự kiện? Hãy nhấn mạnh điều đó trong hồ sơ trực tuyến của bạn.

“Các công cụ như Facebook và Twitter cho phép nhà tuyển dụng có được một cái nhìn tổng quan về các ứng viên hơn là những thông tin được cung cấp trong hồ sơ xin việc.” Rosemary HAEFNER, giám đốc nguồn nhân lực của CareerBuilder cho biết.

Theo khảo sát, có đến 60 % nhà tuyển dụng hiện đang sử dụng các trang mạng xã hội để sàng lọc ứng viên. Đối với một số ngành nghề đặc thù, hồ sơ xin việc không đủ để thể hiện hết về một ứng viên, vì vậy mạng xã hội tiết lộ thêm một số thông tin còn thiếu khiến nhà tuyển dụng có cái nhìn khách quan hơn khi tuyển dụng.

30% muốn xem người khác đang nói những gì về các ứng viên của họ.

Thậm chí nhiều người cho rằng bạn nên dùng mạng xã hội như một bản hồ sơ tìm việc mở rộng: 41% nhà tuyển dụng nói rằng khả năng để họ phỏng vấn ứng viên là khá ít nếu họ không thể tìm thấy thông tin về ứng viên trên mạng xã hội – tăng 6% so với năm ngoái.

Vậy nhà tuyển dụng muốn xem những gì?

  • Hồ sơ lí lịch của ứng viên phù hợp với yêu cầu công việc– 44%
  • Trang thông tin của ứng viên trình bày một cách chuyên nghiệp – 44%
  • Tính cách của ứng viên phù hợp với văn hóa công ty – 43%
  • Ứng viên thể hiện sự quan tâm đối với công việc ứng tuyển – 40%
  • Ứng viên có kỹ năng giao tiếp tốt – 36%

Duy trì trang xã hội của bạn một cách chuyên nghiệp.

Đừng xem việc giữ cho trang cá nhân của bạn chuyên nghiệp như một thỏa thuận trong thời gian ngắn, thay vào đó, những hình ảnh chuyên nghiệp của bạn cần được bảo trì và chăm sóc thường xuyên. Bạn sẽ không rời khỏi nhà mà không mặc đồ lót sạch sẽ, phải không?. Tương tự như vậy, bạn không nên để hồ sơ “bẩn” của bạn trên tất cả các trang web.

41% nhà tuyển dụng nói rằng họ sử dụng các trang mạng xã hội để nghiên cứu các nhân viên hiện tại, gần một phần ba (32%) nói rằng họ sử dụng công cụ tìm kiếm để kiểm tra về lao động hiện có, và hơn một phần tư (26%) cho biết họ đã tìm thấy nội dung trực tuyến làm cho nhận viên đó phải bị sa thải.

Nhà tuyển dụng thường xuyên xem xét cả ứng cử viên và nhân viên hiện tại, vì nhiều lý do. Bằng cách kiểm soát những dấu chân của bạn trên mạng xã hội thật tốt, bạn sẽ đưa mình đến một sự nghiệp thành công.

Nguồn: Applancer Careers

Tiki đã dùng React Native như thế nào?

Tại Tiki, chúng tôi hiện đang phát triển các tính năng mới dành cho Android và iOS app, bằng React Native. Nếu bạn cũng có ý định dùng tới React Native cho project của mình, hay chỉ đơn giản là tò mò về nó – Hãy đọc bài viết này. Qua đây, tôi muốn chia sẻ kinh nghiệm của chúng tôi về RN cũng như bài học rút ra từ nó.

Vì sao lại chọn React Native?

Hot reloading & Live reloading

Chúng rất yêu thích khả năng live reloading trong React Native. Trong những ngôn ngữ lập trình khác, chúng ta phải chờ cho tới khi quá trình compile được hoàn tất, có khi lên tới hơn khoảng ~120 seconds mới xem được kết quả output. Nhưng React Native thì lại cho phép ta modify ứng dụng mà không cần phải recompile nó. JavaScript code được load từ local server trong giai đoạn lập trình, và được tích hợp vào app cùng với những resources khác. Nhờ đó mà giúp rút ngắn thời gian cho UI iterations.

Ngoài ra, React Native còn tích hợp thêm tính năng Hot Reloading. Nó giúp giữ cho app hoạt động bình thường và update/thêm những thay đổi cùng lúc trong thời gian thực. Hiện tại, hot reloading vẫn không thực sự hoạt động hoàn hảo với một số tình huống đặc biệt nhưng với một lần reload lại app thường sẽ giúp fix việc này.

Reusability

Một tính năng tuyệt vời khác của React Native chính là những dòng code chung vốn có thể xài cho cả iOS, và Android platforms. Một ví dụ điển hình như khi bạn dùng React Native’s switch component, nó sẽ render UISwitch trong iOS và Native Switch component trong Android. Với các ứng dụng của Tiki, chúng tôi có tới 80% JavaScript code được dùng cho cả Android và iOS.

Incremental adopting React Native

Chúng tôi bắt đầu dùng nó vào đầu 2016 để phát triển cho các tính năng mới như chọn ra một đặc tính để tìm kiếm sản phẩm.

Do việc chuyển đổi hoàn toàn qua React Native sẽ rất tốn kém và một số tính năng cũng còn cần đến ngôn ngữ lập trình native. Thế nên chúng tôi quyết định hướng đi hybrid app.

Tại sự kiện thường niên của Tiki, gọi là “Dzut Co Hon”, các trang web của công ty sẽ thể hiện thông điệp tri âm tới các khách hàng. Tuy nhiên, tháng 7 vừa rồi, thì sự kiện còn được đưa lên mobile platform. Để tôi miêu tả ngắn gọn về sự kiện này thì cứ vào thời điểm tháng 7 âm lịch, với các quốc gia như Vietnam, China, HongKong, mọi người sẽ cúng đồ vật để và cho đi thức ăn cũng như tiền bạc, với hi vọng cô hồn sẽ không quấy phá công việc và cuộc sống của mình. Còn với Tiki, chúng tôi hạ giá tới 80% nhân dịp trên. Tất cả những gì users cần làm là “tap” và chọn món hàng mình muốn mua, người nhanh nhất sẽ thắng cuộc.

Bởi vì lượng người dùng lên đến 60k trong thời điểm trên, các sự kiện đã được lên lịch trước và không thể thay đổi.

Tuyển dụng lập trình React Native

Các vấn đề chúng tôi gặp phải

Các bản cập nhật được tung ra quá nhiều

React Native vẫn trong giai đoạn phát triển. Có rất nhiều tính năng, và bug fixed trong mỗi bản release. Tuy vậy chúng cũng chứa những thay đổi lớn khiến cho mỗi lần update là app rất dễ bị crash. Trong những trường hợp trên, do có những tính năng đang xài React Native vì thế mà phải bỏ ra rất nhiều thời gian để khắc phục chúng mỗi khi update phiên bản mới.

Page transition vẫn còn chậm

Sau khi nhấn vào nút sign-in, màn hình sẽ hiện ra thời gian và các sản phẩm có trong sự kiện

Khi chúng tôi đưa route đến một navigator, JavaScript sẽ phải render toàn bộ components cần thiết cho screen mới này. Ngoài ra nó còn phải thực hiện page transition cũng ngay trong JS thread đó. Do phải thực hiện cả hai nên việc chuyển đổi giữa các page bị chậm đi. Do đó mà chúng tôi phải lên lịch cho từng hoạt động sử dụng InteractionManager.runAfterInteractions(). Nhờ đó, trước khi transition được diễn ra, tất cả tab-data sẽ được pre-loaded cùng với lists các sản phẩm trong Register Screen . Sau khi transition hoàn thành, ta sẽ chỉ cần tập trung vào render nội dung. Nhờ đó mà trải nghiệm của người dùng trở nên mượt mà hơn.

Tab Layout

Tại Tiki, chúng tôi hiện đang sử dụng một trong những libraries nổi tiếng nhất là react-native-scrollable-tab-view. Vốn là pure javascript implementation. Cách thức hoạt động khá giống với material design pattern với các props ở rộng nhằm có thể điều khiển một cách dễ dàng. Tuy vậy, library này bắt đầu để lộ ra vấn đề về hiệu năng bởi sự phức tạp trong UI của Tiki. Cũng bởi vì là pure JS implementation, nên xuất hiện độ trễ giữa thông tin từ user tới ứng dụng. Do đó, chúng tôi quyết định viết ra phiên bản native RNTabLayout của riêng mình và port nó lên Javascript.

Code cho riêng từng platform

Khi team QA test tính năng countdown, Tiki phát hiện ra một bug khá lạ. iOS đếm nhanh hơn Android. Chúng tôi thử khắc phục bằng thử nghiệm sau

let currentTime1
countDown(10000)
let currentTime2

Kết quả mong đợi là currentTime2 — currentTime1 = 10000 trên cả 2 platform. Thế nhưng chỉ có iOS là ra đúng. Hơn nữa, iOS render list sản phẩm trên nhanh hơn Andoid. Do đó, chúng tôi đã áp dụng một vài mánh khóe

getTimeRemaining(endTimeInMillis) {    
  const platformDelta = Platform.OS == 'ios' ? 1000 : 1600;    
  let diffInMillis = new Date(endTimeInMillis).getTime() -             Date.now() - platformDelta;
...
}

Vấn đề hiệu năng

“Dzut Co Hon” vốn dựa trên Redux. Chúng tôi dự định là khi click vào sản phẩm, màn sẽ ngay lập tức hiển thị tiến độ cũng như thay đổi state ngay khi network call. Tuy vậy, thực tế thì nó sẽ mất một giây hoặc hơn khi có nhiều sản phẩm được chọn. Sau khi điều tra, chúng tôi nhận ra rằng `Reducer` mất rất nhiều thời gian để nhận nhiều dispatched actions  từ ProductComponent. Vì thế Tiki quyết định dùng `setState()` trong `ProductComponent` và bỏ Redux ra khỏi `ProductListComponent`.

Với các app mới của Tiki vốn sử dụng RN 0.42, ListView vẫn gặp vấn đề do sự phức tạp với nhiều view types và tabs.

Bạn có thể thấy nó thật khó chịu khi scrolling. Do đó chúng tôi sẽ convert qua `FlatList` để xem nó như thế nào.

Đối với nhiều tabs với `ViewPager`, khi các tab được loaded, tất cả `ListView` và toàn bộ `Store` sẽ được lưu trữ. `OutOfMemory` thường diễn ra với các thiết bị low-end. Vì thế chúng tôi phải chỉ dữ lại data cần cho những tab đang hoạt động trong `Store`. Data cho các tabs khác sẽ được đưa vào `LocalStorage`. Nói cách khác, những tabs đó sẽ chỉ render duy nhất loading view…

Và khi user trở về các tab đó, thì chúng ta chỉ mất thời gian lấy data từ disk cache và render nó.  

`shouldComponentUpdate()` và `PureComponent` thật sự rất tiện lợi. Khi users slide một banner hay deal thì indicator sẽ được thay đổi. Như vậy, các component “mẹ” hoặc là cả component tree cũng sẽ thay đổi theo và khiến cho hiệu năng bị giảm sút. Đo đó chúng tôi dùng `shouldComponentShouldUpdate()` để bảo đảm các component không liên quan thì không bị thay đổi.

Integration liên tục

Tại Tiki, chúng tôi dùng Jenkins để deploy native apps. Trong khi đó, quá trình deploy React Native cũng muốn áp dụng cách thức như vậy. Với mỗi commit được nhập vào với nhánh staging, test sẽ được chạy và Jenkins sẽ đẩy JS bundle mới nhất lên CodePush server, rồi thông báo cho chúng tôi bằng Slack channel.

Dựa trên một sample, chúng tôi tạo ra một custom CLI tool để chạy `code-push release-react “TikiHome-ios” ios -d “Staging” — des “Jenkins deploy” — dev true -m false -t`. Sau khi nhánh dev thông qua thì code sẽ được xác nhập vào nhánh chính – master branch. Jenkins sẽ chạy tất cả các tests, tạo production target, deploy bundle mới nhất, và cả tạo ra một tag version.

Lời kết

Chúng tôi tin rằng React Native là một framework vô cùng tuyệt vời. Mặc dù nó vẫn còn vài vấn đề, nhưng chúng hoàn toàn bị che lấp bởi vô số các lợi ích mà React Native mang lại. Tiki hoàn toàn hài lòng với lựa chọn của mình – Tất những quyết định trên đã giúp chúng tôi rút ngắn thời gian đi rất nhiều cho việc phát triển các sản phẩm mobile.

Nguồn: topdev.vn via Cuong Le via CodeCamp

Văn hóa cạnh tranh lành mạnh trong doanh nghiệp

Office Professional Occupation Business Corporate Concept

Mọi công ty đều có thể tạo nên một văn hóa canh tranh lành mạnh.Khi làm đúng cách, sự cạnh tranh này có thể tạo ra một đội ngũ thực sự gắn bó, kết nối nhân viên với những mục tiêu ưu tiên của tổ chức và hướng đến một kết quả kinh doanh tốt hơn.

Cạnh tranh nơi công sở luôn là một chủ đề trò chuyện thu hút nhiều ý kiến. Với góc nhìn và kinh nghiệm của một người bán hàng, có thể bạn sẽ nhận ra rằng nó gồm có cả các tác dụng tốt và xấu. Một trong những yêu cầu quan trọng khi cạnh tranh đó chính là tính minh bạch. Nhưng làm thế nào để bạn nhận ra là đang có sự cạnh tranh, trừ khi điều này được công bố? Và đây thường là mấu chốt của vấn đề, bởi các phòng ban trong nhiều công ty thường không có thói quen công khai so sánh kết quả làm việc của nhân viên với các đồng nghiệp khác.

Dưới đây là một vài hướng dẫn bởi đã được xác định là có thể tạo ra sự cạnh tranh lành mạnh tại nơi làm việc:

1. Minh bạch về kết quả

Tác giả bài viết này cực kỳ tin vào hiệu quả của hệ thống ROWE, một tổ chức tư vấn về nguyên tắc quản lý doanh nghiệp, được sáng lập bởi hai người phụ nữ tuyệt vời và đầy cảm hứng, Cali Ressler và Jody Thompson. ROWE được tạo ra bởi niềm tin rằng công việc có thể diễn ra ở bất kỳ nơi nào vào bất cứ lúc nào, chỉ có kết quả của cá nhân mới là điều duy nhất quan trọng khi nói đến hiệu suất. Có rất nhiều điều để viết về triết lý này, tuy nhiên khuyến khích các bạn nên tự mình truy cập vào website của họ để tìm hiểu nhiều hơn.

Bạn sẽ phải quyết định mức độ minh bạch trong tổ chức hoặc nhóm của mình để chuẩn bị. Có nhiều bộ phận sẽ dè dặt với suy nghĩ về việc phải chia sẻ các thông tin về kết quả và hiệu suất làm việc cá nhân. Trong khi đó các quy định và tiêu chuẩn KPI về doanh thu của nhân viên kinh doanh thì hầu như luôn được công bố cho toàn công ty biết. Điều đó là nền tảng cho sự công bằng trong hoạt động bán hàng. Và theo đó, có quan điểm rằng các phòng ban khác cũng nên áp dụng tương tự. Hãy đưa ra những kết quả mà bạn cảm thấy thoải mái chia sẻ cho toàn bộ phận và bắt đầu quá trình cạnh tranh từ đây. Thường xuyên chia sẻ kết quả trong các cuộc họp hoặc cập nhật thông qua các công cụ ứng dụng công nghệ hiện đại.

2. Ghi nhận cả quá trình và kết quả

Hãy theo dõi mọi hoạt động của nhân viên, và đưa ra cho họ những sự phản hồi, khích lệ và ghi nhận ngay trong quá trình làm việc hàng ngày. Trong khi bạn chắc chắn sẽ thưởng cho người có thành tích đứng đầu vào cuối các quý hoặc năm, thì một điều quan trọng không kém là cũng bạn nên ghi nhận công sức cho những người đã luôn làm tốt công việc trong mỗi ngày, mỗi tuần.

Có thể dễ dàng thực hiện điều này bằng cách xác định xem cá nhân nào trong nhóm đã thực hiện các hoạt động tạo ra kết quả tốt như bạn mong đợi. Trong kinh doanh, nó có thể là số lượng các cuộc gọi, email, thư ngỏ và cuộc hẹn được gửi đi. Đó là những hoạt động đảm bảo cho công ty đạt được mục tiêu lâu dài. Và bằng cách ghi nhận những hoạt động này trong từng chặng đường, bạn luôn đảm bảo được rằng sẽ có nhiều nhân viên được công nhận và khen thưởng hơn thay vì chỉ vài người ưu tú nhất. Xác định được các nhiệm vụ hàng ngày dù nhỏ nhất cũng sẽ mang lại kết quả kinh doanh tốt hơn và bắt đầu tạo nên sự cạnh tranh trong công việc.

3. Khen thưởng phải có ý nghĩa tạo động lực

Dù cho đó là động lực xuất phát từ bên trong hay bên ngoài, bạn cần phải gắn việc khen thưởng với những điều có thể thúc đẩy cá nhân người lao động. Một số người rất thích được ngợi khen với toàn công ty về những thành tích “sáng chói” của họ, trong khi một số khác lại cảm thấy “rùng mình” khi nghĩ về viễn cảnh tuyên dương trước tập thể. Phần thưởng hữu hình cũng chỉ khuyến khích được những ai cảm thấy nó có ý nghĩa. Nếu ai đó ghét cà phê thì họ sẽ chẳng có cảm giác gì với một ly Starbucks. Theo kinh nghiệm thì các phần thưởng được ưa thích hàng đầu là sự biểu dương công khai (phi vật chất) và thẻ quà tặng (có giá trị tiền tệ).

Mọi công ty đều có thể tạo nên một văn hóa canh tranh lành mạnh. Giống như bất kỳ mọi thứ khác, nó phải được xây dựng dần dần bằng cách thử và sai. Khi làm đúng cách, sự cạnh tranh này có thể tạo ra một đội ngũ thực sự gắn bó, kết nối nhân viên với những mục tiêu ưu tiên của tổ chức và hướng đến một kết quả kinh doanh tốt hơn.

Nguồn: Applancer Careers via Soap Box

AI và những điều bạn cần phải có trước khi đụng tới AI

Cũng như các công nghệ khác, AI đã thổi bùng lên sự sợ hãi lạc hậu, không bắt kịp với xu thế của các Developer. Và cả cộng đồng về IT đều luôn dõi theo các tin tức về AI hằng ngày. Từ hardware startups cho tới những người khổng lồ công nghệ hay các tổ chức cộng đồng, mọi người đều thi nhau làm và phát triển AI của họ. Và tất nhiên câu hỏi quan trọng vẫn luôn là: “ Cách áp dụng AI và machine learning vào cải thiện hiệu năng công việc của chúng ta”.

Đa phần các công ty vẫn chưa sẵn sàng với AI. Có thể là bởi công ty chỉ mới bắt đầu vào lĩnh vực này, hoặc việc đọc và phân tích dữ liệu đối với họ không quan trọng. Nhưng phần lớn là do cơ sở vật chất không đủ tầm để áp dụng AI và hưởng lợi từ nó.

Là một chuyên gia tư vấn về data science/AI, tôi đã phải nói những điều trên biết bao nhiêu lần, đặc biệt là trong 2 năm vừa qua. Thật sự việc phải nhận ra AI không cần thiết với công ty cũng như là chấp nhận sự thật rằng mình vẫn còn quá yếu. Vậy làm cách nào để thuyết phục họ?

Tôi thường sử dụng phương thức “kim tự tháp” với AI đứng trên đỉnh. Bạn chỉ có thể xây được cái đỉnh nếu có được phần thân và chân, hay nói cách khác là dữ liệu và cơ sở vật chất.   

Nhu cầu tổi thiểu: bạn có thể đếm được không?

Ở chân kim tự tháp, chúng ta có data collection (thu thập dữ liệu). Bạn cần Data gì? và Data nào có sẵn? Nếu sản phẩm có liên quan tới khách hàng, bạn có thu thập được những tương tác từ user chưa? Bởi cuối cùng, với dataset đúng thì những tiến bộ trong machine learning mới có thể đạt được.

Tiếp theo, data di chuyển như thế nào qua khắp hệ thống? Bạn có dòng streams / ETL tốt không? Bạn lưu trữ dữ liệu ở đâu và nó có dễ truy cập và lấy thông tin không? Jay Kreps đã luôn nhấn mạnh rằng, dòng data ổn định và đáng tin cậy mới chính là chìa khóa cho việc sử dụng data một cách hiệu quả.

Chỉ khi data có thể được truy cập thì bạn mới có thể sử dụng và biến đổi nó được, bao gồm ‘data cleaning’, một lĩnh vực khá quan trọng của AI nhưng lại ít người quan tâm tới. Và khi làm về AI, bạn mới nhận ra mình đã bỏ lỡ biết bao nhiêu data, cảm biến của bạn không hề đáng tin cậy, mỗi phiên bản update là lại xuất hiện biết bao nhiêu vấn đề.

Cho đến khi nào bạn có thể khai thác và lọc data một cách hiệu quả nhất thì mới bắt đầu chuyển qua phân tích chúng (hay còn gọi là BI): xác định các metrics khác nhau để theo dõi, sự ảnh hưởng từ nhiều yếu tố khác nhau lên chúng. Vì mục đích của ta là tạo ra AI, những quá trình trên sẽ trở thành những tính năng quan trọng cho machine learning model của bạn. Cũng trong giai đoạn này, bạn có thể bắt đầu chuẩn bị cho training data với các labels khác nhau. Đây cũng là giai đoạn khá thú vị bởi những sự thật được phản ánh từ data.

OK! Anh cuối cùng cũng đếm được rùi! Giờ thì làm gì tiếp?

Và khi đã có training data , bây giờ ta đã có thể làm machine learning rùi đúng không? Tùy vào mục đích của bạn, nếu là để suy đoán churn thì được nhưng nếu có liên quan tới tương tác user thì không. Chúng ta cần có A/B testing và framewor thử nghiệp, thực hiện từng bước một nhằm bảo đảm không gặp phải sai phạm quá lớn và kết quả chính xác nhất có thể. Đây cũng là giai đoạn để bạn dặt ra các baseline đơn giản.

Bạn có thể deploy các thuật toán ML đơn giản (như logistic regression hoặc division), sau đó hãy nghĩ về những dấu hiệu và tính năng có thể ảnh hưởng tới kết quả của bạn. Weather & census data là lựa chọn hàng đầu của tôi. Bởi mặc dù rất là mạnh mẽ, deep learning lại không hề tự động làm những việc trên cho bạn. Việc đưa vào các tính năng mới sẽ giúp cải thiện hiệu năng rất lớn. Vì thế mà bạn cần phải dành nhiều thời gian cho mảng này trước khi vào giai đoạn tiếp theo.

Cuối cùng cũng đụng tới AI!

Bạn đã làm được rùi đấy. Bạn rất khiêm tốn và tài giỏi. data của bạn vừa gọn gàng và sạch sẽ. Dashboards, labels and những tính năng tốt đều có mặt. Bạn cẩn thận trong việc testing và baseline của bạn quá ư là chuẩn. Bạn đã thật sự sẵn sàng. Hãy thoải mái thử tất cả mọi thứ, từ mới nhất cho đến hiện đại nhất. Bạn có thể nhận được sự cái thiện rất lớn hoặc không. Trường hợp tệ nhất thì bạn vẫn học được phương pháp mới, thêm kinh nghiệm và hiểu biết. Còn nếu bạn may mắn thì user, client cũng như công ty của bạn sẽ nhận được rất nhiều lợi ích.

Ủa vậy còn MVPs, Agile, Lean và mấy cái khác thì sao?

Tạo ra AI là một quá trình đầy phức tạp mà bạn sẽ mất rất nhiều thời gian. Cũng giống như khi tạo ra một MVP (minimally viable product), bạn bắt đầu từ một nhánh nhỏ và bảo đảm sản phẩm hoạt động thật tốt trước. Sau đó thì hãy áp dụng model kim tự tháp cũng như mở rộng nó ra. Ví dụ như tại Jawbone, chúng tôi bắt đầu với sleep data và tạo ra kim tự tháp bao gồm instrumentation, ETL, cleaning & organization, label capturing và definitions, metrics. Sau đó chúng tôi tiếp tục phát triển và mở rộng ra. Bài học ở đây là chúng tôi luôn làm kĩ lưỡng và phải bảo đảm sản phẩm chính vẫn luôn được hoạt động tốt trước khi đụng tới AI.

Nguồn: Topdev via Hackernoon

Theo IT mà không cập nhật công nghệ, liệu bạn có đang lạc hậu so với phần còn lại?

Việc cập nhật thông tin, tin tức mới là việc vô cùng quan trọng đối với một người học lập trình nói riêng và người học CNTT nói chung, giúp bạn có những góc nhìn mới, định hướng được những hướng đi tương lai.

Đừng đợi đến khi khách hàng bắt bạn áp dụng 1 công nghệ mới đó hay khi gặp phải dự án có liên quan thì mới mò mẫm tìm hiểu để đối phó.

Cũng Đừng quên, chỉ trong vài năm trở lại đây, Apple đã ra mắt Swift với hy vọng thay thế cho Objective-C khi lập trình iOS, Kotlin – chứ không phải Java – mới là ngôn ngữ chính thức để lập trình Android. Rồi những AI, Machine Learning, VR/AR, IoT khuấy động cuộc sống của người dùng hay những nền tảng Crossplatform ngày càng thể hiện vai trò quan trọng riêng của mình. Tất nhiên, rất nhiều nền tảng kiến thức cơ bản là không thể thay thế nhưng nếu không chủ động tìm hiểu về những kiến thức mới 1 cách liên tục và đều đặn, e rằng bạn sẽ chênh vênh trước mỗi làn sóng công nghệ có thể ập đến bất cứ lúc nào.

Tháng 9 đang đến gần với hàng loạt những sự kiện công nghệ – lập trình và biết đâu đấy, chỉ với vài tiếng tham gia sự kiện có thể là bước ngoặt trên con đường sự nghiệp của bạn. Cùng xem qua những điểm nóng tháng 9 và lựa chọn cho mình ít nhất 1 buổi chia sẻ để cập nhật tình hình thế giới… à nhầm, cập nhật tình hình, kiến thức công nghệ/ lập trình trên thị trường với các chuyên gia tại Tp.HCM nhé!

1/ Cache – Cách build hệ thống đáp ứng truy cập cao

2/ Load Balancing – Bắt đầu từ đâu & như thế nào?

3/ Design A Scalable Social Network: Problems and Solutions

4/ PHP vs Asp.net vs Python vs Java

5/ ReactJS, AngularJS, VueJS: Cuộc chiến vương quyền Frontend

6/ Chọn công nghệ nào để phát triển Mobile App?

7/ Làm 1 con Messenger Bot thông minh với Nodejs trong 3 giờ

8/ Bắt đầu nghiên cứu AR/VR từ đâu & như thế nào?

9/ Bắt đầu GraphQL. Giải pháp vấn đề phát sinh quá nhiều API

10/ Designer/Developer muốn trở thành UX Designer?

Nhanh tay đăng kí những slot ngồi giới hạn của các sự kiện tháng 9 ngay hôm nay, bạn nhé!

3 bí quyết mở rộng mối quan hệ như những lãnh đạo hàng đầu

Bạn ra về khỏi buổi huấn luyện với hàng đống tài liệu, danh thiếp, góp mặt vào một đám đông mờ nhạt và cảm thấy buổi hội nghị này chẳng có ích lợi gì. Đó là dấu hiệu của việc bạn chưa biết cách mở rộng mối quan hệ như một nhà lãnh đạo thực thụ.

Dưới đây là những phân tích về những sai lầm trong tư duy khi đi hội nghị và cách khắc phục triệt để điều đó.

Bài viết này đã từng được đăng trên Medium.com. Tác giả là Isaac Naor, một nhà thiết kế, nhà sáng tạo yêu thích việc khởi nghiệp và hướng dẫn người khác. Ông yêu thích học hỏi thông qua việc lên ý tưởng thiết kế và dạy đứa con 3 tuổi của mình về code trước cả khi biết viết. Naor đã có nhiều bài đăng trên Wall Street Journal và Mobile Marketer, chuyên môn hiện tại là mảng công nghệ thực tế ảo.

Hãy bắt đầu từ bước cơ bản: Tại sao chúng ta phải đi dự hội nghị?

Nếu câu trả lời của bạn là “theo yêu cầu của cấp trên” hay “vì được trả tiền để dự” thì cách tiếp cận của bạn là hoàn toàn sai lầm.

Trên thực tế, kể cả sau khi tiếp xúc với hàng trăm người tại những buổi hội nghị như SXSW, WWDC và Google OI, bạn luôn bỏ sót những thứ rất quan trọng.

Nếu bạn gặp gỡ bất kỳ người nào như Larry Page, Sergey Brin hay Elon Musk, bạn sẽ biết được mục đích của họ đến hội nghị là “Để giải phóng tư duy”.

Điều đó có ý nghĩa gì?

“Tư duy lý trí” của chúng ta được điều khiển bởi vùng vỏ não trước trán. Nó còn chịu trách nhiệm điều khiển cách cơ thể phản ứng sao cho phù hợp với những mặc định của chính mình từ trước đến nay như: chúng ta là ai, trông như thế nào, và cách chúng ta vận dụng những kinh nghiệm để đối phó với thế giới xung quanh.

“Giải phóng tư duy” có nghĩa là chúng ta sẽ tạm dừng hoạt động của vùng vỏ não trước trán này lại, và cho phép tiềm thức kiểm soát suy nghĩ, kinh nghiệm và cách tương tác với môi trường.

3 bí quyết mở rộng mối quan hệ như những lãnh đạo hàng đầu - Ảnh 1.

Tại sao điều này lại quan trọng?

Bởi vì chúng ta có thể nhìn nhận và suy nghĩ khác hơn. Tiềm thức hình thành những mối liên kết mà trước đây chúng ta chưa từng ý thức đến, giúp chúng ta nhận định mọi thứ rõ ràng hơn, gạt bỏ những trở ngại bấy lâu mỗi khi chúng ta nhìn nhận sự việc và đưa ra quyết định, từ đó chúng ta có nhiều cơ hội hơn để cải thiện bản thân.

Vậy việc tham dự hội nghị có liên quan gì đến điều này?

Nó sẽ diễn ra theo ba hướng:

1. Điều kỳ diệu của môi trường mới lạ

Hội nghị là môi trường lý tưởng để bạn giải phóng tư duy, bởi ở đó có nhiều sự việc và nhiều tư tưởng đối lập diễn ra liên tục. Bạn sẽ bị thu hút bởi vẻ ngoài và phong cách của một ai đó, bạn buộc phải để ý đến từng cử chỉ của một người và đoán được người đối diện có cảm xúc, thái độ ra sao, sắp nói điều gì với bạn thông qua những cử chỉ cơ thể của họ.

Xuất hiện tại một buổi hội nghị với một tinh thần thoải mái và mong muốn được tham gia vào câu chuyện của mọi người chính là cách để trải nghiệm và có những kinh nghiệm ứng xử. Đồng thời, đó là khoảng thời gian bạn đang thực sự xây dựng những mối quan hệ đầy ý nghĩa.

2. Sự khác biệt

Khi tham gia hội nghị, bạn sẽ có cảm giác như đang ở một thành phố nhỏ bé và đông đúc, một xã hội thu nhỏ của những người có cùng mối quan tâm. Ở môi trường này, bạn sẽ muốn được gặp gỡ và tương tác nhiều hơn. Thử tưởng tượng, tại một hội nghị có tính quốc tế, chỉ thông qua vài câu chuyện, bạn có thể hiểu biết được thêm rất nhiều điều mới lạ bên ngoài đất nước mình sinh sống.

Cơ hội học hỏi từ những người khác một cách ngẫu nhiên thoải mái sẽ gợi cho bạn những cách nghĩ mới mà có thể bạn sẽ không bao giờ nhận ra nếu chỉ làm việc với các đồng nghiệp quen thuộc.

Điều này tạo nên những trải nghiệm trí tuệ tuyệt vời, vì mở rộng tư duy theo cách này sẽ giúp bạn hình thành những quan điểm và cách tiếp cận mới trong công việc.

3. Ý thức cộng đồng là động lực lớn

Con người luôn khao khát và tìm kiếm ý thức cộng đồng. Chúng ta muốn biết những việc mình đang làm là có ích, và được những người khác quan tâm. Cũng vì điều này mà doanh nghiệp thường đặt ra một hệ thống quy tắc về giá trị và niềm tin để tăng năng suất và tính thống nhất trong tập thể nhân viên. Có cơ sở để nói rằng đó là lý do chính cho sự thành công của Zappo, và cũng là động lực của những cuộc cách mạng chính trị.

Xuất hiện tại một nơi có nhiều người cùng chia sẻ những tư tưởng và giá trị chung, bạn cũng có thể tiếp xúc và hưởng lợi từ họ.

3 nguyên tắc để tối ưu hoá lợi ích của việc tham dự những buổi hội nghị

1. Để mọi thứ diễn ra một cách tự nhiên

Tham dự hội nghị, trao đổi, ghi nhận và xử lý tình huống một cách tự nhiên giúp bạn có thêm cơ hội để trải nghiệm và tương tác nhiều nhất có thể. Tư duy này còn giúp bạn tự tin hơn vào vận may của mình, tin rằng bạn đang trải qua những điều tốt đẹp thay vì sự gắng gượng, hay tâm lý “đi cho có”.

2. Hãy mạnh dạn làm những thứ mới mẻ

Con người chịu sự chi phối của thói quen, có xu hướng vận dụng kiến thức, kỹ năng đã có trong mọi tình huống. Tuy nhiên, bạn có thể vượt qua chính mình, mở rộng biên độ hiểu biết bằng cách làm một việc gì đó lạ lẫm, bắt chuyện với một người lạ, thử kể một câu chuyện theo một cách khác. Điều này sẽ giúp bạn học hỏi và phát triển. Bằng cách này, sau khi rời hội nghị, bạn sẽ là con người mới hơn lúc bắt đầu.

3. Không lãng phí

Nếu bạn cứ đi lòng vòng một cách vô thức, bạn sẽ không chú ý rằng mình đã lãng phí chính mình đến mức nào. Hãy tìm kiếm cơ hội, kiến thức hay mối quan hệ mới ở những nơi bạn đến, ở những người bạn gặp gỡ.

Những quy tắc ngầm

– Bạn cần tìm kiếm những người xung quanh và tiếp xúc với họ. Nếu bạn gặp một người không nhiệt tình với hội nghị hãy chuyển hướng. Nếu bạn gặp một người sẵn sàng đưa danh thiếp chỉ trong vòng 60 giây tiếp xúc, bạn cũng hãy chuyển hướng. Bởi bạn sẽ không tìm thấy cuộc trò chuyện ý nghĩa từ những đối tượng này.

– Nếu bạn hứng thú với buổi diễn thuyết, hãy chắc chắn rằng bạn là người đầu tiên đặt câu hỏi cho diễn giả. Hãy bày tỏ rằng bạn hiểu và trân trọng những gì họ mang đến. Và bạn đã có mối quan hệ với diễn giả đó.

– Quy tắc vàng là luôn luôn hỏi xem có thể giúp gì cho người khác, và chỉ hỏi khi bạn thật sự sẵn sàng cho điều đó. Một vị cố vấn đã từng nói: “Khi bạn nắm chặt bàn tay của mình lại, bạn không cho ai thứ gì, và cũng không nhận lại thứ gì. Ngược lại, khi bạn mở tay ra để cho đi, đồng thời bạn cũng được nhận lại”.

Tóm lại, nếu bạn muốn mở rộng quan hệ như một nhà lãnh đạo, đừng đi hội nghị chỉ vì cấp trên yêu cầu, vì nhàn rỗi, hay vì được trả tiền để đi. Đừng chỉ đi rồi nhận về hàng đống danh thiếp hay vì những món quà miễn phí.

Bạn hãy đi để phát triển, đi để xây dựng những mối quan hệ, vì trí tuệ của chúng ta được tổng hợp từ những người mà chúng ta gặp gỡ. Đi vì chúng ta sẽ không có cơ hội gặp những người mới cùng chí hướng ở bất kỳ một nơi nào khác. Đi để giải phóng tư duy của chính mình. Và đi vì bạn nhận ra rằng việc giải phóng tư duy nhờ những buổi hội nghị sẽ tạo nên một bước ngoặt quan trọng trong cuộc đời mình. Đi vì bạn quan tâm đến mình và mọi người. Nếu không vì những lý do trên, bạn không việc gì phải đi cả.

Nguồn: cafebiz.vn

5 nguồn học miễn phí giúp bạn “chinh phục” Vim

vim

Điều kì bí luôn làm chúng ta tò mò và sợ hãi. Đó là bởi vì bộ não chúng ta phát ra tín hiệu rằng chúng nguy hiểm. Vim cũng không phải là ngoại lệ. Mặc dù đã có hàng triệu câu hỏi vì sao Vim lại khó đến vậy trên StackOverflow, nó vẫn là một trong những editors được dùng nhiều nhất bởi các developer.

Chẳng qua do có một bộ phận các developer vốn đã quen sử dụng các editor khác nên họ không muốn chuyển sang xài Vim. Họ muốn nằm trong vùng an toàn của mình và tin rằng Vim quá khó để học cũng như cũng chả có lợi ích gì mấy.

Khi bạn đọc bài viết này thì cũng có nghĩa là bạn cũng có chút tò mò về Vim. Trước khi nói về những nguồn học hay giúp bạn tiếp thu Vim dễ hơn, ta hãy nói về nguyên nhân vì sao Vim vẫn sống tốt và được nhiều người sử dụng đến vậy.

Vì sao bạn nên biết về Vim?

Bạn hẳn cũng muốn biết vì sao mình nên học về Vim bởi nó có thể ảnh hưởng rất lớn đến công việc của bạn. Và có thể sẽ rất bất công nếu bạn phải học thứ mà lại không có lợi ích gì cho mình.

Nó như là bạn đang chơi game vậy

Khi bạn bắt đầu chơi game, độ khó của nó không bao giờ là điều khiến bạn lo lắng. Ngược lại, nó còn là động lực để giúp bạn “phá đảo”. Vim cũng tương tự như vậy, khi bạn bắt đầu nhận ra nó khá nhanh và bắt mắt, thì bạn sẽ thấy hứng thú nhiều hơn. Và với sự xuất hiện của những command cao cấp thì rất có thể bạn đã bị Vim hút hồn rùi.

Không cần phải dùng tới chuột

Bạn có rất nhiều shortcut cho navigate bằng code và files, thế nên việc dùng chuột sẽ trở thành thừa thãi. Do đó, bạn có thể thoải mái gõ bàn phím toẹt ga mà không sợ hiệu năng bị giảm sút.

Command vô cùng mạnh mẽ

List các command mà bạn có thể dùng tới phải nói là cực kì dài. Tất nhiên, ta chỉ cần học một vài command cơ bản lúc mới vào và mở rộng ra khi vào sâu hơn. Nói cách khác, dù đã có vài năm kinh nghiệm với Vim nhưng bạn vẫn có thể học được thêm nhiều thứ mới mẻ từ nó.

Có khả năng tùy chỉnh rất cao

Có rất nhiều Configurations khác nhau để cho bạn tùy ý thay đổi và tinh chỉnh theo ý thích của mình. Ngoài ra, có hàng trăm colors schemes bạn có thể download về xài. Đó là chưa kể tới vô số plugins cho phép bạn biến Vim trở nên mạnh mẽ không kém gì các IDEs hiện đại.

Văn bản và chữ là trọng tâm

Thường thì các IDEs có rất nhiều tính năng được tích hợp vào. Kèm với một user interface đơn giản, chúng có rất nhiều nút bấm nhằm giúp giảm thiểu các bước sử dụng cho người dùng. Trái lại, Vim lại cực kì đơn giản và chuyên về text. Nhờ đó mà bạn có thể tập trung hoàn toàn vào code.

Nó thể hiện tinh thần của Linux

Phần lớn các servers đều dùng Linux làm hệ điều hành. Vì thế khi bạn đã quen thuộc với Vim thì bạn cũng thấy việc deploy cũng như bảo trì server trở nên dễ thở hơn.

Những lí do trên là những đặc điểm nổi bật nhất của Vim và là lợi ích dành cho người dùng.

5 free online resources dành cho các bạn

Sau đây là những khóa học online mà bạn nên dùng tới. Tuy vậy, đừng cố học Vim một cách gấp rút. Bởi có rất nhiều người đã dành tới gần 20 năm chỉ để tìm hiểu về Vim mà vẫn chưa hết những điều mới lạ về nó. Qua đó ta có thể được tiềm năng của Vim lớn đến chừng nào.

VimTutor

Nếu bạn đang xài Unix-based machine thì vimtutor chính là lựa chọn cho bạn. Với chỉ vài phút, bạn đã hiểu được những điều cơ bản về Vim với những bài hướng dẫn vô cùng tuyệt vời.

OpenVim

Với các bài giảng dạy đầy tính tương tác sẽ giúp bạn hiểu rõ hơn về bản chất của Vim.

Vim Adventures

Nếu bạn thích chơi game thì đây chính là lựa chọn tuyệt vời. Bạn sẽ phải dùng Vim commands cho việc navigation và tìm ra hướng thoát khỏi mê cung. Bạn có thể type `  :help bất cứ lúc nào để được trợ giúp.

The basics of Vim

Derek Wyatt đã chuẩn bị một album với 13 videos để chỉ bạn về Vim. Với lượt xem hàng vài ngàn lần, chúng chứa đựng resources rất quí giá giúp bạn học Vim một cách dễ dàng.

Vim Cheat Sheet

Print cái cheat sheet này ra và dán vào đầu bàn làm việc của bạn. Nó sẽ như là quyển kinh thánh cho các bạn mỗi khi học và sử dụng Vim. Đây cũng là một cách rất tốt để giúp bạn nhớ kĩ các command cần thiết và quan trọng.

Lời kết

Nếu bạn chưa biết gì về Vim, thì tốt nhất đừng nên bắt đầu nó ngay với project của mình bởi bạn sẽ cảm thấy rất là đau khổ đấy. Thay vào đó, hay làm với những mini project nhỏ, cực kì đơn giản và ngắn gọn để giúp bạn dễ thở hơn.

Nguồn: blog.topdev.vn via Medium

Code Review Done Right – Đừng để chỉ Chúa mới hiểu code của bạn!

Bạn đã từng nghe đến 1 câu nói vui trong cộng đồng lập trình: ”Khi tôi viết những dòng code này chỉ có tôi và Chúa hiểu, giờ đọc lại chỉ có Chúa mới biết”? Tình trạng lập trình viên code ẩu, tạo ra code “thối”, chỉ quan tâm “chạy được” mà không tối ưu, không comment để người sau kế thừa… trở thành vấn đề đáng báo động. Đặc biệt trong thời đại của AI, Machine Learning, Blockchain đi cùng độ phức tạp của thuật toán, những dòng code rõ ràng mạch lạc đã trở thành yếu tố sống còn.

Hơn nữa, việc xây dựng văn hóa đội Dev cũng là bài toán đau đầu đối với các bạn CTO, Tech Lead. Văn hóa tốt mới giúp các thành viên cẩn thận trong từng dòng code, sáng tạo giao lưu để tối ưu thuật toán và có chế độ kiểm soát chất lượng qua quy trình Code Review.

Kết quả hình ảnh cho code review

Những lợi ích rõ ràng nhất của Code Review chính là:

  • Phát hiện lỗi sớm, giảm thiểu số lượng lỗi phát sinh.
  • Các thành viên trong nhóm sẽ nắm bắt được tiến độ dự án, hiểu rõ công việc của nhau và có sự hỗ trợ khi cần thiết. 
  • “Muốn code giỏi thì hãy đọc code của người khác”: các dev sẽ được học hỏi thêm nhiều kiến thức hữu ích, nhớ lâu hơn do việc học diễn ra đúng nơi (code của mình) và đúng thời điểm (đang viết code). Đặc biệt, học cách giảng giải và góp ý cho người khác cũng giúp kiểm nghiệm lại kiến thức, nâng cao kỹ năng 1 cách nhanh chóng.
  • Đảm bảo clean code – Khi cả team cùng review cho nhau sẽ phát hiện ra những chỗ có thể viết ngắn hơn mà hiệu năng cao hơn, áp dụng design pattern XYZ tốt hơn… 
  • Tiết kiệm thời gian – Nghe thì có vẻ vô lý nhưng code sạch giúp làm việc hiệu quả hơn, tránh được nhiều bug hơn, từ đó giảm thiểu được thời gian test và sửa lỗi.

Bạn muốn hiểu rõ quy trình Code Preview? Bạn muốn xây dựng văn hóa đội dev hiệu quả? Tại sao phải code sạch?

Cùng gặp gỡ anh LÊ QUỐC VIỆT – SENIOR SOFTWARE ENGINEER đến từ Bloomberg London – tập đoàn công nghệ trong lĩnh vực thông tin tài chính với bề dày kinh nghiệm xây dựng các phầm mềm tài chính đột phá, thay đổi cục diện của hệ thống thông tin tài chính thế giới.

Đăng kí những slot ngồi giới hạn gặp gỡ chuyên gia đến từ tập đoàn hàng đầu thế giới – Bloomberg tại đây!

Điểm qua những cột mốc ấn tượng về vị diễn giả này trước khi đăng kí tham dự bạn nhé:

  • Anh Quốc Việt theo học ngành Computer Engineering tại NUS, Singapore
  • Năm 2010 – 2011 anh được mời làm Credit Suisse ở phòng Công nghệ Phục vụ Hoạt động Pháp chế (Legal and Compliance IT) và phòng Exchange Links. Tại đây, anh đã viết và xây dựng hệ thống giao dịch chứng khoán tốc độ cao (low-latency exchange links – 20μs-200μs). Các hãng đầu cơ (hedge funds, giao dịch thông minh tốc độ cao HFT) và ngân hàng luôn tìm kiếm chuyên gia trong lĩnh vực này.
  • Năm 2013, anh chuyển sang xây dựng phầm mềm cho lĩnh vực định giá sản phẩm phái sinh (FX & Commodity Derivatives Pricing) của Bloomberg London. Nếu tại Credit Suisse, công việc chuyên môn của anh Việt sử dụng hệ thống phân tán nhỏ tốc độ cao thì tại Bloomberg, anh lại sử dụng hệ thống phân tán lớn và sử dụng nhiều lớp Microservices. Khác với giao dịch chứng khoán chỉ làm trong giờ hành chính, Bloomberg luôn chạy 24/7, nên yêu cầu kiến trúc hệ thống và xây dựng phần mềm cũng khắt khe hơn.

Cũng tại Bloomberg, anh Quốc Việt chuyển sang phòng Trading Analytics với vai trò thu thập thông tin giao dịch từ thị trường chứng khoán và xử lý trong thời gian thực để cung cấp qua UI hoặc cho API.

Riêng về Bloomberg, Bloomberg dẫn đầu trong lĩnh vực thông tin tài chính nhờ chú trọng đầu tư vào công nghệ và kỹ sư công nghệ. Bloomberg đóng góp cho hệ sinh thái mã nguồn mở với những sản phẩm như BDE (thư viện C++ có tính ổn định cao hơn Boost và dùng cho nhiều hệ điều hành, nhiều trình biên dịch), Comdb2 (hệ thống CSDL phân tán), Bucklescript (transpiler OCaml thành JS và được cộng đồng Javascript đó nhận và Facebook sử dụng trong sản phẩm ReasonML)

Vì phục vụ các hãng tài chính hàng đầu, các trường đại học và cả các cơ quan chính phủ, Bloomberg đặt yêu cầu ổn định hệ thống lên hàng đầu nên việc thêm chức năng mới cũng phải dùng các phương pháp đảm bảo ổn định hệ thống. Testing mới chỉ là khía cạnh các công ty khác đều ý thức được, nhưng chưa đủ vì testing vẫn là kiểm nghiệm từ bên ngoài và chưa đủ sâu. Một trong những bí quyết đảm bảo hệ thống ổn định và dễ nâng cấp và mã nguồn dễ tái sử dụng là Code Review và các công cụ hỗ trợ Code Review và Static Analysis.

Như vậy, chuyên gia kinh nghiệm về Code Review đã chính thức xuất hiện với cộng đồng Dev tại TpHCM vào cuối tháng 8 này!

Nhanh tay đăng kí để dành những slot ngồi giới hạn TẠI ĐÂY!

Kết quả hình ảnh cho đăng ký ngay button

Thời gian: 28/08/2017 tại Tp.HCM

Thông tin chi tiết:

Hotline/ Liên hệ hợp tác:

  • binh@applancer.net (A. Bình) | 0904 392 888
  • event@applancer.net (Event team) | 08 6273 3497

Sự kiện được tổ chức bởi TopDev – Giải pháp tuyển dụng ngành IT

Biết đồng nghiệp cùng cấp nhận lương cao hơn mình, thay vì bực tức hay chán nản, hãy bình tĩnh làm những việc sau

Tại hầu hết các công ty, vấn đề lương của nhân viên không được công khai và mỗi người chỉ biết mức lương của chính mình. Tuy nhiên trong trường hợp bạn biết được với cùng một vị trí, đồng nghiệp đang nhận lương cao hơn mình, bạn nên làm gì?

Giữ bình tĩnh

Thông thường khi biết mình đang nhận mức lương thấp hơn đồng nghiệp, đa số mọi người có cảm giác ngạc nhiên, chán nản, thậm chí bức xúc, tức giận. Một số người không điều tiết được cảm xúc, sẽ chạy ngay sang phòng sếp thắc mắc: “Tại sao tôi cũng làm tốt mà lương tôi lại thấp hơn anh A?”, hoặc nhận thấy rất khó để tiếp tục tập trung vào công việc hiện tại. Lúc này hành động cần thiết là chạy ra ngoài hít thở không khí, uống một tách cà phê và suy nghĩ nghiêm túc xem nên làm gì tiếp theo.

Tìm hiểu nguyên nhân vì sao đồng nghiệp hưởng lương cao hơn

Có nhiều yếu tổ ảnh hướng đến mức lương, không chỉ giới hạn ở vị trí và bản chất công việc. Ví dụ nếu đồng nghiệp có học vấn tốt hơn, kinh nghiệm nhiều hơn, kỹ năng giao tiếp tốt hơn… thì khả năng anh ấy nhận lương cao hơn là có thể xảy ra.

Bên cạnh đó, thời điểm cũng là một yếu tố cần cân nhắc. Những người được tuyển dụng trong thời điểm công ty đang rất cần nhân sự hoặc công ty đang trên đà tăng trưởng mạnh thường được đưa ra mức lương cao hơn các giai đoạn khác.

Một khả năng nữa là trong quá trình phỏng vấn, đồng nghiệp mạnh dạn thương lượng, đề nghị mức lương cao hơn của bạn, và được công ty chấp nhận. Nếu những yếu tố này tồn tại, bạn nên ngừng lăn tăn và quên vấn đề chênh lệch lương đi.

Trải nghiệm công cụ tính lương gross to net chuẩn tại TopDev

Tham khảo mức lương trên thị trường

Việc tham khảo thị trường giúp bạn có cái nhìn đúng đắn hơn về mức lương mình nhận về. Bên cạnh đó cũng giúp bạn nhìn rõ hơn bức tranh toàn cảnh về thang lương hiện tại trong ngành nghề bạn đang làm. Tuy nhiên có một điểm cần nhớ, những yếu tố ngoài lương (chi phí đóng bảo hiểm cao, thời gian nghĩ phép dài hơn, giờ giấc làm việc linh hoạt…) có thể làm mức lương của bạn thấp hơn một chút so với mức trung bình trên thị trường.

Trao đổi với bộ phận nhân sự

Nếu muốn tránh đụng độ với sếp, hãy gặp bộ phận nhân sự để tìm hiểu. Những người này có thể nắm rõ lý do vì sao đồng nghiệp A có mức lương cao hơn bạn, đồng thời đưa ra lộ trình tăng lương của công ty để khuyến khích bạn tiếp tục phấn đấu.

Nói chuyện với sếp

Nếu làm tất cả những bước trên mà vẫn không thấy thỏa đáng, hãy trao đổi trực tiếp với sếp. Tuy nhiên không nên đề cập đến tên tuổi đồng nghiệp mà chỉ nói chung chung như: “Tôi biết có những đồng nghiệp cùng cấp nhận nhiều lương hơn tôi, trên thị trường mức lương của tôi ở vị trí trung bình/thấp, vậy tôi có thể làm gì để cải thiện”. Đi cùng với thái độ tìm hiểu và hợp tác, câu hỏi của bạn có vai trò “đánh tiếng” để sếp biết bạn không hài lòng với mức lương hiện tại và mong muốn nhận được những gì xứng đáng hơn.

Tìm công việc mới

Sau một thời gian trao đổi, nếu sếp không có động thái gì trong khi với khả năng hiện tại, bạn hoàn toàn có thể tìm được công việc khác tốt hơn thì đừng ngại ngần chuyển việc. Nhưng trước khi tìm được việc mới, hãy tiếp tục làm tốt công việc cũ vì bạn vẫn cần chi phí trang trải cho các sinh hoạt hàng ngày.
 

Nguồn: Applancer Careers

Tôi biết lập trình nhưng không biết lập trình cái gì?

Tôi biết lập trình nhưng không biết lập trình cái gì?

Sau thời gian 3 năm học lập trình thì mình nhận thấy đa số sinh viên/lập trình viên đều gặp phải vấn đề này. Tức là nếu đưa sẵn một yêu cầu, mô tả phần mềm rõ ràng thì có thể làm được, còn tự nghĩ ra rồi làm một phần mềm hoàn chỉnh thì thua. Đâu là nguyên nhân của việc này?

Bạn nào muốn theo hướng product, hay có ước mơ làm phần mềm cho hàng triệu người dùng thì cũng nên quan tâm. Để chi?

Lấy Mark Zuckerberg làm ví dụ, trước khi tạo Facebook, Mark đã làm ra những thứ sau:

  1. ZuckNet: Cha của Mark làm bác sĩ nha khoa và có mở phòng khám ở nhà, Mark với chị gái ở tầng trên. Thấy việc đi lên đi xuống bất tiện, Mark làm app để cả nhà có thể chat với nhau ( Lúc này Mark 11 tuổi, instant message thời đó chưa phát triển ).
  2. Synapse Media Player: app dùng machine learing dựa vào list nhạc của user để recommend bài hát. App này được Microsoft đề nghị mua lại nhưng Mark không bán.
  3. CourseMatch: Lúc này Mark vô năm 2 tại Harvard, thấy việc đăng ký học phần nhàm chán quá nên làm CourseMatch – app xem môn học này có ai đăng ký rồi để học chung.
  4. FaceMash: Hiện 2 bức ảnh sinh viên trong trường, user click để chọn ai hot hơn.

Ta có thể thấy sự ra đời của Facebook dựa trên nền tảng của ZuckNet, CourseMatch và FaceMash. Không ai tự nhiên đùng một cái xây dựng được phần mềm triệu người dùng được.

Vậy đâu là nguyên nhân biết lập trình nhưng không biết lập trình cái gì?

Cách học trên trường?

Như bạn biết, các môn trên trường sẽ có đồ án, mà đồ án thì thường thầy cô quy định một danh sách rồi sinh viên tự chọn. Học hết môn này đến môn khác đều có người chọn sẵn cho mình rồi nên thành ra cũng không cần nghĩ ngợi gì nữa. Mà đồ án thì làm mấy phần mềm khá ‘xa lạ’, như mình có bao giờ vào nhà hàng, khách sạn đâu mà làm quản lý nhà hàng, khách sạn.

Tâm lý sinh viên thì cứ làm theo ý thầy cô bảo đảm sẽ điểm cao nên cũng không quan tâm là làm cái gì. Nhiều bạn còn đem một đồ án nộp 3,4 môn luôn cũng chẳng sao.

Mà cách tốt nhất để giết đi sự sáng tạo là chấp nhận hoàn cảnh (accepting the status quo). Ai biểu gì làm đó hem cần quan tâm. Học lập trình di động mà thấy cả lớp làm Android nên cũng làm theo, dù mình có Macbook và thích IOS thì thua. Nếu có thể làm phần mềm mình thích mà lại phù hợp với môn học tại sao không nói với giáo viên để thương lượng. Sẵn quảng cáo luôn, trường mình rất thoáng trong khoảng này, đồ án thể hiện được khả năng của bạn là được , không có rập khuôn.

Chưa đủ trình

Nhiều bạn có những ý tưởng táo bạo hay lắm nhưng chưa bắt tay vào làm vì thấy bản thân còn ‘gà’ ( chưa đủ trình )

Đa số ứng dụng bây giờ theo hướng social, cần kết nối user với nhau nên nhiều bạn nghĩ là phải là full stack biết hết từ frontend backend thì mới có thể làm được phần mềm hoàn chỉnh.

Nhưng với công nghệ hiện nay thì khác rồi. Bạn không biết backend thì có thể xài BaaS (Backend as a Service) như Firebase, Graph.cool. Còn design xấu quá thì xài mấy open source library cho đẹp.

Tóm lại là quan trọng bạn có muốn làm không thôi. Chưa biết thì có thể học.

If you really want to do something, you’ll find a way. If you don’t, you’ll find an excuse

Không tìm hiểu kiến thức ngoài chuyên ngành

IT là ngành rất hay, nhưng nếu kết hợp với ngành khác thì xem như vô đối.

IT + hotel = AirBnB.

IT + transportation = Uber

IT + car = Tesla

IT + language = Rosetta Stone

Ngoài kiến thức chuyên môn ra, lập trình viên nên tìm hiểu thêm về Kinh tế, Tâm lý học nữa sẽ giúp ích rất nhiều.

Học kinh tế để biết product mình build có giá trị gì không. Học Tâm lý học để hiểu user hơn từ đó xây dựng những tính năng cần thiết. Không phải ngẫu nhiên mà những tính năng như Recommendation (gợi ý kết bạn, gợi ý video youtube, gợi ý mua hàng, có thể bạn sẽ thích), nút like, reaction, hashtag, mention people, notification, gợi ý tìm kiếm, vv lại có sức ảnh hưởng lớn như vậy.

Kết luận

Đừng cố gắng phải nghĩ ra ý tưởng tuyệt vời, hoàn hảo hay thay đổi thế giới gì cả. Viết phần mềm mà bạn muốn dùng hoặc ít nhất là bạn cảm thấy sẽ có người dùng.

Còn bạn, có bao giờ bạn trong hoàn cảnh “không biết lập trình cái gì?” chưa. Bạn giải quyết như thế nào? Bạn sẽ khuyên người khác như thế nào?

Nguồn: niviki.com

Native apps với Vue.js: Chọn Weex hay NativeScript?

Vue.js là một framework tuyệt vời! Nó rất dễ học và là tinh hoa của những gì tốt nhất từ React’s component và Angular’s templates. Tuy vậy, Vue.js vẫn có điểm yếu: khác với React Native, Vue.js không hề ổn định cũng như được dùng nhiều vào việc phát triển các app Native.

Tin vui là điều nay sắp được thay đổi với 2 framework mới đang được phát triển nhằm giúp cho Vue.js có thể dùng được trong lập trình ứng dụng Native. Chúng chính là WeexNativeScript. Trong bài viết này, tôi sẽ so sánh chúng và cho bạn cái nhìn rõ hơn về cả hai framewoek đầy tiềm năng này.

Weex

Weex là một project của người khổng lồ đến từ Trung Quốc – Alibaba. Với slogan “Write once, run Everywhere”, có nghĩa là bạn có thể lập trình cho web (html5), Android và iOS chỉ với cùng một database. Hiện có một vài Weex projects đang được phát triển, với số lượng hàng triệu người dùng Trung Quốc. Weex có nhiều components, plugins để tương tác với native platform với một set tool riêng nhưng vẫn còn khá thô sơ.

Không may là Weex developers vẫn chưa nghĩ đến việc để nó thành open source là ưu tiên hàng đầu. Tuy bạn sẽ có khá nhiều tài liệu, github repos, etc., để học nhưng việc làm một project từ bàn tay trắng sẽ là bất khả thi nếu không dùng vài thủ pháp hack lên native code.

NativeScript

Trong tháng 4, Igor Randjelovic mở ra cơ hội sử dụng Vue với NativeScript. `nativescript-vue` là một NativeScript plugin giúp lấp đầy khoảng cách giữa Vue.js virtual DOM và NativeScript components, cho phép bạn lập trình cross-platform apps với Vue.js. Mặc dù project vẫn còn khá non trẻ và không phù hợp để thật sự áp dụng vào làm app. Nhưng điều không thể chối bỏ là ứng dụng có tiềm năng rất lớn bởi nó thúc đẩy NativeScript framework với những tools cùng kho đồ sộ các components và plugins. Với webpack, bạn thậm chí còn dùng được cả .vue single file components.

Cộng đồng của Native Script cũng khá xôm tụ và được quan tâm. Nếu bạn tham gia vào official slack thì sẽ thấy có rất nhiều thành viên khá thân thiện sẽ sẵn sàng giúp đỡ bạn, bao gồm NativeScript core team developers, cha đẻ của nativescript-vue, và các member khác.  

Tóm tắt điểm mạnh và yếu

Weex :

Tốt – Đã trong giai đoạn sản xuất (Tuy chỉ là ở Trung quốc thôi);

Tốt – Dành cho Web, Android và iOS;

Dở – Cộng đồng quá tệ;

Dở – Tool còn quá hoang sơ;

Dở – Không biết bắt đầu từ đâu để làm một project

nativescript-vue:

Tốt – Cộng đồng quá tuyệt vời;

Tốt – Thúc đẩy tất cả NativeScript platforms;

Dở – Còn quá non trẻ;

Dở – Chỉ dành cho Android và iOS

Kết luận

Trong open source projects, cộng đồng tốt luôn là ưu tiên hàng đầu. Weex  tuy được ra đời sớm hơn vài tháng và có một đế chế to lớn đứng đằng sau thế nhưng cộng đồng lại rất yếu ớt. Trái ngược lại, NativeScript + Vue có một cộng đồng rất mạnh mẽ và phát triển nhanh chóng. Mặc dù vẫn còn trẻ nhưng tiềm năng và tương lai lại đầy hứa hẹn. Chính vì thế mà tôi chọn NativeScript.

Links

Weex:

 

 

NativeScript + Vue.js:

 

Nguồn: blog.topdev.vn via Hackernoon

Bài học từ việc rút ngắn thời gian xây dựng ứng dụng xuống chỉ còn ¼

Trung bình, một ứng dụng ra mắt sẽ mất từ 6-8 tháng từ giai đoạn hình thành ý tưởng, build, testing đến hoàn thiện nhưng với những công nghệ mới ra đời, thời gian này cũng rút ngắn đáng kể. Cùng TopDev gặp gỡ anh Đặng Tiến Dũng – CEO & CTO đồng thời là Co-Founder của Futurify để lắng nghe những chia sẻ từ quá trình chuyển đổi build sản phẩm theo cách thức truyền thống sang mô hình công nghệ mới và kinh nghiệm làm việc với các đối tác nước ngoài.

1/ Trước tiên, anh có thể giới thiệu đôi chút về công ty Futurify?

Futurify là công ty Outsourcing với tôn chỉ xây dựng các ứng dụng sáng tạo, cung cấp các giải pháp tối ưu nhất cho khách hàng. Được thành lập từ năm 2012, sau 5 năm thành lập và phát triển, Futurify đã tích lũy được rất nhiều kinh nghiệm và xây dựng thành công quy trình phát triển sản phẩm chuẩn. Từ những khách hàng đầu tiên ở Canada cho đến nay, Futurify đã mở rộng đến với khách hàng trong và ngoài nước thuộc nhiều nhóm ngành, lĩnh vực khác nhau.  

2/ Được biết Futurify đã triển khai rất nhiều dự án trong và ngoài nước. Vậy dự án nào khiến anh tâm đắc nhất cho tới thời điểm hiện tại?

Với một công ty startup được gầy dựng từ con số 0, nên đối với anh, mỗi dự án là một trải nghiệm mới mẻ và đều có những dấu ấn riêng. Nhưng để nói về dự án khiến anh tâm đắc nhất thì có lẽ đó là dự án M&E – là một dự án của tổ chức phi chính phủ  ActionAid Vietnam – AAV (chi nhánh của ActionAid International) nhằm giúp cải thiện cuộc sống của người dân. Đây là một dự án lớn đánh dấu bước phát triển nhảy vọt của Futurify, vì ở dự án này team Futurify tham gia toàn bộ quy trình tạo ra sản phẩm: từ lấy ý kiến khách hàng, xây dựng sản phẩm, kiểm định, training cho khách hàng. Khó khăn rất nhiều vì tụi mình phải áp dụng công nghệ mới mà team chưa từng làm trước đó. Trước đây, bên anh dùng framework Orchard build trên nền .NET MVC  nhưng dự án M&E lại yêu cầu không dùng framework, nên gần như mọi người trong team phải vừa làm vừa học mọi thứ. Cũng nhờ đó mà anh em đã học hỏi được rất nhiều kinh nghiệm: làm việc với khách hàng, hỗ trợ khách hàng, hiểu được quy trình, bản chất của sản phẩm… Những bài học có được trong dự án thực sự đã ảnh hưởng tới định hướng phát triển công ty sau này rất nhiều.

Rất may dự án M&E cũng đạt được những thành công nhất định, ứng dụng web mà Futurify tạo ra đã giúp AAV giải quyết được vấn đề mà họ gặp phải đó là theo dõi và đánh giá hệ thống trực tuyến, đưa ra các báo cáo nhằm giúp nâng cao hiệu quả hoạt động của M&E, hỗ trợ công việc của AAV tốt hơn. Futurify rất tự hào về những gì team đã làm được.

3/ Theo anh, làm dự án với đối tác nước ngoài thì có điểm gì khác so với đối tác Việt Nam?

Nhìn chung, dự án trong hay ngoài nước cũng không có nhiều khác biệt lắm, mỗi khách hàng đều có một ý tưởng, một vấn đề cần giải quyết. Tuy nhiên, thông thường, khách hàng nước ngoài sẽ biết chính xác điều họ muốn, chỉ cần cung cấp những gì họ cần, nhưng ngược lại chúng ta lại gặp khó khăn về giao tiếp. Còn đối với khách hàng Việt Nam, đôi khi họ không rõ ràng về mặt yêu cầu, nên giai đoạn hiểu nhau và đề ra giải pháp lâu hơn. Lúc đó, đòi hỏi phải có kinh nghiệm giải quyết vấn đề, giải pháp đưa ra cần rõ ràng, lộ trình cụ thể, tìm hiểu kĩ yêu cầu của khách hàng và giải pháp đề ra phải phù hợp.

4/ Điểm đặc biệt trong quy trình xây dựng sản phẩm của Futurify là gì?

Ứng dụng mới lần đầu làm mất 4 tháng, lần thứ 2 phát triển ứng dụng tương tự chỉ mất 2 tháng, còn bây giờ Futurify chỉ mất 1 tháng là làm được, rút ngắn thời gian chỉ còn ¼ so với ban đầu.

Thực ra không có bất kỳ phép màu hay công cụ nào đặc biệt đứng đằng sau giúp đẩy nhanh quá trình tạo ra sản phẩm. Tất cả nằm ở kiến trúc Microservices, mỗi dự án sẽ gồm nhiều services, bằng cách tận dụng hiệu quả các nền tảng đã có trong các dự án cũ, chúng ta có thể rút ngắn thời làm sản phẩm nhưng không làm giảm chất lượng sản phẩm tạo ra, thậm chí còn có thể làm tốt hơn sản phẩm trước đó.

Đồng thời giải pháp này cũng đáp ứng nhu cầu của nhiều khách hàng, đôi khi khách hàng chưa cần 1 sản phẩm đầy đủ các tính năng ngay từ đầu. Họ chỉ cần một vài tính năng cơ bản, thể hiện được ý tưởng của họ, một bản Demo sản phẩm là đủ cho khách hàng. Đối với các ứng dụng như vậy team làm theo từng MVP. Giảm thời gian đồng nghĩa với giảm chi phí rất nhiều.

5/ Lập trình viên khi làm việc với kiến trúc Microservices cần phải lưu ý những vấn đề gì?

Theo anh, khó khăn lớn nhất mà các lập trình viên cần quan tâm là thay đổi tư duy lập trình: làm thế nào để cùng làm ra các services khác nhau nhưng sản phẩm tạo ra cuối cùng đồng nhất với nhau. Nó đòi hỏi khả năng phối hợp tốt, cần có 1 kế hoạch cụ thể, phân công nhiệm vụ rõ ràng và cách thức liên kết với nhau ra sao. Thời gian đầu việc này tốn nhiều thời gian hơn so với cách thông thường, nhưng về lâu dài thì tối ưu hơn cách thông thường.

6/ Hiện nay, các dự án Cross-platform đang thu hút sự chú ý đặc biệt của cộng đồng lập trình, anh có đánh giá gì về tiềm năng của lập trình đa nền tảng trong thời gian sắp tới?

Cross-platform rất có tiềm năng trong tương lai gần. Bởi những ưu điểm viết code một lần nhưng build ra nhiều nền tảng, giảm thời gian, giảm thiểu chi phí, chỉ trong một  tháng là có thể hoàn thành một ứng dụng. Đối với các lập trình viên vốn quen làm việc trong môi trường  Native khi chuyển sang làm việc với cross-platform thì có rất nhiều lợi thế. Vì làm Native rất chuyên sâu về ứng dụng, hiểu rõ về ứng dụng và chỉ cần học thêm framework của cross-platform là có thể làm được. Còn những bạn từ Cross-platform sang làm Native thì khó khăn hơn.

7/ Với những bạn lập trình viên mong muốn được làm việc tại Futurify cần đáp ứng những yêu cầu gì?

Tất nhiên, bên cạnh những kỹ năng, kiến thức cần có để đáp ứng yêu cầu công việc, anh đánh giá cao những bạn ham học hỏi. Bởi kiến thức trong nhà trường chỉ là kiến thức nền tảng, nó chưa đủ để mình làm việc hiệu quả. Những bạn ham học hỏi sẽ tiến bộ nhanh hơn những bạn khác vì trong một môi trường bận rộn, không ai có đủ thời gian và kiên nhẫn để cầm tay chỉ việc từng bạn, các bạn cần chủ động tự học, tự tìm cách giải quyết vấn đề.
Văn hóa Futurify là: thân thiện, năng động, sáng tạo. Những bạn có cùng mindset đó sẽ rất dễ thích nghi với môi trường công ty. Sở dĩ anh đánh giá cao những bạn sáng tạo, vì những người như vậy luôn biết cách làm cho mọi việc trở nên dễ dàng hơn, nghĩ ra được phương pháp tối ưu hơn.

Và quan trọng là các bạn phải thực sự đam mê lập trình. Bản thân anh rất mê lập trình, đối với anh khi các bạn mê lập trình sẽ không phải làm việc một ngày nào, bạn coi đó là trải nghiệm, một phần cuộc sống của mình. Các bạn lập trình vì đó là niềm vui của các bạn chứ không phải là để phục vụ cho người khác. Đôi khi anh rất bận nhiều công việc giấy tờ, mệt mỏi và anh tìm đến lập trình để thư giãn đầu óc.

8/ Anh có thể chia sẻ về định hướng phát triển của Futurify trong thời gian tới?

Trước mắt, Futurify sẽ tập trung vào mảng Marketplace, xây dựng các ứng dụng cross-platform và mở rộng thị trường đến các khách hàng tiềm năng trên nhiều nước khác trên thế giới. Ngoài ra, Futurify cũng lên kế hoạch phát triển những engine có khả năng reuse (tái sử dụng), việc này giúp rút ngắn thời gian và chi phí phát triển phần mềm cho khách hàng. Futurify sẽ áp dụng phương pháp này đối với những phần mềm được xây dựng trên cùng một nền tảng, có những tính năng và business logic tương tự nhau. Lúc này, mình không phải tập trung quá nhiều vào kỹ thuật, mà tập trung vào ý tưởng, từ đó công việc sẽ trở nên thú vị hơn.

Cảm ơn anh Dũng đã dành thời gian chia sẻ với TopDev.

Cần làm gì để không bị thay thế bởi robot?

Ngày càng có nhiều mối quan ngại về tác động của automation – tự động hóa đến thị trường lao động. Các nhà khoa học, nhà báo, các chuyên gia công nghệ không đồng ý về sự chuyển đổi nhanh chóng và sâu sắc sẽ diễn ra.

Những người lạc quan nói rằng mặc dù thực tế là tự động hóa là không thể tránh khỏi trong thời gian tới nhưng chỉ có 5% việc làm ở Mỹ sẽ được tự động hoá thay thế hoàn toàn vào năm 2055. Những người khác bi quan hơn mô tả một kịch bản u ám 47% các công việc của Mỹ có nguy cơ tự động hóa trong tương lai 20 năm.

Bất kể tốc độ tự động hoá sẽ làm thay đổi thị trường lao động như thế nào, bạn nên sẵn sàng cho nền kinh tế AI, nơi các robot, phần mềm AI và các công cụ tự động thay thế con người trong các nhiệm vụ mà họ đã thực hiện trong nhiều thập kỷ.

Để cạnh tranh trong thời đại máy móc, đây là list các chiến lược để khai thác tiềm năng của Trí tuệ nhân tạo.

Hiểu cách giao tiếp với máy móc

Phần mềm tương tác với AI như chatbot, trợ lý ảo (ví dụ Siri của Apple, Alexa của Amazon) và các nền tảng phân tích (ví dụ: IBM Watson analytics) thay đổi cách thức người tiêu dùng và các công ty thu thập thông tin và đưa ra quyết định.

Đây là việc khai thác sức mạnh của các máy thông minh, mọi người nên làm chủ giao diện và chiến lược cho phép tương tác giữa người và máy. Cũng giống như việc các kỹ sư Google Search sẽ trao thưởng cho những người nhập truy vấn tìm kiếm, AI sẽ trở nên thân thiện với những người có khả năng giao tiếp tốt với nó.

Một nhân viên làm việc với các phân tích kinh doanh AI nên biết rõ những loại thông tin và dự đoán nào anh ta muốn lấy từ máy. Trong bối cảnh này, các kỹ năng quản lý AI là ưu tiên quan trong nhất.

Những Manage nên tận dụng tối đa sức mạnh của AI sẽ trở thành một tài sản quý giá cho công ty của họ trong kỷ nguyên máy móc.

Hiểu các khái niệm cấp cao

Hiểu biết về máy tính là một kỹ năng không thể thiếu trong kỷ nguyên máy tính. Ngày nay, khi chúng ta bước vào thời đại Trí tuệ nhân tạo,hiểu biết về AI thành một trong những tài sản quý giá để có thể cạnh tranh trên thị trường lao động.

Hiểu biết về AI bao gồm việc hiểu các khái niệm, công nghệ và giải pháp, cơ chế làm việc của AI. Cũng giống như việc hầu hết chúng ta đều biết rằng thông tin kỹ thuật số được lưu trữ theo byte, sẽ không cần phí thời gian để nghiên cứu các thuật toán ML (Machine Learning) làm việc như thế nào? sự khác nhau giữa giám sát và không được giám sát là gì? hay làm thế nào để cài đặt và Cấu hình một phần mềm AI.

Có nhiều khóa học trực tuyến và các hướng dẫn cung cấp cấp những kiến thức cơ bản về Trí tuệ nhân tạo (AI), mà ngay cả một người không có nền tảng kỹ thuật và toán học cũng có thể hiểu được. Điều đơn giản nhất bạn có thể làm bây giờ chỉ là để bắt đầu học cách sử dụng các phần mềm mã nguồn mở AI để trải nghiệm sức mạnh của công nghiệp này.

Cải thiện sự sáng tạo

Không phải là quá cường điệu khi nói rằng AI làm tốt hơn con người trong các công việc lặp đi lặp lại và các hoạt động đòi hỏi tính toán nặng nề. Nhờ những kỹ năng này, AI sớm hay muộn sẽ thay thế tài xế taxi và xe tải, chăm sóc khách hàng và thợ thủ công.

Tuy nhiên, những kỹ năng mà máy móc có được không phải là duy nhất. Sự sáng tạo vẫn là một phần độc nhất và quan trọng nhất của trí thông minh con người tạo ra những đổi mới như AI có thể. Khả năng sáng tạo của con người rất rộng và đa dạng. Nó bao gồm không chỉ khám phá khoa học, mà còn có rất nhiều vấn đề hóc búa trong cuộc sống, các giải pháp tối ưu hóa, và những hiểu biết sâu sắc mà mọi người đưa ra trong cuộc sống hàng ngày và công việc của họ.

Để có thể cạnh tranh với AI trong kỷ nguyên mới, mọi người nên phát triển những kỹ năng làm cho họ nổi bật so với đám đông. Điều này đòi hỏi phải thay đổi tư duy của dây chuyền lắp ráp Fordist – coi nhân viên là ‘robot’ thực hiện các hoạt động lặp đi lặp lại và không suy nghĩ.

Một khi robot thực sự bước vào thị trường lao động, nhiều người sẽ có cơ hội phát triển sự sáng tạo của họ.

Mở rộng chân trời trí tuệ

Một lý thuyết về sự đa dạng của trí tuệ giả định rằng trí thông minh con người không phải là một bộ quy tắc trừu tượng, mà là một hệ thống phức tạp liên quan đến các kỹ năng cảm xúc, xã hội, bằng lời nói, cơ thể, vận động và kỹ năng mềm

Điều này có nghĩa là vào kỷ nguyên AI con người sẽ tiếp tục đóng một vai trò quan trọng trong các lĩnh vực đề cao sự giao tiếp giữa con người với con người. Các lĩnh vực như: tư pháp, chăm sóc sức khoẻ, tâm lý trị liệu, điều dưỡng, nghệ thuật chỉ là một vài ví dụ về các hoạt động mà robot chỉ có thể đóng vai trò hỗ trợ.

Để cạnh tranh trong thời đại tự động hoá, mọi người nên tập trung vào các kỹ năng và khoa học làm cho chúng khác với máy móc. Cảm xúc, các quan hệ xã hội và các vấn đề liên quan xuất hiện. Phát triển sự đồng cảm, trở thành một cầu thủ, manager, leader sẽ là ưu tiên hàng đầu khi nhân viên tìm kiếm công việc trong nền kinh tế dựa vào AI.

Khi máy móc trở thành một phần không thể thiếu của nền kinh tế, năng lực kỹ thuật sẽ không đủ để cạnh tranh ngang bằng với chúng.

Máy móc có chức năng hỗ trợ và tăng cường

AI sẽ không thay thế hầu hết các công việc trong tương lai gần. Trong hầu hết các trường hợp, nó chỉ đơn giản là tăng thêm nhân viên, biến chúng thành những người điều hành và trợ lý. Trong bối cảnh đó, họ sẽ phải tìm hiểu làm thế nào để máy móc có thể hoạt động hiệu quả.

Ví dụ, các công ty Star-up sử dụng chatbot đang thuê các chuyên gia đào tạo AI đánh giá hiệu quả của phần mềm AI và bước xử lý nếu có sự cố. Nhiều công ty Star-up dùng chatbot sử dụng công nghệ AI để thực hiện một nhiệm vụ cụ thể, chẳng hạn như sắp xếp cuộc gọi hoặc cuộc họp với khách hàng và nhân viên.

Hình thức như vậy sẽ duy trì vai trò của nhân viên trong giao tiếp giữa AI và người tiêu dùng. Tương tự như vậy, một số nhân viên sẽ thực hiện ghi nhãn dữ liệu, dọn dẹp, chống trùng lắp dữ liệu để tạo ra các tập dữ liệu cần thiết để đào tạo các thuật toán ML.

Tất cả các hoạt động này sẽ tạo ra một nền kinh tế AI hỗn hợp, nơi nhân viên hợp tác với máy móc để cung cấp giá trị nhiều hơn cho các công ty của họ.

Điêu gì sẽ diễn ra tiếp theo?

Phủ định nguy cơ cách mạng AI đe dọa tới con người . Ở mỗi giai đoạn của lịch sử kinh tế của chúng ta, sự tiến bộ công nghệ đã dẫn tới sự thay đổi của thị trường lao động. Xưởng sản xuất, nhà máy công nghiệp, dây chuyền lắp ráp, máy tính chỉ là những giai đoạn tự động hóa lịch sử mang lại như một sự cải tiên về mức sống.

Điều này vẫn đúng với thời đại máy móc thông minh. Nó sẽ định dạng lại thị trường lao động một số công việc trở nên lỗi thời, nhưng hiệu quả cuối cùng của nó đối với xã hội sẽ phụ thuộc vào việc chúng ta sử dụng lợi thế cạnh tranh và sự sáng tạo vô hạn để khai thác sức mạnh của AI.

Nguồn: blog.topdev.vn via hackernoon

Từ lập trình viên đến nhà đầu tư thiên thần

Nguyễn Thành Nhân từng là kỹ sư ở Google, hiện làm việc tại Walmart (Mỹ) và đã đầu tư trên 10 startup tại Việt Nam và Mỹ.

Đến nay, hai phần ba dự án mà Nhân rót vốn đầu tư đã thất bại. Nhưng với anh, trở thành nhà đầu tư là việc phải tới, khi máu kinh doanh đã ngấm từ thuở bé.

Sinh trưởng trong gia đình có bố mẹ đều là giảng viên trường Đại học Kinh tế Quốc dân (Hà Nội), từ lớp 7 Nhân đã đọc sách kinh tế học. Một năm sau, được bố cho chơi điện tử trên máy tính của trường, nam sinh quyết định chuyển sang lớp chuyên Tin vì “chắc bên đó có nhiều trò chơi điện tử”. Từ đó, Nhân làm quen với máy tính, từng bước trở thành lập trình viên và tìm được chỗ đứng tại vùng đất công nghệ nổi tiếng thế giới: thung lũng Silicon.

Trong thời gian du học tại Đại học Simon Fraser (Canada), Nhân có cơ hội thực tập tại trụ sở chính của Google ở Mỹ. Dù được gã khổ lồ mời ở lại, anh vẫn chọn gia nhập startup Chai Labs và làm việc cho đến khi Facebook mua công ty này. Lý do bỏ việc cũng rất lạ. “Facebook tuyên bố họ nắm 10% thời gian người dùng, tôi nghĩ rằng họ đã lãng phí 10% thời gian của mọi người”. Thế là Nhân trở lại Google năm 2010, làm trong nhóm AdWords.

Trong thời gian xa xứ, Nhân vẫn giữ liên hệ với bạn bè ở Việt Nam, đặc biệt là cộng đồng startup. Mỗi dịp về thăm quê, anh đều dành thời gian trò chuyện cùng những người đam mê khởi nghiệp. Trong đó có Đỗ Tuấn Anh, nhà sáng lập và CEO Appota – cung cấp nền tảng cho di động.

“Khi nói chuyện với anh ấy, tôi thích quá nên muốn tham gia đầu tư. Trước kia tôi không quan tâm đến môn Sử nhưng anh Tuấn Anh nói phải biết phân tích sự kiện lịch sử và không để cảm xúc ảnh hưởng đến phân tích trong kinh doanh”, anh kể về cái duyên trở thành nhà đầu tư thiên thần 5 năm trước.

Đang có công việc tốt lương cao tại Google, lập trình viên quyết định mạo hiểm để đầu tư, cũng là thỏa mãn đam mê kinh doanh ngấm từ bé. Được một người bạn giới thiệu, Nhân “theo đuổi” CEO TechElite gần 3 tháng trời mới “có chân” trong nhóm đầu tư. “Tôi học được rất nhiều, từ việc chọn sản phẩm thế nào để xây dựng, có nên vào vườn ươm không hay gọi vốn từ nhà đầu tư mạo hiểm ra sao. Kinh nghiệm bán hàng, marketing hay PR cũng tích lũy được kha khá”, anh kể vể trải nghiệm lần đầu bỏ tiền vào một dự án.

Từ khởi đầu ấy, Nhân lần lượt đầu tư vào nhiều startup khác ở Việt Nam và Mỹ. Tiêu chí lựa chọn cũng rất lạ lùng, mục tiêu không phải là số tiền có được mà là “dự án phải giúp tôi học cái gì đó”. Định hướng từ đầu là vậy, nên anh không nản khi cho đến nay, đa phần số dự án đã rót vốn đã thất bại, con số thu về hoàn toàn bằng không.

Vừa mất tiền vừa mất thời gian, tại sao vẫn đi tiếp cuộc chơi mạo hiểm này? “Tôi đầu tư chủ yếu để học nên thất bại cũng dạy cho mình những bài học đắt tiền. Đầu tư mạo hiểm khác ở chỗ cần một công ty thực sự to để có lãi. Còn nếu sợ rủi ro, việc này không dành cho bạn”, anh nói.

tu-lap-trinh-vien-den-nha-dau-tu-thien-than

Lập trình viên kiêm nhà đầu tư Nguyễn Thành Nhân.

2/3 thất bại cũng có nghĩa 1/3 chưa chết. TechElite, dự án thử sức lập trình viên trong vai trò nhà đầu tư sau đó gọi được thêm nhiều nguồn vốn khác nên Nhân không bỏ thêm tiền vào nữa và nắm một số cổ phiếu. “Mối quan hệ giữa hai bên nhà đầu tư và dự án với tôi là lạt mềm buộc chặt. Chúng tôi chia sẻ lợi ích khi thành công bằng việc mua cổ phiếu. Nếu công ty thành công hay lên sàn, M&A thì tôi cũng được một phần nhỏ”, nhà đầu tư 5 năm chia sẻ.

Khi dự án thất bại, nhà sáng lập mở công ty khác, Nhân vẫn hỗ trợ và xem xét đầu tư. Bởi anh cũng hiểu rủi ro khi khởi nghiệp là gì. Theo anh, với startup thì dự án còn tồn tại là mừng và hết lỗ thì càng là cấp số nhân của niềm vui. Môi trường khởi nghiệp sẽ dạy cả người sáng lập và nhà đầu tư những bài học không tên từ nhỏ cho đến lớn. Khi cùng làm, cả hai bên sẽ hiểu nhau và biết có thể song hành trên con đường phía trước hay không.

Cũng chính trải nghiệm này từng thúc đẩy Nhân nghỉ Google và khởi nghiệp ở Mỹ năm 2016. Dự án Fintech của anh nhanh chóng tan vỡ vì chưa có kinh nghiệm về ngân hàng, rút ra một bài học sâu sắc về thời gian, công sức và tiền của. “Khi nói chuyện với nhiều người, tôi nhận thấy có vẻ họ không cần sản phẩm này. Đồng sáng lập chia tay để làm công việc khác. Chúng tôi quyết định dừng lại”, Nhân kể.

Tuy nhiên, đó không phải là dấu chấm hết cho hành trình đam mê của nhà lập trình từ thung lũng Silicon. Anh đã nhiều lần chia sẻ về dự định hồi hương trong tương lai gần. Ngày xưa, ước mong ấy từng rất kiêu. Đó là kiếm 10 triệu USD trước 35 tuổi và quay về Việt Nam mở trường tư mô hình Stanford, tính học phí cao và cho học bổng với học sinh giỏi.

Nhân hóm hỉnh nói giờ anh chưa có 10 triệu USD nhưng mới 34 tuổi. Anh đã đầu tư vào trường dạy thuật toán đầu tiên ở Việt Nam là BigOCoding với hy vọng có thể giúp sức đào tạo nhiều kỹ sư giỏi cho ngành công nghệ. Anh cũng bỏ tiền vào dự án dạy tiếng Anh phi lợi nhuận mang tên Elight, với hy vọng Việt Nam trở thành quốc gia nói tiếng Anh để đáp ứng điều kiện cần cho quốc gia khởi nghiệp.

Tư duy thuần khiết về định nghĩa của một lập trình viên không vướng áp lực tiền nong khiến Nhân đón nhận thất bại trong đầu tư rất nhẹ nhàng. “Khó khăn của một nhà đầu tư mới chính là chưa thất bại bao giờ. Thất bại chính là bài học cần thiết cho những nhà đầu tư mạo hiểm”, anh chia sẻ.

Năm năm không có một đồng lời thu về từ hoạt động này, cũng chưa dự án nào có dấu hiệu IPO hay M&A, Nhân vẫn ổn khi đang làm việc tại Walmart. Với anh, lập trình hay đầu tư đều là công việc của hai bên cánh tay. Nếu lập trình là tay phải, tay thuận, thì đầu tư là tay trái. Tay trái không sành bằng tay phải, nhưng vẫn là một cánh tay, thuộc về một phần con người anh.

Khi làm lập trình, Nhân chỉ ngồi một chỗ viết code hay đọc sách. Khi đầu tư, anh phải gặp gỡ nhiều nhà sáng lập và nhà đầu tư. “Khó cân bằng nhất là thời gian”, anh nói nhưng vẫn quyết đi tiếp. Hai công việc có vẻ tương phản lại thể hiện đúng nhất cá tính của chàng trai gốc Hà Nội này: đam mê học hỏi và không ngại mạo hiểm.

Nguồn: vnexpress.vn

Xem ngay những tin đăng tuyển dụng IT mới nhất trên TopDev

Lập trình web – Bạn muốn học nhưng không biết từ đâu?

bat-dau-hoc-lap-trinh-web-tu-dau

Vậy là bạn có hứng thú với học lập trình web và muốn trở thành một web developer? Trước tiên, xin chúc mừng vì bạn đã có một lựa chọn khá đúng đắn. Và khi bạn đọc bài viết này thì cũng có nghĩa bạn xài khá rành rọt Facebook, lên đọc Medium và các blog online. Tất cả những nơi đấy đều là nguồn tuyệt vời để học lập trình.

Một lần nữa, tôi xin chúc mừng bạn vì những hành động tuyệt vời trên. Tuy thuộc vào background của bạn mà bản thân sẽ tự hỏi rằng không biết nên bắt đầu từ đâu để học lập trình web. Nếu bạn thử Google thì có lẽ sẽ cảm thấy khá choáng bởi hằng sa các loại ngôn ngữ lập trình cần phải học cũng như các framework và nguồn để học.

Nhưng đừng lo lắng, bởi không chỉ có mình bạn gặp vấn đề này. Google có thể là người bạn tốt nhất những cũng có thể là kẻ thù nguy hiểm nhất. Nó hoàn toàn phụ thuộc vào cách bạn sử dụng.

Lập trình website là gì?

Lập trình web là quá trình tạo ra các trang web và ứng dụng web bằng cách sử dụng các ngôn ngữ lập trình và công cụ phát triển web.

Mục tiêu của lập trình web là xây dựng các trang web động, tương tác, và đáp ứng nhu cầu của người dùng, từ các trang web tĩnh cơ bản đến các ứng dụng web phức tạp, như hệ thống thương mại điện tử, mạng xã hội hoặc các nền tảng học trực tuyến.

Những lời khuyên về lập trình web

Tôi khuyên các bạn khi muốn làm về web thì hãy xác định mục đích rõ ràng cuối cùng của bạn là gì. Bạn muốn thay đổi sự nghiệp. Hoặc là bạn có một ý tưởng cực độc cho app. Hay chỉ đơn giản là bạn muốn học cho vui.

Dù là gì đi nữa, quan trọng nhất bạn phải biết vì sao mình lại làm vậy. Sự hiểu biết này sẽ giúp bạn làm việc hiệu quả hơn. Nó cũng sẽ là động lực cho bạn để tiếp tục mỗi khi muốn từ bỏ. Hãy luôn nhớ rằng goal của bạn dù có khó đến mức nào thì nó vẫn có thể đạt được bằng sự cần cù và quyết tâm.

Cứ cho là bạn hoàn toàn mới và không biết gì về lập trình web luôn. Thế thì bạn nên suy nghĩ và đưa ra lựa chọn giữa Back-end và Front-end. Tôi sẽ giải thích sơ lược sự khác biệt giữa chúng.

Frontend  – đây là những gì mà user sẽ nhìn thấy và tương tác với khi vào website. Nó hoàn toàn là về design, hiệu ứng bóng bẩy, layout và hình ảnh nhằm tạo ra trải nghiệm sử dụng cho khách hàng.

Thông thường frontend developer rất giỏi về sáng tạo hình ảnh, kĩ năng design giỏi và có đam mê với việc tạo ra trải nghiệm cho người dùng tốt nhất. Các công nghệ thường được sử dụng bởi frontend developer bao gồm HTML, CSS, jQuery và JavaScript.

Tham khảo thêm các vị trí tuyển dụng Front end lương cao.

Backend – Đây là phần về xử lí, lưu trữ và sử dụng Data. Nó là cách mà web và app hoạt động. Backend developer là những người giỏi giải quyết vấn đề, suy nghĩ logic và có sở thích với các tính năng của web và app. Lập trình Backend thường dùng tới PHP, Python, Golang, Java, Javascript và Ruby.

  25 thuật ngữ bạn nhất định phải biết khi lập trình web

Trong trường hợp của tôi, ngày từ đầu đã biết chắc rằng mình không phù hợp với visual design của bên frontend. Có lẽ là nhờ vào việc tôi từng học về kỹ thuật và xây dựng nên việc ra quyết định khá dễ và rõ ràng. Tôi thuộc vào nhóm giải quyết vấn đề và vận hành hơn là làm đẹp cho sản phẩm.

Dù thế nào đi nữa, bạn có chọn Frontend hay Backend thì việc đầu tiên luôn là học về HTML và CSS. Bởi ít nhất bạn phải có được khả năng làm ra một website cơ bản.

Sau đó bạn nên chọn cho mình 1 editor yêu thích để code trên như VS Code hay Sublime Text. Sau đó chọn ngôn ngữ lập trình nào dễ học dễ làm vd như tôi chọn Php để lao vào vọc ngay, tải các tài liệu học lập trình web liên quan đến php để nắm căn bản. Sau khi nắm căn bản rồi chọn một framework trong các framework php mà viết trang web đầu tiên của mình.

Sau khi đã hoàn thành những khóa trên thì xin chúc mừng bạn đã thực sự bước chân vào thế giới của lập trình web rồi đấy!

Giờ là lúc thực hành, có thể sẽ rất khó khi bạn mới thử. Chúng ta có quá nhiều thứ để lo như học, làm, gia đình, v.v… nên thời gian không hề dư dả gì.

Thế nên sự kiên trì, nhất quán chính là chìa khóa thành công. Bạn sẽ biết nhiều hơn với mỗi giờ học code mỗi ngày hơn là học 7 giờ trong một ngày.

Con người là sinh vật của thói quen. Vì thế hãy biến việc viết code thành thói quen hàng ngày.

Tham khảo thêm các vị trí tuyển dụng back end lương cao.

lập trình web

  8 video game giúp bạn lập trình web tốt hơn

Hãy học code như bạn đang cố gắng trở thành người mạnh nhất thế giới.

Nếu bạn từng xem cuộc thi “Worlds Strongest Man”, thì việc học code cũng giống như kéo cái xe tải vậy. Nó cực kì khó khi mới bắt đầu, trông trả khác gì nhiệm vụ bất khả thi, và bạn thì chỉ có thể đi những bước nhỏ.

Nhưng khi chiếc xe bắt đầu lăn bánh thì nó cũng trở nên dễ hơn, và có khi bạn còn chạy như bay luôn.

  Tại sao nên chọn Python để lập trình Web App?

Nếu bạn thích học bằng video thì YouTube chính là nguồn học chính cho bạn.

Những cộng đồng như freeCodeCamp cũng là nơi học cực kì tuyệt vời mà lại miễn phí. Và điều quan trọng nhất là nếu bạn biết cách thì việc trở thành một web developer giỏi mà không tốn một xu là điều có thể.

  8 tools cần có để tăng workflow khi lập trình web

Bạn không cần phải giỏi HTML và CSS thì mới làm web được

Một điều mà tôi muốn nhấn mạnh rằng: bạn không phải giỏi về HTML và CSS mới làm được web hoặc học một ngôn ngữ khác.

Bạn không phải bỏ hàng tháng chỉ để học và học. Khi đã nắm được cơ bản rồi thì cứ “múc” và thực hành thôi.

Templates không phải là kẻ thù của bạn

Template thật sự khá hữu ích. Thật sự đấy. Mặc dù đúng là nó không giúp bạn tạo ra những trang web thật sự tuyệt vời nhưng ít ra nó cung cấp framework để bạn có thể làm ra những website đẹp và chuẩn. Tôi làm tại một công ty chuyên về product và templates luôn được sử dụng vào frontend của các sản phẩm. Điều đó có nghĩa là ta tiết kiếm được thời gian và tập trung vào tính năng của sản phẩm nhiều hơn.

Tuy vậy nếu bạn muốn trở thành một frontend developer đại tài thì sẽ phải cố gắng phát triển những kĩ năng tốt nhất,nhưng template thật sự khá hữu ích đấy.

Via Medium

Có thể bạn muốn xem thêm:

Xem thêm Top Việc làm lập trình viên trên TopDev

Triết lý Marketing 0 đồng – tất cả nằm ở chữ “Mượn”

Các bạn đã từng nghe qua thuật ngữ “Zero cost-Marketing” hay còn gọi là marketing 0 đồng?

Lạ thật đúng không! bởi Marketing là một trong những ngành đòi hỏi kinh phí đủ lớn để có thể chạy một campaign thành công. Và bạn không hề sai, Marketing vốn rất phức tạp và cực kì tốn kém. Nhưng đó là với khuôn mẫu truyễn thống như quảng cáo qua TV, báo đài. Còn Zero cost-marketing là loại hình sinh sau đẻ muộn hơn, nhưng lại có tiềm năng vượt trội hơn hẳn các phương pháp truyền thông truyền thống, mà theo anh Nguyễn Ngọc Long – sáng lập truyền thông Trăng Đen đã nhận xét: “Zero cost-Marketing sẽ định hình lại bộ mặt của marketing”.

Trong buổi event với chủ đề: Triết lý Zero cost Marketing cho Star-up được tổ chức bởi TopDev, với sự tham gia của hai diễn giả: Nguyễn Ngọc Long – sáng lập truyền thông Trăng Đen và Nguyễn Minh Thảo – CEO Umbala, là hai nhân vật khá nổi tiếng trong cộng đồng marketing. Người tham dự cũng là những leader và CEO đầy tâm huyết từ các startup nên có thể nói buổi event diễn ra rất sôi nổi với nhiều câu hỏi mang tính thiết thực. Tôi cũng là một người đến tham dự và may mắn được lắng nghe những bài học quí giá từ 2 đàn anh đi trước.

Triết lý Zero cost Marketing cho Start-up cùng anh Nguyễn Minh Thảo – CEO Umbala và anh Nguyễn Ngọc Long – sáng lập truyền thông Trăng Đen

Trong bài viết ngắn này, tôi xin phép chia sẻ những quan điểm của anh Long và anh Thảo về Zero cost-marketing cũng như cách mà bạn có thể áp dụng nó vào trong chiến lược quảng cáo sản phẩm của mình.

Theo anh Minh Thảo: ” làm zero cost marketing là một điều mà không ai muốn bởi nó thể hiện rằng bạn và team phải “thắt lưng buộc bụng” và tận dụng mọi thứ mình có. Nói cách khác, Marketing không đồng có thể hiểu là thay vì bỏ chi phí cho quảng cáo thì dùng nguồn tiền đó để đâu tư cho nhân sự của team” . Do vậy, thuật ngữ zero cost marketing ở đây là chưa chính xác và dễ gây hiểu nhầm bởi ta vẫn phải bỏ tiền ra, nhưng tận dụng những nguồn lực sẵn có để marketing ít tốn kém nhất mang lại hiệu quả cao nhất.

Zero cost marketing đóng vai trò cực kì quan trọng, có thể nói là quyết định sự sống còn của một startup, anh Thảo cho biết. Có 3 nguyên nhân chính dẫn đến việc một startup bị thất bại. Đầu tiên là sản phẩm, nếu sản phẩm dở thì dù marketing có mạnh đến đâu vẫn là công cốc. Thứ hai là nguồn vốn, dù marketing có thông minh tới đâu thì ta vẫn phải rót tiền vào. Và nếu tiền cạn thì cũng là hết máu, marketing chết khô và startup phá sản. Cuối cùng chính là con người. Để làm được zero cost marketing thì phải cần có những con người có sự điên rồ cũng như khả năng thay đổi theo kịp với thời đại. Bởi bạn sẽ phải luôn làm cái mà phù hợp với thị trường và đồng thời phải là kẻ giỏi nhất. Do đó nhân sự giỏi thì marketing sẽ bớt tốn kém và hiệu quả tăng lên rất nhiều lần.

Vậy cách thực hiện zero cost marketing là gì?

Anh Thảo, cũng chia sẻ thêm: “trước khi quan tâm về cách thức thì hãy hiểu về bản thân trước. Anh cho rằng câu hỏi quan trọng hơn mà chúng ta luôn phải tự hỏi mỗi khi làm zero cost marketing là: nó để làm gì? Bạn có hiểu về sản phẩm chưa? Bạn đã biết gì về khách hàng bạn muốn nhắm tới rồi?”

Marketing 0 đồng thành công thì trong đó hơn 7, 8 phần nằm ở khâu này. Không quan trọng bạn nói gì, họ nghe gì từ bạn mới là điều quyết định. Vì thế hãy luôn chắc chắn rằng thông điệp bạn truyền tải phù hợp với đối tượng mình nhắm tới. Một vài ví dụ cho dễ hiểu là nếu khách của bạn là người trẻ, họ sẽ thích xem hình vui, clip chế. Còn nếu khách của bạn là người cao tuổi thì họ sẽ thích xem những bài post mang đậm tính giáo dục.Thế nhưng để làm ra những content “chất” như vậy, theo anh Thảo là vô cùng khó, thế nên zero cost marketing lúc này bao gồm 2 vấn đề là viral và content marketing. Nếu như viral là cách khiến cho tăng lượng người xem và biết tới thương hiệu một cách nhanh chóng thì content marketing sẽ giúp họ trở thành những người khách hàng đầy tiềm năng. Trong bài viết ngắn này thì tôi sẽ đi chuyên sâu hơn về phần Viral và phân tích phần của anh Thảo. Còn phần content marketing sẽ được giới trong bài viết  sau với anh Nguyễn Ngọc Long, có thể xem là một trong những người đi tiên phong trong lĩnh vực này.

Kế sách của người làm viral – content marketing: “Mượn”

Hẵn các bạn cũng nghe câu truyện cây cổ thụ và cơn bão. Vào thuở còn sơ khai, có một cây cổ thụ dài gần trăm mét, rễ bám sâu vào đất trong khi ngọn chạm đến trời. Nghe kể, cây vĩ đại tới mức nó nối được cả thiên giới với âm giới. Cây cổ thụ được người đời kính trọng nên khoái chí lắm. Mà thói đời hễ được xưng tụng thì lại bị xấu tính. Cổ thụ liền vênh váo, hách dịch. Đặc biệt là với mấy bụi tre ốm nhách kế bên mình. Lúc đó, trời đánh hơi được nên vô cùng nổi giận, liền cho bão nổi lên ầm ầm. Cổ thụ tuy rễ đụng tới tận nóc nhà của âm phủ cũng không thể chịu nổi mà phải chổng vó gẫy ngang cả người. Trong khi đó bụi tre người mèm dẻo ngả theo gió thì lại vẫn sống sót và được ông trời khen ngợi. Thế nên bạn cũng thấy được hễ làm gì, thì người Việt mình cũng dùng tới tre như làm lồng đèn, làm giáo, làm đũa… chứ tuyệt nhiên không xài tới cổ thụ. Làm zero cost marketing cũng phải như thế. Bạn phải như cây tre, đầy mềm dẻo và biết gió theo chiều nào thì mình theo chiều đó. Có trending nào thì mình phải mượn trending đó để làm marketing.

Anh Thảo cho rằng ta phải sống “kí sinh”, ăn theo và đứng trên vai người khổng lồ. Điều đó không có gì sai bởi làm start up thì làm gì có nhiều tiền. Mặt khác, để tạo ra một content chất thì nó mất rất nhiều tiền, thời gian và cả chất xám. Vì thế nó như một “con bài trùm”. Mà bài trùm thì có bao giờ đánh liền đâu, mà phải ém, để khúc quan trọng là tung ra để ăn cả giàn. Vậy trong thời gian chờ đợi đấy, hãy “mượn”. Mượn từ nội dụng, ý tưởng, mượn các trending đem về xào nấu lại theo phong cách của mình. Đó chính là tâm ý của viral marketing. Một ví dụ nho nhỏ là những hiện tượng như Sơn Tùng và các thể loại ăn theo như hình chế, clip chế, ….. với những ý tượng na ná nhau những vẫn là hit với trăm ngàn lượt hit và share.

Hi vọng qua bài viết này, các bạn đã có thêm cái nhìn rõ ràng hơn về marketing không đồng cũng như cách thức làm chúng. Lưu ý rằng đây chỉ như là bài hướng dẫn cho bạn hiểu cách một người làm marketing suy nghĩ. Sau đó việc thực hành là tùy vào mỗi người và khả năng tiếp thu của họ.

Techtalk

3 tools giúp bạn tăng hiệu năng của React App một cách bất ngờ

React rất đơn giản để học và làm, nhưng đôi khi vì quá dễ mà chúng ta hay mắc những lỗi nhỏ nhặt nhưng lại gây ảnh hưởng đến hiệu năng của chúng. Component mounts chậm, component trees quá rối rắm, cũng như những render cycle thừa thãi khiến cho user cảm thấy ứng dụng chạy chậm.

Thật may là có rất nhiều tool giúp phân tích và xách định vấn đề về hiệu năng trong React. Trong bài viết này tôi sẽ liệt kê ra những tool và mánh khóe để cải thiện tốc độ xử lí của các ứng dụng React.

Tool #1: Performance Timeline

React 15.4.0 vừa tích hợp vào tính năng mới là “performance timeline feature” cho phép bạn biết được chính xác khi nào components được mounted, updated, và unmounted. Nó còn có khả năng hiển thị component lifecycle cũng như mối quan hệ giữa chúng.

Note: Hiện tại tính năng này chỉ dành cho Chrome, Edge, và IE.

Cách nó hoạt động

  1. Vào app và nối đoạn query param sau: react_perf. Như thế này: http://localhost:3000?react_perf
  2. Mở Chrome DevTools Performance tab và chọn Record
  3. Thực hiện hành động mà bạn muốn được phân tích
  4. Dừng record
  5. Kiểm tra kết quả từ User Timing

Hiểu rõ kết quả (output)

Từng cột màu cho ta thấy thời điểm mà từng component hoạt động. Bởi vì JavaScript là single-threaded nên khi một component đang mount hoặc render, nó sẽ được chạy trong thread chính và các code phải ngưng lại cho đến khi quá trình trên hoàn thành.

Phần thông tin trong mục  [update] cho ta biết đang trong giai đoạn nào của component lifecycle. Cũng nhu thời gian cho từng bước để giúp bạn có thể so sánh giữa các phương pháp như  [componentDidMount], [componentWillReceiveProps] [ctor] (constructor) và[render].

Các cột được xếp với nhau nhằm tượng trưng cho component trees. Mặc dù theo thông thường thì chúng ta sẽ có component tree khá lớn trong React, nếu bạn đang tinh chỉnh một component thương xuyên được mounted, nó sẽ giúp làm giảm số lượng của wrapper component và kết quả là cải thiện hiệu năng của app.

Điều cần lưu ý là thời gian xử lí trong quá trình phát triển app luôn sẽ chậm hơn so với thông số thật. Tuy là bạn không nên quá dựa vào những thông số trên nhưng sự khác biệt cũng không nhiều và nó cho ta cái nhìn rõ hơn về chất lượng và hiệu năng của sản phẩm đang ở đâu.

Demo #1

Để cho vui, tôi thử phá TodoMVC app để khiến nó có những vấn đề nghiêm trọng về hiệu năng. bạn cũng có thể thử chúng tại đây.

Để xem timeline, mở Chrome dev tools, vào “Performance” tab, chọn Record. Sau đó thêm TODOs vào trong app, dừng record, và xem timeline. Hãy thử xem bạn có thể biết được component chính là nguyên nhân khiến cho hiệu năng bị ảnh hưởng không.

Tool #2: why-did-you-update

Một trong những nguyên nhân chính khiến cho các ứng dụng trên React chạy chậm là bởi có quá nhiều render cycle không cần thiết. Khi để ở chế độ mặc định, React components sẽ re-render khi ba mẹ chúng (component chứa chúng) reder cho dù là không có thay đổi bất cứ thứ gì.

Một ví dụ đơn giản là với component sau:

class DumbComponent extends Component {
  render() {
    return <div> {this.props.value} </div>;
  }
}

Tham khảo việc làm lập trình React lương cao cho bạn

Với một component mẹ như thế này:

class Parent extends Component {
  render() {
    return <div>
      <DumbComponent value={3} />
    </div>;
  }
}

Mỗi khi component mẹ render thì DumbComponent re-render cho dù props của nó chả thay đổi gì.

Nói cách khác  render chạy nhưng DOM ảo vẫn không thay đổi gì và một render cycle bị phí phạm. Với một app lớn thì việc xác định ra nguồn ngọn sẽ rất khó khăn, may thay chúng ta đã có một tool cho trường hợp này.

Sử dụng why-did-you-update

why-did-you-update là một library dành cho React với chức năng phát hiện ra những component render không cần thiết. Nó sẽ theo dõi và ngay lập tức phát hiện ra những component’s  render mà prop lại không có thay đổi.

Setup

  1. Cài đặt với npm:  npm i --save-dev why-did-you-update
  2. Thêm phần dưới đâu vào bất kì đâu của app của bạn:
import React from 'react'
if (process.env.NODE_ENV !== 'production') {
  const {whyDidYouUpdate} = require('why-did-you-update')
  whyDidYouUpdate(React)
}

Demo #2

Để cho bạn thấy khả năng why-did-you-update, tôi cài library đó vào TodoMVC app trên Code Sandbox, một online React playground. Mở trình duyệt console và thêm một số TODOs để xem kết quả.

Bạn có thể lấy bản Demo tại đây.

Bạn sẽ thấy một số component trong app render một cách không cần thiết. Hãy thử dùng kĩ thuật trên để khắc phục chúng.

Tool #3: React Developer Tools

React Developer Tools Chrome extension có một tính năng là hiển thị component updates. Nó cực kì tiện lỡi cho việc phát hiện ra những render cycles không cần thiết. Để sử dụng nó trước hết bạn cần phải cài extension đấy.

Sau đó mở extension bằng bấm vào “React” tab của Chrome DevTools và chọn phần “Highlight Updates”.

Giờ thì chỉ việc dùng app, tương tác với compopnent và chứng kiến DevTool thực hiện phép thuật của nó.

Hiểu rõ kết quả (output)

React Developer Tools sẽ highlights các components có redering. Nó còn cho màu sắc khác nhau như xanh, vàng, đỏ tùy thuộc vào việc component có render thường xuyên hay không.  

Vàng và đỏ không có nghĩa là xấu bởi đôi khi ta update hoặc chạy nhiều tính năng nên khiến cho render diễn ra nhiều. Tuy nhiên nếu chỉ nhấn một nút đơn giản mà đã ra mà đỏ rồi thì khá là có vấn đề đấy. Mục đích của tool này là để chúng ta biết được update nào là không cần thiết. Và là một App developer, bạn sẽ biết khi nào thì enn6 update component.

Demo #3

Để bạn hiểu rõ hơn về tính năng component highlight, tôi đã sửa cho TodoMVC app update không cần thiết một số component.

Bạn có thể download bản Demo tại đây.

Vào đường link trên, mở React Developer Tools và chọn update highlighting. Khi bạn type trong text input, ta sẽ thấy toàn bộ TODOs highlight không cần thiết. Và khi bạn type nhanh hơn thì màu sắc cùa hightlight cũng sẽ biến đổi liên tục nhằm ám chỉ việc update thường xuyên.

Khắc phục renders thừa thãi

Sau khi bạn đã xác định được components nào re-rendering thừa thãi thì ta sẽ tìm cách khác phục chúng. Sau đây là một số phương pháp khá đơn giản.

Sử dụng PureComponent

Trong ví dụ trên,  DumbComponent là một pure function cho props của nó. Nói cách khác, component chỉ re-render khi Prop thay đổi. Có thể nói tính năng `PureComponent` trong React chính là để dùng cho trường hợp đặc biệt này.

Bạn có thể dùng React.PureComponent như sau:

class DumbComponent extends PureComponent {
  render() {
    return <div> {this.props.value} </div>;
  }
}

Và thế là xong rồi đấy.

Tuy vậy, PureComponent chỉ quét sơ Props để phát hiện ra những thay đổi. Thế nên nếu trong trường hợp là một app phức tạp với nhiều Props khác nhau thì PureComponent đôi khi bỏ qua một số và sẽ không thay đổi.

Áp dụng shouldComponentUpdate

shouldComponentUpdate là một phương pháp của component khi ta call trước khi render  nếuprops or state có thay đổi hay không. Nếu  shouldComponentUpdate cho kết quả là true, thì render sẽ diễn ra còn nếu là false thì mọi thứ đều được giữ nguyên.

Với phương pháp trên, bạn có thể chỉ React cách tránh re-rendering thừa thãi với component mà props của nó không có thay đổi.

Chúng ta có thể áp dụng shouldComponentUpdate vào ví dụ trên như sau:

class DumbComponent extends Component {
  shouldComponentUpdate(nextProps) {
    if (this.props.value !== nextProps.value) {
      return true;
    } else {
      return false;
    }
  }
render() {
    return <div>foo</div>;
  }
}

Debugging vấn đề về hiệu năng

The React Developer Tools chỉ hoạt động với app của bạn trong máy của bạn. Thế nên nếu bạn muốn biết những vấn đề hiệu năng khi khách hàng sử dụng sản phẩm của mình thì hãy thử LogRocket.

LogRocket giống như DVR dành cho web apps, nó record lại tất cả mọi thứ xảy ra trên website của bạn. Nhờ đó thay vì phỏng đoán một cách mơ hồ thì giờ bạn đã có thể nhanh chóng replay lại và xác định được ngay vấn đề dẫn đến việc hiệu năng bị giảm sút.

LogRocket sẽ khiến App của bạn record thông tin về hiệu năng, Redux actions/state, logs, errors, network requests/responses với headers + bodies, và browser metadata. Không chỉ thế, nó còn record cả HTML và CSS trên trang, tạo lại videos chính xác tới từng pixel của các app một trang phức tạp nhất có thể.

Cảm ơn vì đã đọc bài viết này và hi vọng nó sẽ giúp ích cho các bạn trong project React tiếp theo.

Nguồn: topdev via Medium

Tham khảo thêm vị trí việc làm ngành IT tại đây

Database conventions

Database conventions

1. Intro

(1) Thiết kế database là công việc thường ngày của engineer, nhất là các bạn database engineer. Giống với coding cần clean, database cũng cần tính chất tương tự nhằm giúp việc vận hành, thay đổi, chuyển giao nó đỡ tốn nhiều công sức hơn, do đó chúng ta cũng cần có một số quy tắc nhất định trong việc thiết kế.

Thường thì mỗi nhóm hay công ty sẽ có bộ quy tắc riêng cho mình, cho dù có được viết thành document rõ ràng hoặc không. Cũng giống như coding có nhiều trường phái khác nhau, ví dụ python thì có hai đại diện tiêu biểu là PEP8 và Google Python Style Guide, Database conventions cũng không nhất thiết phải tuân theo một chuẩn duy nhất, miễn sao nó mang lại những giá trị mà theo tôi là quan trọng nhất: Sự thống nhất (Consistency) và Dễ hiểu (Simplicity, Self-explaining)

(2) Đã bao giờ bạn nhìn vào thiết kế DB của hệ thống cũ khi gia nhập vào một công ty mới hoặc khi bạn tham gia vào một team khác và tự hỏi những câu giống như dưới đây không?

  • “WTF is this field?” (ca này hay gặp nhất :D)
  • “Cái field status này có giá trị là 0-1 hay còn gì khác không?” (chẹp, SELECT DISTINCT để tìm chân lý vậy)
  • (đang code) “Table random này thì PK là id hay random_id nhỉ?” (mở DB ra coi lại)

Well, cá nhân tôi đã gặp khá nhiều và trở thành ám ảnh khi phải tiếp cận với một hệ thống lớn và phức tạp (ví dụ có 1000 table chẳng hạn) mà lại thiếu document. Đừng hiểu nhầm, tôi không kỳ vọng một bộ document cực kỳ lớn tới mức tôi phải lấy nhiều dũng cảm mới có thể đọc hết cho 1000 table kia, hoặc mỗi khi muốn biết 1 field là gì lại phải giở tài liệu ra tìm kiếm. Phần lớn các field đều có thể hiểu nhanh được nếu đặt tên tốt và có lúc cũng cần giải thích ngắn gọn đi kèm. Đây là 1 ví dụ:

A field with comment

(3) Vậy có cần DB document hay không? Tôi nghĩ là vẫn cần. Mỗi business/domain có các đặc thù riêng, dẫn tới các data field cũng khá đặc biệt nên nếu tôi không tìm hiểu kỹ thì sẽ chẳng hiểu nổi nó là gì, tương tác với dữ liệu đó sao cho đúng, như ví dụ dưới đây:

(4) Sẽ dễ dàng hơn nếu ngay từ khi thiết kế, chúng ta tuân theo một quy tắc là làm sao lần sau đụng tới thì tốn ít effort nhất có thể. Nhiều quy tắc được tổng hợp và thống nhất trong team thì trở thành bộ Database Conventions của team đó.

Trong bài này tôi sẽ đề cập tới một số conventions mà tôi và team của mình hay dùng.

Xem thêm: Việc làm Database lương cạnh tranh hấp dẫn

2. DB Conventions

2.1. Một số quy tắc chung về đặt tên

Nên Ví dụ Không nên Giải thích
Tên là danh từ tiếng Anh
Chỉ dùng danh từ số ít inventory
shelf
octopus
inventories  octopodes
 shelves octopuses
octopi
Đỡ mất thời gian nghĩ
Chỉ dùng lower_case  customer customer
Chỉ dùng dấu gạch dưới _ để nối các từ  first_name FirstName  firstName
 "First Name"
– Dễ đọc hơn
– Đỡ thắc mắc khi nào thì có chữ hoa, khi nào thì có gạch dưới
 Tên có tính tự giải thích.
– Tránh dùng từ viết tắt
– Tránh dùng kiểu dữ liệu thay cho tên
 middle_name
 blog.content
amt
 mid_nm
 blog .text
amount
 Dễ hiểu
 Tránh dùng từ khóa của SQL  display_order
 updated_at
user_name
 order
date
 name
 Có thể bị báo lỗi syntax nếu không enquote
 Tên ngắn gọn, không nên dài quá 64 ký tự

2.2. Table

Nên Ví dụ Không nên Giải thích
Đặt prefix cho các table liên quan catalog_category
catalog_product
Tìm kiếm table dễ hơn
Thêm suffix _tmp cho các table dùng tạm trong tính toán nhưng không xóa catalog_product_price_tmp
 Thêm prefix tmp_ cho các table dùng tạm, có thể xóa  tmp_im_calculating

2.3. Column

2.3.1. Column

Nên Ví dụ Không nên Giải thích
Tránh thêm tiền tố không cần thiết product.name product.product_name – Tên table đã nêu rõ context
Thêm prefix is_ cho các field dạng YES/NO is_active
 is_delivered
is_free_shipping
active delivered
 free_shipping
Nhìn field là biết chỉ có 2 giá trị
Nên lưu các thời điểm thay đổi dữ liệu với từng record created_at
updated_at
 deleted_at
Theo dõi tính toàn vẹn dữ liệu
Không đặt tên chứa kiểu dữ liệu  return_code int_return_code Kiểu dữ liệu có thể thay đổi:
– date => timestamp
– int => bigint

2.3.2. Primary Key

Nên Ví dụ Không nên Giải thích
Chỉ nên dùng PK là id table .id table .table_id – Dễ nhớ
– Giảm effort khi đổi tên table sau này
Mỗi table nên có 1 PK, bên cạnh các UNIQUE KEY khác PRIMARY KEY (id),
UNIQUE KEY idx_unique (key1,key2)
Làm việc với các record nhanh hơn
PK mặc định nên dùng kiểu Interger, Auto-increment

2.3.3. Foreign Keys

Nên Không nên Giải thích
Tên FK được kết hợp từ tên field và tên table mà nó tham chiếu tới person_id là FK của table và field person.id Dễ hiểu
Tùy chọn Cascading Update có thể dùng, nhưng Cascading Delete thì nên tránh Giảm rủi ro khi lỡ xóa record ở main table khiến cho toàn bộ dữ liệu liên quan biến mất

2.3.4. Indexes

Nên Ví dụ Giải thích
Thêm prefix idx_ ở đầu  idx_created_at Dễ nhớ, nhất là khi ALTER TABLE mà không dùng GUI Tool

3. Tổng kết

Có nhiều quy tắc để nhớ, tuy nhiên có thể dựa trên nguyên tắc thiết kế ban đầu là:

Be Consistent and Simple, don’t waste your brain any single second for any unnecessary thing

Bạn có best-practice hoặc các quy tắc nào khác hữu ích hơn cho việc thiết kế Database không? Nếu có hãy chia sẻ cho mọi người tại đây nhé!

Nguồn: kipalog

Review: phỏng vấn vào vị trí SDE của Amazon

Mình vừa kết thúc job interview với Amazon vào tuần trước và đang chờ kết quả. Trong quá trình chờ đợi này, mình quyết định viết 1 cái note để kể về quá trình phỏng vấn, giúp cho anh chị em bạn bè nào muốn apply vào công ty này có thể mạnh dạn hơn. Mình không đợi có kết quả rồi mới viết vì sợ lúc đó chả có hứng nữa..

Vì mình ký vào bản cam kết NDA của Amazon, nên sẽ không tiết lộ bất cứ câu hỏi phỏng vấn hay tài liệu Amazon cung cấp nào trong bài viết này. Mình chỉ mô tả các bước tuyển dụng, độ khó dễ và feeling của cá nhân thôi. Ví trí mình phỏng vấn đợt này là SDE (Software Development Engineer), làm việc tại Vancouver, Canada. Có lẽ mình nên bắt đầu câu chuyện bằng lý do tại sao mình lại apply vào đây. Bên Amazon người ta đi khắp các nước để tổ chức Hiring Event, và Việt Nam là 1 trong số các điểm đến.

Hiring Event ở VN được ấn định vào 18-20/4/2017. Do vậy, trước đó 3, 4 tháng, các recruiters của Amazon lùng sục khắp cộng đồng LinkedIn ở VN để tìm ứng viên. Và may mắn thay, profile của mình lọt vào tầm ngắm của họ, và vào ngày 25/2 họ gửi mail mời mình join hiring process này, đúng 1 tháng sau khi mình nghỉ việc ở Zalo. Lúc đó mình đang cày IELTS điên cuồng và không định apply vì… sợ mất thời gian (trước đó có myth là phỏng vấn vào mấy công ty to như thế này rất khó và phải chuẩn bị cả năm trời mới okay). Sau cùng nhờ sự động viên của 1 vài người anh em, mình quyết định nộp CV cho người ta.

Vì người ta đã chọn mình trước nên đương nhiên vòng CV mình sẽ pass. Nhưng với nhiều bạn, vòng CV có thể là 1 vòng khó, nếu bạn không biết trau chuốt và nêu các thế mạnh của mình ra. Do vậy các bạn nên nghiên cứu kỹ, ví dụ link này Sau khi nhận được CV của mình, recruiter lập tức move forward sang bước thứ 2 là coding challenge. Mình được cho 1 cái link, mở ra là 1 IDE online, đi kèm với đề bài, kiểu như trang hackerrank vậy. Mình phải giải quyết 2 problems trong vòng 90 phút. Problems không quá khó, khá cơ bản, nếu bạn nào từng thi Google Code Jam thì còn thấy mấy bài này dễ hơn.

Chủ yếu mấy bài này test kiến thức Data Structure và Basic Algorithm thôi. Các bạn có thể dễ dàng search các đề bài kiểu này trên internet. Nếu các bạn thiếu tự tin thì có thể lên trang hackerrank để luyện tập. Mình thì hôm đó nhảy vào làm luôn vì lười luyện (lúc này vẫn đang tập trung cày IELTS. 1 tuần sau Coding Challenge, mình nhận được kết quả là đã pass và move forward tới vòng Phone Interview. Ở vòng này, người ta bảo rõ với mình là sẽ hỏi về DS (Array, List, Tree, Graph, HashTable…), Algorithm (BFS, DFS, Tree Traversal, Recursive function…) và quan trọng là hỏi về 1 vài example của mình trong công việc. Câu hỏi đó thường là “tell mReview: phỏng vấn vào vị trí SDE của Amazone about a situation in which you ….”.

Các câu hỏi kiểu này cũng dễ tìm thấy trên mạng nên mình ko nêu ra ở đây. Chỉ lưu ý các bạn là phải chuẩn bị trước kỹ càng cho các câu hỏi này, vì nó đóng vai trò rất quan trọng trong việc đánh giá của người ta. Phone Interview chỉ kéo dài 30 mins thôi nên đừng lo lắng quá. Cố gắng tập luyện để nói cho trôi chảy và hiểu được câu hỏi của recruiter cộng với review lại kiến thức để trả lời cho chắc chắn.

Hơn 1 tuần sau vòng Phone Interview, mình nhận được kết quả báo đã pass và được join hiring event. Hiring Event sẽ là face-to-face interview theo dạng loop. Có nghĩa là trong 1 buổi, kéo dài 4 tiếng, mình sẽ có 4 cuộc interview nhỏ với 4 nhóm Interviewers khác nhau. Hiring Event được tổ chức tại khách sạn Pullman, Ho Chi Minh City, và toàn bộ interviewers lẫn coordinators sẽ bay từ Canada sang Việt Nam để tổ chức. Từ lúc nhận tin đến lúc phỏng vấn thì mình chỉ có gần 20 ngày để chuẩn bị. Recruiters rất chu đáo khi gửi mình đầy đủ toàn bộ topic lẫn document cần phải nghiên cứu để chuẩn bị cho phỏng vấn.

Chỉ mỗi tội là khối lượng là khá nhiều nên khó để mà chuẩn bị được chu đáo trong 20 ngày. Nếu vượt qua được vòng này thì mình sẽ nhận được offer của Amazon, nên mình quyết tâm tạm dừng cày Ielts để dấn thân vào ôn luyện. 4 interviews sẽ có format tương tự nhau. Mỗi interview kéo dài 50 mins. 25-30 mins đầu dành cho việc hỏi các example (câu hỏi kiểu “tell me about a situation…” mà mình đề cập ở trên).

Người ta xoáy khá sâu vào các câu trả lời của mình, hỏi tường tận từng gốc rễ. Các example mà mình đưa ra vì vậy cần phải trung thực, bịa là biết liền. Quan trọng nhất là các example đó phải align với leadership principles của Amazon. Với phân nửa thời gian dùng để hỏi mấy cái này nên mình nhận thức được nó quan trọng như thế nào và cũng chuẩn bị khá kỹ, mặc dù vậy, có 1 vài câu hỏi vẫn không nghĩ ra được example ngay, phải xin họ 1 phút để ngồi ngẫm. Phần thời gian còn lại của interview là dành cho coding exercise (khoảng 20-25 mins).

Đề bài khá đa dạng, và toàn bộ code của mình phải viết trên bảng trắng (white board), chứ không phải bằng keyboard (cái này sinh viên BKHN chắc master luôn vì toàn phải thi lập trình trên giấy). Loop 1 mình được cho 1 đoạn code dài 1 trang A4 và yêu cầu viết lại cho dễ maintain và develop về sau. Key để solve được bài này là phải hiểu và vận dụng được cái Abstract Factory để thay cho 1 đoạn check if else quá dài. Do vậy, kinh nghiệm là phải nắm rõ được các Design Pattern cơ bản để giải. Loop 2 là 1 bài dạng Tree, áp dụng đệ quy linh hoạt chút là giải okay.

Loop 3 là 1 bài dạng graph, cũng không phức tạp lắm. Khó nhất là loop 4, là 1 bài Object Oriented System Design. Đề bài là 1 tình huống trong đời thực và mình phải vận dụng các kỹ năng thiết kế hướng đối tượng để mô hình hóa thành các class, viết các phương thức giao tiếp chính giữa các class. Mình vận dụng hết aggregation với inheritance, Queue, Timer, EventListener… để giải bài này.

Tuy không được hoàn chỉnh nhưng interviewer cũng accept cách làm của mình. Trong lúc giải các bài coding, mình contact liên tục với interviewers, hỏi họ bất cứ thứ gì mà mình thấy confuse, thỉnh thoảng họ cũng đưa ra gợi ý hoặc hỏi thêm mình 1 số câu hỏi. Điều đó giúp cho mình giải quyết các vấn đề nhanh hơn và tối ưu hơn. Mình coi các interviewers như những người đồng nghiệp đang trao đổi về bài toán với mình, chứ ko phải examiners trong 1 cuộc thi. Đây cũng là cách mình học hỏi qua cuốn Crack the Coding Interview. Các bạn quan tâm có thể đọc cuốn này, rất bổ ích. Cuối mỗi interview, các interviewers sẽ cho mình thời gian khoảng 5 phút để đặt câu hỏi cho họ.

Ban đầu mình chỉ chuẩn bị có 2,3 câu, hỏi 1 lần là hết, nên sau đó vào giờ nghỉ giải lao, phải vắt óc nghĩ xem nên hỏi người ta câu gì cho hay, cho ý nghĩa Nếu có lần sau chắc chuẩn bị hẳn chục câu từ ở nhà luôn. Mình vẫn đang đợi kết quả cuối cùng từ Amazon, nếu fail thì đây là bài viết duy nhất của mình nói về Hiring Process của Amazon.

Còn nếu pass thì mình sẽ có 1 số bài viết cụ thể hơn để nói về cách mình vượt qua từng vòng, từng vòng. Dù sao thì việc được tham gia phỏng vấn cũng là 1 trải nghiệm thú vị và đáng nhớ đối với mình Do vậy mình ko hề tiếc vì đã tiêu tốn thời gian cho sự kiện này. Cảm ơn các bạn đã bớt chút thời gian để đọc À một điều may mắn đối với mình là Amazon lại liên hệ đúng lúc mình đang nghỉ Zalo để học Ielts, nên trình nói tiếng Anh đang lên, và cũng có nhiều thời gian để chuẩn bị. Chứ nếu vừa đi làm vừa chuẩn bị thì chắc fail từ vòng gửi xe Update mới nhất 11h20pm ngày 26/04/2017: recruiter gọi điện cho mình báo pass interview. Chờ deal lương và làm thủ tục

Nguồn: Ken Nguyễn