Home Blog Page 210

Kết quả chung cuộc benchmark hiệu năng giữa PHP 7.0 và HHVM

Thật tuyệt vời cho tất cả những ai sử dụng PHP mỗi ngày, không chỉ các developer hay các công ty hosting mà còn cả user nữa. Chúng ta có những website nhanh hơn và dịch vụ web cho tất cả mọi người.

Vì nghiện việc tối ưu thời gian load của các website và để xem phiên bản mới của PHP này cải tiến và đáp ứng được bao nhiêu so với mong đợi, chúng ta sẽ đưa một phiên bản đã public của PHP 7.0 vào kiểm tra và so sánh với PHP 5.6.16 và HHVM 3.10.1 trên một server vật lý(vì ảo hóa không phân biệt được kết quả). Việc kiểm tra bao gồm WordPress 4.3.1, Drupal 8, Magento 2.0 CE, OctoberCMSbuild 309, PyroCMS v3 beta2, và Flarum v0.1.0-beta.4.

Server vật lý dùng để benchmark có cấu hình Intel Xeon E5-2630v3 processor(8 CPU cores và 16 threads), 64 GB RAM và 2 x 4 TB SAS 7200 rpm HGST disks in RAID 0.

Chúng tôi dùng MariaDB 10.1.9 cho MySQL server và Nginx 1.9.7 cho web server.

WordPress 4.4

Dùng dummy content từ wptest.io và đã benchmark trang home trong một phút với 15 CCU. WordPress là lần test duy nhất chúng tôi có thể sử dụng chế độ Repo Authoritative của HHVM mà không cần tốn thời gian sửa đổi phần mềm này. Nó giúp tăng thêm một chút tốc độ nữa nhưng không dành cho mọi người vì đòi hỏi phải thêm một số bước nâng cao để có thể chạy được.WordPress 4.4 PHP7 HHVM Benchmarks

Kết quả benchmark của WordPress 4.4 HHVM RepoAuthoritative: 358.33 trans/sec
Kết quả benchmark của WordPress 4.4 HHVM: 335.13 trans/sec
Kết quả benchmark của WordPress 4.4 PHP 7.0: 287.92 trans/sec
Kết quả benchmark của WordPress 4.4 PHP 7.0 không dùng opcache: 84.87 trans/sec

WordPress 4.3.1

Sử dụng dummy content từ wptest.io và benchmark trang chủ trong một phút với 15 CCU.

WordPress 4.3.1 PHP Benchmarks

Kết quả benchmark của WordPress 4.3.1 HHVM RepoAuthoritative: 375.48 trans/sec
Kết quả benchmark của WordPress 4.3.1 HHVM: 357.69 trans/sec
Kết quả benchmark của WordPress 4.3.1 PHP 7.0: 306.24 trans/sec
Kết quả benchmark của WordPress 4.3.1 PHP 5.6.16: 106.45 trans/sec

Ứng tuyển ngay các vị trí PHP tuyển dụng mới nhất trên TopDev

Drupal 8.0.1

Cài đặt bản tiêu chuẩn với 50 posts dữ liệu mẫu. Benchmark trang chủ trong một phút với 15 CCU. Kết quả đáng ngạc nhiên, chúng tôi đã gỡ Drupal hoàn toàn và cài lại từ đâu rồi đo lại, tất cả đều chung một kết quả!

Drupal 8 PHP Benchmarks

Kết quả benchmark:
Drupal 8 HHVM: 1739.28 trans/sec
Drupal 8 PHP 7.0: 917.10 trans/sec
Drupal 8 PHP 5.6.16: 794.20 trans/sec

Magento 2.0 Community Edition

Cài đặt bản tiêu chuẩn với dữ liệu mẫu chính hãng. Cache của Magento đã được bật. Benchmark trang chủ trong một phút với 15 CCU

Magento 2.0 PHP BenchmarksKết quả benchmark:
Magento HHVM: 192.19 trans/sec
Magento PHP 7.0: 183.87 trans/sec
Magento PHP 5.6.16: 113.34 trans/sec

OctoberCMS

Hệ CMS nổi tiếng dựa trên Laravel này cho chúng ta cơ hội tốt để test framework này! Chúng tôi chọn theme Vanilla trong suốt quá trình cài đặt user system, blog và forum. We chose the Vanilla theme during installation which has a user system, a blog and a forum. Benchmark trang chủ trong một phút với 15 CCU.

OctoberCMS

Kết quả benchmark:
OctoberCMS HHVM: 583.07 trans/sec
OctoberCMS PHP 7.0: 407.89 trans/sec
OctoberCMS PHP 5.6.16: 248.19 trans/sec

PyroCMS v3 beta2

Một CMS khác dựa trên Laravel. Chúng tôi cài đặt mặc định và post một bài blog rồi test nó trong một phút với 15 CCU.

PyroCMS 3

Kết quả benchmark:
PyroCMS HHVM: 177.39 trans/sec
PyroCMS PHP 7.0: 145.95 trans/sec
PyroCMS PHP 5.6.16: 75.17 trans/sec

Laravel 5.1.11

Chúng tôi cài đặt mặc định và test “welcome screen” của nó mà không kết nối database. Đừng quên là OctoberCMS ở trên cũng được built trên Laravel vì vậy dường như HHVM lấy lại phong độ khi chúng ta thêm vài thứ khi kiểm tra. Chúng tôi tối ưu thủ công bằng cách sử dụng –force và config:cache cho ra kết quả tốt hơn 1.5x lần kết quả bên dưới.

Laravel 5.1 PHP7 Benchmark

Kết quả benchmark:
Laravel 5.1.11 HHVM: 1128.41 trans/sec
Laravel 5.1.11 PHP 7.0: 1363.24 trans/sec
Laravel 5.1.11 PHP 7.0 không dùng opcache: 245.60 trans/sec

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

Sự thật về 4.0, Trí tuệ nhân tạo & Robots

Sự thật về 4.0, Trí tuệ nhân tạo & Robots

Hầu hết những gì bạn thấy trên báo chí đều là chiêu trò marketing và giật tít.

Sự thật về 4.0

Những gì báo chí đang viết về CMCN4.0 hầu hết là không chính xác hay nói nhẹ là không đầy đủ về bức tranh toàn cảnh của CMCN4.0. Những gì CMCN4.0 đang hướng tới, là một CHUỖI các công nghệ mới cho phép con người làm việc và sản xuất hiệu quả hơn. Để có thể áp dụng thành công CMCN4.0, tất cả các công nghệ trong chuỗi đó cần phải được áp dụng. Hãy thử tưởng tượng một nhà máy X nào đó.

Để bắt đầu tiến tới 4.0, toàn bộ các thiết bị,công cụ hay những phần quan trọng trong nhà máy đều phải gắn các chip cho phép đo lường các thông số cần thiết, cho phép lưu trữ những thông số này, đồng thời phải nối mạng để cho phép truy suất những thông số này từ xa. Chúng ta cần phải biết được tại một thời điểm hay trong một khoảng thời gian, những máy móc nào hoạt động, năng suất ra sao, công nhân nào sử dụng, hay hỏng những chỗ nào, bao lâu thì hỏng. Những dữ liệu này cần phải sẵn sàng mọi lúc, mọi nơi, và thời gian thực. Đây hay được gọi là Internet of Things (IoT). Để có thể bắt đầu CMCN4.0, IoT là công nghệ bắt buộc phải có, vì nó sẽ cung cấp nguyên liệu đầu vào cho những công nghệ tiếp theo trong chuỗi. Đó là DỮ LIỆU (Data). (Tất nhiên nó cũng cung cấp các tiện ích khác, như cho phép quản lý, điều hành nhà máy từ xa, giảm chi phí..v.v.)

Những dữ liệu này được thu thập trên diện rộng và trong thời gian dài sẽ tạo nên một công nghệ tiếp theo là Big Data. Tuy nhiên, không phải cứ nhiều dữ liệu thì được gọi là Big Data. Những dữ liệu được thu thập về cần phải được sắp xếp, dọn dẹp, xử lý một cách hợp lý để có thể nhận ra các pattern trong dữ liệu. Ví dụ, từ các dữ liệu đã thu thập được từ nhà máy, chúng ta có thể biết được tuổi thọ của từng chi tiết máy, lúc nào sắp hỏng, lúc nào phải thay để lên lịch thay thế. Chúng ta sẽ biết được tốc độ làm việc của từng thiết bị, hiệu quả làm việc của từng công nhân, từ đó có cách lên kế hoạch làm việc và sản xuất. (Big Data đang tạo ra một ngành nghề mới đang rất hot và khát nhân lực là Data Scientist – Nhà khoa học dữ liệu) Big Data sẽ làm nguyên liệu cho công nghệ tiếp theo.

Sau khi được xử lý một cách hợp lý, dữ liệu Big Data sẽ được dùng để huấn luyện cho các thuật toán Machine Learning (dân ta hay gọi là Máy học, nhưng mình thấy từ này không chuẩn lắm, cứ gọi là Machine Learning thôi. Deep Learning là một nhóm nhỏ của Machine Learning). Những Machine Learning này sẽ tự động phân tích để tìm ra các pattern trong dữ liệu đã có rồi dùng những pattern này để dự đoán các sự kiện trong tương lai. Ví dụ sử dụng các dữ liệu năng suất làm việc của máy móc và công nhân, để đưa ra một lịch làm việc hiệu quả nhất, công nhân nào làm với máy nào, vào lúc nào thì tốt nhất). Các thuật toán Machine Learning được phát triển lên một trình độ cao sẽ được gọi là AI. Khi đó máy tính sẽ có thể hỗ trợ/thay thế con người đưa ra những quyết định điều hành nhà máy.

Thế đó, CMCN4.0 cần ít nhất 3 công nghệ cốt lõi là IoT, Big DataAI mới thành công. Ngoài ra có thể nhắc đến thêm các công nghệ như Cloud, AR, VR trong từng ngành công nghiệp cụ thể.

Hiện nay các nước công nghiệp phát triển mới chỉ bắt đầu triển khai IoT vào các nhà máy. Big Data đã có nhưng do IoT chưa hoàn toàn sẵn sàng nên mới chỉ được áp dụng nhiều trong các tập đoàn công nghệ là chính. AI vẫn đang trong quá trình nghiên cứu. Do đó mọi người không phải vội vàng. Như bác Trương Đình Tuyển đã nói: “Việt Nam cứ nói nhiều về công nghiệp 4.0, Singapore, Trung Quốc, Hàn Quốc mới chỉ nhận họ đang ở kỳ 3.5 mà thôi”

Sự thật về Trí tuệ nhân tạo

Yann LeCun, người đứng đầu bộ phận phát triển AI của Facebook, nói AI còn chưa thông minh bằng một con chuột. Andrew Ng, chuyên gia hàng đầu về Machine Learning và AI cho rằng nghiên cứu thế đủ rồi, bắt đầu xây dựng AI thôi – nghĩa là giới khoa học còn chưa bắt tay vào xây dựng AI thực thụ.

Thế mà báo chí cứ chém như AI ngội bên cạnh bạn rồi.

Các thuật toán Machine Learning, công nghệ nền tảng của AI, vẫn đang chật vật xử lý các bài toàn đơn lẻ, như nhận diện hình ảnh, xử lý chữ viết tay mà còn gặp nhiều lỗi và vẫn hay bị lừa bởi những mẹo đơn giản. Khi nói về các thuật toán Machine Learning sẽ có 3 dạng chính:

  1. Các thuật toán Machine Learning cổ điển xử lý các bài toán dựa trên xác suất thống kê. Tức sau khi phân tích dữ liệu lịch sử, thuật toán nhận ra rằng sau khi các sự kiện A, B, C diễn ra, thì có 70% khả năng sự kiện D sẽ diễn ra, 30% sự kiện E sẽ diễn ra. Khi đó, mỗi khi 3 sự kiện A, B, C diễn ra, nó sẽ dự đoán sự kiện D sẽ diễn ra tiếp theo (do có xác suất lớn nhất) (trong thực tế sẽ phức tạp hơn và thuật toán cho độ chính xác cao hơn, tầm 80%-90%, tuy nhiên vẫn có thể lừa được)
  2. Các thuật toán Deep Learning. Các thuật toán này hoạt động theo mô phỏng hệ thần kinh của con người (neural network) cho độ chính xác cao hơn 9x% gì đó. Tuy nhiên các nhà khoa học vẫn chưa hoàn toàn hiểu được nguyên lý hoạt động của chúng. Tức là họ xây dựng một thuật toán neural network, cho dữ liệu đầu vào vào, rồi ngồi đợi kết quả đầu ra, sau đó họ thay đổi các thông số thiết lập sao cho thuật toán cho ra một kết quả có độ chính xác cao nhất. Còn vì sao thuật toán tính ra như thế thì chưa rõ ràng. Các nhà khoa học vẫn gọi neural network là blackbox, từ là họ chỉ biết nhét X và thì sẽ Y, còn chưa biết blackbox làm thế nào mà ra được cái kết quả đó.
  3. Reinforcement Learning (RL) (Học tăng cường). Đây chính là thuật toán đứng sau thành công của AlphaGo, AI liên tục đánh bại con người trong môn cờ vây. Nhiều người cho rằng đây chính là cột mốc máy móc vượt qua con người, nhưng không hẳn. RL được xây dựng theo kiểu thử sai, tức là học kiểu trâu bò, làm cho đến khi nào đạt được kết quả thì thôi. Tuy nhiên RL mới chỉ tỏ ra hiệu quả trong các trò chơi, đơn giản vì trò chơi có một mục tiêu hết sức cụ thể (Đạt điểm số cao hơn đối thủ), mỗi khi đi một nước cờ, thuật toán sẽ biết được nó sẽ được bao nhiêu điểm. Tuy nhiên để giải quyết các bài toán thực tế của con người, khi mà mục tiêu không cụ thể. Ví dụ giải quyết tắc đường ở Hà Nội thì lại là vấn đề khác.

Tóm lại, AI còn rất ngu, nên các bạn chưa phải quá lo. Tuy nhiên sức mạnh của AI đang tăng lên theo hàm số mũ, nên các bạn cũng phải tự chuẩn bị cho bản thân.

Sự thật về Robot

Robot, đã xuất hiện từ rất lâu trong sản xuất công nghiệp rồi chứ không phải bây giờ mới có. Từ CMCN lần 3, robot đã là giải pháp cho tự động hóa rồi. Tại Việt Nam, còn rất nhiều nhà máy vẫn hoạt động theo cách thủ công, dựa trên sức người, đến gần đây mới bắt đầu thay thế bằng robot mà báo chí cứ nói đó là CMCN4.0, điều đó là thiếu chính xác. Đấy mới chỉ là chúng ta đi từ 2.0 lên 3.0 thôi.

Robot trong CMCN 4.0 khác biệt so với các robot đã có là ở chỗ chúng được tăng cường bởi AI. Những robot trước đây chỉ có thể thực hiện một, hoặc một vài tác vụ lập trình từ trước, nếu muốn thực hiện các tác vụ mới thì phải lập trình lại, đấy là chưa nói đến việc phải thay thế phần cứng. Robot 4.0 được tăng cường bởi AI, sẽ dễ dàng học tập các tác vụ mới hơn. Con người chỉ cần cung cấp dữ liệu liên quan đến tác vụ, AI sẽ tự học và tìm cách thực hiện tác vụ đó, thậm chí là cải tiến cách thực hiện qua thời gian.

Tuy nhiên các giới hạn về phần cứng sẽ hạn chế rất nhiều khả năng của robot4.0. Con người có thể dễ dàng thực hiện nhiều thao tác phức tạp nhờ kết cấu tự nhiên của bàn tay. Chúng ta có thể vặn ốc vít, hàn xì, vung búa với hai bàn tay. Nhưng robot sẽ cần 1 bàn tay cho mỗi một công cụ. Việc robot mô phỏng bàn tay của con người là có thể nhưng rất phức tạp và cho đến nay chưa có ai thành công.
Đường đến Terminator còn rất xa!

Tác động của AI & Robots 4.0

Theo đánh giá của cá nhân mình, thì AI sẽ tác động đến giới cổ cồn trắng (nhân viên văn phòng) nhiều hơn cổ cồn xanh (lao động chân tay). Vì như đã nói, các giới hạn về mặt phần cứng sẽ hạn chế rất nhiều khả năng linh hoạt của robot, do đó các công nhân con người vẫn sẽ có những chỗ đứng nhất định trong dây chuyền sản suất. Nhưng nhân viên văn phòng thì lại khác, sự tiên tiến của các thuật toán Machine Learning cộng với khả năng tính toán vượt trội của máy tính thời nay, AI sẽ chẳng mấy chốc thay thế được con người. Lớp nhân viên văn phòng bị thay thế đầu tiên sẽ là những người thuộc lớp giữa (mid-level) của quá trình hoạt động trong công ty. Quá trình sẽ như sau:

Công ty đầu tư xây dựng một AI. Quá trình này khá đơn giản, chỉ cần một server đủ mạnh, một mã nguồn AI, và một ổ cắm điện là AI có thể hoạt động. AI sẽ theo dõi và chia nhỏ nội dung công việc của từng vị trí công việc (kế toán, pháp chế, admin ..v.v.), những phần AI có thể đảm nhiệm được ngay, AI sẽ làm, những phần chưa làm được sẽ để dành cho con người (công ty có thể thuê nhân viên hoặc outsource). Tuy nhiên, AI vẫn sẽ liên tục theo dõi và cập nhật dữ liệu về quá trình thực hiện tất cả các phần, cả phần AI làm được lẫn chưa làm được. Cái nào AI làm được rồi, sẽ cải tiến tốt hơn. Phần nào AI chưa làm được, nó sẽ học cách làm thông qua dữ liệu làm việc của con người. Như vậy AI sẽ dần dần, thay thế con người từng bước một. Cứ như thế, từ mid-level, AI sẽ tiến tới thay thế gần như toàn bộ công ty, trừ giới lãnh đạo cấp cao, những người vạch ra đường lối hoạt động.

Tất nhiên khi có công việc cũ mất đi thì sẽ có công việc mới xuất hiện, nhưng sẽ có một giai đoạn bước đệm lúc nào AI đã thay thế con người trong công việc cũ mà con người lại chưa sẵn sàng cho công việc mới. Nguy cơ bị thay thế đối với những người trung niên sẽ lớn hơn giới trẻ do họ khó thích nghi hơn (trình độ, tuổi tác khiến họ khó có thể thay đổi công việc)

Nguồn: Nguyễn Linh tại group Quản Trị & Khởi Nghiệp

Tại sao chẳng ai quan tâm đến các Push Notifications trên Android & lời giải kĩ thuật đằng sau

Push Notifications trên Android

Push Notifications chẳng thể chạy được trên điện thoại Android. Và đây là lý do tại sao.

