Home Blog Page 198

Cơ chế phối màu trong UX/UI (Phần 2)

Color in UI

Tiếp nối Phần 1

Các button, chip và phần quản lý selection

Button, chip và bảng quản lý selection sẽ nổi bật hơn nếu bạn apply màu chủ đạo hoặc màu phụ vào nó.

Bảng màu 

  • Màu baseline cho phần text và các nút ngoài sẽ là màu chủ đạo.
  • Màu baseline color cho các nút action nổi và các nút action nổi bản mở rộng sẽ là màu phụ.
  • Màu baseline color phần selection control sẽ là màu phụ.

Cơ chế màu cho app này bao gồm màu chủ đạo (Tím 500) kèm theo tông tối (Tím 600) và màu phụ (Xanh teal 200).

  1. Nó dùng màu chủ đạo (Tím 500) vào bottom app bar và màu phụ (Xanh teal 200) để tạo điểm nhấn cho nút action nổi floating và phần điều khiển selection.
  2. Nó dùng màu phụ (Xanh teal 200) cho phần Danh sách các item đã chọn.

Xem tin tuyển dụng UI UX designer lương cao trên TopDev

Các button, chip và phần quản lý selection

App dùng màu chủ đạo (Hồng 100) cho nút action nổi chính và chip. Còn phần thanh kéo thả thì dùng màu (Hồng 900).

 

Nên                                                              Không nên

Phần quản lý selection nên được apply            Không nên dùng một trong các màu content màu phụ.                                                     làm phần Lưu ý, sẽ không được nổi bật.

Floating action button (FAB)

Nút action button nổi (FAB) là phần cần được nổi bật nhất trên app của bạn.

Sử dụng thêm màu để tạo contrast giữa FAB và các yếu tố xung quanh, ví dụ như thanh app bar. Màu baseline cho FAB sẽ là màu phụ. Nếu canva của bạn sử dụng quá nhiều màu, thì FAB nên sử dụng màu đơn sắc để nổi bật hơn phần content.

FAB dùng màu phụ của app này (Cam 500), tương phản với UI ở ngoài.

App này sử dụng chủ yếu tông Trắng và Đen cho tất cả các nút, phần quản lý selection và icon. Các component sẽ nổi lên hẳn vì chúng tương phản với phần content nhiều màu.

Typography and iconography 

Màu có thể hiển thị cho text được lớn hơn, nhỏ hơn, tương ứng với các text khác. Màu sắc cũng đảm bảo việc text dễ đọc khi chèn trên ảnh hoặc trên background, những cái thuường làm cho text trở nên khá khó đọc.

Typographic hierarchy

Màu sắc giúp tăng độ rõ ràng cũng như độ nổi bật của text.

App này sử dụng màu chủ đạo (Tím 500) và màu ohuj (Cam 600). Màu cam làm nổi bật phần headline lên và màu tím được áp dụng cho các tab và button.

Headlines and tabs

Bạn nên dùng màu chủ đạo hoặc màu phụ cho những phần text quan trọng như tab và headline.

App này sử dụng mày phụ (Cam 800) làm nổi và thu hút sự chú ý vào các headline.

App này thì sử dụng màu chủ đạo (Xanh lá 800) cho các tab, có hiển thị sự khác biệt giữa phần được chọn và không được chọn.

NÊN.                                                                 NÊN. 

Dùng màu chủ đạo hoặc màu phụ để làm            Bạn cũng có thể dùng màu chủ đạo hoặc nổi phần text ngắn, ví dụ phần headline.             màu phụ cho phần có back link.

CẨN TRỌNG. 

Tránh sử dụng màu chủ đạo tone sáng hoặc màu phụ cho phần body text.

Độ dễ đọc của Text

Icon giúp định hướng được các action cũng như cung cấp thêm thông tin. Màu sắc của chúng thường nên tương phản với màu nền để đảm bảo rằng chúng dễ thấy và dễ đọc.

App này dùng cả màu chủ đạo (Xanh lá 800) và màu phụ (Cam 800) cho phần icon.

Shrine sử dụng màu chủ đạo tone tối (Hồng 900) cho phần icon.

TopDev via material.io

Xem thêm: Ux ui designer job mới nhất tại Topdev
  Cơ chế phối màu trong UX/UI (Phần 1)

Vì sao không nên bỏ lỡ cơ hội gia nhập EVOLABLE ASIA?

Evolalble tuyển dụng IT - Blog TopDev

Ở giai đoạn định hướng phát triển sự nghiệp, bất cứ lập trình viên nào cũng mong muốn được offer với mức lương tốt nhất, bên cạnh đó là một môi trường có thể mang lại cho họ thật nhiều cơ hội bứt phá. Và Evolable Asia – một công ty chuyên cung cấp dịch vụ phát triển Offshore và LPO/Coding với hình thức “các phòng Lab” đã mang lại những trải nghiệm làm việc rất độc đáo, thu hút đông đảo sự quan tâm của các lập trình viên muốn nâng cao năng lực bản thân. Vậy đó là những trải nghiệm gì?

Các “phòng Lab” riêng biệt cho mỗi dự án

Khác với hình thức uỷ thác thông thường, theo mô hình Lab, đội ngũ Evolable Asia chỉ tập trung phát triển những dự án dài hạn, nên mang tính ổn định cao. Các khách hàng tại đây mỗi người sẽ có một “phòng” riêng cùng với một đội ngũ kỹ sư riêng chuyên trách phát triển cho dự án đó. Nếu bạn đã trở thành một phần của đội ngũ của Evolable Asia thì hằng ngày bạn sẽ được ở trong môi trường các phòng Lab, làm việc trực tiếp với các Project Manager người Nhật, điều này giúp bạn học hỏi được nhiều kĩ thuật tiên tiến và các cách quản lý, văn hóa Nhật Bản/ Mỹ. Với trải nghiệm cách làm việc trên, bạn sẽ có thể:

  • Nâng cao được kỹ năng cũng như về các kiến thức chuyên môn;
  • Trau dồi khả năng giao tiếp về ngoại ngữ (tiếng Anh, tiếng Nhật);
  • Cải thiện các kỹ năng mềm như quản lý thời gian, sắp xếp công việc…;

Và còn nhiều bài học kinh nghiệm khác được đúc kết riêng cho mỗi người sau khi hoàn thành những dự án.

Sở hữu văn phòng đáng mơ ước dành cho các lập trình viên

Evolable Asia tin rằng để có được sự tập trung, sáng tạo và làm việc dưới áp lực cao độ thì các lập trình viên cần có một không gian làm việc thoải mái nhất. Và Evolable Asia đã xây dựng một văn phòng cực lý tưởng dành riêng cho đội ngũ kỹ sư của họ – một khu phức hợp mở “hình cầu” với lối kiến trúc như một khu rừng nhiệt đới thu nhỏ tại văn phòng Amazon dạo gần đây – một “văn phòng xanh” tận dụng tối đa các nhân tố cây cảnh để trang trí cùng thiết kế trần nhà dạng sóng của Twitter. Đó là những ưu điểm vượt trội giúp tăng năng suất làm việc cho mọi nhân viên của Evolable Asia khi mà không gian ấy đã vươn tới phong cách kiểu quốc tế, nơi có thể sáng tạo không giới hạn và bứt phá năng lực cá nhân bất cứ lúc nào.

Bên cạnh đó không thể không nhắc tới các tiện ích giải trí để xua tan căng thẳng sau cả ngày dài làm việc, Evolable Asia thiết kế riêng một thư viện nhỏ ngay tại văn phòng – nơi có thể giúp các nhân viên được thư giãn với việc đọc sách, trau dồi thêm các tri thức bổ ích…

Evolable Asia tuyển dụng IT - TopDev - Hình 1
Chơi Bi lắc cùng đồng nghiệp sau giờ tan tầm là một trong những hoạt động giải trí rất thú vị tại Evolable Asia

Evolable Asia còn đầu tư tổ chức các hoạt động và trò chơi giải trí để giúp nhân viên được xả stress một cách vui vẻ nhất. Bi lắc, bóng bàn, cờ tướng… đấu trí vui cùng đồng nghiệp sau những giờ tan tầm là những lựa chọn cực kì thú vị khi bạn được làm việc ở đây.

Các cơ hội có thể nắm bắt trong tương lai tại Evolable Asia

Với sứ mệnh là: “To be No.1 IT software provider in Asia”, Evolable Asia đang từng bước hiện thực hóa sứ mệnh và vẫn luôn không ngừng tìm kiếm các kỹ sư tài năng để cùng chung tay góp sức. Nhằm muốn thu hút các ứng viên sáng giá gia nhập đội ngũ, Evolable Asia sẵn sàng trao loạt phúc lợi nổi bật nhất với mức lương lên đến $1,900:

  • Offer hấp dẫn: $1,100 – $1,900 + Lương tháng 13;
  • Nhận ngay HOT BONUS dựa trên mức lương gross sau khi hoàn thành giai đoạn thử việc;
  • Tham gia đào tạo miễn phí các kỹ năng chuyên môn, kỹ năng mềm và kỹ năng tiếng Nhật;
  • Được làm việc với các chuyên gia Nhật Bản, tiếp cận công nghệ mới nhất và chinh phục thách thức ở nhiều dự án mới;
  • Môi trường làm việc nước ngoài chuyên nghiệp, cởi mở và công bằng, nơi mỗi cá nhân được tin cậy và trao quyền phát triển;
  • Các hoạt động thể thao sôi nổi: Bóng đá, Bơi lội, Cầu lông, Tennis, Guitar,…;
  • Du lịch, kick off định kỳ hàng quý, hàng năm cùng nhiều sự kiện thú vị khác;

Đặc biệt cơ hội lần này đang mở ra cho các AI Engineer (Machine Learning)/ Ruby On Rails Developer mong muốn tìm nơi thể hiện năng lực để gặt hái thành công cho con đường sự nghiệp:

  1.  AI Engineer (Machine Learning)

Mô tả công việc:

  • Hợp tác chặt chẽ với các thành viên trong nhóm để xây dựng NLP engine, Recommendation system và những sản phẩm AI khác;
  • Áp dụng các thuật toán machine learning và AI để phân tích dữ liệu và phát triển các model;
  • Phát triển các dịch vụ web RESTful để cung cấp cho API integration;

Yêu cầu:

  • Cử nhân hoặc Thạc sĩ Khoa học Máy tính;
  • Có ít nhất 1 năm kinh nghiệm với Deep Learning / Machine Learning;
  • Thành thạo lập trình hướng đối tượng và có thể phát triển nhanh chóng các prototypes với một hoặc nhiều ngôn ngữ như Python;
  • Có thể đọc/ ghi tài liệu AI/ ML bằng tiếng Anh;
Evolable Asia tuyển dụng IT - TopDev - hình 4
Tự tin gia nhập để trở thành một mảnh ghép trong đại gia đình của Evolable Asia
  1. Ruby On Rails Developer (HOT BONUS)

Mô tả công việc:

  • Trao đổi với các chủ doanh nghiệp để hiểu thêm các yêu cầu của sản phẩm;
  • Đưa ra các chú thích rõ ràng, đảm bảo chất lượng và viết các unit test tốt;
  • Xem xét và đánh giá code của các thành viên khác để đảm bảo chất lượng làm việc cho cả nhóm;
  • Nghiên cứu và đưa ra ý tưởng/ giải pháp cho sự cải thiện;

Yêu cầu chính:

  • Có ít nhất 1 năm kinh nghiệm phát triển phần mềm Ruby / RoR;
  • Có kinh nghiệm về các cài đặt Linux server (middleware uses nginx, MySQL, rabbitmq);
  • Kinh nghiệm về Nodejs, Google Firebase là điểm cộng;

Yêu cầu chung:

  • Có bằng Đại học về Khoa học máy tính, Công nghệ thông tin hoặc kinh nghiệm ở vị trí tương đương;
  • Có thể đọc hiểu các tài liệu bằng tiếng Anh;
  • Có tinh thần đồng đội và trách nhiệm cao;
  • Kỹ năng giao tiếp tốt;
  • Năng động, có tính kỷ luật tự giác;

Tự tin khám phá cơ hội và nắm bắt tương lai cùng EVOLABLE ASIA ngay hôm nay!

Cơ chế phối màu trong UX/UI (Phần 1)

Color in UI

Màu sắc sử dụng trong UX/UI yêu cầu mức độ đồng nhất và có chủ ý cao. 

Bài viết gồm có:

  1. Cách sử dụng
  2. Top app bar và bottom app bar
  3. Backdrop
  4. Sheet và surfaces
  5. Các nút, chip và bảng điều khiển lựa chọn
  6. Typography và iconography

Cách sử dụng UX/UI

Những hướng dẫn dưới đây sẽ cho bạn một cái nhìn đa dạng về các UI component và element chú trọng phần phối màu.

Nguyên tắc

Màu sắc cần được phối thống nhất và hài hoà với brand đại diện của mình, đặc biệt là phải tạo nên được sự khác biệt giữa các element với độ contrast hợp lý.

Consistent                             Khác biệt                                Có chủ ý 

Màu sắc cần được phối           Màu phải tạo nên sự tách       Phối màu có chủ ý để nó  thống nhất và hài hoà            biệt với độ contrast thích        truyền tải ý nghĩa qua nhiều brand mà nó đại diện.            hợp giữa các element.            cách, ví dụ như tương quan                                                                                             giữa các element và thứ bậc.

Top app bar và bottom app bar   

Áp dụng màu chủ đạo cho cả top app bar và bottom app bar sẽ giúp user nhận diện được chúng và hiểu được sự tương quan giữa chúng và các UI element trong đó.

Nhận diện app bar

Các app bar sẽ sử dụng màu chủ đạo của app. Còn các system bar thì có thể dùng màu chủ đạo nhưng gam tối hơn hoặc sáng hơn để phân biệt content của hệ thống với content của top app bar.

NÊN

Top app bar sử dụng màu chủ đạo (Tím 500), còn System bar sử dụng gam tối hơn (Tím 700).

Để nhấn mạnh sự khác biệt giữa app bar và các element khác, bạn có thể dùng một màu khác cho các component xung quanh ví dụ như FAB.

 

NÊN. 

Bottom app bar sử dụng màu chủ đạo (Xanh 700), và nút action nổi thì sử dụng màu phụ (Cam 500).

CẨN TRỌNG. 

Nếu bottom app bar và nút action nổi dùng chung một màu, bạn nên dùng thêm hiệu ứng đổ bóng (shadow) hoặc các hiệu ứng thay thế để có sự tách biệt giữa chúng.

Kết hợp app bar với background

Khi màu của top app bar và bottom app bar cùng màu với background, chúng sẽ “quyện” vào nhau và tạo thêm điểm nhấn cho content thay vì cấu trúc của app.

Cả top app bar và background đều sử dụng màu chủ đạo: màu Trắng. Tuy nhiên, khi kéo thả thì top app bar có đổ bóng, thể hiện được là nó nằm cao hơn 1 lớp so với phần content được kéo ở phía dưới.

App này sử dụng màu xanh chủ đạo (Xanh 700) cho cả app bar, navigation ở dưới và background, vì thế mà các element đơn lẻ sẽ bớt nổi lại và phần content sẽ trội hơn hẳn. Nút activation thì sử dụng màu phụ – màu Vàng. Nó bao gồm cả một phần đổ bóng ở navigation dưới cùng để hiển thị một lớp cao hơn so với background.

Xem tin tuyển dụng UI UX designer lương cao trên TopDev

Backdrop 

Một backdrop phải có một front layer và back layer. Để phân biệt được giữa 2 layer, thì đường baseline của back layer color sẽ là màu chủ đạo còn đường baseline của front layer là màu Trắng.

App này sử dụng màu chủ đạo (Tím 800) cho back layer của background. Vùng text thì dùng mảng sáng hơn màu chủ đạo (Tím 700). Còn màu phụ (Đỏ 700) thì dùng cho phần chi phí chuyến bay.

Màu của back layer của background là màu chủ đạo (Hồng 100) và màu cho phần typography và iconography là mảng tối hơn (Hồng 900). Ngoài ra, màu phụ (Hồng 50) dùng cho phần Mở rộng trên front layer.

Các sheet và surface

Màu baseline của các sheet và surface, ví dụ như các bottom sheet, navigation drawer, menu, dialog, và card đều là màu trắng white. Các component này có thể phối hợp với nhau để tạo ra sự tương phản giữa các surface. Sự tương phản sẽ làm cho phần rìa các surface rõ ràng, phân biệt rõ được chênh lệch lớp trên dưới khi các surface chồng lên nhau.

Sản phẩm này đã chuyển màu trắng mặc định thành màu chủ đạo trên bottom sheet và navigation drawer.

  1. Nó dùng màu (Tím 500) làm màu chủ đạo cho 1 phần của bottom sheet chứ không để baseline trắng.
  2. Navigation drawer của nó dùng luôn màu chủ đạo (Tím 500)

Các modal sheet

Sử dụng các màu đối lập trên surface hiển thị trên screen tạm thời, ví dụ như các navigation drawer và bottom sheet. Các surface này thường là màu trắng, nhưng bạn hoàn toàn có thể dùng màu chủ đạo hoặc màu phụ cũng được.

App sử dụng màu xanh chủ đạo (Xanh 700) trên navigation drawer ở dưới, gam màu tối (Xanh 800) cho phần chuyển account, và màu phụ (Cam 500) cho phần chọn.

App sử dụng màu chính là màu trắng cho phần modal navigation drawer, tạo được sự tương phản tối đa giữa phần typo màu tối và phần navigation. Phần ngăn màu trắng được dùng để che bớt phần content đằng sau vì phần navigation drawer cùng màu với background.

App này cho hiển thị sheet ở góc phải bên dưới bằng màu chủ đạo (Hồng 500). Khi nhấn vào thì sheet sẽ mở rộng ra.

Cards

Màu baseline của phần card là màu trắng. Màu này được tuỳ chỉnh để thể hiện hình ảnh brand hoặc cải thiện việc đọc rõ hơn. Phần text và icon cũng có thể dùng cùng theme màu để cải thiệc việc đọc tốt hơn.

Surface của các card này dùng màu chính (Tím 500). Màu background của app là màu trắng. Còn màu phụ (Xanh teal 200) dùng cho hiển thị biểu đồ số liệu.

Các card có thể hiển thị trùng màu chủ đạo để hiển thị lựa chọn hoặc mức độ quan trọng.

Khi phần text và icon của card hiển thị trước hình, chúng có thể sẽ hơi khó đọc. Để cải thiện được việc này bạn có thể dùng màu phụ để tạo surface cho text và icon.

 

Card này sử dụng phần ngăn có màu để đảm bảo text có thể đọc được.

… [CÒN TIẾP] 

TopDev via Material.io

Tối ưu tỉ lệ chuyển đổi với Google Optimize và Google Analytics

Tối ưu tỷ lệ chuyển đổi là một trong những yếu tố quan trọng mà một Growth Marketer không thể bỏ qua. Google Analytics là công cụ hữu hiệu và phổ biến nhất giúp chúng ta theo dõi, đo lường và tối ưu tỷ lệ chuyển đổi. Số liệu từ Google Analytics giúp chúng ta nhìn ra điểm cần thay đổi để tăng tỷ lệ chuyển đổi. Theo dõi chuyển đổi là quá trình thiết yếu nhưng cũng rất “khó nhằn”.

Ngày nay, mọi người đang sử dụng điện thoại di động nhiều hơn và thường xuyên hơn khi mua hàng trực tuyến. Việc tối ưu hóa website phiên bản di động rất quan trọng. Traffic đến từ mobile khá lớn và làm ảnh hưởng nhiều tới tỷ lệ chuyển đổi. Để xem website của bạn có hoạt động tốt trên mobile hay không như thế nào? Làm gì khi tỷ lệ chuyển đổi giảm?

Website phiên bản di động của bạn có nội dung hấp dẫn không? Không có những nút điều hướng hành động? Trang bị lỗi …, những điều này có thể ảnh hưởng tới tỉ lệ chuyển đổi Google Analytics, hiểu được điều này, bạn sẽ có cơ sở để khắc phục và hoàn thiện website của mình.

Hãy cùng đến với chủ đề “DÙNG GOOGLE ANALYTICS TỐI ƯU TỈ LỆ CHUYỂN ĐỔI TRÊN MOBILE” với sự chia sẻ của diễn giả Nguyễn Minh Đức, CEO IM GROUP tại Vietnam Mobile Day 2018 nhé

Việt Nam sẽ là điểm nóng của Blockchain trong khu vực

Theo báo cáo của TopDev, trong Q2 năm 2018, lập trình vẫn là một trong những ngành có nhu cầu tuyển dụng cao nhất. Đặc biệt hơn nữa, nhiều chuyên gia nhận định Việt Nam sẽ trở thành blockchain hub của khu vực trong thời gian tới. Với số lượng việc làm được tìm kiếm đạt mốc cao nhất trong 3 năm trở lại đây.