Gần đây tôi có thêm phần support cho Push Notifications trong Kayako App. Tôi đã test & ra mắt ứng dụng. Tưởng là mình đã làm tốt rồi, ai ngờ users của tôi lại trả lời là 95% thời gian app không hề hiển thị notifications. Ban đầu, tôi nghĩ là lỗi từ việc Push Notifications được mặc định chạy trên emulator & các thiết bị của tôi. Nhưng khi nghiên cứu sâu hơn, tôi phát hiện ra vấn đề thực ra không hề đơn giản như thế. Gần như 50% người dùng app Android bị ảnh hưởng bởi chuyện tương tự.

Vậy, vấn đề ở đây là gì?

Tuyển nhân viên android lương cao cho bạn

Push Notifications không hoạt động tốt trên 1 vài dòng điện thoại Android chuyên biệt.

Tôi dùng từ “không tốt” vì users nhận được push notifications khi mở ứng dụng nhưng không hề nhận được gì khi đóng ứng dụng, điều này trái với mục đích của các push notifications.

Tôi dùng từ “các dòng điện thoại Android” vì vấn đề này chỉ xảy ra trên các điện thoại được sản xuất bởi Xiaomi, Oppo, One Plus, Vivo, Lenovo, Huawei, Vivo, Samsung…

Lý do & cách khắc phục

Để hiểu rõ vấn đề này, đầu tiên bạn cần nắm được Android UI và hành vi được mong đợi từ Push Notifications.

Trên Android, chúng ta có 3 buttons ở đáy của Navigation Bar. Khi click button vuông sẽ mở ra màn hình Recents. Màn hình Recents sẽ liệt kết tất cả các tasks hoặc apps đang hoạt động được mở gần đây. Bạn có thể xóa các ứng dụng này bất cứ lúc nào.

Trên stock ROMs (hệ thống vận hàng của Android được tùy chỉnh bởi các nhà sản xuất thiết bị), xóa 1 ứng dụng đồng nghĩa sẽ “giết” ứng dụng đó và các background services của nó, trong khi chúng ta lại cần background services để hiển thị Push Notifications.

Khi server thông báo thiết bị Android của Push Notification mới, theo lẽ thường nó sẽ restart background services của ứng dụng để hiển thị notification đến user. Điều này hoàn toàn đúng vì background services sẽ tự động hiển thị push notifications.

Hình bên dưới cho thấy hành vi được mong đợi đối với vanilla ROMs. Đây là Android firmware gốc không được các nhà sản xuất tùy chỉnh.

Tuy vậy, 1 vài dòng điện thoại Android sử dụng app Kayako vẫn không nhận được Push Notifications khi ứng dụng được xóa khỏi màn hình Recents. Lý do là vì các nhà sản xuất điện thoại như Oppo, Xiaomi và One Plus sử dụng 1 stock ROM vô hiệu khả năng restart của background services với hầu hết các ứng dụng. Lúc này chúng ta phải quay lại nơi bắt đầu là chẳng có cách nào hiển thị Push Notifications.

May thay, những stock ROMs này có trang Settings để kích hoạt chức năng restart của background services. Mặc dù việc autostart của background services bị vô hiệu mặc định nhưng user có thể kích hoạt bằng tay.

Mục đích của các nhà sản xuất ở đây là để tiết kiệm pin và tăng hiệu suất. Người sử dụng app giờ sẽ phải mở setting app, điều hướng đến đúng trang, cuộn xuống danh sách ứng dụng và sau đó kích hoạt tính năng autostart cho app Kayako.

Nhưng khoan, tại sao những apps như Gmail và Slack cũng có những vấn đề này?

Những ứng dụng top như Gmail, Slack và Whatsapp được các stock ROMs này kích hoạt auto-launch mặc định.

apps-auto-launch

Tuy nhiên, app của bạn, cùng với rất nhiều app khác được cài đặt vô hiệu auto-launch mặc định.

Bạn không thể tìm thấy phần settings để kích hoạt autolaunch. Chúng nằm ở đâu?

Các bước để kích hoạt autolaunch cho 1 ứng dụng sẽ khác nhau tùy theo các nhà sản xuất vì đây không phải là tính năng native của Android và chuyên biệt theo stock ROMs.

Thậm chí thuật ngữ mà mỗi nhà sản xuất sử dụng cũng khác nhau. Tính năng autolaunch có thể ám chỉ đến app auto-start, start-up manager, auto-start manager, app optimisation, các apps được bảo về hoặc background app management.

Trang settings auto-launch cũng rất khó tìm. Đối với các thiết bị One Plus, bạn cần phải mở Settings, chọn Apps, sau đó icon bánh răng hiển thị trên toolbar, sau đó apps Auto-launch dưới sub-category Advanced ở phần dưới cùng.

Vậy vấn đề là gì?

Cuối cùng, user phải hoàn tất các bước này bằng tay vì tính năng không được thiết lập bằng máy tính trên tất cả các thiết bị.

Viết bài hỗ trợ user

Kelly O’Brien và tôi đã viết 1 bài để nhận diện tất cả các nhà sản xuất thiết bị đang có vấn đề với chuyện này, cũng như giải thích các bước để kích hoạt Push Notifications trên các thiết bị này. Đọc thêm tại đây.

Thông báo in-app cho users

Tôi đã hiển thị phần footer nhở trong trang Push Notifications Settings để users where the article is available to the user at all times.

Mở settings page in-app

Có nhiều câu trả lời trên Stack Overflow như cái này đề xuất lập trình khả năng mở trang settings được đề cập ở trên bằng cách detect nhà sản xuất thiết bị.

Nguồn: TopDev via medium.freecodecamp.com

Tham khảo thêm các vị trí việc làm it hấp dẫn tại đây

Vì sao SQL tốt hơn NoSQL? (Phần 1)

Kể từ khi máy tính chào đời, chúng ta đã chứng kiến sự phát triển về khối lượng data, đòi hỏi công nghệ lưu trữ data, xử lí và phân tích cũng phải được nâng tầm theo. Trong thập kỉ vừa qua, software developer xem SQL như là một di tích khi không thể theo kịp tốc độ phát triển của data volume, dẫn đến sự nổi lên của NoSQL: MapReduce và Bigtable, Cassandra, MongoDB, và nhiều nữa.

Thế nhưng SQL đã bắt đầu sống dậy. Tất cả các bên cung cấp dịch vụ cloud giờ còn có cả dịch vụ managed relational database như: Amazon RDS, Google Cloud SQL, Azure Database cho PostgreSQL. Theo Amazon, PostgreSQL- và MySQL-compatible database Aurora database của hãng là dịch vụ có tốc độ phát triển nhanh nhất trong lịch sử của AWS. SQL interfaces của Hadoop và Spark liên tục được cải thiện. Tháng vừa rồi thì Kafka launched SQL support.

Trong bài viết này chúng ta sẽ tìm hiểu nguyên nhân cho sự hồi sinh của SQL, cũng như ý nghĩa của nó đối với tương lai của data engineering và analysis.

Part 1: A New Hope – Một hi vọng mới

Để hiểu được vì sao SQL trở lại ta phải quay về cội nguồn xuất phát của nó.

Câu chuyện của chúng ta bắt đầu với ngiên cứu của IBM trong những năm đầu của thập niên 70s. Khi đó, các ngôn ngữ query vẫn còn dựa rất nhiều vào thuật toán phức tạp. Donald Chamberlin và Raymond Boyce, hai chàng trai còn “non” trong thế giới lập trình, đã vô cùng ấn tượng với relational data model nhưng họ nhận ra các ngôn ngữ query sẽ chỉ làm “nghẽn lỗ chai”. Do đó cả hai quyết tâm tạo ra một ngôn ngữ query mới, dễ hiểu cho ngay cả user không giỏi toán học  và computer programming.

Đây là thời điểm trước cả internet, máy tính cá nhân, khi mà C chỉ vừa mới được giới thiệu với toàn thế giới, đã có 2 nhà khoa học máy tính trẻ nhận ra rằng sự thành công của ngành công nghệ đa phần đến từ việc phát triển một nhóm người dùng thay vì bỏ công đào tạo các chuyên gia lập trình. Họ muốn một ngôn ngữ query dễ đọc như tiếng anh.

Kết quả là thế giới biết tới SQL vào năm 1974. và trong vài thập kỉ tiếp theo, SQL sẽ trở nên vô cùng nổi tiếng. Các database như System R, Ingres, DB2, Oracle, SQL Server, PostgreSQL, MySQL cũng nhanh chóng đô hộ cả ngành công nghệ software. SQL được xem như cầu nối tới database cũng như là lingua franca giúp tăng sự đa dạng cho ecosystem.

Trong một khoảng thời gian, SQL gần như là một ông hoàn cho đến khi Internet xuất hiện.

Part 2: NoSQL Strikes Back – NoSQL tấn công

Trong khi Chamberlin và Boyce đang phát triển SQL, cả hai đều không hay biết việc một nhóm engineer tại California đang thực hiện một project mà sau này đe dọa tới sự tồn tại của SQL. Nó có tên gọi là ARPANET, chào đời vào ngày 29 tháng 10 năm 1969.

Thế nhưng SQL vẫn sống khỏe cho đến khi một engineer khác xuất hiện và sáng tạo ra World Wide Web vào 1989.

Như cỏ dại sau mưa, Internet và Web phát triển mạnh mẽ, ảnh hưởng đến thế giới của chúng ta tại nhiều phương diện khác nhau, nhưng với cộng đồng data thì một vấn đề mới đã xuất hiện: các nguồn mới generate data với volume và vận tốc ngày càng cao.

Và khi Internet ngày càng to lớn thì cộng đồng cũng phát hiện rằng relational databases tại thời điểm đó không đủ khả năng để load khối lượng data như vậy dẫn đến hiện trạng overload của rất nhiều database khác nhau.

Ngay lúc đó 2 ông lớn Internet đã đột phá khi phát triển ra các distributed non-relational systems mới để cứu vãn tình hình: MapReduce (2004) và Bigtable (2006) bởi Google, Dynamo (2007) bởi Amazon. Chúng còn dẫn tới sự ra đời của các non-relational databases, bao gồm Hadoop, Cassandra MongoDB. Do các systems này được tạo ra từ con số không, chúng cũng xung đột với SQL, dẫn tới sự bùng nổ của NoSQL.

Không có gì ngạc nhiên khi cộng đồng software developer chào đón NoSQL vô cùng nồng nhiệt. Sao mà không phấn khích khi NoSQL vừa mới vừa đẹp, chứa đựng sức mạnh và qui mô lớn, cứ như rằng nó chính là con đường thành công dành cho engineer. Thế rồi vấn đề mới lại xuất hiện.

Developer nhanh chóng nhận ra việc thiếu vắng SQL hóa ra lại khiến mọi thứ khá giới hạn. Do mỗi NoSQL database đều có một ngôn ngữ query riêng cũng như qui luật riêng, kèm theo đó hệ ecosystem nghèo nàn khiến cho không chỉ việc học chúng đã khó mà kết nối các database tới app cũng trở nên phức tạp. Đó là chưa kể các công ty còn phải tự phát triển tool phù hợp cho riêng mình.

Những ngôn ngữ NoSQL này do còn mới nên chúng cũng chưa thật sự trưởng thành, trong khi với SQL thì đã có nhiều năm phát triển relational databases giúp các tính năng của nó đã được cải thiện. Do đó, sự non nớt của NoSQL khiến tăng mức độ phức tạp khi làm app. Sự thiếu vắng của JOINs cũng gây ra các vấn đề đối với data.

Một vài NoSQL databases đã thử phát triển những ngôn ngữ Query tương tự như “SQL” (Cassandra’s CQL) nhưng nó lại khiến mọi thứ tệ hơn với việc các engineers bị nhầm lẫn khi sử dụng nó.

Sau một thời gian khổ cực, ngày càng có nhiều developer chán nản với NoSQL.

(Hết phần 1)

Nguồn: TopDev via timescale

Bộ chuyển đổi lương Gross/Net nhanh và chuẩn xác nhất

Lương Gross là gì? Lương Net là gì?

Lương Gross được hiểu đơn giản là tổng thu nhập của người lao động, trong đó gồm tất cả các khoản đóng bảo hiểm và thuế. Lương thực lãnh của người lao động sẽ thấp hơn lương Gross vì họ sẽ phải trích ra một phần để đóng bảo hiểm và nộp thuế thu nhập cá nhân.

Lương Net được hiểu đơn giản là số tiền lương chính xác mà người lao động sẽ nhận được sau khi đã trừ hết tất cả các khoản chi phí bảo hiểm và thuế thu nhập cá nhân.

Ví dụ: Mức lương Gross là 8,000,000 VND sẽ tương đương với mức lương Net 7,160,000 trong trường hợp đóng bảo hiểm trên lương chính thức
– Vậy nên khi NTD quyết định trả bạn mức lương Gross là 8,000,000 VND, thì lương Net của bạn sẽ là 7,160,000 và ngược lại. Về cơ bản lương bạn nhận được vẫn không đổi dù bạn đàm phán lương Net hay Gross.
Theo quy định mới nhất (Từ 1/7/2020)

 

Ví dụ: Mức lương Net là 10,000,000 VND
– Nếu bạn đóng bảo hiểm trên mức lương chính thức lương Gross sẽ là 11,173,184 VND
– Trong đó:

  • Bảo hiểm xã hội chiếm 8% tương đương 893,855 VND
  • Bảo hiểm y tế chiểm 1.5% tương đương 167,598 VND
  • Bảo hiểm thất nghiệp chiểm 1% tương đương 111,732 VND

Theo quy định mới nhất (Từ 1/7/2020)

 

Tool chuyển lương Gross sang Net

Lợi ích khi bạn biết rõ về Gross/Net

Khi bạn có sự hiểu biết về lương Gross và lương Net, bạn sẽ dễ dàng tránh được những hiểu lầm không đáng có với Công ty/ Doanh nghiệp tuyển dụng bạn. Ngoài ra bạn cũng sẽ dễ dàng bảo vệ và đòi hỏi được những quyền lợi đáng có của bản thân khi ký hợp đồng lao động.

Khi thỏa thuận dựa trên lương Net bạn sẽ nhận được đúng số tiền mà bạn đã thỏa thuận từ trước mà không cần phải tính toán hay chịu bất kỳ khoản chi phí nào vì công ty sẽ là người giải quyết những vấn đề đó.

Ngược lại, khi thỏa thuận dựa trên lương Gross thì bạn sẽ nhận được đầy đủ tất cả các quyền lợi về bảo hiểm, đồng thời bạn cũng có thể tự chủ động để tính toán mức lương bạn sẽ nhận được.

Nhìn chung, lương Gross và Net sẽ không làm bạn quá đau đầu khi bạn hiểu rõ về nó, nếu bạn hiểu rõ về nó bạn vẫn sẽ nhận được đúng số tiền mà bạn đã thỏa thuận dù là lương Gross hay Net.

Cách đơn giản hơn hết là bạn tự đặt cho mình 1 mức lương bạn có thể chấp nhận được cho vị trí đó. Sau đó bạn chỉ cần lấy kết quả từ tool chuyển đổi lương Gross Net của TopDev để deal với công ty. Với cách này, bạn chắc chắn sẽ không bao giờ bị “hố” khi deal lương với bất kỳ công ty nào!

 

“Chúng tôi không làm outsource, chúng tôi chính là source!”

Cốc cốc – trình duyệt tìm kiếm đầu tiên “made in Việt Nam” chính thức ra mắt vào tháng 05/2013, với tham vọng “điên rồ”trở thành trình duyệt số một tại Việt Nam, sau đó là vươn ra thế giới. Khi thị trường các trình duyệt tìm kiếm ở Việt Nam gần như là sân chơi của các “ông lớn” như Firefox, Safari, Chrome,… tham vọng đó không khỏi khiến nhiều người “lắc đầu ngao ngán”.

Nhưng chỉ 1 năm sau (năm 2014), Cốc Cốc đã khiến giới truyền thông trong và ngoài nước phải bất ngờ, thán phục khi trở thành trình duyệt web phổ biến thứ hai tại Việt Nam với 14 triệu lượt người dùng hàng tháng, vượt qua cả IE, Firefox, Safari để vươn lên thứ hai và đe dọa soán “ngôi vương” mà Chrome.

Hiện nay Cốc Cốc là công cụ tìm kiếm mặc định trên Mozilla Firefox, chứng tỏ mức độ phổ biến của 1 trong những công cụ tìm kiếm phổ biến hàng đầu tại Việt Nam với hơn 22 triệu người dùng và gần 400 triệu lượt tìm kiếm mỗi tháng. Thậm chí Google Trends cũng dự đoán Cốc Cốc sẽ vượt qua Chrome tại Việt Nam.

“Bạn muốn tìm hiểu các bí quyết kĩ thuật, kinh nghiệm làm Marketing đứng đằng sau 1 trong những công cụ tìm kiếm hàng đầu như Cốc Cốc?”

Với đội ngũ hơn 500 nhân sự, các chuyên gia & kĩ sư của Cốc Cốc mang trong mình sứ mệnh nâng cao chất lượng cuộc sống của người Việt thông qua nhiều sản phẩm công nghệ dành riêng cho người Việt như Bản đồ Cốc Cốc, Quảng cáo Cốc Cốc, Cốc Cốc Big Data, Alô Cốc Cốc… Đây đều là những sản phẩm ứng dụng các nền tảng công nghệ mới, thu hút sự chú ý lớn của người dùng lẫn các Tech team khác.

“Chúng tôi không làm outsource, chúng tôi chính là source!” chính là tuyên ngôn thể hiện tinh thần trẻ và tiên phong trong đổi mới sáng tạo, luôn sẵn sàng trao quyền cho mọi thành viên để đưa ra quyết định dựa trên mục tiêu chung của Cốc Cốc. Nhìn chung, bên cạnh một môi trường tốt để trau dồi kiến thức và kinh nghiệm, mang đến chế độ lương thưởng xứng đáng với khả năng và đóng góp cùng nhiều chế độ phúc lợi hấp dẫn như hỗ trợ chăm sóc sức khỏe lên đến 24 triệu/năm, việc phát triển những sản phẩm công nghệ mà mọi người xung quanh đều sử dụng chính là niềm tự hào mà Cốc Cốc mong muốn mang đến cho mỗi cá nhân. Ngược lại, sự chủ động, tinh thần trách nhiệm và khả năng làm việc theo đội nhóm là những gì mà Cốc Cốc muốn nhìn thấy ở con người Cốc Cốc.

“Bạn muốn ứng tuyển gia nhập môi trường công nghệ năng động này?”

Tháng 12 này, Cốc cốc sẽ tham gia Vietnam Web Summit 2017 sẽ là cơ hội tuyệt vời để gặp gỡ cac chuyên gia đến từ Cốc cốc chỉ 1 click tham dự TẠI ĐÂY

Top 15 thư viện Python tốt nhất cho Data Science trong 2022

Khi Python ngày càng nhận được nhiều sự quan tâm của cộng đồng Data Science trong những năm gần đây, tôi đã muốn tổng hợp cho các data scientists và engineers những thư viện được sử dụng nhiều nhất, dựa trên kinh nghiệm làm việc của bản thân.

Và vì tất cả các thư viên đều là nguồn mở, nên chúng tôi đã thêm các commits, số lượng các contributors và các chỉ số khác từ Github với vai trò là các chỉ số proxy thể hiện mức độ nổi tiếng của thư viện đó

Việc làm python lương cao trong tháng

Các thư viện core

1. NumPy (Commits: 15980, Contributors: 522)

Khi bắt đầu giải quyết task về khoa học bằng Python, tập hợp phần mềm được thiết kế riêng cho scientific computing trong Python sẽ không thể không hỗ trợ SciPy Stack của Python (đừng nhầm lẫn với thư viện SciPy – là 1 phần của stack này, và cộng đồng của stack này). Tuy nhiên, stack này khá rộng, có hơn cả tá thư viện trong nó và chúng ta thì lại muốn tập trung vào các core packages (đặc biệt là những packages quan trọng nhất).

Package cơ bản nhất, khi computation stack về khoa học được xây dựng là NumPy (viết tắt của Numerical Python), cung cấp rất nhiều tính năng hữu ích cho các phần operations trong n-arrays & matrics trong Python. Thư viện này cung cấp khả năng vector hóa các vận hành về toán trong type array NumPy, giúp cải thiện hiệu suất và theo đó là tốc độ execution.

2. SciPy (Commits: 17213, Contributors: 489)

SciPy là 1 thư viện phần mềm cho engineering và khoa học. Một lần nữa bạn cần phải hiểu sự khác biệt giữa SciPy Stack và thư viện SciPy. SciPy gồm các modules cho đại số tuyến tính, optimization, tích hợp và thống kế. Chức năng chính của thư viện SciPy được xây dựng trên NumPy, và arrays của nó sẽ tận dụng tối đa NumPy. Nó mang đến rất nhiều hoạt động hữu ích liên quan đến số như tích hợp số, optimization… qua các submodules chuyên biệt. Các hàm trong tất cả các submodules của SciPy đều được document tốt.

3. Pandas (Commits: 15089, Contributors: 762)

Pandas là 1 package Python được thiết kế để làm việc với dữ liệu đơn giản, trực quan, được “gắn nhãn” và có liên hệ với nhau. Pandas là công cụ hoàn hảo để tinh chỉnh và làm sạch dữ liệu. Pandas được thiết kế hỗ trợ cho các thao tác, tập hợp và visualize dữ liệu.

Có 2 data structure chính trong thư viện này:

“Series” — 1 chiều

“Data Frames”, 2 chiều

Ví dụ, khi muốn nhận Dataframe mới 2 loại structure này, bạn sẽ nhận DF bằng cách nối 1 hàng đơn với 1 DataFrame bằng cách đem tới 1 Series:

Danh sách những thứ bạn có thể làm với Pandas:

  • Dễ dàng xóa và thêm cột từ DataFrame
  • Chuyển data structures đến các objects DataFrame
  • Xử lý các data bị mất, như NaNs
  • Khả năng bhóm lại theo chức năng

Lịch sử Google Trends

Lịch sử pull requests của GitHub

Visualization.

4. Matplotlib (Commits: 21754, Contributors: 588)

Một core package của SciPy Stack và 1 thư viện Python khác được xây dựng riêng cho việc generation các visualizations mạnh mẽ, đơn giản là Matplotlib. Matplotlib là 1 phần của phần mềm giúp cho Python (cùng với sự hỗ trợ của NumPy, SciPy và Pandas) trở thành đối thủ nổi bật với các công cụ khoa học như MatLab hoặc Mathematica.

Tuy nhiên, thư viện này ở cấp độ thấp, đồng nghĩa là bạn sẽ cần phải viết nhiều code hơn để tiếp cận các cấp độ visualization cao cấp và bạn sẽ phải nỗ lực hơn so với khi sử dụng các công cụ cấp cao, tuy nhiên nỗ lực này là hoàn toàn xứng đáng.

Chỉ cần nỗ lực 1 chút, bạn có thể tạo được các visualization bất kì:

  • Line plots;
  • Scatter plots;
  • Bar charts và Histograms;
  • Pie charts;
  • Stem plots;
  • Contour plots;
  • Quiver plots;
  • Spectrograms.

Có rất nhiều công cụ để tạo nhãn, lưới, các biểu tượng/ kí hiệu/ chú giải và rất nhiều yếu tố format khác với Matplotlib. Về cơ bản, mọi thứ đều có thể custom được.

Thư viện này còn được rất nhiều platform hỗ trợ và tận dụng các GUI kít khác nhau để mô tả các visualizations kết quả. Thay đổi các IDEs (như IPython) sẽ hỗ trợ chức năng của Matplotlib.

Có vài thư viện bổ sung giúp việc visualization trở nên dễ dàng hơn.

  Dùng Python như các CLI tool

5. Seaborn (Commits: 1699, Contributors: 71)

Seaborn hầu như tập trung vào việc visualization của các models thống kê; các visualizations như thế gồm heat maps tổng hợp dữ liệu nhưng vẫn mô tả được toàn bộ mức độ phân tán. Seaborn được phát triển dựa trên Matplotlib.

6. Bokeh (Commits: 15724, Contributors: 223)

Một thư viện visualization cực hay khác là Bokeh, hướng đến các visualization tương tác. Trái ngược với thư viện trước, Bokeh hoàn toàn độc lập so với Matplotlib. Bokeh tập trung chính vào tính tương tác và nó tạo các presentations qua các hệ điều hành hiện đại theo style của Data-Driven Documents (d3.js).

7. Plotly (Commits: 2486, Contributors: 33)

Plotly là toolbox cho web để xây dựng các visualizations, APIs được xây dựng bằng vài ngôn ngữ lập trình (như Python chẳng hạn). Có rất nhiều graphics mạnh mẽ, sáng tạo trên trang plot.ly. Để sử dụng Plotly, bạn sẽ cần set up API key riêng. Các graphics sẽ được xử lý phía server và được post lên internet, tuy nhiên vẫn có cách để ngăn việc này.

8. SciKit-Learn (Commits: 21793, Contributors: 842)

Scikits là các packages bổ sung của SciPy Stack được thiết kế cho các chức năng chuyên biêt như xử lý ảnh và hỗ trợ Machine Learning. Riêng với mảng Machine Learning, một trong những ưu điểm nổi bật của các packages này là scikit-learn. Package được xây dựng trên nền tảng của SciPy và tận dụng các operations về toán.

Scikit-learn có giao diện đơn giản, nhất quán, exposes a concise and consistent interface to the common machine learning algorithms, hỗ trợ việc mang Machine Learning vào các hệ thống production trở nên đơn giản hơn. Thư viện này bao gồm các code chất lượng và documentation hay, dễ sử dụng, hiệu suất cao, là chuẩn mực thực tế cho xây dựng Machine Learning bằng Python.

Deep Learning — Keras / TensorFlow / Theano

Liên quan đến Deep Learning, 1 trong những thư viện nổi bật và tiện ích dành cho Python là Keras, có thể hoạt động trên nền tảng của TensorFlow hoặc Theano.

Xem chi tiết bên dưới.

  Chiến trường sinh tử phiên bản lập trình : Python vs Ruby vs Golang

9. Theano. (Commits: 25870, Contributors: 300)

Theano là package Python định dạng các arrays đa chiều tương tự như NumPy, đi kèm với các operation về toán và expressions. Thư viện này được compiled, chạy hiệu quả trên tất cả các architectures. Do đội ngũ Machine Learning của Université de Montréal, Theano được sử dụng chính cho các hoạt động liên quan đến Machine Learning.

Lưu ý là Theano tích hợp với NumPy ở mức độ operation cấp thấp. Thư viện này cũng tối ưu hóa khả năng sử dụng GPU & CPU, giúp cho hiệu năng của computation thiên về data nhanh chóng hơn.

Hiệu quả và sự ổn định cũng mang đến những kết quả chính xác hơn, dù đó là những giá trị rất nhỏ như computation của log(1+x) sẽ cho ra kết quả chính xác đối với các giá trị nhỏ nhất của x.

10. TensorFlow. (Commits: 16785, Contributors: 795)

Do các developer của Google phát triển, TensorFlow là thư viện nguồn mở của graphs computations thuộc luồng dữ liệu, thích hợp với Machine Learning. TensorFlow đáp ứng các requirement cao cấp trong môi trường Google để train Neural Networks và thư viện kế nhiệm của DistBelief – 1 hệ thống Machine Learning dựa trên Neural Networks. Tuy nhiên, TensorFlow không chỉ sử dụng cho mục đích khoa học trong Google mà có thể áp dụng trong các dự án thực tế.

Tính năng quan trọng của TensorFlow is hệ thống nút đa layer, cho phép huấn luyện các neural networks trên datasets lớn 1 cách nhanh chóng, hỗ trợ khả năng nhận diện giọng nói và định vị vật thể trong ảnh của Google.

11. Keras. (Commits: 3519, Contributors: 428)

Keras là thư viện nguồn mở được viết bằng Python dùng để build các Neural Networks ở cấp độ cao cấp của interface. Thư viện này đơn giản và có khả năng mở rộng cao. Keras sử dụng backend là Theano hoặc TensorFlow nhưng gần đây, Microsoft đã cố gắng tích hợp CNTK (Cognitive Toolkit của Microsoft) thành back-end mới.

Cách tiếp cận đơn giản về thiết kế nhắm đến quy trình experimentation dễ dàng, nhanh chóng từ việc build các compact systems.

Bắt đầu dùng Keras rất đơn giản, tiếp theo là prototyping nhanh. Keras được viết bằng Python, theo mô-đun và mở rộng được. Không chỉ đơn giản và có tính định hướng cao, Keras vẫn hỗ trợ modeling rất mạnh mẽ.

Ý tưởng chung về Keras là dựa trên các layers và mọi thứ khác cũng đều được xây dựng xung quanh các layer này. Data được chuẩn bị trong các tensors, layer đầu tiên chịu trách nhiệm về input của các tensors, layer cuối cùng chịu trách nhiệm output và model được build ở giữa.

12. NLTK (Commits: 12449, Contributors: 196)

Tên của bộ thư viện này là viết tắt của Natural Language Toolkit & thư viện này được sử dụng cho các tasks đơn giản liên quan đến Natural Language Processing. NLTK từng dùng để hỗ trợ NLP & các lĩnh vực liên quan dạy và research (các lĩnh vực như Linguistics, Cognitive Science Artificial Intelligence…)

Chức năng của NLTK là giúp thực hiện các operations như text tagging, classification và tokenizing, định dạng các thực thể name, xây dựng cây corpus tiết lộ các dependencies inter & intra-sentence, stemming, semantic reasoning. Tất cả các building blocks hỗ trợ việc xây dựng các hệ thống research phức tạp cho các tasks khác nhau, ví dụ như các phân tích tâm lý hay tổng hợp tự nhiên.

13. Gensim (Commits: 2878, Contributors: 179)

Là 1 thư viện Python nguồn mở, Gensim implement các công cụ làm việc với vector space modeling và topic modeling. Thư viện này được thiết kế phù hợp với các text lớn, chỉ có trong xử lý in-memory. Sử dụng NumPy data structures và SciPy operations sẽ mang đến hiệu quả cực tốt. Cả hai đều hiệu quả và dễ sử dụng.

Gensim được thiết kế để dùng với các digital text thô và chưa được structure. Gensim implement các thuật toán như Dirichlet processes theo thứ bậ (HDP), phân tích ngữ nghĩa tiềm ẩn – latent semantic analysis (LSA) và phân bổ Dirichlet tiềm ẩn (LDA), cũng như tf-idf, projections ngẫu nhiên, word2vec và document2vec hỗ trợ việc kiểm tra các text để tái hiện lại các patterns words trong set documents (thường được đề cấp đến như 1 corpus). Tất cả các thuật toán đều là unsupervised —input duy nhất là corpus.

14. Scrapy (Commits: 6325, Contributors: 243)

Scrapy là thư viện để tạo các chương trình crawling, được biết đến với cái tên thông dụng spider bots, để thu hồi dữ liệu đã structure như thông tin liên hệ hoặc các URLs từ web.

Scrapy được viết bằng Python, nguồn mở, mục đích chính là để scraping nhưng cũng đóng vai trò như 1 framework đầy đủ tính năng, có thể tập hợp data từ APIs và hoạt động như crawlers đa năng.

Thư viện này còn hỗ trợ nguyên tắc Don’t Repeat Yourself nổi tiếng trong thiết kế interface design — nó khuyến khích người dùng viết code chung, universal, tái sử dụng được, để từ đó xây dựng và scaling các crawler lớn.

Kiến trúc của Scrapy được xây dựng xung quanh class Spider, đóng gói set instruction theo sau bởi Crawler.

15. Statsmodels (Commits: 8960, Contributors: 119)

statsmodels thư viện Python cho phép người dùng thực hiện data exploration bằng rất nhiều methods ước lượng các mô hình thống kê và thực hiện các xác nhận và phân tích thống kê.

Thư viện này cũng có nhiều tính năng hữu ích như các thống kê mô tả & kết quả khi sử dụng các models hồi quy tuyến tính, các mô hình tuyến tính tổng quán, mô hình lựa chọn rời rạc, mô hình tuyến tính, mô hình phân tích chuỗi thời gian, các estimators đa dạng khác.

Thư viện này còn cung cấp các chức năng phát họa được thiết kế chuyên biệt trong phân tích thống kê và được tinh chỉnh để tối ưu hiệu suất với các sets big data của data thống kê.

Kết luận

Trên đây là những thư viện được rất nhiều data scientistengineers đánh giá cao. Bên dưới là biểu đồ chi tiết về hoạt động trên Github của mỗi thư viện:

Dĩ nhiên, danh sách này vẫn chưa hoàn thiện và còn rất nhiều thư viện, framewoks đáng lưu ý khác. Chẳng hạn như các packages khác nhau của SciKit tập trung vào các domains riêng biệt như SciKit-Image làm việc với hình ảnh.

Nguồn: TopDev via medium.com

5 điều phiền toái nhất của CSS

CSS có tuyệt vời không? Những điều bực bội sau đây là quan điểm cá nhân tôi.

Vào năm 1996, các trình duyệt vẫn chưa hỗ trợ hoàn toàn CSS khiến cho các we designer phải code khá nhiều để lách nhằm cho CSS của họ chạy đúng. Sự thật là cho đến trước năm 1999 thì không có bất kỳ trình duyệt nào tích hợp đầy đủ các đặc tả của CSS1. Internet Explorer 5.0 dành cho Macintosh được phát hành vào tháng 3/2000 là trình duyệt đầu tiên hỗ trợ hoàn toàn CSS1. CSS2 đã được phát hành vào năm 1999 nhưng các web desginer đã do dự khi sử dụng nó bởi vì vẫn chưa có browser nào hỗ trợ hoàn toàn.

Cấp độ thứ ba của CSS được bắt đầu phat triển vào khoảng năm 1998. Cho đến năm 2009 nó vẫn đang được phát triển. CSS3 mang những thứ mới mẻ đáng được chờ đợi như rounded corners, shadows, gradients, transitions, animations, cũng như là các layout mới như multi-columns, flexible box hay grid layouts.

May mắn là ngoài những nỗ lực của W3C nhằm cải tiến những đạc tả kỹ thuật để đáp ứng nhu cầu của developer, cộng đồng front-end đã cho ra đời nhiều giải pháp thông minh xoay quanh việc làm cho CSS dễ dàng hơn trong một môi trường phức tạp. Giới thiệu về các biến CSS, loại bỏ kiểu dáng dự phòng khiến cho việc viết CSS trở nên ngắn gọn, dễ đọc và dễ quản lý hơn.

CSS chắc chắn là một cải tiến của HTML thuần già cỗi nhưng những hạn chế của nó thật đáng kinh ngạc và thiếu sự hỗ trợ của ngành công nghiệp đã kềm hãm các nhà thiết kế  trong nhiều năm, đó là lý do tại sao nó không chiếm được một chỗ trong tim của các developer 🙂

Ngay cả ngày nay, cho dù bạn gọi mình là “full stack developer” hay là “front end developer” … dù bạn có “một năm kinh nghiệm” hay “8 năm kinh nghiệm”, CSS vẫn sẽ ném bạn vào vòng lặp ngay tắp lự.

Sau đây là một danh sách các vấn đề chủ yếu của CSS:

1. CSS là ‘hướng markup’ chứ không phải ‘hướng design’

Các designer nên dành nhiều thời gian để thiết kế các site trông đẹp hơn và bớt thời gian vô dụng với những cái tag markup và vấn đề tương thích trình duyệt. Khi tôi nói “hướng markup” có nghĩ rằng các công cụ thiết kế CSS ép người dùng qua chế độ lập trình thay vì nên giúp họ “hướng design”. CSS trở nên tệ bởi vì nó ép các designer nghĩ về kỹ thuật hơn là theo quan điểm thiết kế.

2. Cuộc chiến trình duyệt

Bạn thiết kế một layout hoàn hảo cho website mới sắp ra mắt. Nhưng giờ khi chuyển đổi tất cả các file Photoshop PSD hay Sketch đẹp đẽ sang mã lập trình là một thử thách lớn. Thậm chí nó không phải thử thách nữa mà là rào cản không chỉ bởi vì bạn không biết code mà còn ở sự khác biệt ở cách hiển thị của các trình duyệt khác nhau, ngay cả khi bạn viết mã CSS đúng. Càng bực bội hơn nữa khi mà sửa lỗi ở browser này sẽ tạo ra một lỗi lớn khác ở browser khác

Mẹo nhanh:

  • Luôn dùng Normalize.css. Nó làm cho browser hiển thị tất cả các element đúng đắn hơn theo chuẩn hiện đại. It makes browsers render all elements more consistently and in line with modern standards. Chính xác là chỉ nhắm mục tiêu vào các style cần bình dân hoá.
  • Bạn có thể dùng các CSS Frameworks như BootstrapBulma & Materialize. Chúng tương thích với hầu hết các browser phổ biến.
  • Hãy thử dùng các công cụ CSS3 auto-generator. Nó giúp các developer tạo ra các mã CSS cross-browser và tùy chỉnh toàn diện bao gồm border-radiustext-shadow, RGBa, box sizing và box resizing. Ví dụ như: CSS3 Generator.
  • Validate: W3C Validation Service sẽ xác thực nhiều version của XHTML và HTML, nó cũng hiển thị nhiều thông điệp báo lỗi và cảnh báo hữu ích để giúp người dùng tạo nên một website hoàn hảo. W3C Validator: http://validator.w3.org/
    W3C Css Validator: http://jigsaw.w3.org/css-validator/
  • Testing: Không khả thi để thực hiện việc kiểm tra trang web của bạn trong thiên hà rất nhiều trình duyệt và hệ điều hành, các công cụ kiểm tra chéo trình duyệt đã đến để giải cứu bạn! Bạn có thể sử dụng BrowsershotsBrowserStackCross Browser Testing...

3. Responsive Layout