Các công ty công nghệ trong khu vực đang đẩy mạnh việc tận dụng nguồn nhân lực dồi dào với khả năng nghiên cứu tốt tại thị trường Việt Nam để phát triển các ứng dụng mới dựa trên nền tảng blockchain. Dựa trên những số liệu của TopDev, hiện đang có hơn 100 công ty công nghệ và hơn 5000 lập trình viên tại Việt Nam đang phát triển các sản phẩm công nghệ dựa trên nền tảng blockchain.

Việc làm Blockchain lương cao

Nhu cầu tuyển dụng ngành IT vẫn tiếp tục tăng trưởng mạnh

Tính tới Q2 năm 2018, thị trường tuyển dụng IT vẫn tiếp tục tăng trưởng mạnh ở những nhóm kỹ năng có liên quan đến blockchain và cả lẫn những nhóm CNTT thông thường khác. Tính đến thời điểm Q2 năm 2018, lượng việc làm IT đã tăng đến 74% so với năm 2012, và tăng 24% so với cùng kỳ năm ngoái. Theo đó, chúng ta sẽ cần đến 350,000 nhân lực IT đến trước cuối năm 2021, nhưng cho đến hiện tại chỉ có khoảng 200,000 nhân lực đủ sức đáp ứng yêu cầu công việc.

Ở thời điểm hiện tại, mức lương trung bình của lập trình viên tại Việt Nam có mức dao động 10 triệu đồng đến 25 triệu đồng mỗi tháng. Trong đó, ở phân khúc lập trình web, các lập trình viên sẽ có mức lương vào khoảng 8 triệu ~ 13 triệu đồng cho lập trình viên front-end và 11 triệu ~ 15 triệu đồng cho lập trình viên back-end.

Mức thu nhập trung bình của Developer

Trong khi đó, các vị trí liên quan tới vai trò quản lý có mức lương cao dao động từ 30 triệu tới 66 triệu đồng và xu hướng vẫn sẽ tiếp tục tăng trong thời gian tới.

Đặc biệt, nếu các lập trình viên có kiến thức và kinh nghiệm về blockchain thì mức lương trung bình có thể sẽ tăng lên gấp 3 lần do nhu cầu của thị trường đang tăng mạnh. Tuy nhiên những nhân sự này vẫn rất khan hiếm chỉ chiếm khoảng 2-5% trên toàn thị trường.

Biểu đồ nhu cầu tuyển dụng nhân sự IT

Để lý giải cho xu hướng này nhiều nhà tuyển dụng lập trình viên nhận định: sự thiếu hụt nhân lực có chuyên môn cao và các kiến thức bắt kịp xu hướng thay đổi của thị trường công nghệ là nguyên nhân khiến cho developer cấp cao ngày càng trở nên khan hiếm, dẫn tới sự cạnh tranh về lương để thu hút nhân tài giữa các công ty.

Blockchain chiếc chìa khoá cho sự phát triển của Việt Nam

Công nghệ blockchain tại Việt Nam đang được áp dụng rộng rãi vào các lĩnh vực chủ chốt dịch vụ tài chính (83%), chuỗi cung ứng (40%) và dịch vụ công cộng (30%). Hơn thế nữa, nhiều doanh nghiệp trong lĩnh vực ngân hàng, kiểm toán hay bảo hiểm cũng đang lên kế hoạch phát triển và ứng dụng công nghệ Blockchain. Điều này càng khẳng định triển vọng của công nghệ Blockchain tại Việt Nam.

Blockchain là 1 trong 5 xu hướng công nghệ đáng chú ý nhất năm 2018

Hiện đang có rất nhiều doanh nghiệp lớn nhỏ trên thế giới đang muốn tham gia đầu tư mạnh vào thị trường blockchain tại Việt Nam. Theo Ông Tong Hsien-Hui, Phó Giám đốc Investments SGInnovate cho biết: “Tôi nghĩ có nhiều cơ hội giúp cho chúng ta cùng làm việc với nhau. Tôi mong muốn đưa các đồng nghiệp, nhóm làm việc của tôi tới Việt Nam vì các bạn rất thông minh chịu khó. Việt Nam cũng có rất nhiều nhân tài”. Còn theo Ông David Nguyễn, Chủ tịch Quỹ đầu tư Regulus chia sẻ: có thể nói rằng 99% nhân sự trong các công ty công nghệ blockchain của Việt Nam đều đến từ ngành CNTT trong nước, do đó, sẽ có sự thiếu hụt nhân tài trong lĩnh vực blockchain nếu chúng ta không có những bước chuẩn bị tốt nhất để đón đầu kịp với xu hướng này.

Cũng chính vì lẽ đó, TopDev vừa cho ra mắt mạng lưới đào tạo lập trình viên TopDev Expert Network (TEN) để kịp thời đáp ứng nhu cầu đào tạo nhân sự ngành IT trong làn sóng blockchain và cũng như các thay đổi chóng mặt của ngành CNTT trong thời gian sắp tới. Đây sẽ là giải pháp giúp các lập trình viên dễ dàng tiếp cận trực tiếp các khóa huấn luyện và đào tạo kỹ năng dựa trên dự án thực tế của các doanh nghiệp IT tham gia vào mạng lưới TEN trên cả nước.

Download báo cáo đầy đủ

React Native tại Airbnb (Phần cuối): Điều kì diệu tiếp theo là gì?

Tác giả: Gabriel Peal

Một chặng đường thú vị phía trước 

Khi đang còn làm việc với React Native, chúng tôi cũng bỏ không ít nỗ lực vào native. Ngày hôm nay, chúng tôi đã có được một số lượng kha khá các project thú vị trong production hoặc trong pipeline. Một số project được lấy cảm hứng từ những kinh nghiệm và trải nghiệm tốt nhất của chúng tôi với React Native.

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

Server-Driven Render

Mặc dù chúng tôi không còn dùng React Native nữa, chúng tôi vẫn thấy được giá trị lớn lao của việc viết product code chỉ 1 lần. Thật ra chúng tôi vẫn phụ thuộc khá nhiều vào hệ thống universal design language system (DLS) của mình và nhiều screen nhìn cũng khá tương tự nhau trên Android và iOS.

Rất nhiều team đã thí nghiệm thử và bắt đầu tiến hành hợp nhất các framework render chạy bằng server rất mạnh. Bằng những framework này, server sẽ gửi data mô tả component được render về thiết bị, screen configuration, và cá action có thể diễn ra. Mỗi mobile platform sẽ xử lý data này và renders các native screen hoặc hết nguyên flow dùng các component.

Render chạy bằng server cũng kéo theo không ít thử thách. Dưới đây là một số vấn đề điển hình mà chúng tôi phải xử lý:

  • Vừa update các định dạng component an toàn vừa maintain tương thích backward.
  • Share định dạng type cho các component trên các platform.
  • Respond các event vào runtime như các button tap hoặc user input.
  • Chuyển giao giữa các screen đa JSON-driven trong lúc duy trì state.
  • Render hoàn toàn các custom component không có implementation sẵn tại build-time. Chúng tôi đã thử nghiệm format Lona.

Các framework render theo server này đã mang đến rất nhiều giá trị như cho phép chúng ta thử nghiệm và update tính năng ngay trong cái búng tay.

Các Epoxy Component

Trong năm 2016, we đã cho mở nguồn mở Epoxy cho Android. Epoxy là một framework cho phép đa dạng dễ dàng như RecyclerViews, UICollectionViews, và UITableViews. Ngày nay, hầu như mọi screen mới đều dùng Epoxy. Làm vậy cho phép chúng ta tách mỗi screen thành các component riêng biệt và đạt lazy-rendering. Giờ đây, chúng ta có Epoxy trên cả Android và iOS.

Trên iOS nó trông như sau:

BasicRow.epoxyModel(
  content: BasicRow.Content(
    titleText: "Settings",
    subtitleText: "Optional subtitle"),
  style: .standard,
  dataID: "settings",
  selectionHandler: { [weak self] _, _, _ in
    self?.navigate(to: .settings)
  })

Trên Android, chúng ta cũng đã tận dụng khả năng viết các DSL trên Kotlin để áp dụng các component một cách dễ dàng:

basicRow {
 id("settings")
 title(R.string.settings)
 subtitleText(R.string.settings_subtitle)
 onClickListener { navigateTo(SETTINGS) }
}

Epoxy Diffing

Trong React, bạn return một list component từ render. Mấu chốt quan trọng trong performance của React đó là những component này chỉ là một cái gì đó đại diện cho data model của views/HTML thực mà bạn muốn render. Component tree từ đó sẽ được diff và chỉ có những thay đổi mới bị xử lý. Chúng tôi đã build môt concept tương tự cho Epoxy. Trong Epoxy, bạn phải declare các model cho toàn bộ screen trong buildModels. Chuyện này cộng với Kotlin DSL làm nó khá giống với React và sẽ trông như thế này:

override fun EpoxyController.buildModels() {
  header {
    id("marquee")
    title(R.string.edit_profile)
  }
  inputRow {
    id("first name")
    title(R.string.first_name)
    text(firstName)
    onChange { 
      firstName = it 
      requestModelBuild()
    }
  }
  // Put the rest of your models here...
}

Cứ mỗi khi data thay đổi, bạn sẽ call requestModelBuild() và nó sẽ render screen lần nữa bằng các RecyclerView call tối ưa hoá đã gửi đi.

Trên iOS, nó trông như thế này:

override func itemModel(forDataID dataID: DemoDataID) -> EpoxyableModel? {
  switch dataID {
  case .header:
    return DocumentMarquee.epoxyModel(
      content: DocumentMarquee.Content(titleText: "Edit Profile"),
      style: .standard,
      dataID: DemoDataID.header)
  case .inputRow:
    return InputRow.epoxyModel(
      content: InputRow.Content(
        titleText: "First name",
        inputText: firstName)
      style: .standard,
      dataID: DemoDataID.inputRow,
      behaviorSetter: { [weak self] view, content, dataID in
        view.textDidChangeBlock = { _, inputText in
          self?.firstName = inputText
          self?.rebuildItemModel(forDataID: .inputRow)
        }
      })
  }
}

Một Android Product Framework mới (MvRx)

Một trong những phát triển thú vị nhất mới gần đây đó là Framework mới mà chúng tôi đang phát triển nội bộ tên là MvRx, là sự kết hợp tinh hoa của Epoxy, JetpackRxJava, và Kotlin với nhiều bộ quy tắc của React giúp việc build screen mới dễ dàng hơn và trơn tru hơn bao giờ hết. Là một framework có nhiều ý kiến trái chiều nhưng khá linh hoạt ra đời từ những pattern phổ biến mà chúng ta hay thấy và cũng là những phần tinh hoa nhất của React. Nó cũng an toàn cho thread và gần như mọi thứ đều trải đều trên main thread làm cho việc kéo thả và animation trở nên mượt mà và đẹp hơn hẳn.

Đến nay nó đã hiệu quả trên rất nhiều screen và gần như bỏ đi nhu cầu xử lý các lifecycle. Hiện chúng tôi đang cho dùng thử trên mọi product Android và dự tính sẽ làm nó open source nếu nó thành công. Đây là phần code đầy đủ cần để tạo nên một screen tính năng hoàn thiện đưa ra các network request:

data class SimpleDemoState(val listing: Async<Listing> = Uninitialized)

class SimpleDemoViewModel(override val initialState: SimpleDemoState) : MvRxViewModel<SimpleDemoState>() {
    init {
        fetchListing()
    }

    private fun fetchListing() {
        // This automatically fires off a request and maps its response to Async<Listing>
        // which is a sealed class and can be: Unitialized, Loading, Success, and Fail.
        // No need for separate success and failure handlers!
        // This request is also lifecycle-aware. It will survive configuration changes and
        // will never be delivered after onStop.
        ListingRequest.forListingId(12345L).execute { copy(listing = it) }
    }
}

class SimpleDemoFragment : MvRxFragment() {
    // This will automatically subscribe to the ViewModel state and rebuild the epoxy models
    // any time anything changes. Similar to how React's render method runs for every change of
    // props or state.
    private val viewModel by fragmentViewModel(SimpleDemoViewModel::class)

    override fun EpoxyController.buildModels() {
        val (state) = withState(viewModel)
        if (state.listing is Loading) {
            loader()
            return
        }
        // These Epoxy models are not the views themself so calling buildModels is cheap. RecyclerView
        // diffing will be automaticaly done and only the models that changed will re-render.
        documentMarquee {
            title(state.listing().name)
        }
        // Put the rest of your Epoxy models here...
    }

    override fun EpoxyController.buildFooter() = fixedActionFooter {
        val (state) = withState(viewModel)
        buttonLoading(state is Loading)
        buttonText(state.listing().price)
        buttonOnClickListener { _ -> }
    }
}

MvRx có cấu trúc khá đơn giản để xử lý các Fragment arg, savedInstanceState persistence khi quy trình bắt đầu, TTI tracking, và một số feature khác.

Chúng tôi cũng đang xử lý một framework tương tự trên iOS và sẽ sớm được đưa vào testing.

Iteration Speed

Có một điều khá rõ ràng khi chuyển từ React Native về lại native đó là iteration speed. Nếu phải đi từ việc test thay đổi chỉ trong 1 vài giây sang test lên đến 15 phút là điều không thể chấp nhận được. May mắn thay là chúng tôi có thể thay đổi tình thế một chút ở đây.

Chúng tôi đã build infrastructure trên Android và iOS để bạn có thể compile một phần app bao gồm một launcher và có thể phụ thuộc vào một số feature module nhất định.

Trên Android, nó dùng rất nhiều gradle product flavor. Gradle module của chúng tôi trông như thế này:

Loại hình gián tiếp này sẽ giúp kĩ sư build và develop trên một slice nhỏ của app. Cộng với IntelliJ module unloading sẽ cải thiện được đáng kể build và IDE performance trên MacBook Pro.

Chúng tôi đã build nên các script để tạo được các phép testing mới và chỉ trong vòng vài tháng đã có trên 20 cái.

Những build mới sử dụng các phép thử mới này nhanh hơn trung bình gấp 2.5 lần và tỉ lệ các build tốn hơn 5 phút thì giảm xuống còn 15x.

Bạn có thể tham khảo gradle snippet này được dùng để tạo ra các product flavor có root dependency module.

Tương tự, trên iOS, các module như sau:

Hệ thông tương tự cũng cho ra các build nhanh hơn gấp 3 đến 8 lần.

Kết luận

Chúng tôi luôn tự hào khi là một công ty không ngần ngại thử các loại công nghệ mới và không ngừng nỗ lực maintain từ chất lượng, tốc độ đến trải nghiệm cho developer tốt nhất. Suy cho cùng, React Native đã đóng vai trò một tool hết sức quan trọng trong ship các feature và cho chúng ta một cái nhìn mới về phát triển mobile. Nếu cuộc hành trình này làm bạn thích thú và muốn trở thành một phần của nó, đừng ngần ngại đến với chúng tôi!

Bài viết gốc được đăng tải tại Medium

  React Native tại Airbnb (P4): Ngày tàn của React Native

  Thất nghiệp tuổi 35: Khủng hoảng tuổi 30 thực ra được báo trước bởi những cơn buồn ngủ tuổi 25?

Tuyển dụng Data Scientist từ góc nhìn của những người trong cuộc

tuyển dụng data scientist

Tôi là một nhà khoa học dữ liệu (Data Scientist) chứ không phải là một nhà tuyển dụng, nhưng tôi có cơ hội được trò chuyện với Amanda Voss và nhiều nhà tuyển dụng trong lĩnh vực khoa học dữ liệu và công nghệ thông tin. Tôi may mắn có được cái nhìn từ 2 phía: Data Scientist mong muốn công việc như thế nào và nhà tuyển dụng cần gì từ họ.

Từ phía nhà khoa học dữ liệu

Tuyển dụng Data Scientist từ góc nhìn của những người trong cuộc

Nếu bạn là một nhà khoa học dữ liệu, hoặc đang trong qua trình tìm kiếm một công việc như vậy. Lời khuyên đầu tiên của tôi là: Hãy kiên nhẫn!

Đây không phải là một việc dễ dàng, và có thể bạn sẽ phải đi phỏng vấn cả trăm nơi trước khi chính thức được nhận.

Tất nhiên, nó có thể thực sự dễ dàng và nhanh chóng với vài người, nhưng theo kinh nghiệm của tôi thì nó sẽ tốn của bạn ít nhất vài tháng.

Hãy học hỏi từ mỗi lần bạn bị từ chối. Khi tôi bắt đầu xin việc, tôi đã bị từ chối rất nhiều lần. Nó nằm ngoài sự chuẩn bị của tôi, nhưng tôi nghĩ rằng không có ai lại chuẩn bị cho việc mình bị từ chối cả, nhưng điều bạn cần nhận thức được là mọi thứ đều có nguyên nhân của nó. Hãy chấp nhận, học hỏi và tiếp tục tiến lên phía trước.

Mỗi lần bạn bị từ chối sẽ là thêm một bước trên con đường đến tới thành công. Thật sự không phải là dễ dàng để có thể đáp ứng với mọi đặc điểm mà nhà tuyển dụng muốn.

Nếu bạn may mắn, bạn sẽ gặp được một nhà tuyển dụng tuyệt vời sẽ cho bạn biết làm thế nào để có thể cải thiện cho những buổi phỏng vấn trong tương lai. Nhận thức được sai sót và điểm yếu của bạn là sự khởi đầu để trở nên tốt hơn. Sự thất vọng bạn cảm thấy hôm nay sẽ là động lực để cải thiện cho tương lai.

Ba điểm chính cần lưu ý

Một số người không biết khoa học dữ liệu là gì. Vì vậy, hãy nghiên cứu các công ty bạn đang ứng tuyển. Xem những gì nhân viên của họ đang làm, tìm cách giao tiếp thông qua Facebook, LinkedIn, Twitter và hội thảo.

Người tuyển dụng là người bạn thân nhất của bạn vào thời điểm phỏng vấn, họ muốn giúp bạn, hãy tin tưởng họ, thế nên hãy để họ giúp bạn và đặt câu hỏi!

Mọi người thường quan tâm nhiều hơn đến cách bạn giải quyết vấn đề và cách đối phó với một số tình huống cụ thể hơn là kiến thức kỹ thuật của bạn. Tất nhiên là khả năng viết code chất lượng vẫn rất quan trọng nhưng vẫn còn nhiều thứ hơn thế nữa.

Một số lời khuyên để có được một công việc về khoa học dữ liệu

Tuyển dụng Data Scientist từ góc nhìn của những người trong cuộc

Kiên nhẫn. Bạn sẽ phải nộp đơn xin việc hàng trăm nơi trước khi nhận được một.

Chuẩn bị. Không chỉ nghiên cứu các khái niệm quan trọng, lập trình và trả lời các câu hỏi kinh doanh, bạn cũng nên nhớ rằng bạn sẽ là một phần quan trọng của tổ chức. Do đó, bạn sẽ phải giải quyết các tình huống khác nhau, vì vậy hãy sẵn sàng trả lời các câu hỏi về cách bạn cư xử trong những tình huống công việc khác nhau.

Có một portfolio chất lượng. Nếu bạn đang tìm kiếm một công việc được trả lương hậu hĩnh trong ngành khoa học dữ liệu, hãy làm một số dự án với dữ liệu thực. Nếu bạn có thể gửi chúng lên GitHub. Ngoài các cuộc thi Kaggle, hãy tìm một cái gì đó mà bạn yêu thích hoặc một vấn đề bạn muốn giải quyết và sử dụng kiến ​​thức của bạn để làm điều đó.

Người tuyển dụng là bạn của bạn. Những người phỏng vấn luôn muốn bạn nhận được trong công ty.

Hỏi mọi người về những gì họ làm. Tôi khuyên bạn nên đọc bài viết của Matthew Mayo về “Một ngày trong cuộc đời của một nhà khoa học dữ liệu” để có ý tưởng tốt hơn về những gì nghề này cần phải làm.

Nếu bạn muốn xin vào vị trí thực tập, bạn cần đáp ứng được yêu cầu tối thiểu về học vấn.

Cách tạo một Resume ấn tượng

Hãy trung thực. Không làm giảm giá trị của bản thân bạn trong hồ sơ của bạn.

Kết nối và năng động trong cộng đồng khoa học dữ liệu. Tạo blog, chia sẻ kiến ​​thức, tham gia vào các dự án mã nguồn mở.

Hãy rõ ràng. Đọc CV của bạn và tự hỏi: liệu đây là cách tôi muốn người đọc xem CVcủa mình?, hãy chắc chắn rằng bạn đang đặt những thứ bạn nghĩ là quan trọng nhất đối với bản thân và công ty mà bạn đang xin vào.

Không sử dụng 1 CV cho tất cả các công ty. Thay vào đó hãy phân tích công ty và tạo bản CV phù hợp cho từng vị trí.

CV ngắn gọn, xúc tích: nhà tuyển dụng nhận hàng nghìn hồ sơ mỗi ngày, vì vậy người tuyển dụng sẽ chỉ có khoảng 30-60 giây để đọc hồ sơ của bạn. Vì vậy, hãy chắc chắn rằng bạn đang có những điều họ muốn xem. Đừng đặt những thứ không liên quan đến công ty.

Nhất quán. Điều đó có nghĩa là cùng một phông chữ và phong cách trình bày cho toàn bộ hồ sơ.