Ngày càng nhiểu thiết bị với nhiều độ phân giải, kích thước khác nhau. Thiết bị mới với kích thước màn hình mới đươc phát triển mỗi ngày, mỗi một trong số các device đó lại có sự khác nhau về kích thước, chức năng và kể cả màu sắc. Một số thì nằm ngang, một số lại nằm dọc, số khác thì hình vuông. Như chúng ta cũng biết về sự nổi tiếng của iPhone, iPad và các smartphone cao cấp đều có chế độ xoay màn hình. Vậy design thế nào trong các tình thế này?

Ngoài việc thiết kế cho cả nằm ngang và dọc, chúng ta phải cân nhắc đến hàng trăm sự khác nhau của màn hình. Bên cạnh đó, rất nhiều user không mở rộng hoàn toàn browser của họ, khiến tồn tại hàng tỷ kích thước màn hình khác nhau.

Mẹo nhanh:

  • Ưu tiên và Ẩn Nội dung trên điện thoại di động. Theo tôi, sẽ tốt khi hiển thị các nội dung có liên quan nhất trên màn hình nhỏ. Đôi khi việc loại bỏ nội dung trên điện thoại di động là không thể. Trong trường hợp đó, bạn có thể ẩn nội dung đằng sau các vùng có thể áp dụng được.
  • Dùng Scalable Vector Graphics (SVGs). Không như các định dạng ảnh truyền thống như PNG hay JPG, SVG dễ dàng phóng to từ nhỏ đến lớn mà không giảm chất lượng. SVG thường nhỏ hơn nhiều so với các ảnh khác, vì thế nó cũng giúp website của bạn load nhanh hơn
  • Khi dùng các input(buttons, forms…), tập trung vào thiết kế “thiết kế cho người béo” bằng cách làm cho kích cỡ của các nút và khu vực nhấn được thật to ra
  • Nếu là các smartphone có màn hình nhỏ, các nút nên có kích thước 44 điểm theo như khuyến nghị của Apple tại iOS Human Guidelines
  • Test thiết kế của bạn với ít nhất 5 user trên thiết bị của họ
  • Sử dụng CSS framework cho responsive designs như Bootstrap. 

4. Làm màu đỏ thêm xanh

Đa số các khách hàng đến với các yêu cầu kỳ lạ, sai kỳ vọng, thêm các tính năng mà chưa bao giờ được trao đổi khiến cho việc chỉnh sửa không dừng và luôn lặp lại. Các khách hàng thay đổi xoành xoạch mỗi giây, đặc biệt là khi thiết kế, nhà thiết kế cuối cùng cảm thấy bị chê bai hoặc ngược đãi (đó là lý do tại sao chúng tôi có các trang web như Khách hàng đến từ địa ngục)

Mẹo nhanh:

  • Tạo các bản mẫu hoạt họa là cách tốt để trình diễn ý tưởng của bạn. Dùng các tool như  Adobe XD, SketchInVision etc. Chỉ bắt đầu quá trình phát triển khi thiết kế đã được duyệt.
  • TỐt nhất là thiết lập một timeline phù hợp khi bạn bắt đầu. Mọi nhu cầu phát sinh thêm vào timeline và cột mốc của dự án sẽ sinh ra những điều không mong đợi.
  • Giữ bình tĩnh!! Đừng để cảm xúc xâm chiếm bạn, hãy nhớ rằng các khách hàng họ chưa từng trải qua các trường lớp đào tạo nghệ thuật và họ không biết rằng text màu đỏ trên một background xanh lá cây không phải là lựa chọn tốt cho việc dễ đọc. Hãy giải thích lý do quyết định của bạn.
  • Hãy nhớ rằng website đó là dành cho khách hàng của bạn, bạn muốn họ hạnh phúc với nó, việc tốt nhất là cần đưa ra những khuyến nghị thay đổi, nếu họ không đồng ý, hãy làm hết sức theo ý họ 🙂

5. CSS bị đánh giá thấp

CSS đa phần gây bực bội vì không ai thực sự dành thời gian học các thứ liên quan. Họ luôn mắc kẹt với cùng một vấn đề.

Tôi từng làm việc với vài kỹ sư back-end thiên tài, những người rành OOP và họ nghĩ rằng responsive CSS là thứ gì đó ma thuật

Đó là lý do vì sao thôi tìm truyện tranh này cho bạn

CSS cũng như hầu hết các thứ khác, cần phải có thời gian để nắm bắt nó.

CSS chỉ vài phút để hiểu nhưng có thể tốn cả đời để master!

Nguồn: Blog Techtalk via blog.geekyants.com

Điện toán đám mây – Công nghệ mới cho doanh nghiệp vừa và nhỏ

Ở Việt Nam, khi nhu cầu điện toán đám mây của các doanh nghiệp trong nước đang trở nên rõ rệt hơn bao giờ hết, các nhà cung cấp dịch vụ lớn của thế giới đã nhanh chóng đổ bộ.

Với lợi thế, không mất chi phí đầu tư, giảm chi phí vận hành, nâng cấp hệ thống, chi phí hoạt động thường xuyên khác (chi phí cho đội ngũ IT, chi phí hạ tầng, chi phí bảo trì nâng cấp phần mềm, nâng cấp phần cứng,…)… Sử dụng điện toán đám mây trở thành “cứu cánh” cho các doanh nghiệp, đặc biệt là đối với các doanh nghiệp SMEs.

Tuy nhiên, với hạ tầng Internet Việt Nam, sử dụng các trung tâm dữ liệu đặt tại nước ngoài đi kèm với những rủi ro khác về hạ tầng mạng như: kết nối chậm, mất kết nối, chậm tốc độ truyền tải dữ liệu hay ứng dụng.

Do đó, việc lựa chọn bên thứ 3 cung cấp dịch vụ với hạ tầng trung tâm dữ liệu đặt trong nước với đường truyền ổn định hơn, hoạt động hỗ trợ linh hoạt hơn, phù hợp với văn hóa kinh doanh.

Là một trong những đơn vị tiên phong trong lĩnh vực cho thuê máy chủ, Cloud VPS, Cloud Server, Colo-cation, CDN, Cloud Hosting, Dedicated Server… cùng kinh nghiệm hơn 6 năm uy tín cung cấp dịch vụ điện toán đám mây, với mạng lưới hơn 1000 máy chủ, hàng ngàn khách hàng trong và ngoài nước, đồng thời cũng là một trong những đối tác lớn của VNPT, FPT, Viettel… KDATA sẵn sàng cung cấp hệ thống mạng luôn ổn định, mạnh mẽ và bảo mật cao cho các doanh nghiệp SMEs, doanh nghiệp khởi nghiệp cũng như cá nhân.

Trong tháng 12 này, KDATA cùng đội ngũ chuyên gia giàu kinh nghiệm sẽ cùng nhau xuất hiện tại Vietnam Web Summit 2017. Người tham dự sẽ không thể bỏ qua các dịch vụ tiêu biểu mà KDATA đang phát triển:

  • Shared hosting: Dịch vụ share hosting trên nền Windows và Linux với tài nguyên không giới hạn
  • Máy chủ ảo: Dịch vụ CloudVPS với độ bảo mật cao
  • Máy chủ riêng: Cung cấp dịch vụ cho thuê máy chủ cấu hình mạnh mẽ, giá rẻ
  • Chỗ đặt máy chủ: Cung cấp chỗ đặt máy chủ tại datacenter VNPT, Viettel, FPT,CMC
  • CDN: Cung cấp dịch vụ CDN với mạng lưới rộng khắp
  • Tổng đài ảo: Cung cấp tổng đài ảo trên nền điện toán đám mây
  • Private Cloud: Bạn có thể tự thiết kế và vận hành private cloud theo ý mình, với máy chủ của KDATA cung cấp

Nhanh tay đăng kí tại https://vietnamwebsummit.com/vi/ve-tham-du/ để gặp gỡ các chuyên gia của KDATA tại Vietnam Web Summit 2017 nhé!

KDATA đang tuyển dụng các vị trí:

  • 03 Quản trị hệ thống
  • 03 Network
  • 02 Marketing
  • 03 Sale

Contact Information:

  • Email:lanlt@kdata.vn
  • Tel:  028.73002299 or 028.73002299-101
  • Website: https://kdata.vn/

 

6 lý do khiến cho nền tảng kết nối (platform) thất bại – Dành cho các founder đang xây dựng platform

Đây là bài phân tích của Sangeet, tác giả của quyển sách Platform Revotulion.

Sự thành công của các công ty hoạt động theo mô hình nền tảng (Platform) Airbnb và Uber là rất ấn tượng, vì thế chúng ta rất ít bàn tới những khó khăn mà những doanh nghiệp này phải đối mặt trong giai đoạn mới thành lập. Mỗi doanh nghiệp nền tảng kết nối đều luôn có rất nhiều khó khăn cần phải giải quyết. Và Apple cùng với Google, hai công ty giá trị nhất trên thế giới, cũng có những thất bại nhất định trong việc phát triển nền tảng, chúng tôi sẽ dẫn chứng cụ thể ở phần sau. Bằng việc nghiên cứu những thành công và thất bại, chúng ta có thể xác định 6 lý do chính gây ra sự thất bại của các doanh nghiệp này. Tất cả chung quy đều là sự hiểu biết chưa được thấu đáo của những nhà quản lý trong việc vận hành và thực hiện chiến lược cạnh tranh cho doanh nghiệp nền tảng của mình.

Các doanh nghiệp nền tảng mang nhà sản xuất và người dùng đến với nhau và tạo ra sự trao đổi giá trị một cách có hiệu quả – ví du như công ty Uber đã kết nối những tài xế và khách hàng, hay như Youtube kết nối các người làm video và người xem. Và họ thúc đẩy hiệu ứng mạng lưới này – càng có nhiều người tham gia vào nền tảng đó thì càng có nhiều lợi ích được sinh ra. Những sai lầm trong việc quản lý khi ngăn cản sự trao đổi giá trị hay các hiệu ứng mạng lưới có thể hủy hoại một doanh nghiệp nền tảng kết nối. Bây giờ chúng ta đi vào chi tiết những sai lầm này.

1. Thất bại trong việc tối ưu hóa về “độ mở” của nền tảng

Bởi vì các nền tảng phụ thuộc vào giá trị mà những người tham gia tạo ra, do đó cần quản lý hiệu quả về “độ mở” của các nền tảng kết nối – độ mở ở đây chính là mức độ tiếp cận của khách hàng, nhà sản xuất và những người khác tới các nền tảng kết nối, và những điều mà họ được phép thực hiện trên nền tảng này. Nếu một nền tảng quá khép kín sẽ ngăn cản những người tham gia tiềm năng, lúc đó các hiệu ứng mạng lưới sẽ không được phát huy; còn nếu như quá rộng mở thì sẽ có các nhân tố phá hủy các lợi ích, ví dụ như những đóng góp kém chất lượng của người tham gia hoặc là một vài người hành xử không đúng mực khiến những người khác rời bỏ nền tảng.

Steve Jobs đã thất bại trong việc quản lý về độ mở của Apple vào những năm 1980. Ông đã tính phí những nhà phát triển cho bộ phát triển phần mềm toolkits – điều này đã ngăn cản những nhà sản xuất phần mềm tham gia vào nền tảng Apple của ông. Kết quả là Apple phải vật lộn để tạo ra một nền tảng rất mạnh để kết nối khách hàng của Apple với các nhà sản xuất phần mềm. Trong nhiều năm, sự thâm nhập thị trường của Apple giữ ở mức một chữ số. Apple đã giải quyết sự cân bằng này bằng cách mở nền tảng iOS cho các nhà phát triển phần mềm cùng tham gia. Trái ngược với trường hợp của Apple, Bill Gates lại mở Windows cho cả các nhà phát triển phần cứng và phần mềm, khiến cho Windows trở thành nền tảng máy tính nổi bật nhờ khả năng kết nối khách hàng với các nhà phát triển phần cứng và phần mềm.

Tuy nhiên các nền tảng có thể trở nên quá rộng mở. Các nền tảng phải duy trì đủ quyền kiểm soát đối với tài sản cốt lõi để kiểm soát hệ sinh thái và tạo ra doanh thu. Google đã học được điều này khi mà Amazon và Samsung đã tạo ra hai nhánh của nền tảng mở Android để tạo ra những phiên bản mã nguồn mở cho chính mình (Amazon, Samsung). Google Android đã nhanh chóng mất thị phần vào tay các phiên bản mới này. Google nhanh chóng lấy lại quyền kiểm soát hệ thống Android bằng việc giới hạn quyền truy cập các dịch vụ khó tái tạo như bản đồ và di chuyển các giao diện lập trình ứng dụng (API) quan trọng sang Google Play Store độc quyền của họ. Câu chuyện của Android đã chỉ ra rằng độ mở của các nền tảng là một trong những quyết định quản lý then chốt để xác định sự thành công hay là thất bại của nền tảng đó.

2. Thất bại trong việc liên kết với các nhà phát triển

Xác định đúng về độ mở của các nền tảng là điều cần thiết nhưng chưa đủ. Chủ sở hữu nền tảng cũng phải chỉ ra những điều mà các nhà phát triển phần mềm có được nếu họ đóng góp vào nền tảng. Năm 2013, công ty Johnson Controls mời các nhà phát triển giúp họ xây dựng Panoptix, một nền tảng về hiệu suất năng lượng cho các tòa nhà và không gian văn phòng. Nhưng tới đầu năm 2015, họ đã dừng việc chấp nhận những đề xuất mới cho việc mở rộng thị trường và ngừng hỗ trợ giao diện lập trình ứng dụng API cho những nhà phát triển bên ngoài. Nền tảng Panoptix không còn đủ hấp dẫn các ứng dụng mới để biện minh cho việc đổ các tài nguyên để hỗ trợ phát triển bên ngoài giới hạn này.

Việc mở cửa và đưa ra các lợi ích là chưa đủ. Những nền tảng thành công cần phải quảng bá, cung cấp cho các nhà phát triển nguồn lực để đổi mới, phản hồi về thiết kế và hiệu quả, và có phần thưởng cho những người tham gia. Hiểu đơn giản là: Để tổ chức một sư kiện thành công bạn phải lên kế hoạch cẩn thận, mời khách mời phù hợp, cung cấp đồ ăn ngon và cạnh tranh được với các sự kiện khác. Nếu Android đưa ra một bữa tiệc ở Hawaii gồm có năm món, với việc di chuyển miễn phí, các khách mời được gặp gỡ Robert Downey Jr. và Sandra Bullock. Cùng đêm đó, công ty Johnson Controls mở tiệc chỉ có bánh qui ở Cleveland và khách mời phải tự chi trả. Vậy các nhà phát triển sẽ tham gia bữa tiệc nào?

3. Thất bại trong việc chia sẻ lợi nhuận

Lý do để tham gia một nền tảng là việc có những tương tác giá trị. Khách hàng, những nhà sản xuất và nền tảng đều chiến thắng nếu có sự phân chia lợi ích phù hợp cho tất cả mọi người tham gia. Nếu một bên mà không nhận được đúng lợi ích thì chẳng còn lý do gì để họ tham gia cả. Quay lại năm 2000, rất nhiều nhà sản xuất ô tô bao gồm Daimler-Chrysler, Ford, GM, Nissan và các hãng khác đã đầu tư vào Covisint, một thị trường trực tuyến kết nối người mua và nhà cung cấp phụ tùng ô tô. Không may là cấu trúc quyền sở hữu của Covisint và sự đấu giá đã tạo ra sự thiên vị cho một vài công ty (là khách hàng trên nền tảng này) trong khi đó lại ép các nhà cung cấp tham gia vào một cuộc cạnh tranh về giá rất khốc liệt, khiến họ có ít đi hoặc không có lợi nhuận. Vì vậy mà các nhà cung cấp phụ tùng này rời khỏi nền tảng và thị trường này không bao giờ có lợi nhuận bền vững. Năm 2014, số tài sản còn lại được bán với giá 7 triệu USD, một con số rất nhỏ so với 500 triệu USD, số tiền mà các công ty sản xuất ô tô đã đầu tư vào đây.

Một qui tắc đơn giản cho các nhà quản lý nền tảng là hãy lấy ít hơn giá trị mà bạn tạo ra và chia sẻ những giá trị đó một cách công bằng với những người người tham gia vào nền tảng.

4. Thất bại trong việc xác định đúng phía của nền tảng

Một nhà quản lý nền tảng phải xác định cận thẩn phía nào của thị trường nền tảng cần chú trọng và khi nào cần chú trọng. Khi mới ra mắt, đôi khi cần tập trung thu hút khách hàng hơn là nhà sản xuất, đôi khi là ngược lại, và cũng có lúc lại cần tập trung vào cả hai.

Mặc dù được quảng bá rầm rộ và có nhà lãnh đạo nền tảng giàu kinh nghiệm, nền tảng Google Health vẫn thất bại. Google Health được dự định là địa chỉ hàng đầu để khách hàng tập hợp các thông tin về sức khỏe của mình. Google đầu tiên đã ưu tiên chiến lược tập trung vào người tiêu dùng, chiến lược này hoạt động rất tốt qua các công cụ tìm kiếm, email và bản đồ. Tuy nhiên thời điểm đó, Google cần tập trung trước tiên vào những nhà cung cấp – phía bên kia của thị trường. Khách hàng có thể sẽ sử dụng dịch vụ nếu như bác sĩ và các công ty bảo hiểm, những người có những thông tin của họ, sẵn sằng tham gia. Nhưng họ lại không hoan nghênh sự giám sát hay việc mất kiểm soát đối với những dữ liệu mà họ có. Nền tảng thông tin y tế muốn thành công thì phải đảm bảo sự tham gia của họ.

5. Thất bại trong việc ưu tiên thu hút người dùng hơn là việc tạo doanh thu

Bạn có nhớ đến Billpoint? Đó là hệ thống thanh toán kĩ thuật số mà eBay đã phát triển trước khi bỏ cuộc và mua lại PayPal. Là một phần trong nền tảng đã được thiết lập (eBay), lẽ ra Billpoint sẽ có được chiến thắng. Nhưng mà trong khi Billpoint tập trung vào sự ngăn chặn lừa đảo thì PayPal tập trung vào sự đơn giản khi sử dụng. Trong khi Billpoint tính phí giao dịch cao hơn thì PayPal lại tặng cho người sử dụng với số tiền là 5 USD và 10 USD cho những người sử dụng giới thiệu cho những người khác. Việc ngăn chặn lừa đảo có thể làm giảm chi phí nền tảng trong thời gian dài nhưng điều này tạo áp lực cho những giao dịch của người sử dụng và ngăn cản các hoạt động tạo giá trị. PayPal đã chấp nhận các chi phí gian lận và tập trung vào sự tăng trưởng nhanh chóng bằng việc đơn giản hóa giao dịch và khuyến khích những người tham gia giới thiệu cho những người khác. Vì vậy, PayPal đã nhanh chóng vượt qua Billpoint khi được lựa chọn là hệ thống thanh toán của eBay. Thừa nhận thất bại vào năm 2002, eBay đã mua lại PayPal với giá 1,4 tỉ USD và từ bỏ Billpoint một năm sau đó. Billpoint đã mắc sai lầm khi mà ngay từ đầu đã tập trung vào doanh thu thay vì thu hút nhiều người tham gia.