Kể câu chuyện về cuộc sống của bạn theo cách của mình và họ sẽ thích nó. Nếu bạn tự tin hơn về kỹ năng học tập, hãy để nó trước phần kinh nghiệm, và ngược lại.

Hỏi các nhà tuyển dụng bạn biết tư vấn cho trước khi gửi bản lý lịch.

Các mẹo phỏng vấn

Thường thì quá trình phỏng vấn sẽ diễn ra như sau:

  • Phỏng vấn qua điện thoại, bạn và nhà tuyển dụng sẽ trau đổi sơ qua về kinh nghiệm về vị trí ứng tuyển. Đây là vòng phỏng vấn đầu tiên.
  • Nếu mọi việc suôn sẻ, bạn sẽ nhận được cuộc gọi thứ hai, lần này có thể từ một số Senior trong công ty. Họ sẽ hỏi bạn nhiều hơn về kinh nghiệm cũng như một số câu hỏi chuyên về kỹ thuật. Điều này có nhiều khả năng để kiểm tra xem nếu những điều bạn nói trong sơ yếu lý lịch của bạn là đúng.

Note: (có thể có hoặc không) Nếu bạn đã có kinh nghiệm về khoa học dữ liệu. Họ sẽ gửi cho bạn một bộ dữ liệu và hỏi bạn vài câu để xem khả năng của bạn tới đâu.

Lập trình trên bảng trắng. Đây có thể là phần khó và đáng sợ hơn của bất kỳ quy trình nào. Chỉ bạn và một tờ giấy trắng. Hãy thực hành trước điều này thật nhiều. Bạn không cần phải viết code một cách hoàn hảo bởi họ muốn thấy cách bạn suy nghĩ và đưa ra giải pháp.

Note: (có thể có hoặc không) Buổi viết code tại công ty. Đây là nhiệm vụ cuối cùng, nhưng thường là để đánh giá việc bạn có thể phù hợp với văn hóa công ty hay không.

Nhà tuyển dụng

Tuyển dụng Data Scientist từ góc nhìn của những người trong cuộc

Nếu bạn đang muốn tuyển các chuyên gia về khoa học dữ liệu thì trước hết phải biết rõ ràng họ là những ai:

Nhà khoa học dữ liệu là người phụ trách phân tích các vấn đề kinh doanh và đưa ra một giải pháp liên quan tới việc chuyển đổi vấn đề thành một câu hỏi hợp lệ và đầy đủ, sau đó sử dụng các công cụ lập trình và công cụ tính toán phát triển code để phân tích dữ liệu nhằm có được câu trả lời.

Các chuyên gia về khoa học dữ liệu có vai trò như thế nào cho công ty:

Giúp lãnh đạo đưa ra quyết định tốt hơn

Giúp xác định mục tiêu

Thách thức nhân viên để áp dụng các thực hành tốt nhất và tập trung vào những vấn đề quan trọng.

Xác định và phân tích cơ hội

Cũng cố quyết định bằng dữ liệu.

Xác thực tính chính xác của các quyết định này

Xác định và lọc đối tượng mục tiêu

Tuyển dụng đúng cho tổ chức

Liệu bạn có cần tới chuyên gia khoa học dữ liệu không?

Hãy nhớ những lời này: một nhà chuyên gia khoa học dữ liệu tệ còn nguy hiểm hơn khi bạn không có họ.

Có rất nhiều người muốn làm việc trong khoa học dữ liệu, đa số họ là những người thực sự thông minh, muốn giúp đỡ và có một con đường thăng tiến trong lĩnh vực này, nhưng hãy cẩn thận trước khi thuê một chuyên gia khoa học dữ liệu. Tôi khuyên bạn nên tìm hiểu rõ về khoa học dữ liệu trong các công ty tốt nhất trên mạng, tìm hiểu về quy trình và học hỏi từ họ.

Ngoài ra, bằng cấp không quyết định tất cả. Họ cần kinh nghiệm làm việc với dữ liệu và giải quyết các câu hỏi kinh doanh bằng cách sử dụng khoa học dữ liệu. Trước khi yêu cầu lấy bằng tiến sĩ, hãy hỏi về kiến ​​thức, dự án họ đã làm, dự án mã nguồn mở mà họ xây dựng hoặc cộng tác, kinh nghiệm làm việc liên quan cũng như họ giải quyết vấn đề cụ thể như thế nào.

Mẹo để tuyển một chuyên gia về khoa học dữ liệu

Các nhà tuyển dụng phải làm việc chặt chẽ với các nhà quản lý để đưa ra các yêu cầu công việc chính xác.

Xác định những loại nhà khoa học dữ liệu nào sẽ phù hợp nhất với nhu cầu của doanh nghiệp. Tìm hiểu về các kỹ năng và kinh nghiệm của nhà khoa học dữ liệu trước khi phỏng vấn họ.

Tư duy dài hạn, đánh gia vai trò của nhà khoa học dữ liệu trong lộ trình phát triển của công ty.

Đặt kỳ vọng đúng theo thực tế dành cho ứng viên. Hãy tuyển dụng đúng người vị trí.

Xây dựng một danh sách các kĩ năng cần có cho một ứng viên lí tưởng để vào làm nhằm có sự đánh giá chính xác dựa vào thị trường nhân lực.

Bài viết gốc được đăng tải tại towardsdatascience

React Native tại Airbnb (P4): Ngày tàn của React Native

Tác giả: Gabriel Peal

Do có quá nhiều vấn đề về kĩ thuật và cơ cấu tổ chức, chúng tôi đã quyết định ngừng dùng đến React Native và dồn hết tâm huyết vào lại cho native. 

Mặc dù có rất nhiều team dựa trên React Native và lên kế hoạch sử dụng đến nó trong tương lai gần, căn bản là chúng tôi vẫn chưa đạt được mục tiêu ban đầu. Bên cạnh đó, còn tồn đọng quá nhiều vấn đề về cả mặt kĩ thuât và tổ chức mà chúng tôi không thể giải quyết được, làm cho quá trình áp dụng React Native trở nên khó khăn và trắc trở hơn nữa.

Chính vì thế, chúng tôi sẽ kết thúc kỉ nguyên React Native tại Airbnb và quyết tâm đầu tư mọi nỗ lực vào native một lần nữa.

Tìm việc làm React Native lương cao up to 2000USD

Thất bại trong việc đạt mục tiêu

Di chuyển nhanh hơn

Khi React Native hoạt động được đúng như kì vọng, các kĩ sư có thể hoạt động trơn tru mượt mà hơn cả máy. Tuy nhiên, họ vướng phải không ít vấn đề về cả mặt kĩ thuật lẫn tổ chức mà chúng tôi đã nêu khá kĩ trong toàn bộ series.

Maintain Quality Bar

Mới đây, khi React Native đã đủ chín và chúng tôi cũng đã tích luỹ được nhiều kinh nghiệm, chúng tôi đã đạt được môt số thứ mà mình không nghĩ là có thể. Chúng tôi đã build nên được các shared element transition, parallax, và có thể cải thiệc tối đa performance của một số screen thường xuyên bị drop frame. Tuy nhiên, một số khó khăn về mặt kĩ thuật khác như initialization và async render đầu tiên làm cho việc đạt được một số mục tiêu nhất định trở nên khó khăn hơn nhiều. Việc thiếu resources cả nội bộ lẫn bên ngoài làm mọi thứ không khá lên nổi.

Chỉ viết Code một lần

Mặc dù code trong các React Native feature dùng được trên hầu hết các platform, chỉ có một phần nhỏ trong app của chúng tôi là React Native. Ngoài ra, nó đòi hỏi một lượng lớn bridging infrastructure để giúp các kĩ sư product làm việc hiệu quả hơn. Do đó mà, chúng tôi cho ra supporting code trên cả ba platform thay vì chỉ 2. Chúng tôi nhìn thấy được tiềm năng share code sharing giữa mobile và web và có đã có thể share một vài npm package, nhưng quan trọng là, nó không mang nhiều ý nghĩa quan trọng lắm.

Cải thiện trải nghiệm cho Developer

Phần trải nghiệm cho developer với React Native là một hỗn hợp phức tạp. Trong một số trường hợp, ví dụ như thời gian build, mọi thứ sẽ trở nên dễ dàng hơn nhiều. Tuy nhiên , với số khác, như debugging, mọi thứ sẽ tệ hơn nhiều (chi tiết trong Phần 2 của series).

Kế hoạch 

Vì chúng tôi không thể đạt được mục tiêu của mình, dường như React Native không còn là lựa chọn đúng đắn nữa. Chúng tôi đang trong quá trình làm việc với các team để làm nên một kế hoạch chuyển giao thật trơn tru. Các feature React Native đã được tạm ngừng sử dụng và thực hiện kế hoạch chuyển hầu hết các screen đông traffic sang native đến cuối năm. Ngoài ra cũng có không ít sự thay đổi trong thiết kế bắt buộc phải có. Team native infrastructure của chúng tôi sẽ support React Native đến hết năm 2018. Trong năm 2019, chúng tôi sẽ giảm thiểu support và giảm lưu lượng React Native như khởi động runtime trên launch.

Tại Airbnb, chúng tôi tin tưởng vào open source. Chúng tôi chủ động dùng và cho đi rất nhiều project open source khắp thế giới và làm open source cho cả những project react native nữa. Vì không còn tiếp tục với React Native nữa, chúng tôi sẽ không thể maintain các React Native repo được nữa. Để có lợi nhất cho community, chúng tôi sẽ chuyển một só open source React Native sang react-native-community, như chúng tôi đã chuyển react-native-maps và sắp tới sẽ đến native-navigation và lottie-react-native.

Nó không hoàn toàn tệ

Mặc dù chúng ta ta không thể đạt được mục tiêu với React Native, các kĩ sư React Native nhìn chung đều có trải nghiệm khá tốt về nó. Trong số họ:

  • 60% nói rằng có có trải nghiệm rất tốt với nó.
  • 20% thì cảm thấy khá tôt.
  • 15% cảm thấy hơi tệ.
  • 5% cảm thấy thật sự tệ.

63% số kĩ sư nói rằng nếu được chọn lại họ vẫn sẽ chọn React Native và gần 74% đều cân nhắc sử dụng React Native cho project sau.

Các kĩ sư đã viết trên dưới 80,000 dòng product code trên hơn 220 screen cũng như 40,000 dòng javascript infrastructure. Ngoài ra, chúng tôi có khoảng 10x số lượng code và 4x số screen trên mỗi native platform.

React Native đang ngày càng tân tiến hơn

Series bài viết này kể toàn bộ trải nghiệm của chúng tôi với React Native. Tuy nhiên, Facebook và cả các công đồng React Native đang nỗ lực đưa React Native hoạt động trong các hybrid app trên quy mô lớn. React Native đang phát triển nhanh hơn bao giờ hết. Trong năm vừa qua đã có hơn 2500 commit và Facebook vừa mới tuyên bố rằng họ đã phát hiện ra một số khó khăn nhất định, tương tự với những cái chúng tôi đã gặp phải. Kể cả khi chúng tôi không còn bước tiếp với React Native, chúng tôi vẫn sẵn sàng tiếp tục theo dõi chúng vì những gì chúng tôi đạt được về mặt kĩ thuật với React native sẽ chuyển hoá thành những thành tựu thực ngoài thực tế với những ai đang sử dụng product của chúng tôi.

Cái mất

Chúng tôi thống nhất React Native thành các app lớn hiện có và di chuyển rất nhanh chóng. Nhiều trong số những vấn đề mà chúng tôi mắc phải là do phương pháp hybrid model mà chúng tôi đang áp dụng. Tuy nhiên, qui mô hiện tại chỉ cho phép chúng tôi giải quyết được một số vấn đề nhỏ lẻ mà các cônng ty nhỏ không sắp xếp được thời gian để giải quyết. Việc chạy React Native suôn sẻ với native là hoàn toàn có thể nhưng rất khó khăn. Mọi công ty đang sử dụng React Native đều được trải nghiệm function độc quyền của team mình, các app có sẵn, yêu cầu về sản phẩm, và sự phát triển của React Native.

Khi mọi thứ hoạt động cùng nhau, iteration speed, chất lượng, and trải nghiệm của developer đạt được những mục tiêu và kì vọng đề ra. Đó là lúc mà chúng tôi ngỡ như mình sẽ là người thay đổi diện mạo của ngành mobile vậy. Mặc dù những trải nghiệm này là cực kì tích cực, nhưng khi cân bằng được ưu điểm và khuyết điểm cộng thêm những nhu cầu và resource hiện tại từ team Kĩ sư của chúng tôi thì chúng tôi đã quyết định nó không còn phù hợp với mình nữa.

Quyết định xem có nên dùng platform mới hay không có lẽ là quyết định khó khăn nhất, phụ thuộc hoàn toàn vào nhưng đặc thù riêng của team. Những trải nghiệm trước đây không còn phù hợp với chúng tôi nữa. Trên thực tế, rất nhiều công ty vẫn tiếp tục sử dụng nó rất thành công và là sự lựa chọn tuyệt vời của nhiều tập đoàn khác.

Mặc dù chúng tôi không bao giờ ngừng đầu tư phát triển thêm vào native, việc từ dã React Native đã giải phóng được rất nhiều resource làm cho native tốt hơn thế nữa. Hãy đón xem phần cuối của series để xem được trong native của chúng tôi có gì mới.

Bài viết gốc được đăng tải tại Medium

  React Native tại Airbnb (P3): Xây dựng một Mobile Team cross-platform

  Inspectorio đã thành công vòng gọi vốn "Series A" trị giá 10 triệu đô la Mỹ

Đâu chỉ mỗi Bitcoin, công nghệ Blockchain còn nhiều ứng dụng hơn thế!

công nghệ blockchain_TopDev

Khi nhắc đến blockchain, lập tức mọi người thường nghĩ ngay đến các loại tiền mã hóa, chẳng hạn như bitcoin. Tuy nhiên, blockchain lại là công nghệ tạo ra tiền mã hóa nhưng bản thân công nghệ này không phải là tiền mã hóa như cách mà chúng ta hay đánh đồng. Vậy blockchain và bitcoin có sự liên quan gì với nhau? Và công nghệ blockchain có phải chỉ dừng lại ở mỗi ứng dụng bitcoin hay không thôi?

Blockchain không phải là Bitcoin!

Mọi dữ liệu trên mạng đều có thể bị sao chép bất cứ lúc nào. Bình thường khi cần giao dịch trực tuyến, chúng ta sẽ phải cần đến một bên trung gian thứ ba thật đáng tin tưởng (chẳng hạn như: ngân hàng, một công ty trung gian hoặc công ty vận chuyển…) nhằm chống lại sự gian lận với một cơ sở dữ liệu tập trung để xác minh cho giao dịch đó. Đến khi blockchain (blockchain technology) ra đời, loại công nghệ mới này đã giúp giải quyết được bài toán (double-spending) mà không cần tới bên trung gian thứ ba tin cậy.

Như đã từng đề cập ở phần đầu bài, bitcoin chỉ là một ứng dụng của công nghệ blockchain (mỗi giao dịch bitcoin cũng chỉ là một tập tin) chứ không thể hiểu ngược lại blockchain là bitcoin. Để hiểu rõ hơn một phần về định nghĩa blockchain, bạn có thể đọc bài viết liên quan Blockchain là gì? Phân loại và định nghĩa đúng về lập trình blockchain

Chính vì cái tên bitcoin trở thành một thuật ngữ được nhắc đến rộng rãi trong khoảng gần một thập kỉ trở lại đây, đồng thời cũng là ứng dụng hữu ích đầu tiên được biết đến từ công nghệ blockchain nên nhiều người vẫn bị hiểu nhầm cả hai định nghĩa này là tương đồng. Vậy ngoài bitcoin ra thì blockchain còn được ứng dụng vào những ngành nào nữa hay không? Câu trả lời là “Có”. Cụ thể hơn có thể kể đến các ngành như ngành vận tải biển, ngành ngân hàng, ngành tạp hóa, ngành luật pháp… Và để lý giải tại sao blockchain lại đặc biệt và có nhiều sức mạnh đến vậy, hãy tìm hiểu về hệ thống sau đây của blockchain.

Bitcoin chỉ là một ứng dụng của công nghệ blockchain

Phân loại hệ thống blockchain, bao gồm 3 loại chính:

  • Public: Dạng hệ thống cho phép bất kì người dùng nào cũng có quyền đọc và ghi dữ liệu trên blockchain. Quá trình xác thực giao dịch này cần đòi hỏi phải có hàng nghìn nút hoặc hàng vạn nút để tham gia. Nếu như ai đó muốn tấn công vào hệ thống này thì điều đó dường như rất khó xảy ra, bởi lẽ đây là điều bất khả thi vì chi phí khá cao. Ví dụ: Bitcoin, Ethereum…
  • Private: Đối với private blockchain thì người dùng chỉ được quyền đọc dữ liệu mà không có quyền ghi vì điều này còn thuộc về bên tổ chức thứ ba tuyệt đối tin cậy. Tổ chức bên thứ ba này toàn quyền quyết định mọi thay đổi trên blockchain; có thể hoặc không cho phép người dùng đọc dữ liệu trong một số trường hợp. Ở private blockchain, thời gian xác nhận giao dịch khá nhanh vì không đòi hỏi quá nhiều thiết bị tham gia xác thực giao dịch mà chỉ cần một lượng nhỏ. Ví dụ: Ripple là một dạng của hệ thống private blockchain, với 20% nút được hệ thống cho phép là gian dối, còn lại 80% chỉ cần hoạt động ổn định là được.
  • Permissioned: Hay còn gọi là Consortium, cũng là một dạng của private nhưng có một số tính năng nhất định được bổ sung thêm, kết hợp giữa một bên là “niềm tin” khi tham gia vào public và một bên là “niềm tin tuyệt đối” khi tham gia vào private. Ví dụ: Các ngân hàng hay tổ chức tài chính liên doanh sẽ sử dụng blockchain cho riêng mình.

Những ứng dụng thực tế của công nghệ blockchain

Công nghệ blockchain không chỉ dừng lại ở ứng dụng bitcoin mà còn rất nhiều ở lĩnh vực khác. Vậy các ứng dụng thực tế nào đã và đang áp dụng công nghệ này hiện nay?

Hợp đồng quản lý và hợp đồng thông minh (Smart Contract)

Mọi ngành công nghiệp đều phụ thuộc nhiều vào hợp đồng. Đối với các bên tổ chức tài chính, ngành bảo hiểm, lĩnh vực bất động sản, xây dựng, giải trí và pháp luật, sẽ đều có thể tận dụng công nghệ blockchain cho việc cập nhật, quản lý, theo dõi và bảo mật các hợp đồng.

Hợp đồng thông minh (smart contract) là những bản hợp đồng số được viết bằng code trên nền tảng blockchain và dùng để thực hiện trao đổi tài sản ảo, dịch vụ, cổ phiếu… một cách minh bạch, rõ ràng mà không cần đến sự tham gia của một bên trung gian nào. Bằng phương pháp mã hóa này, các văn bản pháp lý truyền thống có thể được thay thế nhờ ứng dụng công nghệ blockchain. Một ví dụ cụ thể có thể thấy là đa số các mã token ICO hiện nay được phát hành đều nhờ đến việc sử dụng các “Smart Contract”.

Lĩnh vực tài chính, hệ thống xử lý thanh toán

Trong hệ thống xử lý thanh toán của các công ty, blockchain mang lại một tác động rất lớn, có khả năng loại bỏ sự cần thiết của một bên trung gian thứ 3. Vốn dĩ trước đây ở các quy trình thanh toán thường phải nhờ sự can thiệp vào một tổ chức thứ 3 nhưng giờ đây khi có ứng dụng công nghệ blockchain, việc chuyển khoản có thể diễn ra nhanh chóng và tức thì.

Quản lý chuỗi cung ứng

Một số chuyên gia tin rằng blockchain có thể trở thành “hệ thống vận hành chuỗi cung ứng”. Để quản lý một quá trình có sự thay đổi chủ sở hữu đối với một loại tài sản nào đó hoặc trạng thái tài sản thì lựa chọn lý tưởng nhất ở đây chính là nhờ công nghệ blockchain.

Trong chuỗi cung ứng, blockchain cho phép cập nhật trạng thái ngay lập tức và tăng tính bảo mật và tính minh bạch. Dù cho ở bất kì ngành nào đi nữa cần theo dõi chuỗi cung ứng thì đều có thể nhờ đến blockchain – một hệ thống cho phép sự theo dõi kịp thời, chính xác và không thể phủ nhận.

Một ví dụ thực tế có thể kể đến là Walmart và Trung tâm an toàn thực phẩm ở Bắc Kinh. Họ đã áp dụng công nghệ blockchain để theo dõi chi tiết nguồn gốc trang trại, số lô, dữ liệu chế biến và nhà máy, ngày hết hạn, nhiệt độ lưu trữ và chi tiết vận chuyển đối với thịt lợn.

Bảo vệ quyền sở hữu tài sản