6. Thất bại trong việc nhìn ra được viễn cảnh

Có lẽ thất bại lớn nhất của nền tảng đơn giản là không nhìn thấy được viễn cảnh trong tương lai. Đây cũng là một trong những điều mà các công ty truyền thống khó tránh khỏi. Sai lầm ở đây là họ không bao giờ chấp nhận quan điểm là họ có thể bán sản phẩm thì họ nên xây dựng một hệ sinh thái. Sony, Hewlett Packard (HP) và Garmin đã mắc sai lầm khi chú trọng vào sản phẩm hơn là xây dựng nền tảng. Trước khi iPhone được giới thiệu vào năm 2007, HP đã thống trị thị trường máy tính cầm tay cho ngành khoa học và tài chính. Mặc dù ngày nay, khách hàng có thể mua các ứng dụng máy tính (mobile app) gần như hoàn hảo trên iTunes hoặc trên Google Play với một chi phí rất nhỏ so với một chiếc máy tính vật lý. Apple và Google không tạo ra các giả lập này; họ đơn giản là cung cấp một nền tảng để kết nối các nhà sản xuất ứng dụng và những người cần đến máy tính.

Sony đã bán một vài sản phẩm điện tử tốt nhất mà họ từng sản xuất ra: Sony đã từng chiếm lĩnh thị trường máy nghe nhạc cá nhân với máy nghe nhạc Walkman. Nó đã từng là máy nghe nhạc tốt nhất thế giới. Đến năm 2011, PlayStation của hãng trở thành hệ thống máy chơi game bán chạy nhất mọi thời đại. Dù vậy, với tất cả năng lực công nghệ của mình, Sony quá tập trung vào sản phẩm mà không đủ để tạo ra một nền tảng. (Cái gì đã trở thành thay thế cho máy nghe nhạc của Sony? Một nền tảng – iOS – đã nuốt chửng luôn họ.) Garmin, giống như một bản đồ tích hợp, cũng chịu chung một số phận như vậy. Garmin đã bán được 100 triệu đơn vị sau 23 năm có mặt trên thị trường. Nhưng mà iPhone bán được 700 triệu đơn vị chỉ sau tám năm. Ngày càng nhiều người tìm đường qua iPhone hơn là qua Garmin, không chỉ vì bản đồ của Apple mà còn của Google và Waze. Khi là một nền tảng, iOS và Android có một hệ sinh thái các nhà sản xuất, khách hàng và những người khác, điều này giúp họ giành chiến thắng trước các sản phẩm như camera của Cisco Flip, the Sony PSP, the dịch vụ ảnh Flickr, máy ghi âm the Olympus, the Microsoft Zune, đèn pin Magnus, và các thiết bị theo dõi sức khỏe Fitbit.

Khi một nền tảng gia nhập thị trường, các nhà quản lý sản phẩm tập trung không chỉ vào việc đo lường những lỗi sai của sản phẩm, mà còn suy nghĩ về những tư duy sai hướng.

Tham khảo thêm các vị trí tuyển dụng việc làm ngành it lương cao tại Topdev

Cạnh tranh về lương là con đường nhanh nhất dẫn đến bế tắc!

cạnh tranh về lương trong tuyển lập trình

Với hơn 10 năm kinh nghiệm trong lĩnh vực nhân sự, tuyển dụng tại các công ty lớn và giờ đây anh Trần Vũ Thanh chọn Sen Đỏ (Sàn Thương mại điện tử Sendo.vn) là điểm dừng chân của mình. Gần đây anh Thanh có buổi trò chuyện với TopDev về thị trường tuyển dụng IT, anh Thanh  đã có những chia sẻ thẳng thắn những vấn đề nhạy cảm trong mảng tuyển dụng, chiến lược thu hút và chiêu mộ nhân tài lĩnh vực công nghệ và cả những bí quyết để lập trình viên không bị rơi vào “blacklist” của nhà tuyển dụng.

1/ Đừng dùng lương để thu hút dân công nghệ

Theo ước tính Việt Nam cần khoảng 500 000 nhân lực ngành CNTT vào năm 2020, nhưng theo tính toán, trong khi toàn bộ hệ thống cung cấp nhân lực về CNTT trên cả nước chỉ có khả năng đáp ứng quá nửa con số ấy.

Có thể thấy thị trường nhân lực IT đang rất “khát” những nhân tài. Và trong thời gian tới khi mà các công ty công nghệ nước ngoài ngày càng chọn Việt Nam là điểm đến cũng đang tìm cách chiêu mộ thêm những lập trình viên tài năng, cùng với đó là sư trổi dậy của những start- up khiến cuộc chiến tranh giành lập trình viên tài năng ngày càng trở nên gây cấn hơn.

Giờ đây, chiến thuật dùng lương để thu hút dân công nghệ đã không còn hiệu quả. Các công ty công nghệ sẵn sàng trả mức lương hấp dẫn dành cho các lập trình viên tài năng thậm chí có doanh nghiệp chi đến 340 triệu/tháng cho những vị trí cấp cao nhưng vẫn không tìm được ứng viên thích hơp. Cũng giống như trong ngành thương mại điện tử (e-commerce), việc cạnh tranh về giá là con đường nhanh nhất dẫn tới bế tắc, vì thực ra lương lại không phải là yếu tố hàng đầu ảnh hưởng tới quyết định của lập trình viên có đầu quân vào 1 công ty hay không? Yếu tố quan trọng quyết định chính là việc giúp những ứng viên hiểu được công ty đang có những gì, đang cần tìm kiếm những ai để phù hợp với văn hoá của công ty.

“Giờ đây nhà tuyển dụng muốn tìm được người tài cần có một chiến thuật rõ ràng, nếu còn áp dụng phương thức tuyển dụng truyền thống là nhà tuyển dụng đăng thông tin tuyển dụng và chờ đợi ứng viên gửi đơn ứng tuyển đã không còn hiệu quả và rất khó để có thể tìm được ứng viên giỏi” – anh Thanh cho biết thêm.

Như ở Sen Đỏ chính sách lương được đánh giá là khá cạnh tranh so với thị trường, bên cạnh đó lương tháng 13 mặc định, thưởng thêm từ 1-3 tháng lương hoặc cổ phiếu, thưởng chuyến du lịch nước ngoài khoảng 20 triệu (nếu có thành tích tốt), và tất nhiên là các phúc lợi xã hội như bảo hiểm đi kèm,…. Thế nhưng, Sen Do cũng gặp khá nhiều khó khăn trong việc tuyển dụng lập trình viên.

Tính lương chuẩn với công cụ tính lương gross – net tại TopDev

Để giải quyết bài toán nguồn nhân lực CNTT chất lượng là cả một hành trình dài, như Sen Đỏ từng áp dụng rất nhiều giải pháp như: hình thức giới thiệu nội bộ theo anh Thanh chia sẻ đây là nguồn cung cấp nhân lực đáng tin cậy và chiếm đến 40% trên tổng số kênh tìm kiếm ứng viên của Sen Đỏ, sử dụng các dịch vụ tuyển dụng uy tín và sắp tới Sen Đỏ thực hiện liên kết với các influencer trong lĩnh vực IT để thực hiện các chiến lược headhunter.

Tìm được ứng viên tốt đã rất khó, câu chuyện giữ chân ứng viên tài năng còn nan giải hơn rất nhiều. Theo báo cáo mới nhất về lương và phúc lợi xã hội năm 2017 do TopDev công bố, có tới gần 50% các lập trình viên tham gia khảo sát có ý định nhảy việc. Theo anh Thanh “ đó là điều hết sức bình thường”. Vì hiện nay có rất nhiều cơ hội mở ra cho các lập trình viên tài năng. Bí quyết giữ chân lập trình viên là  tạo ra một môi trường làm việc thân thiện, cởi mở, gắng kết các thành viên trong công ty, tạo cơ hội được học hỏi những kiến thức mới từ các chương trình đào tạo hoặc từ các Senior,… là các giải pháp mà Sen Đỏ đã áp dụng và khá thành công.

2/ Làm thế nào để trở thành ứng viên sáng giá trong mắt nhà tuyển dụng?

Rất nhiều ứng viên dù có chuyên môn cao, đầy đủ kỹ năng phù hợp với vị trí ứng tuyển, nhưng vì thiếu kinh nghiệm và kỹ năng khi đối đáp với nhà tuyển dụng mà bị tuột mất một công việc tốt. Và nhà tuyển dụng cũng bị mất đi một ứng viên sáng giá. Vậy làm thế nào, để trong vòng 5-10 phút ứng viên ghi điểm trong mắt nhà tuyển dụng.

Từ kinh nghiệm nhiều năm làm việc với các ứng viên, anh Thanh nhận thấy thực ra không riêng gì Sen Đỏ các công ty đều đánh giá ứng viên xoay quanh 4 yếu tố: kiến thức, kỹ năng, kinh nghiệm, thái độ – tính cách:

  • Kiến thức: cần có kiến thức nên tảng tốt, hiểu được các nguyên lý cơ chế hoạt động của nó. Nhiều bạn học theo kiểu đối phó, học xong rồi quên vì không ứng dụng vào thực tiễn, không hiểu rõ bản chất của việc phát triển, vận hành sản phẩm của công ty mình, quy trình tạo ra sản phẩm đó như thế nào.
  • Kỹ năng: Làm Product phải biết lắng nghe các từ phía khách hàng, QA, QC ,…hiểu được nhu cầu thực sự của users, chủ động học hỏi vì làm sản phẩm, mà đặc biệt là sản phẩm trong thương mại điện tử thì tốc độ phát triển rất nhanh nên phải thường xuyên học hỏi không ngừng để bắt kịp các xu hướng công nghệ mới nhất. Nó đòi hỏi các bạn phải có khả năng học hỏi, sẵn sàng học hỏi. Theo anh Thanh, học hỏi là một trong những kỹ năng quan trọng nhất của người học IT.
  • Kinh nghiệm: Cần có kinh nghiệm làm sản phẩm, và làm sản phẩm cho hàng triệu người dùng, phải hiểu làm sao đáp ứng tốt nhất yêu cầu của người dùng, giải quyết nhanh nhất và tốt nhất những phản hồi từ phía người dùng. Ví dụ nếu user phản hồi ứng dụng chậm phải làm sao để cải thiện tốc độ, giao diện chưa ổn, bất tiện thì phải thay đổi sao cho phù hợp. Kinh nghiệm scale hệ thông lớn, optimize performance, ứng dụng của Sen Đỏ là ứng dụng phục vụ hàng triệu người dùng. Việc làm app vài trăm người dùng với app vài triệu người dùng là những câu chuyện hoàn toàn khác nhau, ở Sen Đỏ bạn phải giải quyết bài toàn với lượng database lớn đến rất lớn.
  • Thái độ tính cách: Sen Đỏ là công ty star-up nên quan trọng nhất Sen Đỏ cần ở các ứng viên là nhiệt huyết, làm một sản phẩm phải nghĩ cách làm cho sản phẩm tốt nhất có thể, việc chủ động thích nghi, chịu khó lắng nghe, không ngừng học hỏi là những tính cách cần thiết của một Sendoer.

3/ Bi hài chuyện nhà tuyển dụng bị ứng viên hỏi ngược

Nhiều năm làm việc với ứng viên, trải qua không ít những chuyện bi hài, anh Thanh chia sẻ một số bạn Lập trình viên chưa thực sự hiểu nhà tuyển dụng đang cần gì, đôi khi điều các bạn nghĩ là không cần thiết, nhưng thực ra nhà tuyển dụng rất quan tâm nếu các bạn chú ý hơn có thể được đánh giá tốt hơn từ nhà tuyển dụng, những điểm các bạn cần lưu ý:

  • CV: thường các bạn lập trình viên viết CV rất chung chung: nhận yêu cầu, code, fix bug, cấp cao hơn như Senior thì có thể thêm là phân công công việc cho các bạn khác, … Thực ra những thông tin đó nhà tuyển dụng lập trình viên nào cũng biết. Bạn cần đưa các thông tin giúp nhà tuyển dụng hình dung được là bạn làm được cái gì. Ví dụ: Sản phẩm bạn làm là gì? Vai trò của bạn trong quy trình sản phẩm (quan trọng), bạn tham gia ở giải đoạn nào? thành tích kinh nghiệm đạt được là gì? có thể chia sẻ các con số minh chứng (nếu được).
  • Chủ động tìm hiểu về công ty mà các bạn ứng tuyển, hiểu rõ về văn hóa, sản phẩm, môi trường và điều kiện làm việc của công ty là điều rất cần thiết đối với một lập trình viên khi tham gia ứng tuyển, phỏng vấn
  • Thái độ: Nhiều bạn giỏi rất tự tin vào khả năng của mình thích được thể hiện nhưng núi cao thì có núi cao hơn, nhiều bạn nghĩ những kiến thức của mình sở hữu là rất to to tát, quan trọng nhưng thực ra các bạn không biết rằng nó chỉ là một phần nhỏ trong quy trình sản phẩm mà Sen Đỏ đang làm hằng ngày. Anh Thanh cũng gặp rất nhiều trường hợp ứng viên chất vấn ngược nhà tuyển dụng với thái độ thử thách, kêu ngạo, chính điểm đó làm mất đi hình ảnh đẹp của các bạn trong mắt nhà tuyển dụng. Anh nghĩ các bạn nên khiêm tốn một chút, thái độ cầu thị, biết lắng nghe, tôn trọng người phỏng vấn là điều mà công ty nào cũng sẽ đánh giá cao ứng viên.

Sen Đỏ (Sendo.vn) là dự án Thương mại điên tử chính thức đầu tiên trực thuộc trực tiếp Tập đoàn FPT. Khác với các website thương mại điện tử hiện nay nhắm đến đối tượng khách hàng là những người có thu nhập từ trung bình trở lên, tập trung ở các thành phố lớn , Sen Đỏ lựa chọn cho mình một hướng đi riêng, đánh vào thị trường ở các tỉnh lẻ. Hàng hóa đa dạng giá cả hợp lý chính là điểm làm nên sự khác biệt của Sen Đỏ trên thị trường. Giải pháp mà Sen Đỏ cung cấp là kết nối giữa người bán- người mua-vận chuyển tạo nên một platform khiến việc mua bán trở nên dễ dàng, thuận tiện hơn với tất cả mọi người.

Ngoài ra, Sen Đỏ cũng là một trong những đối tác lớn nhất của Google tại Việt Nam, nhờ đó Sen Đỏ có thể hỗ trợ cung cấp cho các shop bán hàng trên Sendo.vn những giải pháp quảng cáo tối ưu và hiệu quả.

Dù được đầu tư bởi các tập đoàn thương mại điện tử, quỹ đầu tư lớn từ Nhật Bản nhưng Sendo.vn vẫn là một trang Thương mại điện tử được phát triển và vận hành bởi người Việt nên Sendo.vn còn được lợi thế là am hiểu thói quen người dùng, tính linh hoạt, dễ dàng thích nghi với sự thay đổi của môi trường kinh doanh.

Với tất cả những lợi thế cạnh tranh như vậy Sen Đỏ đang dần khẳng định được vị trí của mình trên thị trường thương mại điện tử.

Nguồn: TopDev

Nhà tuyển dụng “mỏi mắt” tìm lập trình viên thạo tiếng Nhật

tìm lập trình viên thạo tiếng Nhật

Vào thời điểm hiện tại, nguồn lao động trong lĩnh vực CNTT của Nhật Bản đang trong tình trạng thiếu hụt trầm trọng, có rất nhiều nguyên nhân như: áp lực già hóa dân số, xu hướng chọn những ngành như kinh tế hoặc nghệ thuật trong giới trẻ tại Nhật… Với tình hình này, cộng thêm toàn cầu hóa kinh tế đã buộc Nhật Bản phải thoát ly khỏi tư tưởng “bài ngoại, hướng nội” vốn đã cắm rễ trong chính sách nhân sự của các doanh nghiệp tại nước này và tìm đến giải pháp hợp tác và tiếp nhận nhân lực từ nước ngoài, trong đó thị trường lập trình viên Việt Nam được xác định là thị trường cung cấp chính. Chính vì vậy, hơn lúc nào hết các công ty đang ráo riết tìm kiếm những lập trình viên biết tiếng Nhật để đáp ứng được nhu cầu hiện nay.

Trong buổi trò chuyện gần đây với TopDev, chị Hồ Hoàng Như –  đại diện của TPS Software, là công ty phần mềm Việt Nam có kinh nghiệm làm sản phẩm cho thị trường Bắc Mỹ, Châu Âu, Singapore đặc biệt là với thị trường Nhật Bản đã cùng chúng tôi đã có những trau đổi thẳng thắn về cơ hội cho lập trình viên biết tiếng Nhật và câu chuyện “cọc đi tìm trâu” – nhà tuyển dụng mỏi mắt đi tìm lập trình viên thạo tiếng Nhật

Cuộc cạnh tranh khốc liệt giữa những nhà tuyển dụng

Ngày càng nhiều các công ty phần mềm Nhật Bản chọn Việt Nam làm điểm đến, thêm vào đó các doanh nghiệp phần mềm Việt Nam có các hoạt động gia công, xuất khẩu phần mềm sang thị trường Nhật Bản đều có doanh thu tăng mạnh – điều này dẫn tới hệ quả tất yếu là lập trình viên biết tiếng Nhật trở thành mục tiêu được săn đón của rất nhiều công ty.

Các doanh nghiệp không ngừng tìm mọi phương cách để thu hút ứng viên, doanh nghiệp không ngại “chi khủng” để có ứng viên phù hợp. Theo chia sẻ của ông Nguyễn Quốc Nguyên Trưởng Bộ phận Tư vấn tuyển dụng nhân sự cấp cao, mảng ICT tại Harvey Nash Việt Nam cho biết:

“Hiện tại mức thu nhập dưới 500 USD/tháng cho một nhân lực IT thạo tiếng Nhật là gần như không khả thi. Doanh nghiệp không thể tuyển được người với mức lương này. Đối với nhân lực có kinh nghiệm 4 – 5 năm thì mức lương phải từ 1.000 USD – 1.500 USD/tháng. Các vị trí quản lý dự án hoặc kỹ sư cao cấp thường được trả 1.500 – 3.000 USD/ tháng, hoặc thậm chí cao hơn nhiều tùy vào năng lực và quy mô dự án”

Đồng quan điểm với ý kiến trên chị Như cho biết thêm “hiện tại mặc dù TPS có chính sách lương và các hỗ trợ phúc lợi đi kèm khá cạnh tranh (không chỉ với các doanh nghiệp Việt mà còn cả với các công ty Nhật), nhưng vẫn luôn trong tình trạng thiếu lập trình viên biết tiếng Nhật. Đặc biệt là những lập trình viên có kinh nghiệm làm việc với Java và PHP”

Không chỉ có mức lương hấp dẫn mà các phúc lợi đi kèm như cơ hội được công ty cử sang Nhật tu nghiệp, thậm chí là đến làm việc chính thức tại Nhật,…. Thế nhưng dường như con đường tìm kiếm lập trình viên thạo tiếng Nhật của doanh nghiệp vẫn còn lắm gian nan.

Doanh nghiệp thay đổi quy trình tuyển dụng để phù hợp với ứng viên.

“Vấn đề lớn nhất mà các doanh nghiệp hiện nay đang gặp không phải là khó tiếp cận thị trường cũng như khách hàng Nhật Bản mà là không đủ người để thực hiện các đơn hàng. Những bạn có kĩ năng lập trình tốt thì lại không biết tiếng Nhật, rất khó trong việc hiểu yêu cầu khách hàng để thực hiện cho đúng. Trong khi đó những bạn biết tiếng Nhật thì lại không có nền tảng về IT, chính vì vậy sẽ không thể diễn đạt theo ngôn ngữ lập trình mà chỉ đơn giản là hiểu theo kiểu đọc hiểu không thể truyền đạt cho các bạn Dev hiểu được yêu cầu. Những bạn vừa biết tiếng Nhật vừa có nền tảng về IT thì thường gặp vấn đề với công nghệ, thị trường Nhật Bản với đặc thù thường sử dụng những công nghệ tương đối lâu đời, trong khi đó các bạn lại thích sử dụng công nghệ mới, chính vì vậy doanh nghiệp gặp không ít khó khăn khi đi tìm ứng viên” – chị Như cho biết.

Nếu như trước đây các doanh nghiệp chỉ tuyển dụng những lập trình viên có trình độ tiếng Nhật N1, N2 ( hoặc tương đương) vào các vị trí công việc thì nay công ty sẽ tuyển các BSE có nền tảng IT giỏi để truyền đạt chính xác yêu cầu cho các lập trình viên không biết tiếng Nhật.

Thay vì đợi ứng viên hội tụ đủ điều kiện nộp đơn ứng tuyển, thì nay đa phần doanh nghiệp áp dụng phương thức tiếp cận trực tiếp nguồn nhân lực tiềm năng ngay từ khi còn là sinh viên ngồi trên giảng đường bằng cách liên kết với các trường đại học tổ chức các buổi tư vấn nghề nghiệp, giới thiệu công ty và cơ hội việc làm cũng như cấp học bổng cho các cá nhân xuất sắc… Cũng có nhiều doanh nghiệp tìm kiếm nguồn lực thông qua các công ty săn đầu người chuyên vể lĩnh vực IT,

Câu chuyện ở TPS Software là một ví dụ: Khi mà ngày càng khó tìm kiếm các ứng viên vừa giỏi chuyên môn lại có khả năng tiếng Nhật tốt, thì nay các bạn lập trình viên chỉ cần có khả năng đọc – hiểu tiếng Nhật là sẽ được chào đón tại TPS. Đối tượng lập trình viên yếu về khả năng tiếng Anh, và không có cơ hội phát triển ở thị trường nói tiếng Anh có thể tìm kiếm cơ hội ở thị trường Nhật Bản với sự hỗ trợ từ phía TPS.

Hoạt động ở các thị trường lớn như Bắc Mỹ, Châu Âu, Nhật Bản và Singapore là cơ hội cho các lập trình viên đươc làm việc trong môi trường chuyên nghiệp với các quy trình phát triển chuẩn quốc tế, cùng với đó là môi trường làm việc sáng tạo, năng động, thân thiện và hợp tác khuyến khích nhân viên đóng góp ý kiến là những điểm cộng giúp TPS thu hút và giữ chân các lập trình viên.

Vẫn còn cơ hội cho tất cả

Theo dự báo của Bộ Kinh tế Công thương Nhật Bản (METI), đến năm 2020, Nhật Bản sẽ thiếu khoảng 50.000 nhân lực trong lĩnh vực IT.

Có thể khẳng định, nhu cầu tìm kiếm các lập trình viên thạo tiếng Nhật sẽ tiếp tục gia tăng trong thời gian tới, đây chính là cơ hội cho những lập trình viên biết tiếng Nhật. Tuy nhiên, hiện nay khi mà các công ty phần mềm bắt đầu tích cực hơn trong việc đào tạo nguồn nhân lực (thay vì chỉ tuyển dụng nhân lực như trước đây) thì vẫn có cơ hội cho những lập trình viên muốn làm việc với thị trường Nhật nhưng gặp rào cản về ngôn ngữ, cơ hội đang rộng mở cho tất cả lập trình viên.

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

Các anh hào Web & Digital Marketing cùng hội ngộ tại Vietnam Web Summit

Là sự kiện thường niên trong lĩnh vực Công nghệ, Vietnam Web Summit trở thành nơi hội ngộ của gần 100 diễn giả với hơn 100 nội dung chia sẻ, cập nhật kiến thức mới đến từ những công ty, tập đoàn công nghệ tiên phong trong nước và quốc tế.

Một tháng trước thời điểm khai mạc tại Tp.HCM (01/12) & Hà Nội (08/12), BTC sự kiện đã lần lượt công bố những diễn giả cùng các topic đầu tiên, thu hút sự quan tâm lớn từ cộng đồng.

Big Data, Blockchain, Deep Learning, Thuật toán – Bức tranh những công nghệ mới

Dấu ấn của Cuộc Cách mạng Công nghiệp 4.0 đang ngày càng được thể hiện rõ nét hơn khi hàng loạt các ứng dụng thực tế đã vận dụng thành công các công nghệ này. Tiêu biểu như Deep Learning hỗ trợ Facebook nhận diện khuôn mặt và sự vật trên 350 triệu bức ảnh và video được đăng tải lên Facebook mỗi ngày hay rất nhiều tập đoàn lớn đang chạy đua trở thành những công ty tiên phong với Blockchain như UBS, Microsoft, IBM và PwC, Ngân hàng Canada… Theo Giám đốc Công nghệ của Guardtime, hãng đã sử dụng Blockchain để hỗ trợ Chính phủ Estonia quản lý và bảo vệ dữ liệu của công dân trong hơn 1.000 dịch vụ online , khả năng gán một chữ ký số cho từng bit dữ liệu sẽ rất quan trọng trong kỷ nguyên của Big DataIoT.

Nắm bắt xu hướng này, bốn topic liên quan do các chuyên gia kinh nghiệm chia sẻ tại Vietnam Web Summit chắc chắn sẽ mở ra những kiến thức hữu ích dành cho các nhà phát triển Web.

  • Topic Tiếp cận công nghệ Blockchain với Ethereum và tạo cho mình một cryptocurrency trong 10 + 1 phút với diễn giả Lê Yên Thanh – Backend Developer của Umbala
  • Topic Thuật toán – Các tư duy logic giải quyết các bài toán thông dụng với đội ngũ giảng viên của Big-O Coding do chuyên Phạm Nguyễn Sơn Tùng trực tiếp đào tạo
  • Topic Spark or Hadoop for Big Data với diễn giả Ông Xuân Hồng – Research Engineer của Trusting Social

Sự giao thoa giữa công nghệ & Marketing

Các xu hướng công nghệ mới hiện nay đang góp phần định hướng, thay đổi rất nhiều ngành công nghiệp, dịch vụ khác nhau mà Marketing là một lĩnh vực đi đầu. Công nghệ không chỉ tạo nên những nền tảng, công cụ mới để các Marketer “tung hoành ngang dọc” mà còn thách thức những giá trị kiến thức truyền thống, buộc các Marketer phải liên tục cập nhật để không bị tụt hậu.

Tại Vietnam Web Summit, anh Nguyễn Ngọc Long – Sáng lập của Truyền thông Trăng Đen và anh Phan Dũng – CoFounder & COO của Big Cat Entertainment là hai chuyên gia đình đám với những bài giảng thiết thực cùng các góc nhìn đặc sắc sẽ mang đến những topic “cực nóng” dành cho cộng đồng Marketing là: Làm sao để tạo được content hiệu quả khi làm truyền thông?Đánh giá hiệu quả của chiến dịch Marketing cho KOLs & Viral TVC trên Facebook, Youtube.

Bên cạnh đó, sự kiện còn đón chào những nội dung giao thoa giữa công nghệ & Marketing đến từ anh Nguyễn Thanh Tùng (Tùng Jacob) – Trưởng bộ phận Phát triển sản phẩm Web – App của Thế Giới Di Động và anh Giang Nguyễn – Founder & CEO của Diffcat xoay quanh những bài học về trải nghiệm người dùng hay các ý tưởng để hình thành những game triệu đô khuynh đảo trên thị trường.

Với sự trợ giúp của công nghệ số, các công cụ Viral TVC, KOLs (Key Opinion Leader) và Content hay các khái niệm mới về UX/UI, Million-dollar game đã trở thành những keyword mà mỗi doanh nghiệp, mỗi nhà làm thương hiệu không thể bỏ qua.

Facebook, Google, Nielsen, MasterCard, Amazon Web Services, Lazada Tech Hub, Microsoft sẽ mang đến điều bất ngờ gì?

Sự đồng hành của các tập đoàn công nghệ hàng đầu thế giới là một trong những điểm nổi bật khác biệt của Vietnam Web Summit hằng năm. Năm nay, trong vai trò là hỗ trợ nội dung, Facebook, Google, Nielsen, MasterCard, Microsoft cùng hai đối tác AWS (Amazon Web Services), Lazada Tech Hub sẽ lần lượt cử đại diện các kĩ sư, chuyên gia kinh nghiệm đến chia sẻ tầm nhìn, định hướng đối với tương lai của nền công nghệ toàn cầu và cập nhật số liệu, thông tin mới nhất của thị trường công nghệ khu vực và thế giới.

Tất nhiên, ngày hội Vietnam Web Summit sẽ không thể thiếu các đại diện lớn của Việt Nam là Zalo Business, FPT Telecom, Appota, Kdata, Verisign, Luxoft, Cốc Cốc, Vietguys, KMS Technology... với các hoạt động gian hàng giới thiệu ý tưởng & sản phẩm mới, đem đến cơ hội tuyển dụng cho hàng ngàn lập trình viên. Có thể nói, Vietnam Web Summit chính là nơi gặp gỡ, kết nối, đẩy mạnh hệ sinh thái Web & Internet, đưa nền công nghiệp Web Việt Nam từng bước phát triển với tiệm cận tầm vóc của thế giới.

Kết quả hình ảnh cho join us now

 

  • Thời gian & địa điểm:
    – 01/12/2017 tại Grand Palace, 142/18 Cộng Hòa, P.4, Q. Tân Bình, Tp.HCM
    – 08/12/2017 tại CTM Palace, 131 Nguyễn Phong Sắc, Dịch Vọng Hậu, Cầu Giấy, Hà Nội
  • Thông tin chi tiết:
  • Website: https://vietnamwebsummit.com
  • Event page:
    – HCM: https://www.facebook.com/events/897273157088258
    – HN:
    https://www.facebook.com/events/303631870103105
  • Hotline/ Liên hệ hợp tác & đặt booth:
    – Mr Bình: binh@applancer.net | 0904 392 888
    – Event team: event@applancer.net | 08 6273 3497

Hướng dẫn vượt khó Microservices vô cùng giá trị dành cho bạn!

Hướng dẫn vượt khó Microservices vô cùng giá trị dành cho bạn!

Nếu bạn đang sắp sử dụng Microservices, tôi có vài lời khuyên hữu ích có được từ kinh nghiệm chuyển đổi từ Monolith sang kiến trúc Microservice có thể scale & maintain được.


Background

Chúng tôi đã xây dựng platform này hơn 18 tháng. Mọi thứ bắt đầu rất đơn giản, chúng tôi có server (sử dụng Gin) với 1 số các REST endpoints như thế này:

https://oursite.com/api/v1/places
https://oursite.com/api/v1/users
https://oursite.com/api/v1/bookings

Mỗi resource đều có URL theo version riêng, mỗi cái hỗ trợ POSTGETPATCHDELETE khi cần thiết. Chúng tôi có 2 clients mobile riêng biệt, kết nối với các APIs này và database centralized. Chúng tôi đã dùng JWT để xác thực người dùng. Chúng tôi giải quyết 1 số lượng kha khá các request mỗi giờ. Mọi thứ có vẻ tốt, nhưng chúng tôi cần phải thay đổi platform. Các ứng dụng mobile đã không hoạt động.

Đây cũng là lúc vấn đề xảy ra. Chúng tôi có 1 lượng lớn các requirements mới liên quan đến 2 web app. Có 2 sự lựa chọn và chỉ 1 trong 2 là khả thi. Chúng tôi có thể vừa rewrite toàn bộ kiến trúc và dành nhiều tháng trời để viết 1 server mới với chức năng theo yêu cầu – hoặc có thể sử dụng server hiện tại và thêm chức năng mới vào. Vì thời gian gấp rút, chúng tôi đã dùng server hiện tại.

Sau vài tuần, các đoạn code kế thừa đã bắt đầu nhiều lên và chúng tôi lại gặp phải vấn đề. Việc thay đổi các models gặp khó khăn, khiến mọi thứ chỉ là chuyện vặt vãnh. Chúng tôi không thể kéo dài chuyện này và cuối cùng cũng đến bước ngoặt. Lựa chọn bây giờ là: hoặc tiếp tục build server hiện tại và gặp các vấn đề khó khăn liên quan đến scaling; hoặc tích hợp lên 1 cách tiếp cận mới scale được và cũng maintain được.


Vậy Microservices là gì?

Microservices là các dịch vụ nhỏ, tách biệt đại diện cho 1 phần nhỏ tương ứng trong business domain của bạn.

Có nhiều ý kiến khác nhau về cách thức hoạt động & trao đổi của 1 Microservice. Nếu nói Microservice đơn giản thì là bạn đang đánh giá quá thấp Microservices. Concept của kiến trúc Microservice đơn giản & khá lý tưởng. Còn việc thực thi ban đầu thì sao?

Hướng dẫn vượt khó Microservices vô cùng giá trị dành cho bạn!

Monolithic vs Microservice — courtesy of https://www.weave.works

Biểu đồ ở trên giải thích sự khác biệt giữa kiến trúc Monolithic và kiến trúc Microservice rất rất đơn giản. Với kiến trúc Monolithic, bạn sẽ có 1 server lớn chịu trách nhiệm giải quyết tất cả các requests. Việc này sẽ gây khó khăn rất nhiều trên phương diện scale. Tuy nhiên, Microservices có thể cân bằng traffic theo nhu cầu của doanh nghiệp. Nếu đang nhận được 1 lượng lớn thanh toán, bạn có thể scale up thiết bị thanh toán và giữ các dịch vụ khác ở mức sử dụng 1 lượng nhỏ hơn các services. Đây được gọi là scaling theo chiều ngang.


Microservices có vẻ tuyệt đấy, nhưng tại sao lại khó?

Microservices là kiến trúc lý tưởng nên rất nhiều công ty thường thuyết giảng những lợi ích của Microservices, có thể kể đến như UberGoogleAirBnbSquare… cùng rất nhiều công ty khác đã thực thi microservices tốt nhờ sở hữu resources và có thời gian để đàu tư vào việc xây dựng kiến trúc này.

Khi bắt đầu nghiên cứu Microservices, bạn sẽ nhanh chóng nhận ra cần phải quản lý tất cả những Microservices này và cân bằng tải trong khi giám sát tất cả mọi thứ đang diễn ra. Đừng quên rằng bạn cần phải test mỗi thiết bị trong local khi đang build các tính năng mới.

Sau vài tuần research & testing, đây là list nhỏ các nhiệm vụ cho mỗi services và các công cụ mà tôi khuyến khích bạn research

Bạn không nên nhồi nhét danh sách trên cho 1 service đơn giản. Tuy nhiên, có thể giám sát được các tương tác giữa các services và tổ chức chúng đòi hỏi phải thật mạnh mẽ. Có 1 số thuật ngữ có thể gây hiểu lầm, nên tôi sẽ giải quyết những từ gây hiểu lầm nhất.

Edge Proxy — Là quy trình chạy dọc service của bạn và proxy các traffic của các services thông qua hệ thống nội bộ riêng và thường sử dụng vài loại middleware (như prometheus) để giám sát và track traffic này. Ambassador được xây dựng trên Envoy và cung cấp nhiều tính năng hơn.

Containers — Bạn ắt hẳn đã nghe khá nhiều về Docker. Đây là chuẩn mực container trên web. Đây là cách chơi chữ dựa trên nghĩa của từ container. Bạn có thể nghĩ đến các docker containers và các shipping containers nhỏ chạy ứng dụng trên cloud với 1 orchestrator di chuyển chúng xung quanh và tối ưu hóa chúng. Containers cũng trực tiếp sử dụng linux containers.

Orchestration — Kubernetes là orchestrator nổi tiếng nhất, phối hợp rất tốt với Docker. Orchestration sẽ lấy docker container của bạn và chăm sóc chúng, đảm bảo rằng docker container sẽ hoạt động tốt.


Tôi nghe nói có thể sử dụng ngôn ngữ bất kì cho mỗi micro service, đúng không nhỉ?

Chắc chắn rồi. Tuy nhiên, điều đó không đồng nghĩa là hiệu quả như nhau, và có thể sẽ tốn thời gian của bạn nữa. Giải pháp là tạo 1 kiến trúc Microservice ổn định, scale được để đảm bảo là kiến trúc có thể maintain và đi theo được luồng chung trong doanh nghiệp của bạn.

Kiến trúc của bạn nên có các foundations vững chắc. Nếu ai đó phải làm việc với dự án của bạn, bạn nên nói với người đó như thế này:

Nhìn chung, các services được viết bằng {ngôn ngữ chính}. Chúng sử dụng các frameworks sau: {danh sách tên các frameworks}. Nếu bạn nghĩ mỗi service sử dụng 1 ngôn ngữ khác, bạn phải đảm bảo rằng nó có cùng chức năng như các services hiện tại.

Việc sử dụng cùng 1 ngôn ngữ trong các dự án của bạn sẽ đảm bảo tính nhất quán trong các dự án của bạn. Tất nhiên là vẫn sẽ có ngoại lệ. Nếu có 1 service thực hiện các bài toán phức tạp và đang xử lý rất nhiều traffic, bạn sẽ muốn chọn 1 ngôn ngữ phù hợp hơn để xử lý task đó. Và đó sẽ không phải là 1 task đơn giản. Nếu bạn có các dependencies trong PSL (primary service language), thì nên đầu tư thời gian để rebuild bằng ngôn ngữ mới.


Các microservices trao đổi với nhau như thế nào?

Một trong những vấn đề chính của Microservices trong quá khư là các vấn đề về độ trễ. Tạo 1 lượng lớn các HTTPS requests giữa 1 số lượng các services có thể gây ra mức độ trễ đáng kể đối với client. Đây là cách tiếp cận không khả năng và chắc chắn sẽ không gọn nhẹ như mong muốn.

Một cách tiếp cận mới cho Microservices đó là gRPC. gRPC là 1 framework RPC mang lại hiệu quả cao. Dữ liệu nhị phân được gửi qua wire ở tốc độ cao, đi cùng quá trình serialisation/ deserialization nhanh. 