Để khẳng định quyền sở hữu tài sản thì công nghệ blockchain có thể giúp bạn điều này, ví dụ như việc đăng kí bản quyền âm nhạc trên blockchain. Bằng cách tạo ra hồ sơ không thể chối cãi về quyền sở hữu trong thời gian thực, blockchain cho phép bạn bảo vệ được tài sản của cá nhân mình mà không ai được quyền sao chép hay giả mạo.

Điều này càng trở nên hữu ích hơn đối với các loại tài sản cần có biện pháp chống hàng giả, ví dụ như dược phẩm, các loại đồ xa xỉ đắt giá, kim cương, đồ điện tử.v.v… Và BlockVerify cho phép các công ty làm được điều đó – đăng ký sản phẩm của riêng mình và tạo ra sự minh bạch cho chuỗi cung ứng.

Vấn đề bảo mật, nhận dạng số hóa, hệ thống hồ sơ cá nhân và mật khẩu

Trong vấn đề bảo mật, nhận dạng số hóa, công nghệ blockchain có thể giúp ngăn chặn việc đánh cấp ID và tăng cường bảo mật dữ liệu cá nhân.

Onename, một công ty startup blockchain, bên cạnh việc cung cấp dịch vụ để đăng kí và quản lý blockchain ID, họ còn cung cấp một sản phẩm có tên là Passcard – dự sẽ là khóa kỹ thuật số thay thế tất cả mật khẩu và ID cần thiết cho mỗi người, bao gồm cả giấy phép lái xe. Ngày nay có một hệ thống quản lý nhận dạng khác với tên gọi là ShoCard, có thể giúp các cá nhân và doanh nghiệp xác nhận danh tính một cách nhanh chóng.

Hiện nay, một lượng lớn dữ liệu cá nhân từ hồ sơ sinh/ tử đến giấy chứng nhận kết hôn, hộ chiếu và dữ liệu điều tra dân số đều do chính phủ quản lý. Và công nghệ blockchain có thể hỗ trợ cho việc quản lý tất cả những điều trên bằng một giải pháp hợp lý và an toàn hơn. Các tổ chức chính phủ ngày nay cũng đã bắt đầu xây dựng hệ thống nhận dạng quốc gia sử dụng blockchain, có thể kể đến các nước như Singapore, Canada, Thụy Sĩ…

Ở thời đại mà xu thế công nghệ không ngừng phát triển, ngoài blockchain ra thì rất có thể sẽ còn nhiều cuộc bùng nổ cách mạng công nghệ khác nữa. Tuy nhiên xét về thời điểm hiện nay, sức mạnh của công nghệ blockchain đã và đang dần thay đổi thế giới là một điều chúng ta không thể phủ nhận được. Và rất có khả năng trong tương lai, các ứng dụng của blockchain sẽ ngày càng tiếp tục mở rộng hơn, nhiều hơn theo một con số nào đó được ước tính bằng cấp số nhân.

Xem thêm: Các cơ hội hấp dẫn dành cho Blockchain Developer

Inspectorio đã thành công vòng gọi vốn “Series A” trị giá 10 triệu đô la Mỹ

Vào ngày 10 tháng 7 năm 2018, tại Minneapolis, Mỹ, công ty Inspectorio chuyên cung cấp giải pháp kiểm định và giám sát chất lượng cho các nhà cung cấp trong chuỗi cung ứng, được vận hành trên nền tảng trí thông minh nhân tạo, đã phát hành vòng gọi vốn tối ưu hóa “Series A” trị giá 10 triệu Đô la Mỹ. Công ty phần mềm dịch vụ này tạo ra một mạng lưới năng động và độc lập, kết hợp với công nghệ máy học (machine learning) cho ngành công nghiệp kiểm định và giám sát chất lượng để các nhà sản xuất, nhà cung cấp, thương hiệu và nhà bán lẻ có thể kết nối, chia sẽ dữ liệu, và cải thiện chất lượng liên tục.

Ông Carlos Moncayo Castillo, CEO và là người đồng sáng lập công ty, cho biết: “Chúng tôi cam kết tiếp tục củng cố vị thế của Inspectorio như là nền tảng hàng đầu thế giới về kiểm định và giám sát chất lượng bằng cách tạo tác động tích cực vào chuỗi cung ứng toàn cầu. Khoản đầu tư này sẽ đẩy nhanh tốc độ tăng trưởng và phát triển nền tảng công nghệ của chúng tôi. Chúng ta cần phải chuyển đổi từ chuỗi cung ứng sang một cấp độ mới từ cách làm thủ công sang nền tảng thông minh và không bị giới hạn bởi các khoảng cách địa lý.”

Nhà đầu tư chính cho vòng gọi vốn này chính là công ty Techstars, một công ty được biết đến cho các khoản đầu tư chiến lược vào Uber, Sendgrid, Twilio, DigitalOcean v.v. Ông Mark Solon, Giám đốc điều hành của Techstars cho biết “Tôi đã biết anh em nhà Moncayo vài năm nay. Công ty của họ là loại hình doanh nghiệp mà tôi mong muốn được làm việc”. Ông nói thêm “Họ là ví dụ điển hình cho việc tự dấn thân vào lĩnh vực mới để tạo ra những thay đổi có giá trị, làm việc chăm chỉ, tập trung vào việc nâng cao trải nghiệm của khách hàng, và theo đuổi không ngừng nghỉ giúp tìm ra giải pháp cho một vấn đề lớn, giúp mang lại tính minh bạch và trách nhiệm   cho chuỗi cung ứng của ngành bán lẻ. Các anh em Moncayo thể hiện cùng một giá trị ban đầu mà chúng tôi trân quý tại Techstars, và chúng tôi rất vui mừng được tham gia. ”

Vòng gọi vốn lần này cũng có sự tham gia của 2 công ty nằm trong danh sách 500 công ty lớn nhất tại Mỹ: Ecolab (NYSE ECL), công ty hàng đầu thế giới về nước, vệ sinh và công nghệ năng lượng; cung cấp nước sạch, thực phẩm an toàn; và Target Corporation (NYSE TGT), một nhà bán lẻ hàng giảm giá cao cấp, chuyên cung cấp hàng hóa có chất lượng cao và thời trang tại 1.829 cửa hàng và tại trang web www.target.com. Matchstick Ventures, một quỹ đầu tư mạo hiểm tập trung vào công nghệ có trụ sở tại Minneapolis, cũng là một phần của khoản đầu tư.

Inspectorio hiện đang có văn phòng trên toàn thế giới tại Hoa Kỳ, Việt Nam, Trung Quốc và Belarus, đang mở một văn phòng khác ở châu Âu trong những tuần tới. Công ty đã từng tham gia cuộc thi “Tăng tốc khởi động các nhà bán lẻ Techstars 2016” và hiện đã phát triển đội ngũ của mình hơn 120 thành viên từ 11 quốc gia khác nhau.

Để biết thêm thông tin về Inspectorio, hãy truy cập https://www.inspectorio.com/careers/

React Native tại Airbnb (P3): Xây dựng một Mobile Team cross-platform

Tác giả: Gabriel Peal

Ngoài vô sô ưu điểm và khuyết điểm của React Native, chúng ta còn biết thêm về những gì nó làm được cho các công ty và tập đoàn ngành công nghệ. Việc ứng dụng nó phức tạp hơn nhiều lần so với việc add library hay pattern mới vào platform hiện có. Nó đã kéo theo không ít rắc rối đến cho doanh nghiệp: Nó không chỉ đơn thuần là những vấn đề có thể xử lý tức thì, mớ này rất khó nhằn, không dễ bị phát hiện hoặc sửa hoặc recover tí nào. Trong điều kiện này, mặc dù chúng tôi có một nền tảng khá ổn định nhưng trước khi dùng đến React Native phải lưu ý một số điểm.

Tuyển lập trình viên React Native

Những quan điểm trái chiều xoay quanh React Native 

Theo như kinh nghiệm thì các kĩ sư khi tiếp cận với React Native có nhiều quan điểm trái chiều xung quanh nó, người thì ưu ái dùng nó cho cả Android, iOS, và web nhưng người thì chống đối, cương quyết không dùng nó trong team. Sau khi sử dụng rồi cũng xảy ra chuyện tương tự: Team này thì có những trải nghiệm rất tuyệt vời nhưng cũng có team phải quay lại con đường native.

Đi tìm gốc rễ của vấn đề 

Dĩ nhiên khi làm việc với React Native thì việc gặp bug, lỗi kĩ thuật hay lỗi performance là không thể tránh khỏi. Tuy nhiên vẫn còn nhiều khuất mắt chưa tìm hiểu được nguyên nhân:

  1. React Native di chuyển rất nhanh.
  2. Đồng thời chúng tôi cũng đang phát triển thêm nhiều infrastructure và feature mới.
  3. Mọi người còn khá mới với React Native và vẫn đang học cách sử dụng nó.
  4. Tài liệu và hướng dẫn debug trong lập trình và production không được thống nhất lắm và dễ bối rối không hề nhẹ.

Vì thế mà rất khó để tìm ra được căn nguyên của vấn đề. Đôi khi việc xác định xem vấn đề xuất phát từ team nào hay liệu nó có liên quan đến React Native hay không cũng không được rõ ràng.

React Native thì vẫn là Native

Một hiểu lầm khá phổ biến đó là nếu dùng React Native bạn có thể ngừng hẳn luôn việc viết code native. Lầm to nhé! Bản chất native của React Native vẫn sẽ ở đó lúc bạn làm việc mà thôi. Ví dụ, trên mỗi platform text sẽ bị render khác nhau một tí, keyboard sẽ được xử lý khác nhau một tẹo, và phần Activities sẽ được tái lập mặc định bởi Android. Để mang lại môt trải nghiệm chất lượng cao với React Native, nó đòi hỏi sự cân bằng từ cả hai phía. Điều này kéo theo một thử thách khá lớn về trình độ chuyên môn cao trên cả 3 platform làm cho việc truyền tải được trải nghiệm tốt khó khăn hơn. 

Debug xuyên Platform

Hầu hết mọi kĩ sư đều sẽ chuyên sâu 1 hoặc 2 platform. Còn chuyện có người chuyên về cả Android, iOS, và React là hiếm vô cùng. Mặc dù hầu hết mọi việc trong môi trường React Native là bằng JavaScript và React, đôi lúc khi build hoặc debug vẫn sẽ yêu cầu quay về native. Đây là những trường hợp trớ trêu dồn kĩ sư vào thế bí khi phải debug vấn đề trên các platform mà họ chưa bao giờ đụng đến. Nó sẽ còn tệ hơn nếu như các kĩ sư không biết bắt đầu từ đâu vì rất khó để tìm ra cốt lõi của vấn đề.

Tuyển mộ người tài

Mặc dù đang đầu tư tốc lực cho React Native, việc mở rộng các team và tham vọng về mobile của chúng tôi vẫn không ngừng mở rộng và đầu tư. Tuy nhiên, sau một thời gian dài trong cộng đồng, người ta bắt đầu đánh đồng Airbnb với React Native và gán luôn cho Airbnb là 100% react Native. Từ đó mà nhiều lập trình viên Android và iOS cũng chần chừ apply vào Airbnb, mặc dù tin đồn kia là không đúng tí nào. Vì thế, đừng ngại ngùng nữa và apply ngay nào!

Khó khăn về các Hybrid App 

Một lộ trình 100% native hoặc 100% React Native nghe tương đối dễ chịu. Nhưng nếu bạn trộn codebase lại, thì sẽ nảy sinh ra 1001 vấn đề mới. Làm sao để chia team? Làm sao để các team collab? Làm sao để share state qua app? Làm sao để đảm bảo rằng mọi thứ được test? Làm sao để kĩ sư có thể debug hiệu quả trên cả 3 platform? Làm sao để quyết định dùng platform nào cho feature mới? Đây là một trong số ít những câu hỏi mà bạn phải giải quyết khi đụng độ với chuyện này.

Ba Môi trường Development

Để trở thành một kĩ sư React Native giỏi, điều quan trọng là bạn phải có 3 môi trường React Native, Android, và iOS thật ổn định và cập nhật kịp thời. Đối với các công ty lớn như Airbnb, mỗi platform đòi hỏi một lượng thời gian nhất định để set up, tìm hiểu và cập nhật. Chỉ cần bạn lơ là với nó một hai tuần là bạn sẽ phải tốn hàng tiếng đồng hồ để bắt kịp với mọi thứ.

Native vs React Native

Có rất nhiều trường hợp xảy ra làm cho các giải pháp tối ưu hoá cho vấn đề sử dụng cả Native và React Native. Ví dụ, ứng dụng navigation của chúng tôi sử dụng tối đa Activities và ViewControllers và hầu hết code của nó là native trên mọi platform. Thường thì việc code nên được viết bằng Native hoặc React Native là không rõ ràng. Kĩ sư thường sẽ chọn platform nào thoải mái nhất để hỗ trợ việc xử lý unideal code.

Test Cross-Platform 

Chúng tôi phát hiện ra rằng các kĩ sư làm việc chủ yếu trên 1 platform nhất định phụ thuộc vào sự tiện lợi và thoải mái. Họ thường giả định là nếu nó hiệu quả trên platform mà họ test, thì nó cũng hiệu quả trên những platform khác nữa. Logic này gần như luôn đúng, và đây cũng là một trong những thế mạnh lớn nhất của React Native. Tuy nhiên, số lần nó không đúng cũng đủ để gây ra một mớ rắc rối trong các cycle QA hoặc trong production.

Các team riêng lẻ

Các team nào thường làm việc ở cả native cũng như React Native thường sẽ vướng phải cả những khó khăn về mặt kĩ thuật lẫn giao tiếp. Sau khi codebase bị tách ra thành native và React Native, code sẽ bắt đầu đứt đoạn. Từ đó việc chia sẻ các logic kinh doanh, các model, state,… trở nên khó khăn hơn và các kĩ sư không có đủ chuyên môn để làm việc xuyên suốt cả quá trình được. Chúng tôi hiểu rằng nó sẽ xảy ra từ đầu nhưng lại nghĩ rằng nó có thể sẽ cân bằng nếu có collab mới với web. Một số team đã bắt đầu share resource và code qua web và mobile nhưng hầu hết đều không thể nhận ra được tiềm năng này.

Iteration Speed đạt được

Một trong những mục tiêu đề ra về React Native đó là gia tăng tốc độ lập trình. Thông thường, các React Native feature chỉ được 1 kĩ sư viết, chứ không phải mỗi platform một người. Từ góc nhìn của một kĩ sư React Native, cho dù nhìn chung nó có tốn ít thời gian để viết feature so với trên Android hoặc iOS, đối với họ nó sẽ vẫn lâu hơn.

Các Resource và Tài liệu chung 

Hàng triệu kĩ sư trong vòng 10 năm qua đã cống hiến và chia sẻ vô số resource học tập, open resource và hỗ trợ online về Android và iOS. Chúng tôi cũng cho ra lò nhiều resouce như CodePath để giúp mọi người học về Android và iOS chuyên sâu hơn. Có thể React Native sở hữu một trong những cộng đồng cross-platform lớn nhất và cung cấp các nguồn React, nhưng nó vẫn còn nhỏ hơn nhiều so với Android và iOS. Cộng thêm một thực tế rằng chúng ta phải tự tay build nên gần hết infrastructure in-house của mình cho thấy rằng nguồn resource React Native hạn hẹp của chúng ta đã bị đầu tư quá lỗ trong giáo dục và đào tạo so với native.

Bài viết gốc được đăng tải tại Medium

  React Native tại Airbnb (Phần 1): Mở đầu

  React Native tại Airbnb (Phần 2): Công nghệ

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

React Native tại Airbnb (Phần 2): Công nghệ

airbnb-p2-topdev

Xem Phần 1React Native tại Airbnb (P1)

Tác giả: Gabriel Peal

React Native là một platform tương đối mới trên các cross-section của Android, iOS, web và các framework cross-platform. Sau 2 năm, chúng tôi có thể nói rằng React Native là một bước đột phá ở nhiều khía cạnh. Đây là một bước đột phá mới về thuật toán cho mobile và chúng ta có thể được lợi từ rất nhiều hoạt động. Tuy nhiên, lợi ích thu được sẽ đi kèm với không ít “thương tích”.

Những mặt hiệu quả

Cross-Platform