Bằng cách sử dụng gRPC, bạn sẽ xác định các models bằng định nghĩa protobuf, khá đơn giản và các models này có 1 protobuf compiler cho nhiều ngôn ngữ thông dụng. Sử dụng gRPC sẽ giảm bớt nỗi lo của bạn về độ trễ.

Tuy nhiên, sử dụng các protobuf models sẽ gây ra vài nhầm lẫn. Versioning. Chúng tôi đã nghiên cứu vấn đề này trong vài tuần qua, tự hỏi làm sao rất nhiều services khác nhau có thể chia sẻ cùng protobuf models (như 1 user model chẳng hạn). Chúng ta cũng nghĩ đến những ý tưởng liên quan đến việc giữ các protobuf models trong versioned git repository nhưng lại thấy không thuyết phục. Chúng tôi hiện đang đầu tư cơ chế tốt nhất cho việc này.

Ngoài ra cũng có những vấn đề phát sinh khi sử dụng gRPC. Bạn có thể phải maintain 1 REST API chuẩn cho các web clients chuẩn mực thì mới access được. Chúng tôi sử dụng envoy và grpc-gateway và đã có những bước tiến nhất định. Tuy nhiên, đây vẫn là vấn đề phức tạp và dường như không dễ giải quyết được trong thế giới Microservice.


Migrating

Nếu bạn đang định bắt đầu bằng việc xây dựng 1 kiến trúc Microservice thì tôi khuyến khích là không nên. Bạn sẽ dành rất nhiều thời gian thực hiện các hoạt động tối ưu trước đó cho các domains mà bạn không thực sự biết là nó có tồn tại. Để tạo 1 kiến trúc Microservice vững chắc, bạn sẽ cần biết chính xác lý do tại sao mình phải làm như vậy.

Tuy nhiên, nếu bạn đã có 1 kiến trúc Monolith và có ý định chuyển đổi thì đây là vài lời khuyên:

  • Xác định rõ business domains của mình (bounded contexts)
  • Tìm hiểu kĩ về Docker, Kubernetes và Envoy
  • Tìm hiểu về các công cụ monitoring và testing
  • Dành thời gian để demo

Đó là trải nghiệm riêng của chúng tôi. Chúng tôi đã dành rất nhiều thời gian trên Google Cloud Platform để tạo các kiến trúc khác nhau với các công cụ mới, nhằm phát hiện được cái nào là tốt nhất. Hiện chúng tôi đang sử dụng stack sau:

Primary Service Language: Go
Primary Service Datastore: Postgresq
Cloud Platform: Google Cloud
Containers: Docker
Container Orchestration: Kubernetes
Edge Proxy: Envoy
Local Testing: Telepresence
Monitoring: Prometheus
Management: Forge

Đã vài tháng trôi qua kể từ khi chúng tôi hoàn thiện quá trình chuyển đổi. Mọi thứ đã rất khó khăn, nhưng gần đây, chúng tôi đã gặp được 1 công ty có thể phá vỡ mọi rào cản phức tạp khi bắt đầu quá trình xây dựng kiến trúc Microservices. Họ đã tạo ra 1 số công cụ hỗ trợ khá tốt mà bạn có thể tham khảo tại https://www.datawire.io.

Nguồn: TopDev via hackernoon.com

Mobile Marketing – Xu hướng tất yếu được giới thiệu tại Vietnam Web Summit 2017

Với đặc điểm chi phí rẻ, dễ dàng điều chỉnh và tiếp cận trực tiếp với khách hàng, mobile marketing đang trở thành một công cụ tiếp thị hiệu quả của các doanh nghiệp, đặc biệt là đối với các doanh nghiệp vừa và nhỏ.

Moblie Marketing – tiếp thị trên di động là hình thức tiếp thị trên di động, sử dụng phương tiện di động để giới thiệu, quảng cáo các thông tin sản phẩm, thương hiệu tới khách hàng hay nói cách khác, Mobile Marketing là tất cả các hình thức kết nối đến người tiêu dùng thông qua thiết bị di động cá nhân. Moblie Marketing được dự báo sẽ là xu hướng tiếp thị tất yếu hiện nay

https://www.facebook.com/topdevvietnam/videos/1444457288936730/

Được thành lập vào tháng 06 năm 2007 bởi những thành viên giàu kinh nghiệm và đam mê với ngành nội dung số và tiếp thị trên thiết bị di động, Vietguys tự hào là một trong những đơn vị tiên phong tại Việt Nam cung cấp các giải pháp Mobile Marketing cho hơn 600 khách hàng trong và ngoài nước.

Trải qua hơn 10 năm hình thành và phát triển, Vietguys sở hữu những yếu tố nổi bật trên nhiều phương diện:

➤ Kinh nghiệm vượt trội: 1 trong những đơn vị tiên phong tại Việt Nam, mang giải pháp Mobile Marketing đến với hơn 1.200 nhãn hàng trong và ngoài nước.

➤ Bảo mật thông tin: áp dụng những tiêu chuẩn khắt khe về An ninh thông tin theo tiêu chuẩn ISO 27001:2013 do tổ chức SGS của Thuỵ Sỹ đánh giá và UKAS cấp chứng nhận. Vietguys cũng là 1 thành viên tích cực của Hiệp Hội Mobile Marketing Toàn Cầu (MMA), được Bộ Thông Tin Truyền Thông cấp chứng chỉ hành nghề VNCERT cho dịch vụ SMS và Email marketing.

➤ Đa dạng dịch vụ: cung cấp tất cả các giải pháp Mobile Marketing như: SMS Brandname, OTT-SMS, Location-based SMS, SMS Gateway, Email Marketing, Dịch vụ về thoại như Call Center, Voice broadcasting, Interactive Voice Response; và đặc biệt là Mobile Solutions – các giải pháp trên nền tảng di động thiết kế riêng cho từng doanh nghiệp

➤ Luôn cải tiến công nghệ: VietGuys vẫn đang tiếp tục khẳng định mình với tinh thần luôn cải tiến, sáng tạo không ngừng nhằm cung cấp các sản phẩm và dịch vụ mới đạt chất lượng cao và đáp ứng nhu cầu của từng khách hàng, doanh nghiệp.

➤ Phục vụ tận tâm, chuyên nghiệp: dịch vụ chăm sóc khách hàng chuyên nghiệp, xác định được từng yêu cầu, mong muốn của khách hàng và giải quyết một cách nhanh chóng

Chỉ còn 1 tháng nữa, các chuyên gia Vietguys sẽ gặp gỡ người tham dự tại Vietnam Web Summit 2017.

Tôi trượt phỏng vấn vì đã phỏng vấn…quá tốt

Rời khỏi nơi phỏng vấn, tôi mỉm cười mãn nguyện vì sự thể hiện vượt mong đợi của bản thân. Tôi đinh ninh rằng vị trí này chắc chắn sẽ do mình đảm nhiệm trong tương lai. Tuy nhiên, một tuần kể từ hôm phỏng vấn thành công, tôi bàng hoàng nhận được e-mail thông báo trượt…

Cảm giác hụt hẫng, thất vọng khi trượt phỏng vấn, tôi đã trải qua vài lần. Mỗi lúc như vậy, tôi đều cố gắng liệt kê những sai lầm để khắc phục trong lần phỏng vấn tiếp theo. Trước khi đến với buổi phỏng vấn, tôi đã chuẩn bị rất kĩ càng mọi thứ và buổi phỏng vấn cũng diễn ra hoàn hảo như tôi mong đợi. Do đó, khi bị đánh trượt, tôi không thể lẳng lặng chấp nhận mà trực tiếp liên hệ với nhà tuyển dụng để tìm hiểu nguyên nhân.

Và đây là câu trả lời của họ:

“Chúng tôi cần người phù hợp hơn là người có năng lực vượt trội”

Thứ nhất, sự chuẩn bị quá kĩ càng trước phỏng vấn khiến tôi tham gia buổi phỏng vấn như đang đóng vai là một con rô-bốt vậy. Từ những câu hỏi đơn giản đến phức tạp, tôi đều vượt qua một cách dễ dàng nhưng rất rập khuôn, và nhà tuyển dụng có thể tìm ra được cách trả lời của tôi trong các trang web về “Nhân sự”. Có thể nói, điều họ cần là sự tự nhiên, chân thật, đan xen những trải nghiệm cá nhân của ứng viên hơn là tham gia phỏng vấn một cách bài bản, máy móc.

Thứ hai, mỗi doanh nghiệp đều có một nền văn hóa khác nhau và họ cho rằng, tính cách của tôi không phù hợp với môi trường làm việc của công ty đó. Tại sao ư? Tôi là một người hướng nội, trầm tính và ít nói. Năng lực giỏi của tôi ai cũng thừa nhận, nhưng không phải họ có thể thấy điều này qua ngày một ngày hai. Với vị trí mà tôi ứng tuyển, dù bản thân đã thể hiện rất tốt năng lực của mình nhưng trong mắt họ, tôi thiếu sự chủ động, hoạt bát và năng nổ. Bạn biết không, nhà tuyển dụng chỉ tiếp xúc với bạn qua một, hai lần phỏng vấn ngắn, do đó họ muốn chắc chắn rằng bạn là người phù hợp ngay từ đầu. Họ không có đủ thời gian dài để quan sát, chiêm nghiệm, đánh giá xem bạn đã bộc lộ được những tố chất mà công việc đó đòi hỏi hay chưa.

TẠO CV ONLINE MIỄN PHÍ

Thứ ba, và cũng là điều mà tôi không ngờ đến, chính là cách tôi sử dụng mạng xã hội. Mạng xã hội không nói lên được con người thật sự của chúng ta ra sao. Tuy nhiên, đây lại là nơi để nhà tuyển dụng “bóc trần” những điểm mạnh, điểm yếu của ứng viên một cách dễ dàng và nhanh chóng nhất. Xem lại trang cá nhân của mình, tôi thấy bản thân không thể hiện điều gì xấu. Tuy nhiên, chính những dòng trạng thái, chia sẻ quan điểm riêng về một số vấn đề chính trị, xã hội, đời sống,…hay một vài tấm ảnh về cuộc sống cá nhân lại là công cụ để họ đánh giá. Họ không quan tâm khi thoát khỏi cuộc sống “ảo”, tôi là người thế nào. Họ chỉ quan tâm cách mà tôi thể hiện mình trên Facebook, Instagram, Twitter…vì ít nhiều, xu hướng sử dụng mạng xã hội cũng sẽ phần nào nói lên được con người của các ứng viên.

Trong thực tế, có vô vàn lí do không ngờ tới để nhà tuyển dụng “đánh trượt” ứng viên của mình. Đôi lúc, không phải cứ thể hiện tốt thì bạn sẽ may mắn có được tấm vé cho vị trí làm việc mà mình mong đợi. Vì vậy, điều mà chúng ta cần làm là cố gắng thể hiện bản thân một cách chân thật, hết mình nhất để ngay cả khi được trúng tuyển hay không, chúng ta vẫn có thể mỉm cười và không hối hận vì mình đã mắc những sai lầm không đáng có…

Nguồn: Applancer Careers via HR Insider

Lương khủng nhưng ít ai biết đến khó khăn của lập trình viên khi làm việc tại Nhật

Được làm việc ở một trong những cường quốc hàng đầu về công nghệ,  môi trường chuyên nghiệp, mức lương và đãi ngộ hấp dẫn, cơ hội thăng tiến cao,… là những điều tạo nên sức quyến rũ cho thị trường lập trình viên tại Nhật. Nhưng đi cùng với đó là không ít những vấn đề khó khăn trở ngại mà bất cứ lập trình nào cũng sẽ phải đối mặt khi làm việc ở Nhật.

  • Trở ngại đầu tiên, là phải tạm xa gia đình, xa bạn bè đồng nghiệp một thời gian, bắt đầu công việc ở một môi trường hoàn toàn mới, với những người đồng nghiệp mới,..Thế nên, chắc chắn trong khoảng thời gian đầu mới sang Nhật sẽ có đôi chút nhớ nhà, chút chênh vênh nhưng khoản thời gian đó sẽ không kéo dài quá lâu.  
  • Khác biệt về văn hóa: mặc dù có nhiều điểm tương đồng về văn hóa, nhưng vẫn có những điểm khác biệt về văn hóa giữa người Nhật với văn hóa Việt Nam ( Ví như: Ở Người Nhật không dùng nước mắm, mì gói ở Nhật cũng không giống như mì ở Việt Nam, người Nhật đi lái xe về bên trái,…) bạn cần học cách thích nghi với văn hóa mới càng sớm càng tốt
  • Cuối cùng để kịp tiến độ, bạn sẽ phải hoàn thành nhiều việc một lúc, OT là điều có thể xảy ra và bạn cần học cách để cân bằng giữa cuộc sống và công việc.

Cần chuẩn bị gì trước khi sang Nhật

Việc gặp những khó khăn ban đầu khi làm việc tại Nhật là những điều khó tránh khỏi, nhưng nếu có sự chuẩn bị kỹ lưỡng ngay từ đầu sẽ giúp các lập trình viên hạn chế tối đa những tình huống ngoài không mong đợi

Tiếng Nhật

Đối với lập trình viên thường yêu cầu có khả năng giao tiếp căn bản bằng tiếng Nhật, nhưng khuyến khích các bạn có trình độ N3, N4 (hoặc tương đương). Trình độ tiếng Nhật sẽ ảnh hưởng trực tiếp tới mức lương mà lập trình viên được nhận và dễ dàng hơn trong giao tiếp hằng ngày khi làm tại Nhật.

Một số công ty tuyển nhân viên IT tiếng nhất hấp dẫn như: NTT DATA Vietnam, SHIFT ASIASOFTWORLD VIETNAM LTD, Shift AsiaCông ty TNHH PERSOL Vietnam

Kiến thức về lập trình

Kiến thức lập trình căn bản, các kiến thức liên quan đến chuyên ngành mà bạn sẽ làm việc,  các bằng cấp liên quan đến IT. Các ngôn ngữ Java, Python, C#, Ruby là những ngôn ngữ được ưu chuộng ở Nhật, nhưng vẫn có cơ hội cho những lập trình yêu thích những công nghệ mới như Machine Learning, IoT, Big Data,…và làm việc cho các công ty start- up hay các công ty game trẻ năng động.

Kỹ năng mềm

Các công ty Nhật đánh giá rất cao thái độ làm việc cũng như kỹ năng mềm , tập trung trau dồi các kỹ năng: làm việc nhóm, kỹ năng giải quyết vấn đề, giao tiếp,…

Tinh thần

Chủ động tìm hiểu về văn hóa, môi trường làm việc, văn hóa nơi mình sắp làm việc, hiểu biết càng nhiều càng giúp bạn nhanh chóng thích nghi được với môi trường mới. Cố gắng giữ liên lạc với gia đình bạn bè để vượt qua cú sốc thời gian đầu. Tham gia vào cộng đồng người Việt tại Nhật. Lên kế hoạch làm việc và sinh hoạt chi tiết nhất, đồng thời sẵn sàng thay đổi cho phù hợp với những tình huống ngoài mong đợi.

Tính lương chuẩn với công cụ tính lương gross – net tại TopDev

Dự án “Tuyển dụng Nhân tài IT đi Nhật” – Global IT Talent mang cơ hội đi Nhật đến developers từ fresh graduate đến senior

Hiểu được những khó khăn cũng như rào cản mà các lập trình viên gặp phải và với mong muốn mang cơ hội được làm việc ở Nhật cho lập trình viên các cấp độ từ fresh graduate đến senior. IGS  phối hợp với tập đoàn Human Resocia triển khai chương “Tuyển dụng Nhân tài IT đi Nhật” – Global IT Talent .

Sử dụng ứng dụng GROW – Ứng dụng trí tuệ nhân tạo vào việc phân tích trình độ chuyên môn cũng như đánh giá các kỹ năng mềm của ứng viên giúp đánh giá ứng viên một cách toàn diện, và khách quan về các ứng viên. Từ đó đề xuất các vị trí thích hợp với trình độ cũng như tính cách của từng ứng viên và có những sự hỗ trợ thích hợp dành cho từng ứng viên

Bên cạnh đó khi tham gia vào chương trình  “Tuyển dụng Nhân tài IT đi Nhật” – Global IT Talent lập trình viên còn nhận được những sự hỗ trợ thiết thực khác:.

  • Đi theo diện kỹ sư IT và được hưởng lương và các đãi ngộ như lập trình viên Nhật
  • Ứng viên sẽ được ứng tuyển và phỏng vấn trực tiếp với công ty tuyển dụng bên Nhật
  • Làm việc tại Nhật đúng chuyên ngành mà bạn đã được đào tạo qua đó có thể học hỏi kiến thức, nâng cao tay nghề phát triển sự nghiệp sau này.
  • Được tư vấn và hướng dẫn hoàn thành các thủ tục VISA, xuất nhập cảnh trong thời gian sớm nhất
  • Xuất cảnh ngay khi đậu phỏng vấn với công ty bên Nhật (tối đa 3 tháng)
  • Hỗ trợ học bổng tiếng Nhật cấp tốc với những ứng viên chưa có năng lực tiếng Nhật để đáp ứng được yêu cầu về ngoại ngữ khi sang Nhật làm việc.
  • Tham gia các buổi workshop, training chia sẻ kinh nghiệm với các lập trình viên đã có kinh nghiệm làm việc ở Nhật qua Skype hoặc trực tiếp.

Tìm hiểu thêm thông tin chi tiết về chương trình  “Tuyển dụng Nhân tài IT đi Nhật” – Global IT Talent

Website: http://growasia.vn/

Facebook: https://www.facebook.com/growasia/

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

Quá trình phát triển Web đã thay đổi như thế nào trong 10 năm qua?

Chào bạn! Tôi hi vọng bạn thích khung cảnh của thế giới này. Mọi thứ thay đổi rất nhiều so với thời điểm 2007 của bạn.

Tôi khá là vui khi bạn vẫn còn quan tâm tới máy tính! Trong tương lai, 2017 này, chúng ta đã đạt được rất nhiều thành tựu vượt xa mọi thứ 10 năm trước, tất nhiên thử thách mới cũng xuất hiện. Máy tính giờ được thu gọn tới mức ta đã có thể mang nó như một vật trang sức, đồng hồ đeo tay hay tích hợp chúng vào cả tủ lạnh. Xe ô tô thì đã có khả năng tự lái, và máy móc đã chiến thắng con người tại hầu hết mọi lĩnh vực trừ uống bia.

(Web) Apps

Bạn có thể có nghe qua tin tức về iPhone trước khi bước vào buồng lái thời gian tới 2017. Apple hiện giờ đã là công ty công nghệ giàu nhất thế giới, chủ yếu là nhờ vào iPhone và hệ điều hành của nó, iOS. Google thì có Android, còn Microsoft thì cũng cố chen vào với sản phẩm Windows Phone. Nhưng thật tiếc là nó chẳng thành công mấy.

Bên trái: iPhone 3GS từ năm 2008. Bên phải: iPhone X kích thước lớn hơn từ năm 2017. Trái: iMore, phải: BusinessInsider