Lợi ích rõ ràng nhất của React Native đó là code bạn viết có thể chạy trên cả Android và iOS. Hầu hết các feature sử dụng React Native có thể đạt từ 95–100% shared code và 0.2% file chuyên cho platform (*.android.js/*.ios.js).

Design Language System thống nhất (DLS)

Chúng ta đã develop được một design language gọi là DLS. Chúng tôi làm các bản Android, iOS, React Native, và bản web cho mỗi component. Việc này hỗ trợ cho việc viết các feature cross-platform hơn vì mọi design, tên component và các screen thống nhất trên các platform. Tuy nhiên, chúng ta vẫn có thể đưa ra các quyết định phù hợp với platform. Ví dụ, chúng ta có thể dùng Toolbar trên Android và UINavigationBar trên iOS và chọn hide disclosure indicators trên Android vì họ không follow các design guideline của platform Android .

Chúng tôi đã viết lại các component thay vì giữ cái cũ để tạo ra được các API phù hợp cho từng platform và giảm thiểu workload cho các kĩ sư Android và iOS nào không rõ cách test các thay đổi trong React Native. Tuy nhiên, nó sẽ gây ra sự tách rời giữa các platform mà các phiên bản native và React Native của cùng component sẽ không sync với nhau nữa.

React

Chuyện React là một trong những web framework được ưa thích nhất là có lí do. Đơn giản mà quyền lực và dễ scale các codebase lớn hơn. Có một vài thứ mà chúng tôi đặc biệt ưa thích:

  • Các component: Các React Component giải quyết được nhiều khuất mắt bằng nhiều prop và state tốt.
  • Lifecycle đơn giản: Lifecycle của Android, và một extent bé hơn, của iOS rất phức tạp. Các component React căn bản sẽ xử lý vấn đề và làm cho việc học React Native dễ hơn nhiều so với việc học Android hoặc iOS.
  • Rõ ràng: Bản chất rõ ràng của React sẽ giúp đồng bộ UI in sync bằng các nguyên lý ngầm.

Iteration Speed

Khi develop React Native, chúng tôi có thể dùng hot reloading để test các thay đổi trên Android và iOS trong chỉ một hai giây. Mặc dù việc build performance là ưu tiên hàng đầu trong các app native, nhưng vẫn chưa có cái nào đạt được iteration speed mà chúng tôi đạt được nhờ React Native. Hơn thế nữa, thời gian kết hợp native là 15 giây tuy nhiên nó có thể lên đến 20 phút đối với full builds.

Đầu tư vào Infrastructure

Chúng tôi đã phát triển các hệ integration khủng vào infrastructure native của mình. Mọi mảng cốt yếu như networking, i18n, thí nghiệm, di chuyển các element chung, info của device, info của account, và nhiều thứ khác nữa trong một React Native API đơn. Các bridge này là các mảng khá phức tạp vì chúng ta muốn gói gọn các API Android và iOS vào một cái gì đó thống nhất và hợp lý cho React. Việc liên tục làm mới các bridge này nhanh chóng và phát triển thêm infrastructure mới là một cuộc chiến không ngừng nghỉ, vì thế mà việc đầu tư vào infrastructure team sẽ thúc đẩy được tiến trình tạo nên product.

Sự thiếu đầu tư vào infrastructure sẽ dẫn đến việc React Native mang lại những trải nghiệm tồi tệ cho developer và người dùng. Thế mới nói, React Native không thể nào kết hợp với app một cách êm đẹp nếu thiếu sự đầu tư liên tục và hợp lý.

Performance

Một trong những cái chúng tôi lo lắng nhất về React Native hiện tại đó là performance. Tuy nhiên, trên thực tế đó cũng không phải là vấn đề to tát lắm. Hầu hết các React Native screen chạy trơn tru như những cái của native. Performance thường được xem như một một mảng riêng. Chúng ta thường thấy các kĩ sư mobile nhìn vào JS và nghĩ rằng nó “chậm hơn Java”. Tuy nhiên, layout sẽ cải thiện được performance trong nhiều trường hợp.

Khi chúng ta thấy những vấn đề liên quan đến performance, thường chúng sẽ xuất phát từ việc render quá tải và được giảm tải bằng shouldComponentUpdateremoveClippedSubviews, cũng như sử dụng Redux hợp lí hơn.

Tuy nhiên, thời gian render lần đầu và khởi động làm cho React Native hoạt động không tốt khi launch screen, deeplink và tăng thời gian TTI khi đang định vị giữa các screen. Ngoài ra, các screen drop frame thì rất khó để debug vì Yoga dịch giữa các React Native component và các native view.

Redux

Chúng tôi dùng Redux để quản lý state khá hiệu quả và ngăn chặn UI không đồng bộ với state và cho phép việc chia sẻ data dễ dàng hơn giữa các screen. Tuy nhiên, Redux nổi tiếng về boilerplate của nó và hơi khó tiếp thu. Chúng tôi đã cung cấp một generator cho một số template phổ biến nhất định nhưng nó vẫn là một trong những phần khó và gây bối rối nhất khi làm việc với React Native. Nên lưu ý một điều là, không phải chỉ với React Native bạn mới gặp những thử thách như vậy.

Được hỗ trợ bởi Native

Vì mọi thứ trên React Native được bridge bằng native code, chúng ta có thể build nên rất nhiều thứ mà chúng ta không chắc là có thể từ đầu như:

  1. Shared element transitions: Chúng tôi đã build <SharedElement> component được hỗ trợ bởi native shared element code trên Android và iOS. Nó còn hoạt động được giữa screen native và screen React Native.
  2. Lottie: Chúng tôi đã thành công trong việc đưa Lottie hoạt động trên React Native bằng cách wrap các library có sẵn trên Android và iOS.
  3. Native networking stack: React Native sử dụng existing native networking stack và cache trên cả hai platform.
  4. Các core infra khác: Tương tự như networking, chúng tôi wrap phần native infrastructure còn lại như i18n, experimentation, v.v để nó hoạt dộng được trơn tru trên React Native.

Phân tích số liệu 

Chúng tôi có một bề dày lịch sử dùng eslint trên web rất hùng mạnh. Tuy nhiên, chúng tôi là platform đầu tiên tại Airbnb tiên phong Prettier. Chúng tôi nhận thấy rằng việc giảm nit và bikeshedding trên các PR rất hiệu quả. Prettier giờ đây được tích cực đầu tư bởi team web infrastructure.

Chúng tôi cũng dùng analytics để đo lường thời gian render và performance để tìm ra các screen nào cần được ưu tiên đầu tư hàng đầu về những vấn đề liên quan đến performance.

Vì React Native còn mới hơn và trẻ hơn so với web infrastructure của chúng tôi, nó sẽ là một vùng test idea mới hoàn hảo. Đã có rất nhiều tool và ý tưởng chúng tôi đưa ra hiện đã được show và sử dụng trên web.

Animation

Nhờ có thư viện React Native Animated, chúng ta có thể lấy được các animation jank-free và cả các interaction-driven animation như scrolling parallax.

JS/React Open Source

Vì React Native chạy React và JavaScript, chúng tôi đã tận dụng rất nhiều array các project javascript như redux, reselect, jest, v.v

Flexbox

React Native xử lý layout bằng Yoga – một library C đa platform giúp xử lý các tính toán layout qua flexbox API. Trước đó, chúng tôi vướng phải cá nhiều giới hạn với Yoga, ví dụ như, thiếu aspect ratios nhưng sau đó nó đã được bổ sung trong các update sau này. Ngoài ra, các tutorial như flexbox froggy làm cho việc onboarding thêm thú vị.

Kết hợp với Web

Lâu sau khi đã ứng dụng React Native, chúng tôi bắt đầu build web, iOS, và Android cũng một lúc. Vì web cũng dùng Redux, chúng tôi phát hiện ra nhiều code có thể share xuyên web và các native platform mà không cần thay đổi gì.

Những mặt không hiệu quả

Sự non nớt của React Native

React Native mới hơn Android hoặc iOS nhiều. Nó mới hơn, tham vọng hơn, di chuyển nhanh chóng hơn. Mặc dù React Native hầu như hiệu quả mọi lúc, có rất nhiều ví dụ về sự độ non của nó và đôi khi sẽ mang lại những thứ rắc rối không đáng. Đáng tiếc là, những thành phần này rất khó xác định và sẽ tốn của bạn từ vài tiếng đến vài ngày để giải quyết được nó.

Maintain fork của React Native

Do độ trẻ của React Native mà đôi khi chúng ta phải patch React Native source. Ngoài việc quay trở lại React Native, chúng tôi cũng phải maintain fork để chúng ta có thể nhanh chóng gộp các thay đổi vào phiên bản mình đang sử dụng. Qua 2 năm, chúng tôi đã phải add gần 50 commit trên React Native, làm cho quá trình upgrade React Native trở thành một trải nghiệm rất đau đớn.

JavaScript Tooling

JavaScript là một ngôn ngữ untyped. Nó làm cho việc scale khó khăn hơn và sẽ là một điểm trừ quá lớn với những kĩ sư mobile nào đang muốn học React Native. Chúng tôi phát hiện ra rằng việc áp dụng flow trừ các cryptic error message sẽ đem đến hậu quả khôn lường. Chúng tôi cũng đã cho ra TypeScript nhưng gộp nó vào một infrastructure có sẵn như babel và metro bundler sẽ rất phiền phức. Tuy nhiên, chúng tôi vẫn sẽ tiếp tục nghiên cứu nhiều hơn về TypeScript trên web.

Refactoring

Vì là một ngôn ngữ untype nên việc refactor trên JavaScript là cực khó và nhiều lỗi. Một cơn ác mộng để refactoring chính xác đó là Đặt lại tên cho prop, đặc biệt là các tên prop phổ biến như onClick hoặc các prop được pass qua nhiều component. Tệ hơn là, các refactor sẽ hỏng trong production chứ không phải lúc compile và rất khó để add phần phân tích hợp lý vào.

Các JavaScriptCore inconsistency

Một khía cạnh khó nói khác của React Native đó là nó chạy trong môi trường JavaScriptCore. Đây là một số kết quả mà chúng tôi nhận được khi thử:

  • iOS ship chung với JavaScriptCore của riêng nó, đồng nghĩa là iOS khá thống nhất và sẽ không gây nhiều khó khăn cho chúng tôi.
  • Android không ship JavaScriptCore nên React Native sẽ tự bundle cho nó. Tuy nhiên, cái bạn lấy được mặc định là cái cũ. Do đó, chúng ta cũng phải tự tìm ra cách để lấy được cái mới hơn.
  • Khi debug, React Nativese sẽ attach vào Chrome Developer Tool. Điều này là tốt vì nó là một debugger rất quyền lực. Tuy nhiên, một khi debugger đã attach, mọi JavaScript sẽ chạy trong V8 engine của Chrome. Nó sẽ chạy tốt 99.9% thời gian. Tuy nhiên, giả dụ như, bạn gặp phải vấn đề khi toLocaleString chạy trên iOS nhưng lúc debug thì chỉ chạy trên Android. Thành ra Android JSC sẽ không có nó và âm thầm fail trừ khi bạn đang debug khi đang sử dụng V8. Nếu như không biết nhưng chi tiết kĩ thuật như thế này, nó sẽ trở thành một trải nghiệm debug đầy đau thương cho các kĩ sư product.

Các React Native Open Source Library

Học một platform mới không hề dễ dàng và rất tốn thời gian. Hầu hết mọi người chỉ rành rõi một đến hai platform. Các React Native library có các native bridge như map, video, v.v đòi hỏi một lượng kiến thức trên cả 3 platform để hoạt động hiệu quả. Nó dẫn đến inconsistency hoặc các bug ngẫu nhiên trên Android hoặc iOS.

Trên Android, nhiều React Native library cũng yêu cầu bạn phải có chuyển môn đủ sâu về node_modules hơn là publish các maven artifact không khớp với cái mà cộng đồng mong đợi.

Infrastructure song song và Feature Work

Chúng tôi đã tích luỹ được nhiều năm với native infrastructure trên Android và iOS. Tuy nhiên, với React Native, chúng tôi bắt đầu từ 2 bàn tay trắng và phải viết và tạo lại hết các bridge trên tất cả những infrastructure sẵn có. Nó có nghĩa là có lúc kĩ sư của chúng tôi cần đến những tính năng chưa hề tồn tại nữa! Lúc này họ phải làm việc trên platform mà mình không hiểu gì và ngoài phạm vi project hoặc tạm hoãn cho đến khi tính năng xuất hiện…

Crash Monitoring

Chúng tôi dùng Bugsnag để report crash trên Android và iOS. Mặc dù chúng tôi có thể làm cho Bugsnag hoạt động trên cả 2 platform, nó không đáng tin lắm và đòi hỏi nhiều hơn so với các platform khác. Vì React Native còn mới và hiếm trong ngành, chúng tôi phải build một lượng infrastructure khá lớn như upload source của map in-house và phải dạy Bugsnag làm những thứ như filter crash bằng những gì đang có trong React Native.

Do lượng custom infrastructure trong React Native, chúng ta thường vướng phải những vấn đề khá nghiêm trọng mà không được report về crash hoặc source map không được upload hợp lý.

Cuối cùng, debug các React Native crash thường khó khăn hơn nhiều nếu như vấn đề này dính cả React Native và native code vì stack trace không nhảy qua lại giữa React Native và native được.

Native Bridge

React Native có một bridge API để giao tiếp giữa native và React Native. Dù nó hoạt động đúng như mong đợi, việc viết là một thử thách. Đầu tiên, nó đòi hỏi cả 2 môi trường phải được set up đúng. Chúng tôi cũng vướng phải một số vấn đề liên quan đến các type bất thường từ JavaScript. Ví dụ, các integer thường được wrap bởi string, một vấn đề ít được phát hiện ra cho đến khi nó được pass qua bridge. Tệ hơn là, đôi khi iOS sẽ âm thâm fail khi Android crash. Chúng tôi từ đó cũng bắt đầu nghiên cứu cách để tạo bridge code tự động từ các định nghĩa của TypeScript đến cuối năm 2017, hơi quá muộn.

Thời gian Initialization

Không như các native screen, việc render React Native đòi hỏi ít nhất một full main thread -> js -> yoga layout thread -> main thread trước khi có đủ info để render một screen lần đầu. Chúng ta đã gặp một p90 render trung bình 280ms trên iOS và 440ms trên Android. Trên Android, chúng ta đã dùng postponeEnterTransition API thường dùng cho shared element transition để trì hoãn việc hiển thị screen cho đến khi nó được render. Trên iOS, sẽ vướng phải các vấn đề về cài navbar configuration từ React Native. Từ đó, chúng ta sẽ add các khoảng trì hoãn cỡ 50ms với mọi React Native screen transition để hạn chế việc navbar chập chờn sau khi đã load configuration.

App Size

React Native cũng có những tác động không nhỏ đến app size. Trên Android, total size của React Native (Java + JS + các native library như Yoga + Javascript Runtime) là 8mb/ ABI. Với cả x86 và arm (chỉ 32 bit) trong một APK, nó có thể xấp xỉ 12mb.

64-bit

Chúng ta vẫn chưa thể ship một 64-bit APK trên Android vì vấn đề này.

Các Gesture

Chúng tôi tránh dùng React Native với screen bao gồm các gesture phức tạp vì touch subsystem trên Android và iOS đã đủ khó để nảy sinh thêm một API thống nhất gây khó dễ cho cả cộng đồng React Native. Tuy nhiên, mọi thức vẫn phải tiến triển và react-native-gesture-handler vừa mới đạt bản 1.0.

Các list dài 

React Native đã cải thiện được vấn đề với các library như FlatList. Tuy nhiên, nó vẫn chưa đủ lớn và linh hoạt như RecyclerView trên Android hoặc UICollectionView trên iOS. Rất nhiều hạn chế rất khó vượt qua do threading. Adapter data không thể truy cập đồng bộ được nên bạn có thể thấy thấy các flash khi đang lướt vì nó render không đồng bộ khi lướt nhanh. Text cũng không được đo đồng bộ nên iOS không thể tối ưu hoá một số cái bằng pre-computed cell heights.

Upgrade React Native

Dù hầu hết các upgrade React Native đều không đáng kể, vẫn sẽ có vài cái đau điếng như cục nhọt. Cụ thể là, việc chuyển React Native 0.43 (tháng 04/2017) sang 0.49 (tháng 10/2017) là không thể vì nó dùng React 16 alpha và beta. Đây là một vấn đề lớn vì hầu hết các library React được thiết kế cho web không support các phiên bản React trước đó. Quy trình vật lộn với các dependency cho upgrade này là một thiệt hại lớn cho React Native infrastructure work vào giữa năm 2017.

Tính truy cập

Trong năm 2017, chúng ta đã thực hiện một thay đổi lớn về accessibility – chúng tôi nỗ lực phát triển sao cho cả người khuyết tật cũng có thể dùng Airbnb để book cái họ muốn. Tuy nhiên, có quá nhiều lỗ hổng trong các API React Native accessibility. Để làm nên một thanh accessibility bar ở mức tối thiểu, chúng tôi phải maintain fork của chính mình trên React Native để gộp các chỉnh sửa lại. Trong những trường hợp này, những chỉnh sửa trong 1 dòng code Android hoặc iOS cũng tốn đến vài ngày để tìm hiểu xem add nó vào React Native thế nào, chọn lọc cẩn thận, rồi file vấn đề trên React Native core và follow nó vài tuần sau đó.

Các Crash phiền phức

Đôi khi chúng tôi phải đối mặt với rất nhiều dạng crash kì lạ và khó fix. Ví dụ, chúng ta đang phải fix crash này trên @ReactProp annotation và không thể tái tạo nó trên bất kì device nào, kể cả trên các device cùng hardware và software đến những cái crash khác.

SavedInstanceState trong các Process trên Android

Android thường dọn sạch các background process nhưng sau đó sẽ cho chúng lưu phần state đồng bộ trong bundle. Tuy nhiên, trên React Native, mọi state chỉ truy cập được trên js thread nên không thể thực hiện nó đồng bộ được. Kể cả như không trong trường hợp đó, redux như một state store sẽ không tương thích với phương pháp này vì nó chứa data cả chuyển đổi được và không chuyển đổi được và có thể chứa nhiều data hơn khả năng trong savedInstanceState bundle mà có thể dẫn đến crash trong production.


Đây là phần 2 trong series React Native của chúng tôi. 3 more to go!

  React Native tại Airbnb (Phần 1): Mở đầu

  Đi phỏng vấn vị trí React Native cần trang bị những gì?

Bài viết gốc được đăng tải tại Medium

Tham khảo thêm các việc làm React Native lương cao cho bạn

Ấn tượng trước những bước đột phá công nghệ mới của Line!

Line Vietnam tuyển dụng - TopDev

Line – Ứng dụng nhắn tin lớn nhất Nhật Bản vừa gây xôn xao giới công nghệ với thông báo chính thức sẽ ra mắt sàn giao dịch BITBOX trong tháng 7 này. Trước đó Line cũng đã và đang nỗ lực triển khai kế hoạch hỗ trợ Dapps trên Blockchain riêng của mình. 

Kế hoạch xây dựng sàn giao dịch mới

Trong thông cáo báo chí đăng tải ngày 28.6 vừa qua, Tập đoàn Line (“LINE”) và LVC Corporation (“LVC”), một công ty thuộc nhóm Line vận hành tiền điện tử và kinh doanh blockchain, đã công bố kế hoạch triển khai sàn giao dịch BITBOX ngay trong tháng 7 này với hơn 30 đồng tiền điện tử, bao gồm Bitcoin (BTC), Ethereum (ETH), Bitcoincash (BCH), Litecoin (LTC).

Line - TopDev

Cụ thể, Line cho biết:

“Với nhu cầu giao dịch tiền điện tử tăng vọt trên phạm vi toàn cầu, Line đã chuẩn bị mọi thứ để tạo điều kiện giúp người dùng thực hiện điều này một cách an toàn, và bởi giờ mọi thứ đã sẵn sàng, công ty sẽ bắt đầu cung cấp dịch vụ.”

Sàn giao dịch sẽ triển khai trên các quốc gia ngoại trừ Nhật Bản và Mỹ, với 15 ngôn ngữ được hỗ trợ bao gồm tiếng Anh và tiếng Hàn, không hỗ trợ cho tiếng Nhật và tiếng Thái.

Sàn sẽ lấy phí 0,1% cho mỗi giao dịch, nhưng sẽ ưu đãi 1 tháng đầu miễn phí cho người dùng.

Hỗ trợ Dapps trên Blockchain riêng của mình

Sự kiện nhà phát triển của Line diễn ra vào 20/4 vừa qua đã vạch ra lộ trình công nghệ 2018. Tại đây, Euivin Park – giám đốc công nghệ, cho biết Line đang có kế hoạch xây dựng một blockchain tùy chỉnh nhằm thúc đẩy phát triển các ứng dụng phân tán cho nền tảng của nó.

Nền tảng này sẽ được xây dựng bên ngoài các sản phẩm hiện có của Line và sử dụng mô hình kinh tế token để khuyến khích và thúc đẩy phát triển các ứng dụng phân tán, bởi các bên thứ ba hoặc chính các nhà phát triển của công ty.

Mục tiêu hướng đến việc đưa những nỗ lực blockchain hiện có của Line tạo bước đột phá lớn bằng cách triển khai một mainnet blockchain.

Euivin cũng cho biết thêm hiện Line đang muốn mở rộng và chuyển sang tuyển dụng các nhà phát triển blockchain ở Nhật Bản và Hàn Quốc, bên cạnh đó là một số nước khu vực Đông Nam Á.

Nhóm phát triển Line sẽ bắt đầu khám phá tiềm năng của công nghệ blockchain và nghiên cứu các phương pháp đổi mới thương mại hóa công nghệ này trong dài hạn, đồng thời sẽ triển khai nhiều ứng dụng phân quyền (dApps) và mainnet blockchain của nó trên giao thức blockchain ICON.

LINE Việt Nam vẫn đang tiếp tục mở rộng quy mô

Bước chân vào thị trường Việt Nam từ năm 2017 với việc mua lại công ty công nghệ Adways Technology Vietnam và đổi tên chính thức là Line Việt Nam. Số lượng những kỹ sư công nghệ tại Line Việt Nam là 100 nhân viên, tăng gấp đôi so với giai đoạn mới đi vào hoạt động.

Tháng 4 vừa qua, Line cũng đã đánh tiếng cho sự trở lại Việt Nam khi đầu tư vào webtretho.com. Theo nguồn tin từ Nhịp cầu đầu tư, Line hiện đang nắm quyền chi phối Công ty Cổ phần Dịch vụ Thông tin Trẻ Thơ, đơn vị chủ quản webtretho.com.

Thị trường Việt Nam giờ đã khác so với cách đây 5 năm và cơ hội cho Line khi Line Music và dịch vụ thanh toán Line Pay là hai dịch vụ có tốc độ tăng trưởng doanh thu cao nhất trong cơ cấu của Line với tỉ lệ lần lượt 180% và 96,6%.

Line Vietnam - TopDev

Với nhìn nhận Việt Nam là một quốc gia trẻ với số lượng lớn các lập trình viên, kỹ sư công nghệ thông tin, doanh nhân khởi nghiệp,… những người có tầm ảnh hưởng lớn đến sự phát triển kinh tế của quốc gia, Line nỗ lực mở rộng thêm những cơ sở mới tại thành phố Hồ Chí Minh và Hà Nội. Line từng bước tiếp cận, khai thác nguồn lực chất lượng, bám sát tầm nhìn chiến lược của công ty.

Cơ hội nào dành cho các lập trình viên tại LINE Việt Nam?

Đại diện Line chia sẻ: “Nhu cầu tuyển dụng trong ngành công nghệ thông tin ngày càng cao và Việt Nam là một trong những quốc gia sở hữu nguồn nhân lực công nghệ vô cùng ấn tượng”. Line đã và đang muốn khởi tạo thật nhiều cơ hội, những dự án cho những tài năng Việt. Đi cùng theo đó là loạt phúc lợi ấn tượng mà Line Vietnam dành riêng cho các lập trình viên của họ:

  • Offer hấp dẫn đầy nổi bật: $1,500 – $3,000;
  • Lương tháng 13 và thưởng hấp dẫn theo hiệu suất công việc;
  • Bảo hiểm sức khỏe chu đáo cho chính bạn và gia đình;
  • Nghiên cứu và làm việc với những công nghệ tiên tiến nhất;
  • Tham dự các chương trình training hấp dẫn: từ training kỹ năng ngoại ngữ cho đến các buổi Local Workshop, International Workshop và onsite training mở mang học hỏi;
  • Vui khỏe với các CLB thể thao (bóng đá, gym, bơi lội, yoga,…) và Company trip tuyệt vời mỗi năm;

Liệu bạn có muốn gia nhập Line và tạo dấu ấn thành công cho con đường sự nghiệp?

> Click tìm hiểu các vị trí bên dưới và giành cơ hội ứng tuyển ngay hôm nay <<

  • Java Engineer (Java, Spring, Cloud) Quận 10, Hồ Chí Minh – Ứng tuyển
  • Application Security Engineer – Quận 10, Hồ Chí Minh – Ứng tuyển
  • Back-end Engineer –  Quận 10, Hồ Chí Minh – Ứng tuyển
  • Senior Front-end Engineer (VueJS / ReactJ) – Ứng tuyển
  1. Senior Android Engineer (Mobile)

Mô tả công việc:

  • Thiết kế, xây dựng và duy trì các ứng dụng hiệu suất cao, đáng tin cậy và có thể tái sử dụng cho nến tảng Android
  • Đảm bảo hiệu suất, chất lượng và khả năng đáp ứng tốt nhất của các ứng dụng;
  • Cộng tác với nhóm để định hướng, thiết kế và giao các tính năng mới;
  • Phân tích hiệu suất và độ tin cậy của các ứng dụng LINE;
  • Liên kết chặt chẽ với các đội ngũ sản phẩm, thiết kế và lập trình để xây dựng các ứng dụng hoặc tính năng mới tại Tokyo và Seoul;

Yêu cầu chính:

  • Có kinh nghiệm lập trình phát triển các ứng dụng Android ít nhất 2 năm trở lên;
  • Hiểu biết về cấu trúc dữ liệu, thuật toán;
  • Nắm vững về lập trình hướng đối tượng OOP;
  • Nắm vững về Android SDK và tùy biến giao diện phù hợp với tất cả các kích cỡ màn hình;
  • Khả năng coding vững chắc, có thể hiểu các yêu cầu từ khách hàng để chuyển sang thành các yêu cầu kỹ thuật;
  • Thành thạo về API RESTful, cloud message APIs và thông báo đẩy;
  • Có kinh nghiệm về RESTful API kết nối từ app tới dịch vụ phía back-end;
  • Có kinh nghiệm về lưu trữ dữ liệu offline, xử lý đa luồng, tối ưu hóa performance;
  • Yêu thích coding và có khả năng review code và tái cấu trúc mã nguồn.

2. Junior Software Engineer (PHP, C++, Java, JavaScript)

Mô tả công việc:

  • Phát triển, duy trì, cập nhật và sửa đổi hệ thống phần mềm;
  • Thực hiện các yêu cầu nghiệp vụ theo đặc điểm kỹ thuật;
  • Cài đặt, thiết lập cấu hình, kiểm tra và duy trì hệ điều hành, phần mềm ứng dụng và các công cụ quản lý hệ thống;

Yêu cầu chính:

  • Từng có kinh nghiệm với một trong các ngôn ngữ lập trình sau: C/ C ++/ Java/ PHP/ JavaScript…;
  • Mới tốt nghiệp hoặc có ít hơn 2 năm kinh nghiệm;
  • Cơ tư duy phản biện và logic;
  • Có kiến ​​thức tốt về kiến ​​trúc phần mềm, OOP và design pattern;
  • Nhiệt tình học hỏi các công nghệ mới và chia sẻ phát triển cùng với team;

>>> Nhanh tay gửi CV – Chớp lấy cơ hội ngay hôm nay <<<

Thất nghiệp tuổi 35: Khủng hoảng tuổi 30 thực ra được báo trước bởi những cơn buồn ngủ tuổi 25?

Thời gian gần đây tôi làm việc với khá nhiều hồ sơ CV đợi phỏng vấn. Và bất ngờ phát hiện ra, có rất nhiều CV của những người trong tầm tuổi 35 bắt đầu đi xin việc với những vị trí không liên quan gì tới công việc cũ, hoặc sẵn sàng đi làm với mức lương thấp hơn mức lương trước đây. Sau khi phỏng vấn 4 trường hợp, tôi nhận ra một câu chuyện tương đối phổ biến, thể hiện rõ nếp suy nghĩ của rất nhiều những người bạn trong thế hệ tôi thời điểm này.

Vậy vì sao chúng ta có thể trở nên thất nghiệp ở tuổi 35?

1. Đề cao quá mức “kinh nghiệm”

“Khi tôi 35, tôi có rất nhiều kinh nghiệm”. Nhưng nếu kinh nghiệm đó chỉ nằm ở 1-2 vị trí, với những đầu việc được lặp lại đều đặn, thì đó chỉ là 1-3 năm kinh nghiệm được lặp lại vài lần.

Nếu áp dụng nguyên tắc 10,000 giờ (*đọc cuốn Outliner để biết thêm: theo đó, một người muốn trở nên xuất sắc trong 1 công việc bất kỳ sẽ cần khoảng 10,000 giờ luyện tập), mỗi ngày làm việc 8 tiếng, mỗi năm làm việc 250 ngày, thì cơ bản với một công việc chuyên môn nhất định, người ta sẽ thành thạo sau 3-4 năm. Từ năm thứ 5 trở đi, người ta sẽ trở thành một anh công nhân quen tay ngồi trong văn phòng chứ ko phát triển thêm đáng kể nữa. Hay nói cách khác, cùng công việc bàn giấy đó, kinh nghiệm từ năm thứ 5 trở đi của anh ta trở nên vô giá trị.

“Làm quản lý sẽ không lo thất nghiệp”. Vâng, chỉ đúng khi anh là quản lý cấp cao, còn cỡ team leader, manager thì quả Đất này nhiều như quân Nguyên. Mà với vị trí quản lý cấp cao, nhân sự dao động rất ít, ghế thì không nhiều, lý do gì để bạn ngồi được thay chỗ người ta, chưa kể những yếu tố khắt khe khi tuyển dụng cấp cao về tầm nhìn, văn hoá và sự phù hợp. Từ manager công ty A về làm nhân viên cho công ty B, tôi thấy rất nhiều.

2. Giữa một CV người trẻ tuổi và một CV người già có kinh nghiệm, chọn ai?

Tôi chọn người mang cho mình nhiều giá trị hơn, trả lương thấp hơn và bớt đòi hỏi hơn.

Lúc này chính kinh nghiệm lại đang bộc lộ mặt trái của nó. Những người già hơn, có “nhiều-kinh-nghiệm” làm quen tay một công việc bắt đầu bộc lộ nhược điểm về sự kém thích nghi, có xu hướng mong muốn áp dụng kiến thức và mô hình từ công ty cũ sang công ty mới mà thiếu điều chỉnh, tự mãn với thành công cũ mà quên đi rằng thị trường và khách hàng đã thay đổi.

Chưa kể các nhân sự lão đa lão đề thường đòi hỏi mức lương cao cùng nhiều chế độ khắt khe, đi kèm xu hướng mong muốn “thay-máu” bộ máy đang làm việc và văn hoá công ty hiện tại, đôi khi làm người quản lý đứng trước việc tuyển dụng nhân sự dạng này đồng nghĩa với rủi ro thay thế hầu hết đội ngũ nhân sự đang làm việc hiệu quả.

Với tôi lúc này, một nhân sự trẻ, có khoảng 2 năm kinh nghiệm, cởi mở cầu tiến, tôi tin tưởng sau 6 tháng làm việc hoàn toàn có thể bù đắp và ngang hàng một lão làng 6 năm kinh nghiệm. Khả năng thích nghi cao hơn, kiến thức cập nhật hơn, lương trả thấp hơn và chắc chắn là ít đòi hỏi hơn. Dĩ nhiên với nhà tuyển dụng, anh ta là ứng viên sáng giá hơn một ông già đòi hỏi và cứng nhắc chứ? Nghe có vẻ khó tin, nhưng tại công ty tôi đang làm việc, một trong những công ty top đầu về internet tại Vietnam, điều này đã xảy ra, không phải một, mà là nhiều lần.

3. Nhiều người ngủ quên từ khi 25 tuổi.

Tôi nhìn thấy nhiều người bạn của mình thế này: ra trường ở tuổi 22, đi làm tại một công ty nào đó tầm 2 năm, ở tuổi 24 buồn buồn chán chán ko biết làm gì t iếp, họ lấy vợ lấy chồng, 1 năm sau đẻ con, thành bố thành mẹ; công việc vẫn ổn, lương đủ sống, con cái bận rộn. Trong một giấc mơ nhàn hạ mà họ vừa ao ước, vừa thấy buồn chán là cuộc đời họ cứ đơn giản như thế mà lướt, tới ngày tuổi 60, nghỉ hưu cái xoạch là xong. Hạ cánh an toàn!

Họ không nhớ lần cuối đọc một cuốn sách (không phải tiểu thuyết) là khi nào, hay học một khoá học vì mong muốn bản thân giỏi hơn (không vì chỉ tiêu lên lương) là bao giờ. Cơ bản, sau khi tốt nghiệp đại học, họ dừng luôn việc học hành và phát triển kiến thức bản thân, họ nghĩ việc học đã dừng lại sau khi cầm tấm bằng tốt nghiệp và có 1 công việc lương đủ sống. Cá nhân họ tính từ ngày ra trường tới giờ, tôi nhìn họ không có chút khởi sắc nào đáng kể về kiến thức và công việc, trừ được cộng dôi dư ra vài năm làm việc văn phòng quen tay. Sự nghiệp của họ ngay từ khi bắt đầu đã chỉ để chuẩn bị cho viễn cảnh về cuộc hạ cánh an toàn. Vì thế cái khá niệm “việc nhàn, ổn định” ra đời từ thời bố mẹ vẫn còn găm trong tiềm thức.

Và cuộc đời của họ có lẽ cũng sẽ cứ mãi ổn nếu không có một ngày bỗng dưng công ty phá sản hay đẩy họ ra đường!

4. Thị trường lao động không còn như cái thời ông bà bố mẹ bao cấp những năm 90s.

Năm 2010, Vietnam chính thức ra khỏi danh sách các nước nghèo. Tiếp đó 5 năm, lần lượt các tổ chức phi chính phủ NGO và quỹ quốc tế đóng cửa rồi rút khỏi Vietnam, rất nhiều nhân sự làm cho các tổ chức NGO từng nhận lương ngàn đô bỗng một ngày thất nghiệp, loay hoay xin vào các tổ chức NGO ít ỏi còn lại. Số ghế không đủ cho tất cả mọi người, có người xin vào các doanh nghiệp nhưng tư duy làm cho tổ chức non-profit trước đây không thể nào fit với mô hình doanh nghiệp lấy profit ra làm mục tiêu kinh doanh. Không ít người sau đó, miễn cưỡng trở thành những thầy cô giáo trong các trung tâm dạy tiếng Anh, hoặc có người mở shop quần áo, bán hàng xách tay… với mức lương non nửa thời trẻ.

9% người Mỹ thất nghiệp ở độ tuổi từ 30-45 năm 2010. Thậm chí trong bộ phim Up in the air, George Clooney còn đóng vai 1 người tư vấn chuyên xử lý việc sa thải những nhân sự già nua chi phí cao mà bộ máy kinh doanh cho rằng đã hết đát sao cho êm thấm. Nhìn sang Trung Quốc cũng sẽ thấy, thị trường lao động Vietnam đang dịch chuyển dần tới thị trường lao động quốc tế, nơi chỉ tồn tại trên thị trường những lao động có giá trị cạnh tranh, và việc xuất hiện những cá nhân thất nghiệp, hoặc buộc phải chuyển đổi nghề nghiệp ở tuổi sau 35 là điều không hiếm.

Qua rồi cái thời làm một công việc ổn định từ đầu tới cuối đời, qua rồi cái thời vào biên chế nhà nước hay công ty là kê cao gối ngủ. Không gì đảm bảo mức lương của bạn sẽ tăng đều đặn từ giờ tới cuối đời, một khả năng vô cùng lớn là bỗng một ngày cty phá sản hoặc đơn giản là thay sếp. Bạn phải tìm việc mới, và nếu năng lực không đủ apply trong thị trường lao động cạnh tranh, ngồi nhà 1 năm thì bạn chỉ còn 1 con đường duy nhất khác: buộc phải chuyển đổi nghề nghiệp, và bắt đầu với mức lương như một sinh viên mới ra trường. Khi đó, thu nhập của bạn ở tuổi 35 thấp hơn ở tuổi 30 là rất hiện hữu.

Mà rủi ro đó là hoàn toàn có thật, 370 công ty phá sản ở Vietnam mỗi ngày, là ngần đấy lao động sẽ ùa ra đường, hoà cùng hàng chục nghìn sinh viên tốt nghiệp mỗi năm, tham gia vào đội ngũ những người săn tìm việc làm. Những người già về tuổi nhưng nghèo về kiến thức và khả năng thích nghi, lấy gì ra làm thế mạnh cạnh tranh trong đội ngũ lao động đó?

***

Bản thân tôi, chưa khi nào hết thấy sức ép của một thế hệ những người trẻ năng động hơn, có kiến thức quốc tế tốt hơn, được đào tạo bài bản hơn tôi đang hò reo phía sau lưng, nhắc mình không được dừng bước và tự hài lòng. Thất nghiệp có thể là thứ tôi sẽ không gặp phải, nhưng tụt hậu và trở nên dốt nát tới ngoan cố là thứ tôi biết chắc mình sẽ dẫm phải nếu chỉ dừng việc học hỏi và cố gắng trong 1-2 năm.

Chẳng có cách thức nào đảm bảo bạn sẽ không bị sa thải hay thất nghiệp ở tuổi trung niên, nhưng có một số key notes tôi đọc được trong các bài báo và nghiên cứu về vấn đề này cho ta một bức tranh toàn cảnh:

– Thời gian thất nghiệp trung bình của 1 người trên 35 tuổi cho tới khi tìm được việc mới tại Mỹ là 53 tuần, so với 19 tuần ở người trẻ. Lúc này bạn thấy rõ, lợi thế kinh nghiệm không được thể hiện ở đây.

– Khủng hoảng tâm lý ở người thất nghiệp trung niên trầm trọng hơn nhiều người trẻ do các gánh nặng về trang trải chi phí gia đình, con cái, học hành, y tế, nhà cửa, các khoản vay và trả góp. Sự bế tắc về nghề nghiệp ở tuổi này dễ dẫn đến các nguy cơ trầm cảm và tự sát.

– Dù không bị thất nghiệp, nhưng xu hướng thu nhập bắt đầu giảm dần ở hơn 21% lượng lao động trên 45 tuổi.

– Tỷ lệ thất nghiệp và bị sa thải ở bậc quản lý chỉ thấp hơn 8% cấp bậc nhân viên. Hãy thôi đừng tự phụ!

– Học tập, đọc sách và cập nhật kiến thức mới là cách tốt nhất đảm bảo giá trị của bản thân trên thị trường lao động. Học tập, học tập, và tiếp tục học tập. Lifelong learning! Hãy học nhiều hơn và giỏi hơn những gì công việc hiện tại của bạn yêu cầu, đừng chỉ học đủ.

– Xây dựng giá trị không thể thay thế của bản thân trong công ty và thị trường lao động, chủ động thay đổi và tạo nên thử thách trong công việc hàng ngày, đừng để các công việc xử lý hàng ngày của mình lặp lại đều đặn trong quá 6 tháng.

– Làm công việc mình thích ngay từ thời còn trẻ, hoặc sớm nhận ra và chuyển đổi nghề nghiệp khi còn trẻ. Bởi cơ bản, khó ai có thể làm công việc mình căm ghét cả cuộc đời, và đạt kết quả tốt.

– Dù theo ngạch chuyên gia hay quản lý, bạn vẫn phải học kỹ năng quản lý, trước tiên là quản lý công việc của chính mình. Sau đó là các kỹ năng giao tiếp và phối hợp làm việc, những cá nhân bị lựa chọn sa thải thường là các cá nhân khó hòa nhập với tập thể chung nhất. Tôi không đồng tình với cách lựa chọn này nhưng nó là sự thật.

Có lẽ đây sẽ là cái bóng nhắc chúng ta rằng: “Mình không thể ngủ quên an nhàn ở tuổi dưới 30!”

Tác giả: Hà Trung Hiếu

Học lập trình bắt đầu chỉ từ đam mê thôi là chưa đủ, để đi đường dài cần có chiến lược

Học lập trình

Học lập trình bắt đầu chỉ từ đam mê thôi là chưa đủ, để đi đường dài cần có chiến lược – Nhu cầu việc làm lớn, công việc đa dạng và thách thức, tiếp xúc với nhiều xu hướng công nghệ mới, mức lương khá cao, …

Vì thế, ngày càng có nhiều bạn trẻ thích ngành lập trình, nhưng đa số lại hoang mang không biết nên bắt đầu từ đâu? Những yếu tố cần có để theo nghề lập trình!

Câu chuyện cũ “chọn ngành, chọn trường” một lần nữa được đem ra bàn luận. Với mong muốn giúp những bạn đã và đang có dự định trở thành lập trình viên có cái nhìn chân thực nhất về nghề, để có sự lựa chọn đúng đắn cho tương lai.

Chúng tôi đã có buổi trò chuyện cùng PGS. TSKH. Nguyễn Văn Tâm – Đại Học Télécom ParisTech, Pháp & Đại học Stanford, Mỹ và hiện tại là CEO của Học Viện CNTT INTEK. Anh Tâm là người có nhiều năm tâm huyết với ngành CNTT, sẽ giúp chúng ta phác họa nên chân dung của một lập trình viên, và những tố chất cần có ở một lập trình viên thành công.

Học lập trình phải bắt đầu từ đam mê

Đã không còn cái thời lập trình chỉ dành cho những thiên tài như Bill Gates hay Mark Zuckerberg. Giờ đây với sự trợ giúp của Internet, bất kể ai cũng có thể tự học lập trình. Tuy nhiên, để theo đuổi lập trình như một nghề là điều hoàn toàn không dễ dàng. Hãy xác định rằng bạn phải thực sự nỗ lực và đánh đổi nhiều thứ để theo đuổi điều bạn muốn.

Con đường trở thành lập trình viên không chỉ dài, mà còn gian nan vô cùng: là phải “tiêu thụ” khối lượng kiến thức cơ sở khổng lồ về cấu trúc dữ liệu, thuật toán, cơ sở dữ liệu, Access, …Đòi hỏi bạn phải đầu tư không dưới 4 năm ở các trường Đại học với thái độ học tập cực kỳ nghiêm túc. Đó là còn chưa kể đến bạn phải cần ít nhất từng đó thời gian để tích lũy được kinh nghiệm và thử thách bản thân qua các dự án thực tế.

Thường xuyên phải đối mặt với mệt mỏi, căng thẳng và áp lực, làm thêm giờ chạy đua với thời gian để đảm bảo tiến độ dự án, hay thức trắng đêm để fix bug. Đôi khi “đứa con thai nghén” của bạn đã được ra đời nhưng đáp lại những ngày “vật lộn” của bạn lại chỉ là những cái lắc đầu từ phía khách hàng. Và còn vô vàn khó khăn khác mà lập trình viên phải đối mặt.

Do đó, học lập trình không xuất phát từ đam mê thực sự rất khó để thành công, khó có đủ động lực để vượt qua những khó khăn bước đầu ấy.

Nhưng đam mê thôi là chưa đủ

Học lập trình

Tôi từng nói rằng: Hãy yêu những gì bạn làm và làm những gì bạn yêu. Nhưng tôi chưa bao giờ nói chừng đó là đủ để mang lại thành công – Steve Jobs-

Theo đuổi giấc mơ, thoả mãn đam mê là cánh cửa dẫn tới thành công, điều này là thứ chúng ta vẫn được nghe rất nhiều, thế nhưng trong thế giới lập trình, chỉ có đam mê thôi vẫn là chưa đủ.

Để đi xa trong ngành lập trình cần hội tụ đủ các yếu tố: Đam mê – Kinh nghiệm – Tư duy độc  lập – Khả năng tự học – Tiếng Anh – Kỹ năng mềm – Nguyễn Văn Tâm – CEO INTEK

  • Tiếng Anh

Các ngôn ngữ lập trình, platform, framework, các công cụ hỗ trợ, các diễn đàn trao đổi hiện nay đều dùng tiếng Anh là ngôn ngữ chính. Rõ ràng lập trình viên không thể chỉ giao tiếp giới hạn trong cộng đồng lập trình viên Việt Nam, trong khi ngoài kia cộng động lập trình viên thế giới bao la rộng lớn vô cùng.

Thêm vào đó, “ Xu hướng trong thời gian tới sẽ ngày càng có nhiều công ty, tập đoàn đa quốc gia muốn đầu tư vào thị trường công nghiệp phần mềm tại Việt Nam, mở ra nhiều cơ hội việc làm với những đãi ngộ hấp dẫn, lương cao môi trường tốt dành cho lập trình viên thì tiếng Anh chính là cầu nối giúp các lập trình viên tiếp cận những cơ hội đó” – anh Tâm cho biết thêm.

  32 cuốn sách học lập trình bạn nhất định phải đọc
  Chúng ta có nên học lập trình không?
  • Kỹ năng mềm

Theo một báo cáo mới đây, được thực hiện bởi West Monroe Partners, thiếu kỹ năng mềm là nguyên nhân cản trở nhiều lập trình viên có kinh nghiệm thăng tiến trên con đường sự nghiệp.

Là một lập trình viên chắc chắn phải có kỹ năng lập trình nhưng kỹ năng mềm mới thực sự là yếu tố giúp các nhà quản lý quyết định liệu bạn có phù hợp với công ty hay không!

Kỹ năng làm việc nhóm, giải quyết vấn đề, giao tiếp, quản lý thời gian là những kỹ năng mềm cần được “ưu tiên hàng đầu” đối với mọi lập trình viên.

  • Tư duy độc lập

Trong lĩnh vực CNTT, sự sáng tạo trong giải pháp vô cùng quan trọng. Bạn phải không ngừng tư duy để tìm ra cho mình một hướng đi mới, không theo một lối mòn cũ, phải sáng tạo để đưa ra các dòng code mới khác biệt hoàn toàn nhằm tạo một sản phẩm mới có khả năng tối ưu hóa vấn đề. Bạn phải có tư duy độc lập, bạn mới có thể tư duy khác người, sáng tạo và khác biệt.

  • Khả năng tự học

Trong bối cảnh ngành CNTT đang phát triển rất nhanh và thay đổi hàng giờ, thậm chí bạn cũng không kịp có thời gian để trở nên tinh thông dù chỉ một công nghệ hoặc framework xác định nào đó — bởi vì mọi thứ thay đổi quá nhanh! Nếu bạn thực sự muốn có một kỹ năng giúp bạn luôn thuận lợi trong nghề lập trình, thì hãy học cách làm thế nào không bị phụ thuộc vào bất cứ môi trường nào vẫn có thể chủ động nâng cao kiến thức mới, tìm hiểu các công nghệ mới; từ đó bạn có thể tự giải quyết các vấn đề 1 cách sáng tạo và đổi mới.

  • Kinh nghiệm thực tiễn qua nhiều dự án

Những kiến thức học được trên giảng đường hay qua sách vở, chỉ mang tính chất lý thuyết nền tảng và đôi khi xa vời thực tế. Chỉ có trải qua các dự án thực tế thì lập trình viên mới học hỏi nhiều và nhanh những kinh nghiệm từ các lập trình viên đi trước, rèn luyện khả năng viết code, sáng tạo, tư duy giải quyết vấn đề. Cập nhật những công nghệ mới, trải nghiệm công cụ lập trình mới giúp cho công việc học lập trình của bạn tốt hơn. Bạn thậm chí có thể tự mình tạo ra các dự án của riêng mình.

Càng tham gia vào nhiều dự án khả năng xin được việc sau khi ra trường của bạn càng cao, đây là một lợi thế giúp bạn ghi điểm trong mắt nhà tuyển dụng.

Đầu tư nghiêm túc, chiến lược thông minh thành công sẽ tìm đến

Lập trình không phải là nghề dễ. Nó sẽ khó với những ai không đam mê, không thực sự nghiêm túc với nghề. Hãy đến với lập trình bằng cả trái tim, nhiệt huyết của tuổi trẻ, đầu tư nghiêm túc và có chiến lược thông minh thành công sẽ tự tìm đến bạn.

Học viện INTEK được thành lập với mục tiêu đào tạo các Kỹ sư CNTT có trình độ Chuyên môn cao, thu nhập hấp dẫn và đầy đủ năng lực cạnh tranh với thị trường chỉ trong vòng 2,5 năm. Học viên có 2 chuyên ngành để lựa chọn: Software EngineerDevOps Engineer; bao gồm 4 học kỳ tại trường và các học kỳ thực tập Doanh nghiệp kéo dài từ 3-6 tháng.

Học viên tốt nghiệp tại INTEK hội tụ các yếu tố cần có của 1 Lập trình viên Tài năng:

– Kinh nghiệm: từ 2 năm trở lên

– Tiếng Anh: Lưu loát 4 kỹ năng

– Kỹ năng mềm: Làm việc Nhóm, Giao tiếp, Giải quyết vấn đề, v.v.

– Mức lương có thể nhận được $1200 USD/Tháng nếu xếp loại B+ toàn bộ chương trình

1. Chuyên ngành Software Engineering: Học viên có thể ứng tuyển vào các vị trí

– Application Developer (ứng dụng dành cho OS)

– Web Application Developer (ứng dụng web): gồm FE, BE, Full-stack

– Mobile Developer: ứng dụng thiết bị di động (Android, iOS)

– Data Scientist

  2 nhận định sai lầm về việc bắt đầu học lập trình
  10 kênh Youtube học lập trình không thể bỏ qua dành cho Junior Web Developer / Designer

2. Chuyên ngành DevOps Engineering: Học viên có thể ứng tuyển vào các vị trí

– Network Engineer

– System Engineer

– IT Security Engineer

– DevOps Engineer

– System Administrator (Windows, Linux, Cloud)”

Do đó, với mong muốn mở ra một cơ hội để những bạn trẻ đam mê CNTT được trải nghiệm công việc của 1 lập trình viên thực thụ, khám phá chính mình, thử thách bản thân, thử nghiệm môi trường học tập hoàn toàn mới tại Việt Nam, học viện INTEK mang đến chương trình trải nghiệm hè HYPERSPACE học lập trình Python trong 3 tuần và hoàn toàn miễn phí.

HYPERSPACE đầu tiên sẽ diễn ra vào 16/07/2018 tại cơ sở của INTEK. Trong ba tuần học thử HYPERSPACE, học viên sẽ được tiếp cận với chương trình học hiện đại, phương thức đào tạo dựa trên dự án kết hợp cùng các Trò chơi dưới sự hướng dẫn từ các huấn luận viên.

Đặc biệt, mọi ứng viên đều có thể đăng ký tham gia bài test, không giới hạn độ tuổi và không cần có nền tảng về lập trình hay công nghệ. Chỉ cần bạn có có đam mê, tư duy logic tốt, và có một vốn ngoại ngữ vừa đủ để có thể theo kịp chương trình đào tạo hoàn toàn bằng tiếng Anh của HYPERSPACE. 30% thí sinh vượt qua HYPERSPACE có cơ hội nhận học bổng toàn phần của INTEK.

Để tham gia chương trình HYPERSPACE, các bạn sẽ phải hoàn thành 2 bài tests bao gồm: Logic, Tiếng Anh và chia sẻ về mục tiêu của bản thân.

VỀ HỌC VIỆN INTEK

INTEK là học viện đào tạo chuyên về CNTT, được xây dựng dựa trên mô hình giáo dục tiên tiến từ Mỹ, tiên phong trong việc ứng dụng phương pháp giảng dạy dựa trên dự án gắn liền với thực tiễn, INTEK phát triển toàn diện các kỹ năng chuyên môn cũng như kỹ năng mềm, giúp lập trình viên khám phá tối đa năng lực của cá nhân trên nền giáo án hiện đại, tương tác cao.

Ở INTEK khuyến khích sự tự lập, tự học của học viên, huấn luận viên sẽ là những người đồng hành cùng sinh viên, tránh sa vào phương pháp học rập khuôn, nặng về lý thuyết. Cách học này giúp học viên phát huy tối đa khả năng sáng tạo, làm việc độc lập, dễ dàng thích nghi với môi trường làm việc thực tế.

Ngoài ra, Học viên được đào tạo tiếng Anh trong vòng 8 tháng từ trung tâm anh ngữ Wall Street English khi chính thức gia nhập gia đình INTEK. Đây là môi trường tuyệt vời giúp học viên phát triển và hoàn thiện kỹ năng Tiếng Anh.

Thời gian học tập tại INTEK linh động, được rút ngắn xuống còn 2,5 năm nhằm giảm thời gian, tăng hiệu suất học tập, tiết kiệm chi phí, giúp học viên nhanh chóng trở thành 1 Kỹ sư CNTT chuyên môn cao.

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

Xem thêm các việc làm lập trình viên hấp dẫn tại TopDev

Cuộc chạy đua Blockchain không khoan nhượng tại thị trường Việt Nam 2022

Trong cơn bão cách mạng công nghệ 4.0, Blockchain được coi như là “chìa khóa” cho việc chuyển đổi số và xây dựng nền tảng công nghệ thông tin tương lai. Blockchain như một công nghệ cho phép truyền tải thông tin dữ liệu bằng các khối được liên kết với nhau và mở rộng theo thời gian một cách an toàn.

Có thể xem Blockchain như một cuốn sổ ghi chép tài chính và không có bất kì nhà nước hay công ty lớn nào cai quản, với hệ thống mã hóa vô cùng phức tạp để ngăn chặn tuyệt đối việc giả mạo thông tin.

Thị trường Blockchain

Thị trường Blockchain tại Việt Nam hiện nay đang sôi nổi và trỗi dậy nhanh hơn bao giờ hết. Đây là thời điểm tốt để những cá nhân đang có ý định tham gia vào cuộc chơi công nghệ mới này, được thỏa sức cạnh tranh và thể hiện mình trong một môi trường khởi nghiệp hoàn toàn mới và sáng tạo, đủ sức cạnh tranh với toàn cầu.

Dù vẫn còn đó những thử thách về mặt công nghệ quá mới, cộng đồng nhỏ lẻ tự phát, vấn đề pháp lý,… vẫn rất nhiều các startup, doanh nghiệp chịu tìm tòi thử sức để tiên phong đem làn sóng này về gần hơn với người dùng Việt Nam. Trong số đó, phải kể đến hệ sinh thái Blockchain dành cho E-Commerce và Retail – Nexty Platform.

Image result for nexty platform

Nexty – Công ty Blockchain lớn nổi tiếng

Nexty thuộc top 3 các công ty Blockchain tại Việt Nam và Singapore với 3 tiện ích đặc trưng: Giao dịch tức thì, Không mất phí giao dịch và bình ổn giá với tốc độ thực hiện 1800 giao dịch trên giây. Được thành lập bởi 2 nhà sáng lập có kinh nghiệm dày dặn và trình độ chuyên môn cao trong lĩnh vực, dù mới thành lập cách đây 6 tháng, cộng đồng người dùng của Nexty đã vượt con số 100,000 người trên khắp mọi nơi trên thế giới như Nga, Phillipin, Nhật Bản, Ukraina, Ấn Độ và Việt Nam.

Nền tảng của Nexty được thiết kế và phát triển dựa trên Ethereum nhưng đã được cải tiến nhiều tính năng riêng biệt và nổi trội, nên có thể nói, Nexty là một nền tảng hoàn toàn khác biệt, cung cấp cho khách hàng và doanh nghiệp các dịch vụ:

  • Hỗ trợ các công ty startup gọi vốn
  • Ứng dụng NTY vào thanh toán trong ecommerce, với sứ mệnh từng bước làm thay đổi thói quen thanh toán và mua sắm người tiêu dùng Việt Nam.
  • Đầu tư, hỗ trợ các công ty startup hết mình, giúp các startup có thêm cơ hội và tăng xác suất phát triển thành công đặc biệt là trong lĩnh vực thế mạnh của Nexty.
  • Ứng dụng blockchain và DApps vào cuộc sống.

Với hệ thống sử dụng hai loại token song song là NTY và NTF, Nexty thực hiện được giao dịch không mất phí chỉ trong khoảng thời gian trong nháy mắt (3s/ giao dịch). Cùng với đó là chương trình Smart Staking hoạt động theo cơ chế gửi NTY nhận lãi, chúng tôi có thể kiểm soát được giá NTY không bị cuốn theo nhu cầu biến động mạnh từ thị trường.

Hiện nay, Nexty đã cho ra đời ví NTY trên điện thoại Android và iOS để hỗ trợ người dùng trong giao dịch NTY, và đang trong giai đoạn phát triển ví NTY phi tập trung, hướng đến tinh thần cơ bản nhất của blockchain. Bên cạnh tập trung phát triển các sản phẩm, Nexty đã có mặt và tham gia rất nhiều sự kiện trong nước và Quốc tế đặc biệt là sự kiện World Blockchain & Cryptocurrency Summit tại Liên Bang Nga và tổ chức hội thảo FPT Blockchain talkshow, mang blockchain đến gần hơn với sinh viên công nghệ.

Image result for nexty platform

Với sự mệnh đặt người dùng lên hàng đầu, Nexty đang không ngừng mở rộng các tính năng cũng như cải tiến phương thức hoạt động. Hiện tại, Nexty chào đón và tạo cơ hội việc làm cho các lập trình viên Nodejs và UI UX designers.

Tham khảo thêm các vị trí tuyển dụng blockchain hấp dẫn tại đây

TopDev

10 Java Web Framework tốt nhất

10 Java Web Framework tốt nhất

Nếu bạn là một Java web developer, chắc hẳn là bạn đã được tiếp xúc với vô vàn các Java Web Framework. Vì thế bạn cần một list có chọn lọc gồm 10 Java Web Framework tốt nhất sẽ hỗ trợ bạn được rất nhiều trong việc lập trình Java.

1. Spring MVC – Model View Controller

10 Java Web Framework tốt nhất

Spring MVC là một trong những Java Web Frameworks lâu đời nhất, nhưng như ngừoi ta nói: Old but Gold. Đến nay, nó vẫn được tận dụng và không ngừng biến đổi, phát triển thêm nhiều thay đổi cùng Java.

Đối với các software engineers, nó cung cấp một bộ toolkit tuyệt vời để phát triển web app và định hình chúng, cũng như phát triển các feature bảo mật đi kèm. Đây là một Web Framework thật sự rộng lớn giúp bạn có thể hoàn thiện bất kỳ task hoặc project tiềm năng nào bạn muốn.

Nhờ có tính đơn thể (modularity) của mình mà các tool sẽ giúp bạn viết được nhiều code sạch và dễ tiếp cận. Ngoài ra còn có một khối lượng lớn tài liệu, và cộng đồng active giúp bạn nếu bạn có bất kì thắc mắc nào về cách làm cái gì hoặc cách thức hoạt động của một thứ nào đó.

Điểm trừ lớn nhất – có thể là duy nhất – đó là sự phức tạp của nó và nếu bạn mới nhập môn Java Web Development, đây sẽ không phải là sự lựa chọn đúng đắn nhất vì nó yêu cầu nhiều kinh nghiệm và kiến thức trước đó.

Ưu:

  • Nguồn tư liệu đỉnh
  • Cộng đồng active rất hữu ích
  • Bộ Toolkit lớn đa dạng cho bất kì project nào
  • Cho phép bạn viết code sạch và dễ truy cập

Nhược:

  • Phải học rất nhiều thứ trong thời gian ngắn
  • Yêu cầu đã có nền tảng kiến thức trước đó

2. Struts

Struts là một framework miễn phí và nguồn mở dùng để tạo các app Java đơn giản. Nó được dùng chủ yếu để tạo nền tảng cho web app, và hoạt động trên pattern “MVC” – Model-View-Controller.

Tuy nhiên, nếu bạn dùng Struts, bạn sẽ thấy rằng framework không linh hoạt lắm và dùng nó đồng nghĩa là bạn cần phải quen với set các quy tắc coding và thiết kế của web app. Điều này sẽ là một điểm trừ rất lớn đối với những ai đã quen với các phương pháp nhất định nào đấy, và Struts lại muốn bạn dùng set quy tắc riêng của họ nữa.

Ưu:

  • Miễn phí và nguồn mở
  • Nhanh
  • Dễ test code mới

Nhược:

  • Nhiều quy tắc
  • Framework phức tạp
  • Không linh hoạt lắm

Java tuyển dụng lương cao, đãi ngộ tốt

3. Hibernate

Image result for hibernate java

Hibernate là một Web Framework rất phổ biến về chất lượng cũng như các option đầy quyền lực của mình. Hiberbnate là một nơi dùng để mapping object-relational, nghĩa là chuyển hoá data giữa hai hệ thống không tương ứng, và để chúng làm việc với nhau thông qua các ngôn ngữ lập trình hướng đối tượng khác. Rõ ràng trong trường hợp này, ngôn ngữ chúng ta nói đến là Java.

Vì thế, bạn có thể dùng Hibernate để làm việc với database đang có, tối ưu hoá code của web app một chút hoặc hơn. Nó cực kì tiện lợi và hữu ích nếu bạn phải làm việc với nhiều database khó sử dụng hoặc không tương thích.

Một trong những lợi ích lớn nhất của Hibernate bên cạnh tốc độ và khả năng làm việc với nhiều data, đó là nó rất dễ scale bất kể phần mềm của bạn lớn hay nhỏ, ít hay nhiều user. Nếu bạn đang thiết kế một mảng phần mềm cho 10 đến 20 người dùng, hay là cho cả trăm nghìn user thì Hibernate là sự lựa chọn hoàn hảo.

Hơn nữa, Hibernate dễ chỉnh sửa và bạn có thể làm mọi thứ với nó. Tuy nhiên, một trong những khuyết điểm lớn nhất của Hibernate chính là việc restart Web Framework rồi quay lại sẽ tốn khá nhiều thời gian và bị chậm; thậm chí nếu lỡ tắt nguồn thì bạn sẽ có nguy cơ bị mất data.

Ưu:

  • Rất mạnh
  • Dễ dàng chuyển đổi data
  • Tốc độ cao
  • Dễ scale
  • Dễ chỉnh sửa và kiểm soát

Nhược:

  • Restart chậm
  • Dễ mất data

4. GWT – Google Web Toolkit

10 Java Web Framework tốt nhất

Google Web Toolkit đến từ chính công cụ search ưa thích của bạn – Google! Tool nguồn mở này giúp bạn dễ dàng lập trình và điều chỉnh các app Java front-end, dù cho app có phức tạp đến mấy.

Một trong những điểm sáng nhất của Google Web Toolkit, rõ ràng, là nó được Google phát triển nên, đồng nghĩa rằng nó được nhiều hỗ trợ, nhiều tài liệu, và đem lại cảm giác chuyên nghiệp trong suốt quá trình.

Tool này khá dễ học, và bạn có thể dùng nó cho các app front-end, cũng như tạo ra các responsive web app đỉnh cao cân bằng cả hai hệ thống của server và client. Bên cạnh đó, Google Web Toolkit cũng sẽ hỗ trợ toàn lực cho bạn thống nhất sự đa năng này.

Một trong những vấn đề lớn nhất của Google Web Toolkit đó là nó có quá nhiều phiên bản mới update, và không cái nào giống cái nào cả. Một số version có các giao diện và tool mà bạn sẽ thấy cần thiết, trong khi phiên bản ổn định nhất của Google Web Toolkit lại thiếu các tool này. Một vấn đề khác nữa đó là phần mềm compile của Google Web Toolkit khá chậm và nó có thể làm nhiều người khó chịu.

Ưu:

  • Dễ sử dụng
  • Dễ truy cập
  • Phát triển được nhiều Responsive Application
  • Cân bằng độ Load của hệ thống Server và Client
  • Nguồn tài liệu ưu tú

Nhược:

  • Liên tục ra version mới
  • Compiling chậm

5. Vaadin

Image result for vaadin

The Vaadin framework là một nguồn mở và được Apache Software Foundation cấp bằng, một tổ chức phi lợi nhuận chuyên tạo và duy trì tool cho các ngôn ngữ lập trình như Java and C++. Vì thế, nó là một framework rất hữu ích, và nó có cả một cộng đồng developer active toàn cầu mà bạn có thể tiếp cận. Vaadin rất tốt cho lập trình web app, và kiến trúc của Vaadin là server-side. Vẫn có một vấn đề nhỏ ở đây: Nó rất dễ làm code Java hoặc JavaScript của bạn trở nên cực kì lớn và phức tạp.

Ưu:

  • Đa dạng Plug-In
  • Được Apache hỗ trợ
  • Tư liệu phong phú
  • Hỗ trợ nhiều Forum
  • Dùng cho lập trình Server-Side
  • Giúp bạn tạo ra các Web Interfaces interactive và đa dạng
  • Bạn có thể dùng Google Web Tools và Ajax

Nhược:

  • Code dễ trở nên dài dòng và phức tạp

6. Wicket

10 Java Web Framework tốt nhất

Wicket – viết tắt cho “Apache Wicket” được hỗ trợ bởi Apache Software Foundation – một Web Framework nhẹ nhàng giành cho các web app đơn giảnNó là nguồn mở, server-side và mọi code trên Web Framework này đều script trên Java, làm mọi thứ dễ dàng hơn khi scripting hoặc thay đổi những cái cần thiết.

Một điểm trừ duy nhất của Wicket, đó là quá trình develop khá rối do mức độ phức tạp của Web Framework. Nếu bạn okay với nó thì Wicket là sự lựa chọn số một rồi.

Ưu:

  • Hỗ trợ Java và HTML
  • Dễ maintain code
  • Dễ test các component nhất định trong code
  • Tạo nên các trang và app đơn giản
  • Có nhiều tư liệu và hỗ trợ

Nhược:

  • Quá trình Develop phức tạp
  • Tốn nhiều thời gian để hiểu rõ Framework

7. Vert.X

10 Java Web Framework tốt nhất

Vert.X là một Web Framework, hỗ trợ rất nhiều ngôn ngữ, nhưng cái được tối ưu hoá nhất là Java. Nếu bạn dùng Ruby, Ceylon, Groovy, hay JavaScript, bạn vẫn hoàn toàn có thể dùng Vert.X. Có rất nhiều loại component trên Vert.X, cho phép bạn dùng những cần để viết web app và bỏ đi những cái dư thừa.

Một trong những điểm sáng nhất về Vert.X – ngoài sự linh hoạt và đa năng – đó là bạn có thể dễ dàng dựng và dùng bất kì component hoặc library nào bạn muốn. Nó chạy trên JVM – Java Virtual Machine – cho phép bạn test code và scale tức thì. Đây là một thứ bạn ghi nhớ, đặc biệt là khi bạn cần nhiều component mà các framework khác không hỗ trợ hoặc khó tìm ra.

Ưu:

  • Dễ set up
  • Support nhiều ngôn ngữ
  • Dùng bất cứ gì bạn muốn, còn lại bỏ qua
  • Bạn có thể dùng bất kì library nào bạn muốn

Nhược:

  • Khó scale thành hệ thống lớn hơn

8. JSF – JavaServer Faces

10 Java Web Framework tốt nhất

JavaServer Faces được Oracle hỗ trợ, vì thế mà nó cho ra một tài liệu siêu dài và phức tạp. Khi đọc thông tin này, bạn sẽ hiểu rằng bạn có thể dùng framework này để tạo nên bất cứ gì bạn muốn bằng Java.

Đáng tiếc đây không phải là framework dễ sử dụng, và cũng không phải cái nhanh nhất. Tuy nhiên, ưu điểm lớn nhất của JavaServer Faces đó là nguồn tư liệu khổng lồ mà Oracle cung cấp. Oracle đã đi đầu ngành trong nhiều năm qua, vì thế mà họ đáng tin cậy và có uy tín.

 

Ưu:

  • Được Oracle hỗ trợ
  • Đi kèm bộ tư liệu dồi dào
  • Tool set chuẩn
  • Library dồi dào
  • Tiện dụng nếu bạn dùng của IDE

Nhược:

  • Hơi phức tạp
  • Cần có kinh nghiệm
  • Tốc độ khá chậm

9. Play!

10 Java Web Framework tốt nhất

Play – một Web Framework rất đơn giản và dễ sử dụng. Nó được ra đời để bạn thực hiện các thay đổi nhanh chóng và dễ dàng hơn, gảim thiểu áp lực cho bạn.

Nhờ vào UI liền mạch và dễ sử dụng, chưa kể rất nhiều feature dùng cho tối ưu hoá nguồn tài nguyên trên máy tính bạn – CPU, RAM – giúp bạn dễ dàng scale phần mềm mà bạn đang viết. Nó được thiết kế cho developer phát triển modern web và mobile app.

Play được build trên Akka toolkit – một bộ toolkit nguồn mở chạy trên Java Virtual Machine rất phổ biến, và nó đi kèm với các tool và feature cơ bản tương tự, nhưng hoạt động theo cách thân thiện với user hơn cho phép bạn dễ viết, thiết kế và test các app mà bạn đang phát triển. Nhiều developer đã trung thành với nó, và nhấn mạnh rằng nó đã cải thiện năng suất của họ như thế nào, chính nhờ sự đơn giản và dễ sử dụng này.

Về điểm yếu, phiên bản mới nhất hiện tại đó là Play 2, và 2 phiên bản thực chất hơi khác nhau. Hiện tại thì, Play không thực sự cần thay đổi gì nhiều, và thời gian sẽ cho chúng ta biết liệu Play có phải là Web Framework tốt nhất không.

Ưu:

  • Cải thiện năng suất cực kì
  • Workflow dễ dàng
  • Tool linh hoạt
  • Mọi thứ hoạt động hiệu quả ngay từ khi bạn khởi động
  • Đơn vị quản lý resource hiệu qủa
  • Dễ scale phần mềm

Nhược:

  • Ít cải thiện trong những năm vừa qua

10. Grails

10 Java Web Framework tốt nhất

 

Ưu:

  • Set Up dễ dàng
  • Hơn 900 Plugin
  • Nguồn tài liệu tuyệt vời
  • Dễ dàng sử dụng
  • Hiệu quả cho bất kì Project cỡ nào

Nhược:

  • Phải sử dụng Runtime Language

Làm sao để chọn?

Mỗi Web Framework chúng tôi list ở trên đều có thế mạnh – thế yếu riêng. Một thứ bạn cần phải cân nhắc nữa đó là bản chất của web application project, bao nhiêu người làm project, và mục đích thực sự của nó.

Ngoài ra, bạn hãy xét xem số kinh nghiệm của mình với Java và mức độ hiểu của mình đối với các Web Frameworks. Nếu bạn fresh, thì Google Web Frameworks là sự lựa chọn hoàn hảo.

<< Phần 4: Top 10 câu hỏi phỏng vấn Java thường gặp>>

<<Phần 6: 11 mẹo đơn giản để tăng hiệu suất Java cấp tốc >>

TopDev via Javapipe

Tham khảo thêm các vị trí tuyển ngành CNTT tại đây

Tại sao doanh nghiệp bạn lại cần đến VoiP?

Với sự thay đổi liên tục trong các hành vi tiêu dùng và nền tảng tiếp thị luôn phát triển, thật không dễ dàng cho các doanh nghiệp nhỏ để quảng bá hình ảnh của họ đến thị trường khi lực lượng còn ít và thiếu kinh nghiệm. Nhà tiếp thị sẽ không thể đầu tư hết thời gian và tiền bạc vào các chiến thuật đắt đỏ trending hiện tại mà nên tập trung vào những cái đang có, những nước đi thân thiện với người dùng và tiết kiệm chi phí hơn. Không gì khác, đó là VoIP.

VoIP (hoặc Voice over IP) là một dịch vụ cho phép bạn thực hiện cuộc gọi điện thoại và liên lạc với nhau thông qua internet, và không có bất kỳ khó khăn nào so với khi sử dụng điện thoại truyền thống. Thay vì nói chuyện qua các mạng điện thoại Analog trước đây, tiếng nói của bạn sẽ được gửi qua internet tới người nghe và bạn sẽ có nhiều trải nghiệm cuộc gọi thuận tiện hơn – đồng thời mang lại cho bạn nhiều khoản tiết kiệm cho việc giao tiếp.

VoIP có thể mang lại cho bạn những đảm bảo và lợi ích lớn chỉ từ những bước đi nhỏ:

Tăng lượt chuyển đổi

VoIP cho phép các Doanh nghiệp truyền thông liên tục tới khách hàng tiềm năng. Tiếp cận khách hàng qua điện thoại đem lại tỷ lệ phản hồi cao hơn email, do đó bạn có thể kết nối với khách hàng tiềm năng và tăng lượt chuyển đổi của mình. VoIP cho phép các doanh nghiệp xây dựng mối quan hệ với khách hàng và giữ họ tích cực tham gia vào thương hiệu.

Tăng cường khả năng tiếp cận của khách hàng

Khách hàng sẽ không phải tìm kiếm hay thao tác gì cả; tất cả những gì họ phải làm là nhấp vào một nút (nút Click-to-call) để ngay lập tức được kết nối với bạn. Là một marketer, bạn muốn loại bỏ càng nhiều bước càng tốt cho một khách hàng tiềm năng để chuyển đổi thành khách hàng thân thiết. Hệ thống VoIP loại bỏ những rào cản đơn giản nhưng quan trọng cho khách hàng và cải thiện trải nghiệm người dùng tổng thể.

Tự động hóa cuộc gọi của bạn

Nhân viên tiếp tân ảo của bạn thường là sự tương tác đầu tiên mà khách hàng của bạn trải nghiệm khi liên hệ với Doanh nghiệp của bạn. Bạn muốn trải nghiệm người dùng được nâng lên ngay từ đầu? Người tiếp cận tự động có thể giúp định tuyến các cuộc gọi đúng cách và tăng nhận thức về thương hiệu – mà Doanh nghiệp không phải tuyển nhân viên cho việc trực điện thoại.

Quản lý cuộc gọi

VoIP cho phép bạn quản lý các cuộc gọi và đo lường mức độ hiệu quả của các cú điện thoại chuyển đổi khách hàng tiềm năng thành khách hàng thân thiết. VoIP sẽ tăng cường các nỗ lực tiếp thị của bạn bằng cách cung cấp dữ liệu gốc cho các chiến dịch của bạn. Bạn có thể chỉ định mỗi số điện thoại khác nhau ở mỗi kênh truyền thông khác nhau cho một chiến dịch cụ thể với công nghệ VoIP. Mặc dù mỗi số bạn định vị trên mỗi kênh truyền thông đều ở cùng một nơi, nhưng bạn sẽ có thể theo dõi được kênh nào thu hút khách hàng hiệu quả nhất. Điều này giúp tiết kiệm thời gian và tiền bạc cho công ty của bạn và giúp bạn tăng cường tiếp thị hiệu quả và tránh những gì không hiệu quả.

Tự hào là một trong những nhà cung cấp các giải pháp về lĩnh vực Voice, Mobile Marketing…; VHT mang trong mình sứ mệnh nhằm thay đổi cách thức doanh nghiệp tương tác với khách hàng, giúp hoàn thiện dịch vụ chăm sóc khách hàng, mang lại cho doanh nghiệp nhiều giá trị và lợi ích tương xứng nhất.

Từ năm 2014, VHT đã nhận được chứng nhận Hệ thống quản lý an ninh thông tin ISO/IEC 27001:2013 trong lĩnh vực “Cung cấp dịch vụ Mobile SIP Trunking, Mobile Marketing; tư vấn và triển khai dịch vụ Cloud CRM, Cloud Contact Center. Không chỉ vậy, với hơn 10 năm kinh nghiệm, VHT còn được rất nhiều khách hàng trong mọi lĩnh vực tin tưởng sử dụng, trong đó có những top brand như: BMW, Ford, Heineken, Sony, Samsung, Grab, The Coffee House,..

Bên cạnh dịch vụ VCall – Cloud Contact Center – tổng đài ảo chính tay họ phát triển, VHT còn cung cấp 4 dịch khác phục vụ cho sự phát triển của Mobile Marketing của các doanh nghiệp:

  • Stringee VoIP SDK

Stringee SDK là nền tảng để phát triển về Mobile Communication mà không lo bận tâm về cơ sở hạ tầng dịch vụ, phù hợp với các đơn vị bán lẻ đến các nhà cung cấp dịch vụ hay sàn thương mại điện tử. Stringee cung cấp các tính năng Nghe, Thoại, Thoại thấy hình, Chat và SMS để tích hợp nhanh vào các apps hoặc website của doanh nghiệp. Stringee VoIP SDK giúp cảnh báo tự động qua SMS, Video Chat và Contact Center.

  • SMS Marketing

Gồm các dịch vụ tin nhắn hiển thị thương hiệu ở phần người gửi hoặc qua đầu số cố định với các ứng dụng rất linh động như quảng cáo, chăm sóc và chúc mừng sinh nhật khách hàng, xác thực tài khoản, nhắc nhở sự kiện…

  • Caresoft

Facebook, Email, cuộc gọi, ChatBox… Khách hàng tương tác đa kênh nhưng nhiều công ty đang gặp khó khăn trong việc quản lý và phân bổ đủ nhân viên để chăm sóc khác hàng. Caresoft phục vụ quản lý tập trung, phân quyền tự động, giám sát chặt chẽ đội ngủ nhân viên và cung cấp các báo cáo chuyên nghiệp nhất giúp đột phá về thời gian và tối ưu nguồn lực con người.

  • Top up

Dịch vụ tri ân khách hàng bằng cách nạp tiền trực tiếp vào tài khoản di động của họ với bất kì nhà mạng nào ở Việt Nam, giúp tiết kiệm thời gian, công sức và đo lường được hiệu quả của chiến dịch trên từng kênh chạy.

Từ khi thành lập đến nay, VHT đã và đang không ngừng phát triển công nghệ, nỗ lực đa dạng hóa giải pháp để trở thành nhà cung cấp hàng đầu vào năm 2020 trên thị trường về lĩnh vực Mobile Marketing, VoIP… với mục đích thay đổi cách thức doanh nghiệp tương tác với khách hàng nhằm đem lại cho doanh nghiệp nhiều giá trị và lợi ích tương xứng.

TopDev

THINKSTATION® P320 – ĐÁP ỨNG NHU CẦU VỀ ĐỘ TIN CẬY CAO VÀ HIỆU SUẤT MẠNH MẼ

ThinkStation® P320 dẫn đầu không những về số lượng mà còn đảm bảo và mặt gá trị và chất lượng. Với nhiều tính năng vượt trội, ThinkStation® P320 mang đến cho người dùng những trải nghiệm tuyệt vời!

Nhanh và đáng tin cậy: Bộ vi xử lý Intel® Core® i và Xeon® với tốc độ nhanh nhất, lên tới 4.2GHz và Turbo Boost up đến 4.5GHz,mang đến hiệu suất làm việc trên cả mong đợi.
Giá trị vượt trội: Giá cả thực sự phải chăng dành cho bất kỳ tổ chức nào mong muốn một sản phẩm vừa có hiệu suất mạnh mẽ và giá trị mang lại xứng đáng.
Biến ảo thành hiện thực: Chuyên gia NVIDIA® Quadro® mới nhất với đồ họa vượt bậc giúp mang những điều biến ảo đến với thế giới thực của chúng ta.

THINKSTATION® P520 – CẤU HÌNH TRẠM LÀM VIỆC LINH HOẠT THEO CÁCH CỦA BẠN

➤ Trạm CPU đơn mạnh mẽ nhất – một hệ thống thế hệ tiếp theo giúp chúng ta giải quyết được bất kỳ công việc nào với độ tin cậy rất cao dành cho các nhiệm vụ quan trọng.

➤Tùy chỉnh ThinkStation® P520 cho sức mạnh, hiệu suất và khả năng sử dụng mà bạn cần,

bao gồm số lượng lõi và tần số điện cao nhất với hiệu suất cao và mới nhất.

➤Bộ xử lý Intel® Xeon® W và đồ họa NVIDIA® Quadro® chuyên nghiệp.

THINKSTATION® P720 – TÍNH NĂNG PHONG PHÚ VỚI BỘ VI XỬ LÝ MÁY TRẠM

➤ ThinkStation® P720 tăng sức mạnh một máy trạm đa năng thế hệ tiếp theo,

➤ Mang đến một hiệu suất tuyệt vời mà mọi người ao ước với bộ nhớ nhanh nhất và lên tới 12 ổ đĩa sử dụng Flex Khay giữ đến hai ổ đĩa

➤ Rất lý tưởng cho các công việc đòi hỏi khắt khe về kỹ thuật & kiến trúc, phương tiện truyền thông & giải trí, tài chính, và các ngành công nghiệp y tế.

THINKSTATION® P920 – TÍNH NĂNG PHONG PHÚ VỚI BỘ VI XỬ LÝ ÁY TRẠM

➤ ThinkStation® P920 mang đến một hiệu suất mà bạn cần, bao gồm cả các I/O đa hỗ trợ lên đến 3 x NVIDIA® Quadro® GP100 GPU.

➤ Thiết kế cao cấp, thời thượng.

➤ Các tính năng trên workhorse đầu dòng này bao gồm khay Flex giữ lên đến

hai ổ đĩa cho tổng linh hoạt và cấp bằng sáng chế Tri-Channel Cooling cho

tăng cường độ tin cậy.

➤ ThinkStation® P920 rất lý tưởng cho các công việc yêu cầu hiệu suất làm việc cao, bao gồm: dựng hình, mô phỏng, trực quan, deep learning và trí tuệ nhân tạo trong các ngành.
Với những tính năng không thể tuyệt vời hơn như vậy, LENOVO sẽ mang dòng ThinkStation cùng rất nhiều sản phẩm hấp dẫn khác đến sự kiện Vietnam Mobile Day 2018. Hãy nhanh tay giữ cho mình một chiếc vé để có cơ hội gặp gỡ LENOVO và cùng trải nghiệm những tính năng tuyệt vời của các sản phẩm nhé

Những định kiến sai lầm về việc học tiếng Anh

Bạn có biết rằng, những quan niệm và định hướng sai lầm trong việc học tiếng Anh đã khiến nhiều người lựa chọn phương pháp học không phù hợp với trình độ và nhu cầu của bản thân mình, vừa tốn tiền bạc và thời gian mà lại không đạt hiệu quả như ý muốn.

  1. “Muốn giỏi tiếng Anh phải có năng khiếu”

Với những ai đã từng học tiếng Anh tại trường hoặc một số trung tâm ngoại ngữ mà không hiệu quả, quan điểm trên lại càng như “chân lý” bất di bất dịch.

Sự thật thì, khả năng học ngôn ngữ là bản năng của mỗi người từ khi sinh ra. Vì vậy, nếu như đã có thể đọc và hiểu bài viết này thì bạn hoàn toàn có thể học tốt bất kì ngôn ngữ nào, không chỉ riêng tiếng mẹ đẻ. Yếu tố quan trọng nhất ở đây chính là sự kiên trì, đầu tư thời gian và phương pháp học hiệu quả. Học tiếng Anh cũng giống như một cuộc chạy marathon. Ai cũng có khả năng chạy, bởi đó là bản năng vốn có của mỗi người, nhưng để cơ thể làm quen và “đánh thức” năng lực đó, bạn cần phải kiên trì rèn luyện trong thời gian dài. Cùng với sự kiên trì, bạn cũng phải sẵn sàng “đầu tư” một quỹ thời gian đều đặn cho việc học tiếng Anh, đồng thời nếu có một phương pháp học phù hợp và được chứng minh hiệu quả, chắc chắn bạn sẽ thành công với ngôn ngữ này.

  1. “Người ở nước ngoài lâu năm thì mới giỏi được tiếng Anh”

Tâm lý này rất phổ biến và hầu như bậc phụ huynh nào cũng có hướng tư duy như vậy. Họ tin rằng nếu như đã sang được nước ngoài thì tự khắc sẽ rất giỏi Tiếng Anh. Từ đó mà họ tìm mọi cách để đưa con em đi du học, dù cực kỳ tốn kém chi phí và thời gian chỉ để giỏi tiếng Anh. Sự thật là, những trường hợp thành công cũng có nhưng không nhiều và không hiệu quả như họ nghĩ. Theo thống kê, những người nhập cư tại Mỹ, Úc không hề giỏi tiếng Anh và mắc phải những lỗi rất cơ bản. Ngoài ra, họ cũng không giao tiếp được câu dài và nói chuyện sâu được mà chỉ có thể sử dụng các câu giao tiếp thông thường.

Bên cạnh đó, vốn tiếng Anh họ có được đa số đều là tiếng Anh “bồi” đúc kết được sau quá trình giao tiếp lâu ngày với người bản xứ. Ngay cả khi nhận ra những lỗi sai tiếng Anh căn bản, người bản xứ vẫn hiểu hoặc suy luận ra được nên họ chẳng bao giờ chỉ ra những lỗi đó.

Điểm cốt lõi đó là cần hình thành tư duy học tiếng Anh một cách bài bản ngay từ đầu để tránh mắc phải những lỗi sai cơ bản và mất thời gian, tiền bạc đi học chỉ để bù đắp lại những lỗ hổng tiếng Anh từ trước.

3. “Muốn học muốn tốt là phải đến lớp”

Thực tế, tham gia học tập và được hướng dẫn trực tiếp tại lớp là một nhân tố không nhỏ giúp bạn nhanh tiến bộ và cải thiện khả năng giao tiếp. Thế nhưng, cuộc sống bộn bề với công việc và gia đình khiến cho không phải ai cũng có đủ điều kiện và thời gian để duy trì việc học tại các trung tâm ngoại ngữ.

Vì thế một giải pháp tốt hơn ra đời bằng việc lựa chọn cho mình phương pháp học tiếng Anh tiện lợi lại ít tốn kém như lớp học tiếng anh online. Nếu như bạn đang nghi ngờ về hiệu quả của phương pháp học này, chắc hẳn bạn chưa có cho mình một định hướng học tập rõ ràng. Đã có đến 87.6% người tham dự khóa học tiếng Anh trực tuyến nghe nói được tiếng Anh chỉ sau một khóa học.

Thời đại công nghệ phát triển nhanh chóng, chỉ cần sở hữu cho mình một chiếc máy tính có kết nối mạng là bạn đã có thể tham gia học tập trực tuyến với bộ tài liệu tiếng Anh không giới hạn. Lúc này, bạn chỉ cần chọn ra cho mình một bộ tài liệu phù hợp với nhu cầu học tập cũng như chuyên ngành mà bạn đang theo học đã có thể nâng trình tiếng Anh như ý.

======================

GrabLingo là đơn vị chuyên cung cấp các khóa học trực tuyến 1 kèm 1 giúp kết nối hơn 10,000 học viên cùng 1000+ giáo viên nước ngoài dày dặn kinh nghiệm, được đào tạo bài bản. Sứ mệnh của GrabLingo là xây dựng trường học tiếng Anh trực tuyến hàng đầu Việt Nam, giúp mọi người tăng phản xạ nghe nói, nâng cao trình độ và sử dụng tiếng Anh như người bản xứ.

  • Học mọi lúc mọi nơi, giờ học linh động 6h-24h mỗi ngày, lịch học được sắp xếp phù hợp với thời gian trống của học viên và giáo viên.
  • Lộ trình học cá nhân hóa, phù hợp với nhu cầu và trình độ của mỗi học viên. Do đó, chương trình học tại GrabLingo phù hợp với mọi trình độ, mọi lứa tuổi và mọi mục đích.
  • GrabLingo ký hợp đồng với khách hàng để cam kết về chất lượng dịch vụ mà chúng tôi cung cấp, cam kết về chất lượng giảng dạy của giáo viên, cũng như cam kết về sự tiến bộ của học viên (hỗ trợ 1 khóa học 1 tháng nếu học viên theo sát lộ trình học mà không tiến bộ).
  • Các khóa học tiếng Anh trực tuyến 1 kèm 1 với giáo viên nước ngoài giúp tăng phản xạ nghe nói tiếng Anh lưu loát cho người đi làm. Giáo viên kèm cặp, sửa lỗi trực tiếp, theo sát học viên trong suốt quá trình học.