chúng ta cũng bắt đầu gọi program là apps, và một số website còn tự gọi chúng là web apps. Trong 2008, Google tung ra một trình duyệt mới là “Chrome.” 9 năm sau nó trở thành browser thông dụng nhất để vào Web.

Chrome team bỏ ra rất nhiều công sức vào JavaScript, nhờ đó mà code càng ngày được cải thiện. Web app cũng sử dụng JS rất nhiều với hiển thị khá giống desktop interface từ thời của bạn.

Nhiều công ty cũng tập trung phát triển JavaScript – nó giờ đã support cả classes và modules. chúng ta dùng ngôn ngữ có khả năng compile vào JavaScript, như TypeScript hoặc Flow.

JavaScript được dùng rất rộng rãi ngày nay bởi không ai còn dựa vào Flash nữa. Thậm chí, còn chạy JavaScript trên server bằng Node thay vì Perl, (Nghe vậy thôi chứ nó khó lắm)

Thiết kế responsive: cùng 1 website nhưng hiển thị khác nhau trên nhiều thiết bị. Source: 10twelve.

Bạn có còn nhớ Swing, SWT hay wxWidgets? chúng ta đã sáng tạo lại chúng cho thế giới browser. Một vài UI programming model mới xuất hiện, vốn tập trung hơn vào components.

chúng ta cũng kiếm được cách thức design, build, và test apps trong khi vẫn giữ chúng responsive (thuật ngữ dùng để miêu tả một website nhưng không nhìn quá tởm trên mobile phone). Ngoài ra thì website cũng được cho giảm “cân” để dễ dàng load hơn.

Để làm được những điều trên thì chúng ta dùng tới component frameworks với Angular từ Google, React từ Facebook, và Vue từ cộng đồng.

À mà tôi không chắc là bạn có biết về Facebook không. Trong năm 2007, thời của bạn, thì nó khá nổi tiếng tại US. Còn giờ, Facebook phát triển ra cả toàn thế giới với hơn một tỉ user và là một trong những codebase lớn nhất ngày nay.

Facebook development team viết ra rất nhiều code tuyệt vời và công bố chúng. Thậm chí họ còn có cả hội nghị riêng, F8. À mà giờ thì các công ty đều có sự kiện hội nghị của mình.

CSS cũng đã tiến hóa bởi app giờ đòi hỏi nhiều layout phức tạp hơn. Thay cho các bảng với hình ảnh hay Frame thì giờ đây ta dùng CSS Floats, Flexbox, và CSS Grid.

Dựa trên những tiêu chuẩn mới, chúng ta tạo ra các libraries nhằm giữ mọi thứ nhất quán, như Bootstrap, Foundation và nhiều thứ khác nữa. Tương tự như JavaScript, chúng ta cũng tạo ra các ngôn ngữ có khả năng compile vào CSS. Chúng giúp bổ sung những thứ mà CSS thiếu như variables hoặc modules.

Đừng lo nếu bạn cảm thấy hơi khó hiểu

Đừng thấy buồn nếu bạn không theo kịp những gì tôi vừa nói. Giờ đây đã có nhiều developer và công ty công nghệ trên khắp thế giới. “startup” được dùng để miêu tả những công ty phát triển quá nhanh chóng nhưng vẫn không chắc chắn mình nên làm gì.

Data

Ngày càng có nhiều program, programmer và thiết bị điện tử. Chúng ta cũng có nhiều data hơn. Computer giờ đã trở nên đủ mạnh mẽ để xử lí hết chúng, và ta cũng có những kĩ thuật để thu thông tin từ data.

Đầu tiên, một lĩnh vực mới ra đời với tên gọi là Data Science, vốn tập trung vào việc nghiên cứu và phân tích, thu thập thông tin từ data.

Ví dụ, Waze là một app thu thập dữ liệu về hành trình của user khi họ di chuyển bằng ô tô. Bởi do lượng người dùng cực lớn, Waze thu được rất nhiều Data phục vụ cho việc phân tích tình hình giao thông tại các thành phố. Họ dùng nó để phát triển một hệ thống dự báo cũng như cho người dùng biết đoạn đường nào bị tắc nghẽn.

Waze hiện đã bị mua lại bởi Google. Đây cũng là một việc thường thấy với các startup.

Ai đó đang sử dụng Waze để tới nơi họ muốn đến. Những users khác của Waze được hiển thị thành những icon ngộ nghĩnh. Source: The waze blog.

Có 3 thử thách lớn đặt ra cho Data Science – Lữu trữ Data, Thấu hiểu Data, Hành động dựa trên data. Chúng ta đã cải thiện cả 3 phương diện trên.

Lưu trữ Data

Giờ đây việc lưu trữ data đang trở nên rất cấp thiết bởi lượng thông tin khổng lồ. Do đó mà cần tới một database mới bởi MySQL hay PostgreSQL không còn thích hợp để chứa hàng terabytes Data (hay còn gọi là Big data)

Các ông lớn công nghệ luôn phải đối mặt với vấn đề này nên họ cũng rất tập trung đầu tư vào những giải pháp tương ứng. NoSQL, chính là database thế hệ mới cho vấn đề trên.

Ngoài ra còn có Hadoop, chuyên về cách thức data được lưu trữ trên nhiều máy tính khác nhau. Nó thay đổi cách xử lí data với phương thức MapReduce.

Rồi Cassandra, nó xem data không đơn thuần là những table mà là các set key và cột vốn có thể lưu trữ trong nhiều máy tính khác nhau và bảo đảm nếu máy có offline cũng không dẫn tới hiện tượng mất data.

Cuối cùng, ta phải nói tới MongoDB, một database rất dễ cài đặt và sử dụng. Trong 2017, chúng ta xem công nghệ giống như các ngôi sao ca nhạc vậy – sẵn sàng bảo vệ thứ mình thích và sỉ vả các đối thủ khác.

Thấu hiểu Data

Bức ảnh chú chó đc chụp bằng Prisma – ứng dụng sử dụng machine learning để biến những bức ảnh đời thường trở nên nghệ thuật như những danh họa nổi tiếng. Không còn Photoshop Plastic Wrap nữa. Source: cultofmac.

Hay còn gọi là Machine Learning. Đã có rất nhiều phương pháp khác nhau, trải dài từ naive classification cho đến deep learning, giờ đã được tích hợp trong mọi toolbox của các Data Scientist. Python chính là ngôn ngữ chính, được dùng để dạy máy móc học hỏi.

Ví dụ, với sự trợ giúp từ các nhà khoa học về Data, rất nhiều app sử dụng A/B testing. Kĩ thuật này phục vụ cho hai phiên bản khác nhau của app nhưng vẫn có chung nhóm user. Nó được dùng để xem phiên bản nào dẫn đến goal mà chúng ta muốn nhanh nhất.

Rất nhiều công ty lớn như Airbnb, Uber, và Netflix vẫn chạy hàng trăm ngàn A/B test cùng lúc để bảo đảm rằng những user của họ có trải nghiệm tốt nhất. Netflix là một app cho phép user xem TV ở trên mọi thiết bị.

Microservices và The Cloud

Những công ty như Netflix được xem là kẻ khổng lồ bởi chúng phục vụ rất nhiều người, do đó mà hãng phải bảo đảm rằng chúng đều có thể vận hành bình thường. Nói cách khác việc quản lí máy tính cần phải rất tốt cũng như có khả năng thêm hàng trăm server mới khi cần.

Đây là mà gần như bất khả thi với data center truyền thống, do đó mà các engineer tại Netflix đã dùng tới virtual machines. Bạn có còn nhớ Amazon Web Services, được tung ra vào 2006 không? Hồi đó họ có Elastic Cloud Compute,hay còn gọi là EC2, để giúp người dùng sử dụng virtual computers trong Amazon’s data centers.

Ngày nay, có tới khoảng 80 dịch vụ tương tự như vậy, tất cả đều được tạo ra nhằm giúp công ty có thể phát triển nhanh chóng. Thậm chí còn có cả một cái tên riêng cho nó là  “The Cloud” 


Danh sách các services có thể tìm thấy trên cloud của Amazon. Danh sách vẫn đang tăng thêm…

Các nhà cung cấp cloud cho phép ta chạy nội dung của mình trực tiếp trên cloud của họ. Những tool như MarathonKubernetes, còn được gọi là orchestration frameworks. Những framework này cho phép developer chạy app trong container mà không phải lo về scaling, fault-tolerance, theo dõi và khám phá. Bạn có thể bỏ server thoải mái cũng như không cần nhắc đầu vụ tên của chúng nữa.

Điều đó cũng cho phép developer build những app nhỏ và nhẹ hơn, còn được gọi là services hoặc microservices, và chạy chúng độc lập. Bởi các microservices này có một vài external dependencies, chúng ta bắt đầu dùng các ngôn ngữ mới như Go và Java. Đúng vậy đấy! Java vẫn sống rất khỏe.

Ngoài ra, Scala Clojure cũng cho phép ta dùng Java Virtual Machine và các libraries liên quan khác. Một website như AirBnB chạy hàng trăm microservices sử dụng nhiều ngôn ngữ lập trình và database khác nhau.

Bởi vì những microservices này, chúng ta phải xem lại những model lập trình và thay đổi chúng. Giờ đây các app đã được rút gọn đi rất nhiều. Những tool như Apache Kafka, Google PubSub, và RabbitMQ là để phục vụ cho mục đích sử nhiều app khác nhau một cách dễ dàng.

Cách chúng ta tạo ra Software

Do sự phức tạp của orchestration framework mà các team developer cũng bắt đầu tăng thêm nhân sự. Bạn có thể thấy chúng ta đang có rất nhiều lập trình viên hơn bao giờ hết và ai cũng đều muốn ship code của mình đi ngay lập tức. Nếu công ty của bạn có tới hàng trăm developer thì bạn sẽ muốn họ không phải lo lắng về vấn đề trên.

Do đó chúng ta build những app này với các team nhỏ. Những thành viên trong team thường có vài kĩ năng về DevOps, cũng biết operation để deploy software của họ.  

Thường những project về công nghệ sẽ được công bố là nguồn mở cho cộng đồng. Phần lớn chúng đều ở trên một website là GitHub. Tại đó, ta có thể bàn luận về software, tạo ra các build khác nhau.

Hiện giờ có rất nhiều cộng đồng ra sức giúp phát triển software. Ví dụ, một web framework tên là EmberJS cũng dựa vào cộng đồng với lịch release 6 tuần một lần.

À ngoài ra thì cuộc chiến editor vẫn còn tiếp diễn. Chúng ta viết code trên các desktop apps mà khi chạy một browser sẽ hiển thị ra text field. Nó cực kì tiện lợi bởi chạy khá mượt mà lại dễ dàng tinh chỉnh. Thậm chí còn có cả hỗ trợ cho VIM mode!

Khán giả tham dự hội nghị ra mắt Windows 10. Source: reddit

Hội nghị liên tục được diễn ra với đa dạng về topic tại khắp mọi nơi. Bạn có thể gặp được nhiều loại người khác nhau! Hãy thử tham dự một sự kiện, làm bạn với vài người và khám phá sự đẹp đẽ của code.

Nguồn: TopDev via Medium

Khám phá giải pháp công nghệ trong lĩnh vực viễn thông, du lịch, ôtô… tại Vietnam Web Summit 2017

Luxoft Vietnam được thành lập từ năm 2008, là thành viên của tập đoàn Luxoft toàn cầug ty chuyên cung cấp & tư vấn những giải pháp tư vấn công nghệ cho các đối tác toàn cầu. Các giải pháp mà Luxoft cung cấp tập trung vào các lĩnh vực ngân hàng/ tài chính, ô-tô, viễn thông, và du lịch/hàng không.

Làm việc với trên 25 thương hiệu xe trên thế giới và đa phần là các mẫu xe dòng cao cấp đều có sự tham gia lập trình của Luxoft trong mảng giải trí và hệ thống điều khiển bên trong xe. Với xu hướng công nghệ phát triển ngày càng cao, ô tô tự vận hành sẽ sớm được đến tay người tiêu dùng trong tương lai gần và tất nhiên Luxoft cũng đóng góp một phần trong mãng này.

Trong suốt gần 9 năm hoạt động, Luxoft Vietnam đã đạt được rất nhiều giải thưởng uy tín như: 4 năm liên tiếp đạt Top Enterprises of the Year Award dành cho các doanh nghiệp hoạt động tại Quang Trung Software City, đạt giải Leading Outsourcing Enterprises Award trong năm 2015 của Vietnam IT Outsourcing Conference, Vietnam Top 40 IT companies năm 2015 & 2016 do VINASA trao tặng.

Tại Luxoft Vietnam, mỗi nhân viên sẽ được phát triển và sáng tạo trong mảnh đất công nghệ với 5 tiêu chí hàng đầu:

  • Top Engineering Talent: Làm việc với các chuyên gia hàng đầu
  • Exceptional Quality and Efficiency: Quy trình lập trình nhanh chóng, đổi mới
  • Growth and New Opportunities: Mỗi cá nhân sẽ trưởng thành cùng sự phát triển của công ty
  • Technology Excellence: Cùng sống và “hít thở” bằng công nghệ
  • Epic Atmosphere: Tận hưởng công việc

Các sản phẩm & dịch vụ chính

  • Application Development and Maintenance
  • Software Quality Assurance
  • Embedded Systems Development
  • HMI Design and Consulting

Thị trường & Khách hàng

  • Thị trường chính: Mỹ chiếm 60%, Châu Âu chiếm 40%
  • Khách hàng: các công ty toàn cầu về Ôtô, Viễn thông & Du lịch/ Hàng không
  • Chăm sóc khách hàng: Làm hài lòng khách hàng là nguyên tắc chính của Luxoft. Công ty áp dụng những quy trình và practices hàng đầu trong quản lý project và gắn kết khách hàng nhằm mang đến sự hài lòng cao nhất

Công nghệ & chất lượng

  • Các công nghệ được Luxoft sử dụng: IoT, SMAC, các ngôn ngữ phổ biến, OSes, platforms vàframeworks, databases, môi trường và công cụ lập trình…
  • R&D: công ty tập trung đầu tư mạnh vào R&D, phát triển các giải pháp pre-build cho lĩnh vực Banking/ Tài chính (iStockTrack & iLuxAdvisor, Luxoft Horizon), Viễn Thông (Twister, SuperCloud), Automotive (Populus, Teora) và Du lịch/ Hàng không (GDS Meter)
  • Vượt trội về mặt công nghệ: Luxoft có chuyên môn cao trong các lĩnh vực như TIBCO, Informatica, Atlassian, OpenLink, Calypso, Murex
  • Quản lý chất lượng: ISO 9001:2008, ISO/IEC 27001:2013, CMMI v1.3 Level 5, Automotive SPICE

Còn chần chừ gì nữa, tham gia Vietnam Web Summit cùng chuyên gia Luxoft. Đăng kí TẠI ĐÂY.

7 lí do để loại bỏ Functional Components của React

Tôi có một buổi trao đổi với nhóm developer tại Seattle để giúp họ chuyển qua dùng React nhanh hơn. Khi tôi đang chia sẻ vài lí do vì sao functional components khá tuyệt vời thì có một vài thành viên cho rằng việc dùng tới chúng nên bị cấm.

Woa! Thật ư? Và chúng tôi đã tranh luận khá sôi nổi. Và sau đây là những lí do cho phát biểu trên:

Chuyển đổi khá là khó khăn và tốn công

Functional component không hỗ trợ state, refs, hay các phương pháp lifecycle. Chúng cũng không thể mở rộng PureComponent. Đôi khi, bạn tạo ra functional component và chợt nhận thấy mình chỉ cần một tính năng duy nhất từ những class đó. Trong những trường hợp như vậy nó cực kì phiền phức khi ta phải thủ công chuyển đổi function thành một class.

Diffs rất lộn xộn

Sau khi đã converse, diff sẽ là kẻ phiền phức tiếp theo. Dù chỉ là thay đổi một dòng thôi cũng dẫn đến hàng loạt dòng code review.

Sau đây là một ví dụ khi ta convert một functional component thành một class để nó có thể được declare là PureComponent.

Nếu component này được declared là một class  ngay từ đầu, nó sẽ cần thay đổi như sau:

Conversion còn che dấu lịch sử của component khi tạo ra hiểu nhầm rằng component đã được rewritten trong khi thật ra những thay đổi đó rất nhỏ nhặt. Người viết sẽ bị “đổ tội” bởi đã làm thay đổi quá nhiều nhưng những thay đổi đó lại có tác động rất nhỏ nhặt.

Sự khác biệt không đáng kể

Khi so sánh một class nhỏ với một function, sự khác biệt là rất nhỏ. Luôn nhớ rằng, constructor vốn là optional khi thiếu state.

À mà quên mất là functional style vẫn có thể chỉ dài một dòng với một arrow function đơn giản sau:

const Hello = ({greeting, firstName}) => <div>{greeting} {firstName}</div>

Không nhất quán

Function và class component nhìn khác nhau. Sự không nhất quán này có thể khiến developer bị chậm tiến độ khi phải chuyển qua lại giữa 2 style.

  • Trong classes, bạn dùng this.props, trong functions thì là props.
  • Trong classes, bạn declare một render function. Trong functions thì không có.
  • Trong classes, bạn phá hủy cấu trúc từ trên top của render. Trong function, thì bạn làm điều đó với function’s argument list.
  • Trong classes, bạn declare default props dưới component. Trong function, bạn declare default props sử dụng default arguments.

Chính những sự khác biệt nhỏ này sẽ khiến các developer non trẻ bị nhầm lẫn cũng như các developer lão làng mắc lỗi.

OO Developers quen thuộc với Classes

JavaScript’s classes rất khác so với Java và C# classes. Nếu những ai làm việc với OO trong server sẽ hiểu ngay về điều luật sau đây:

“ Một React component là class với khả năng mở rộng React.Component.”

Hơn nữa, là khi sử dụng những functions này sẽ dễ gây nhầm lẫn, OO devs vốn đã quen với việc dùng class cho mọi thứ. Tôi không nghĩ là cách nghĩ này thật sự tốt bởi cộng đồng React thích functional hơn. Và như thế functional component tạo ra mâu thuẫn trong cách làm cho các OO devs.

Vẫn chưa có lợi ích về hiệu năng

Mặc dù React team đã nói rằng functional components sẽ nhanh và hiễu quả hơn trong tương lai, nhưng hiện tại thì nó vẫn chưa thật sự có khác biệt mấy. Vì thế mà ta có thể nói rằng functional component vẫn chưa thật sự đủ chín mùi.

Và vì functional components yêu cầu chuyển đổi thành một class để implement các thay đổi tinh chỉnh như shouldComponentUpdate và PureComponent, chúng thật ra khá là phiền phức để tinh chỉnh để đạt được hiệu năng như mong muốn.

Lại phải đưa ra một quyết định nữa

Cuối cùng, JavaScript developers đã phải bận ngập đầu trong một núi các quyết định cần phải đưa ra. Cấm functional components sẽ giúp bớt đi một bởi nó sẽ luôn tạo ra class.

Nguồn: topdev via Medium

Tham khảo thêm các vị trí tuyển dụng React lương cao hấp dẫn