Home Blog Page 213

5 tố chất để thành công khi làm nghề tuyển dụng

5 tố chất để thành công khi làm nghề tuyển dụng

Nghề nhân sự – đặc biệt là ở vị trí tuyển dụng là một lĩnh vực cạnh tranh và thay đổi không ngừng. Để trở thàn một nhà tuyển dụng thành công, bạn đã biết 5 tố chất nào là cần thiết chưa?

Trong những năm qua tôi đã gặp gỡ với rất nhiều người nghĩ rằng họ có đủ những yếu tố cần thiết để thành công trong lĩnh vực tuyển dụng. Mọi người thường thắc mắc tôi sẽ đòi hỏi những kỹ năng quan trọng nào ở một chuyên gia tuyển dụng. Theo tôi, 5 kỹ năng hàng đầu cần phải có để xây dựng được một nền tảng tốt cho sự nghiệp trong lĩnh vực cạnh tranh và thay đổi không ngừng này là:

1. Sự tự tin

Tự tin là yếu tố cực kỳ quan trọng trong vai trò tư vấn, nhưng bạn phải khéo léo thể hiển sự tự tin về dịch vụ của mình mà không làm cho người đối diện đánh giá là kiêu ngạo hay tự mãn. Chìa khóa để đạt được sự tự tin này chính là kiến thức. Hãy đào sâu nghiên cứu về lĩnh vực của mình và luôn dẫn đầu trong việc nắm bắt thông tin xu hướng thị trường. Thiết lập bản thân như một người tiên phong nổi bật trong lĩnh vực đó và bạn sẽ nhận ra rằng khách hàng và ứng viên sẽ đặt nhiều niềm tin hơn vào bạn cũng như năng lực của bạn để đáp ứng được mong đợi của họ.

2. Kỹ năng lắng nghe

Đặc điểm chung của những người tuyển dụng xuất sắc là khả năng lắng nghe tốt. Chúng ta đều có hai cái tai và một cái miệng để nghe nhiều hơn và nói ít đi. Bạn không những cần đặt đúng câu hỏi mà còn phải lắng nghe kỹ càng câu trả lời của ứng viên và khách hàng để nắm bắt được nhu cầu của cả hai bên. Đây là một bước cực kỳ quan trọng khi tuyển dụng. Xây dựng được một bức tranh tổng thể về kỳ vọng của khách hàng và ứng viên sẽ giúp bạn thấu hiểu và đáp ứng được yêu cầu của họ nhanh chóng và hiệu quả hơn.

3. Kỹ năng giao tiếp

Tuyển dụng là nghề làm việc với con người. Khi gặp gỡ và tiếp xúc với ứng viên và khách hàng thì bạn phải luôn lịch sự và chuyên nghiệp trên tất cả các phương tiện giao tiếp: qua emai, gặp gỡ trực tiếp và dĩ nhiên là trên cả các mạng xã hội nữa. Một sai lầm khi giao tiếp có thể hủy hoại danh tiếng của bạn trong ngành ngay lập tức.

Hầu hết các chuyên gia tuyển dụng là những người cởi mở hòa đồng nên có thể làm việc với nhiều loại người khác nhau. Vì vậy, bạn phải biết cách kết nối, nắm bắt mọi cơ hội để gặp gỡ giao lưu và biến nó thành kết quả kinh doanh. Xây dựng được mối quan hệ vững chắc với những người trong cuộc sẽ giúp bạn tạo dựng được sự tin tưởng với Khách hàng. Bên cạnh đó, ứng viên cũng sẽ muốn giới thiệu bạn với bạn bè hay gia đình của họ nếu bạn thể hiện sự chuyên nghiệp và đáng tin cậy.

4. Kỹ năng quản lý thời gian

Các nhà tuyển dụng hoạt động trong một thị trường năng động và thường phải xử lý một khối lượng lớn các bản tóm tắt công việc và gặp gỡ nhiều khách hàng hay ứng viên. Kỹ năng quản lý thời gian và khả năng đảm nhận nhiều dự án sẽ giúp bạn quản lý công việc hiệu quả và hoàn thành với kết quả tốt nhất.

Bạn sẽ cần phải ghi nhớ chi tiết của các công việc khác nhau, các doanh nghiệp và ứng viên đang làm việc cùng cũng như ghi chép lại tiến độ công việc để đảm bảo rằng mình đang cung cấp dịch vụ hiệu quả và năng suất. Nếu bạn không thể theo kịp những chi tiết nhỏ và không biết cách sắp xếp mọi việc thì khó có ai có thể tin tưởng vào khả năng của bạn cho những nhiệm vụ thử thách hơn trong tương lai.

5. Làm việc tốt dưới áp lực

Tuyển dụng là công việc mang tính chất cạnh tranh cao và có chỉ tiêu ràng buộc, do đó bạn cần phải có nghị lực và khả năng thích nghi tốt để đối phó với áp lực, hoàn thành chỉ tiêu được giao. Các công ty tuyển dụng cần những người khao khát thành công, nhưng vẫn đảm bảo được sự kiên trì bền bỉ và khả năng giải quyết khủng hoảng khi mọi thứ không đi theo kế hoạch đã định. Nhiều công ty có chính sách khích lệ nhân viên làm việc hiệu quả hơn bằng những khoản thưởng hấp dẫn theo kết quả kinh doanh ngoài lương cơ bản.

Không có ai sinh ra đã là một chuyên gia tuyển dụng. Giống như tất cả các ngành nghề khác, nếu muốn nổi bật, bạn cần phải không ngừng trau dồi kiến thức và tập luyện để hoàn thiện bản thân.

Nguồn: Applancer Careers

500 khóa học Online Programming & Computer Science miễn phí nên học ngay trong tháng 9 (phần 3)

500 courses

PHẦN 1 – PHẦN 2

ADVANCED(85)

Machine Learning Foundations: A Case Study Approach
University of Washington via Coursera

Deep Learning
Google via Udacity

Creative Applications of Deep Learning with TensorFlow
via Kadenze

[New] Structuring Machine Learning Projects
deeplearning.ai via Coursera

[New] Introduction to Artificial Intelligence (AI)
Microsoft via edX

[New] Neural Networks and Deep Learning
deeplearning.ai via Coursera

[New] Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
deeplearning.ai via Coursera

Neural Networks for Machine Learning
University of Toronto via Coursera

Machine Learning: Regression
University of Washington via Coursera

Probabilistic Graphical Models 1: Representation
Stanford University via Coursera

Machine Learning for Data Science and Analytics
Columbia University via edX

Bitcoin and Cryptocurrency Technologies
Princeton University via Coursera

Machine Learning for Data Science and Analytics
Columbia University via edX

Machine Learning for Trading
Georgia Institute of Technology via Udacity

Machine Learning With Big Data
University of California, San Diego via Coursera

Hardware Security
University of Maryland, College Park via Coursera

Artificial Intelligence (AI)
Columbia University via edX

Artificial Intelligence (AI)
Columbia University via edX

Computational Neuroscience
University of Washington via Coursera

Machine Learning: Classification
University of Washington via Coursera

Reinforcement Learning
Brown University via Udacity

Intro to Parallel Programming
Nvidia via Udacity

Interactive 3D Graphics
Autodesk via Udacity

Applied Cryptography
University of Virginia via Udacity

Introduction to Computer Vision
Georgia Institute of Technology via Udacity

Enabling Technologies for Data Science and Analytics: The Internet of Things
Columbia University via edX

Practical Deep Learning For Coders, Part 1
fast.ai via Independent

Parallel programming
École Polytechnique Fédérale de Lausanne via Coursera

Machine Learning
Georgia Institute of Technology via Udacity

Introduction to Computer Architecture
Carnegie Mellon University via Independent

Advanced Operating Systems
Georgia Institute of Technology via Udacity

Machine Learning: Clustering & Retrieval
University of Washington via Coursera

Practical Predictive Analytics: Models and Methods
University of Washington via Coursera

Probabilistic Graphical Models 2: Inference
Stanford University via Coursera

Machine Learning
Columbia University via edX

Machine Learning
Columbia University via edX

Regression Modeling in Practice
Wesleyan University via Coursera

Quantitative Formal Modeling and Worst-Case Performance Analysis
EIT Digital via Coursera

Applied Machine Learning in Python
University of Michigan via Coursera

Introduction to Operating Systems
Georgia Institute of Technology via Udacity

Nearest Neighbor Collaborative Filtering
University of Minnesota via Coursera

Computational Photography
Georgia Institute of Technology via Udacity

Knowledge-Based AI: Cognitive Systems
Georgia Institute of Technology via Udacity

Intro to Information Security
Georgia Institute of Technology via Udacity

Learn TensorFlow and deep learning, without a Ph.D.
Google via Independent

Machine Learning 1 — Supervised Learning
Brown University via Udacity

6.S094: Deep Learning for Self-Driving Cars
Massachusetts Institute of Technology via Independent

Computability, Complexity & Algorithms
Georgia Institute of Technology via Udacity

Reliable Distributed Algorithms, Part 1
KTH Royal Institute of Technology via edX

High Performance Computer Architecture
Georgia Institute of Technology via Udacity

Embedded Hardware and Operating Systems
EIT Digital via Coursera

Relational Database Support for Data Warehouses
University of Colorado System via Coursera

Cloud Computing Applications, Part 2: Big Data and Applications in the Cloud
University of Illinois at Urbana-Champaign via Coursera

6.S191: Introduction to Deep Learning
Massachusetts Institute of Technology via Independent

Introduction to Formal Concept Analysis
Higher School of Economics via Coursera

Approximation Algorithms Part II
École normale supérieure via Coursera

Introduction to Recommender Systems: Non-Personalized and Content-Based
University of Minnesota via Coursera

Discrete Mathematics – Shanghai Jiao Tong University via Coursera

Information Security: Context and Introduction
University of London International Programmes via Coursera

Recommender Systems: Evaluation and Metrics
University of Minnesota via Coursera

System Validation (2): Model process behaviour – EIT Digital via Coursera

Advanced Modeling for Discrete Optimization
University of Melbourne via Coursera

Distributed Programming in Java
Rice University via Coursera

Basic Modeling for Discrete Optimization
University of Melbourne via Coursera

Concurrent Programming in Java
Rice University via Coursera

Deep Learning Explained
Microsoft via edX

Continuous Integration and Deployment
via Udacity

Deep Learning for Natural Language Processing
University of Oxford via Independent

Computer System Design: Advanced Concepts of Modern Microprocessors
Chalmers University of Technology via edX

Nature, in Code: Biology in JavaScript
École Polytechnique Fédérale de Lausanne via edX

Introduction to OpenStack – Linux Foundation via edX

GT — Refresher — Advanced OS
Georgia Institute of Technology via Udacity

High Performance Computing
Georgia Institute of Technology via Udacity

Deep Learning Summer School
via Independent

Statistical Machine Learning
Carnegie Mellon University via Independent

Introduction to Cloud Foundry and Cloud Native Software Architecture
Linux Foundation via edX

System Validation: Automata and behavioural equivalences
EIT Digital via Coursera

System Validation (4): Modelling Software, Protocols, and other behaviour
EIT Digital via Coursera

System Validation (3): Requirements by modal formulas
EIT Digital via Coursera

Matrix Factorization and Advanced Techniques
University of Minnesota via Coursera

Compilers: Theory and Practice – Georgia Institute of Technology via Udacity

Artificial Intelligence – Georgia Institute of Technology via Udacity

Cyber-Physical Systems Security – Georgia Institute of Technology via Udacity

Network Security – Georgia Institute of Technology via Udacity

Parallel Programming in Java – Rice University via Coursera

Nguồn: medium.freecodecamp.org

Cựu CEO Uber Việt Nam Đặng Việt Dũng chia sẻ bài học về sự tranh đấu không ngừng nghỉ

Theo chia sẻ của cựu CEO Uber Việt Nam Đặng Việt Dũng, bài học lớn nhất của ông trong thời gian tham gia Uber là khi sống trong vùng an toàn, chúng ta không thu được điều gì mới mẻ, cũng như không khám phá được khả năng của bản thân.

Những năm gần đây, Uber thường bị đánh giá là lép vế hơn so với một trong những đối thủ cạnh tranh lớn nhất của nó tại thị trường Đông Nam Á – Grab. Nhưng đây không phải lần đầu tiên Uber rơi vào giai đoạn khó khăn. Ở các thị trường khác, Uber cũng phải đối đầu với các công ty vận tải lớn như Lyft và Juno ở Hoa Kỳ, Gett ở châu Âu, Didi ở Trung Quốc và Ola ở Ấn Độ. Ngay từ khi thành lập, Uber đã phải đương đầu với không biết bao nhiêu thử thách từ lên ý tưởng, kêu gọi đầu tư, các vấn đề pháp lý cho đến tìm kiếm tài xế, các chương trình ưu đãi cho khách hàng.

Trải qua 7 năm thành lập và phát triển, Uber giờ đây vẫn đang đứng vững tại thị trường thế giới. Nhưng trong 5 năm, 10 năm nữa, tương lai của Uber sẽ đi về đâu thì lại phụ thuộc phần nhiều vào ban lãnh đạo, mà quan trọng nhất chính là CEO Travis Kalanick.

Cuốn sách “Chuyến đi bão táp – Những câu chuyên chưa kể về hành trình thống trị thế giới của Uber” của tác giả giả Adam Lashinsky vừa được Alpha Books giới thiệu tới độc giả Việt Nam.

Để hiểu kỹ hơn về hành trình thống trị thế giới của Uber và những bước tiến từ phía Kalanick, Alpha Books vừa giới thiệu đến đông đảo độc giả Việt Nam cuốn sách “Chuyến đi bão táp – Những câu chuyên chưa kể về hành trình thống trị thế giới của Uber” của tác giả Adam Lashinsky – một cây bút kỳ cựu và cũng là một chuyên gia tài chính công nghệ hàng đầu của nước Mỹ.

Có độ dày 300 trang in khổ 16×24 cm, cuốn sách kể về chặng đường phát triển của Uber được dịch bởi Nguyễn Thụy Khánh Chương và vừa được Công ty CP Sách Alpha cùng Nhà xuất bản Công Thương chính thức phát hành ngày 15/10 vừa qua.

Trong cuốn sách “Chuyến đi bão táp”, tác giả Adam Lashinsky – một cây bút kỳ cựu của tờ Fortune đồng thời là tác giả cuốn sách nổi tiếng “Câu chuyện Apple” (xuất bản năm 2012) sẽ đưa độc giả tới hành trình xây dựng nên thương hiệu Uber bắt đầu từ thời điểm khó khăn nhất cho đến đỉnh cao mà công ty này đạt được. Thông qua những câu chuyện về 2 nhà sáng lập của Uber là Travis Kalanick và Garrett Camp, độc giả có thể hiểu được tính cách thương hiệu của Uber bị tác động mạnh mẽ như thế nào từ Kalanick, hay tại sao Uber từ bỏ thị trường đông dân bậc nhất – Trung Quốc, và cuộc chiến đấu không ngừng nghỉ với các nhà làm luật ở khắp nơi trên thế giới, kể cả Việt Nam ra sao.

Không chỉ nói đến những thành công mà Uber đạt được mà tác giả Adam Lashinsky cũng chỉ ra nhiều mặt tối trong cơ cấu lãnh đạo cũng như những điểm hạn chế trong hoạt động của Uber. Thời kỳ giữa năm 2014 đến đầu năm 2015 là giai đoạn khủng hoảng tồi tệ nhất của Uber khi công ty này gặp phải hàng loạt các vướng mắc từ trong nội bộ ra ngoài là các khách hàng và tài xế. Từ hình ảnh lịch lãm ban đầu, Uber trở thành một cậu trai mới lớn ngỗ ngược của thung lũng công nghệ hàng đầu thế giới.

Đặc biệt, ấn bản tiếng Việt của cuốn sách “Chuyến đi bão táp – Những câu chuyên chưa kể về hành trình thống trị thế giới của Uber” có lời giới thiệu của cựu CEO Uber Việt Nam Đặng Việt Dũng.

Trong lời giới thiệu cuốn sách, ông Đặng Việt Dũng chia sẻ, bạn đã từng biết đến Uber như một công ty vận tải kiểu mới, đồng thời là nỗi kinh hoàng của các công ty taxi trên toàn cầu từ châu Mỹ, châu Âu, châu Á và tại Việt Nam? Bạn có thể cũng biết đến Uber như một công ty công nghệ giá trị nhất trong lịch sử, một công ty non trẻ mới thành lập trong 7 năm được định giá 70 tỷ USD, thậm chí còn vượt trên giá trị của những hãng sản xuất ô tô lớn nhất thế giới như Ford hay General Motors? Bạn cũng từng nghe những câu chuyện trái chiều về Uber trên báo chí thế giới? Bạn đã, đang và sẽ trở thành khách hàng hoặc đối tác tài xế của Uber?

Tại thời điểm cuốn sách này xuất bản tại Việt Nam, trên thế giới đã có hàng trăm triệu người sử dụng dịch vụ hàng ngày và hàng triệu đối tác tài xế kiếm thêm thu nhập một cách linh hoạt thông qua ứng dụng Uber. Dù có rất nhiều công ty khởi nghiệp tuyên bố về việc thay đổi thế giới, nhưng Uber thực sự là một trong số ít đã làm được điều đó: Uber cung cấp dịch vụ giá cả linh hoạt, tin cậy, an toàn và tiện lợi cho người dùng, một cơ hội kinh tế và một hình thức công việc kiểu mới cho tài xế, là tiên phong của nền kinh tế chia sẻ giúp mọi người chia sẻ phương tiện, giảm thiểu nhu cầu sở hữu xe cá nhân, và về trung hạn sẽ giúp các đô thị trên toàn cầu xanh và sạch hơn.

“Quy mô công ty hiện tại là vậy nhưng những ngày đầu, nhóm làm việc tại Việt Nam năm 2014 chỉ có 4 người ngồi trong văn phòng rộng 8m2. Hàng tuần, chúng tôi chỉ mong tìm được 10 – 20 tài xế, và tìm mọi cách tăng trưởng với chi phí tiết kiệm nhất (như việc giới thiệu bạn bè để nhận chuyến đi miễn phí, hay tự tay đi phát “tờ rơi” Uber cho các bạn trẻ, hay phát kem qua chương trình UberICECREAM – ai cũng thích kem cả!).

Bao đêm trắng, bao ngày thấp thỏm khi các công ty taxi đâm đơn kiện (mọi nghiệp đoàn taxi trên thế giới đều rất quyền lực, nên để lên dây cót tinh thần, chúng tôi đùa vui với nhau rằng chúng ta đang thay đổi cả thế giới!) – chúng tôi chỉ đơn giản tin vào việc mình làm là tốt đẹp và đúng đắn”, cựu CEO Uber Việt Nam Đặng Việt Dũng nhớ lại.

Cũng theo chia sẻ của ông Đặng Việt Dũng, câu chuyện đằng sau bề nổi tảng băng trôi Uber sáng có, tối có. Vực sâu và đỉnh cao chỉ cách nhau trong gang tấc. Hy vọng và thấp thỏm luôn là hai trạng thái cảm xúc đan xen hàng tuần, thậm chí hàng ngày của các Uber-ites (tên gọi của các thành viên Uber) chúng tôi. Một “Chuyến đi bão táp” thực sự.

“Qua cuốn sách này, hy vọng bạn đọc sẽ có thêm những góc nhìn đa chiều về câu chuyện của chúng tôi, để hiểu việc thành lập một công ty khởi nghiệp bắt nguồn từ một ý tưởng hay không khó, mà việc duy trì và tăng trưởng mới phức tạp thế nào. Hơn thế nữa, việc không ngủ quên trên chiến thắng, không bị che mắt bởi những “điểm mù” trong quản lý và chiến lược, cũng như định vị tương lai (trong trường hợp của chúng tôi, tương lai là bất định) luôn là điều trăn trở của người đứng đầu bất kỳ tổ chức nào”, ông Dũng nói.

Trong lời giới thiệu cuốn sách “Chuyến đi bão táp” mới được Alpha Books phát hành, vị cựu CEO Uber Việt Nam cũng cho hay: “Bài học lớn nhất của tôi trong thời gian tham gia Uber là khi sống trong vùng an toàn, chúng ta không thu được điều gì mới mẻ, cũng như không khám phá được khả năng của bản thân. Hy vọng những câu chuyện về sự tranh đấu không ngừng nghỉ để tiến lên trong cuốn sách phần sẽ giúp bạn học hỏi được điều gì đó bổ ích cho bản thân mình”.

Nguồn: ictnews.vn

Kinh nghiệm khi đưa ra 1 quyết định về Product tồi

Tôi thường tự hỏi liệu tôi có bị đuối việc khi quyết định như vậy không.

Tôi thấy có rất ít product manager chia sẻ về thất bại của họ, điều này sẽ khiến những người mới lầm tưởng rằng nhũng PM khác làm việc rất tuyệt vời nhưng sự thật là họ luôn bị vướng phải các sai lầm suốt.

Câu chuyện này là về một quyết định tồi tệ khi làm sản phẩm tôi đã thực hiện khi còn làm PM của FreshBooks.

Nó chẳng phải là một trang sử thi về sự thất bại của một công ty, giống tiểu sử không liên quan của một nhà sáng lập nổi tiếng, nó giống một pha xử lí sản phẩm tồi tệ, không có gì đặc biệt hơn. Sự nghiệp của tôi vẫn sống sót nhưng kinh nghiệm đã dạy tôi phải chú ý tới những giả định của mình và làm cách nào mà bạn vẫn có thể sai kể cả khi bạn đang làm điều đúng đắn.

Thật dễ dàng khi biết được lí thuyết để trở thành 1 PM tốt, nhưng áp dụng kiên thức đó một cách kiên định, kỉ luật và khiêm tốn mới là phần khó.

Bối cảnh

FreshBook là sản phẩm kế toán của một công ty nhỏ, có nền tảng về dịch vụ. Khách hàng chủ yếu là các cơ quan, luật sư, nhà đất, v.v… chủ doanh nghiệp sẽ tính tiền khách hàng của họ dựa trên thời gian và cần theo dõi chi tiêu. Chúng ta sẽ gọi những người sử dụng này là “Owner – Chủ sở hữu” cho phần còn lại của bài viết.

Tần nhìn của FreshBook cho tới thời điểm này là một thế giới nơi chủ sở hữu không cần biết đến kế toán thì mới có thể điều hành doanh nghiệp.

Đối với team product, điều này có nghĩa là nếu chúng ta có thể chưng cất “kế toán” xuống các định nghĩa đơn giản mà chủ sở hữu đã biết ( như gửi hóa đơn) và thực hiện toàn bộ công việc kế toán phức tạp phía sau, chúng ta có thể giải quyết một vấn đề lớn bằng cách cho phép họ tập trung phát triển doanh nghiệp của mình mà không phải đụng đến sổ sách.

Vấn đề

Cho dù FreshBook đem lại cho họ rất nhiều lợi ích, nhưng chủ sở hữu vẫn phải nộp thuế chho chính quyền ít nhất một lần một năm. Bởi vì, đa số chủ ở hữu không có nhiều kinh nghiệm về tài chính, điều này có nghĩa họ phải thuê kế toán vào cuối năm để giúp họ hoàn thành và lưu trữ những tài liệu thuế đó.

Vấn đề xảy ra cho các chủ sở hữu là hầu hết tất cả các kế toán đều sử dụng Quickbooks và FreshBooks không thể tích hợp bởi vì các mẫu data không tương thích với nhau.

Giải pháp là các bảng kê. Các bảng kê là ngôn ngữ vũ trụ cho các kế toán. Công việc của team là chuyển dữ liệu của FreshBooks sang các bảng kê và làm chúng trở nên có thể chia sẻ được để các kế toán có thể nhập dữ liệu của FreshBooks sang QuickBooks và sử dụng.

Xác nhận khách hàng

Chúng tôi dành hàng tháng để chuyển dữ liệu sang các bảng kê, điều này rất phức tạp vì chúng tôi phải áp dụng nhiều nguyên lí kế toán cụ thể cho từng loại giao dịch tại FreshBook.

Tôi tình cờ lại từng là CPA nên cũng tự nhiên trở thành người thẩm định phần kế toán trong team.

Song song với việc xây dựng, chúng tôi dành nhiều thời gian kiểm chứng với cả chủ sở hữu và kế toán.

Với chủ sở hữu, chúng tôi kiểm chứng trải nghiệm người dùng khi xuất các bảng kê và chia sẻ với kế toán của họ. Chúng tôi rất nhanh chóng nhận ra rằng giải thích các bảng kê cho các chủ sở hữu chẳng khác gì giải thích code cho người không phải là lập trình viên vậy.

Vì vậy, chúng tôi quyết định làm sáng tỏ tất cả các định nghĩa của bảng kê từ chủ sở hữu và chỉ giải quyết chúng một cách cơ bản. Chủ sở hữu có thể tiếp tục chụp các hóa đơn và gửi như họ vẫn thường làm và các mục tạp chí vẫn sẽ xuất hiện khi họ cần.

Với các kế toán, chúng tôi xác nhận các nguyên tắc kế toán đang được áp dụng cho mỗi giao dịch FreshBooks. Tôi phải nói chuyện điện thoại với ít nhất một kế toán mỗi ngày trong nhiều tháng như chúng ta đã trải qua một số điều như sau:

Như mọi product team trong giai đoạn xây dựng sản phẩm, chúng tôi đã tạo ra hàng trăm quyết định nhỏ trong quá trình đó: Một vài cái đơn giản như đặt tên các loại chuyển đổi hay phức tạp hơn là team hỗ trợ của chúng tôi sẽ giải quyết các vấn đề của khách hàng mà không cần bằng cấp liên quan đến kế toán như thế nào.

Rồi một ngày, chúng tôi cần phải đưa ra một quyết định khó khăn: Ngày nào chúng ta nên dùng để tạo ra một bảng kê

Mọi chuyện kết thúc bằng việc tôi chọn sai, điều này dẫn đến sự thất bại của toàn bộ project.

Quyết định

“Brandon, chúng ta cần phải chọn ngày để lưu trữ mỗi bảng kê, chúng ta có nên:

  1. Sử dụng ngày mà chủ sở hữu thường nhập các thông tin chi phí, hóa đơn, v.v.. hay
  2. Sử dụng ngày mà chủ sở hữu sẽ tạo ra các thay đổi trên app

Các kĩ sư trong team hỏi tôi

Tôi sẽ nói rất kĩ trong phần tiếp theo để có thể hiểu rõ câu chuyện hơn.

Ngày tháng trong kế toán rất quan trọng cho việc tính toán thuê vì họ có thể xác định xem vài thứ có được tính hay không tính thuế trong năm, kể cả khi nộp cho chính quyền. Một ví dụ đơn giản là chi phí được tạo ra vào ngày 31/12/2016 sẽ được tính vào thuế 2016 nhưng nếu được tạo ra vào 1/1/2017 thì sẽ phải đợi đến năm tiếp theo mới được tính. Điều này có thể tạo nên tác động lớn lên nhà kinh doanh.

Sự phức tạp trong việc chọn ngày càng khó hơn khi FreshBooks cho phép chủ sỏ hữu edit ngày tháng bất kì lúc nào. Sau khi suy nghĩ, chúng tôi nhận ra rằng option 1 ( ngày chủ sở hữu nhập số liệu) có thể dẫn đến việc tình cờ gian lận thuế. Sau đây là bối cảnh:

  1. Chủ sở hữu gửi bảng kê tới kế toán để lưu trữ số liệu năm 2015, bao gồm cả chi tiêu vào tháng 6/2015

2. Vào 2016, chủ sở hữu edit chi tiêu tương tự và đổi ngày sang tháng 2/2016. Sau đó, họ gửi các bảng kê 2016 tới kế toán của mình

Chúng ta đã nộp khoản chi tiêu giống nhau cho 2015 và 2016. Điều này rất tệ và về mặt kĩ thuật nó được xem là gian lận.

Khi nhận ra rằng quyết định này sẽ có nhiều nhánh lớn, tôi tập trung vào việc nói với các kế toán – khoảng hơn 30 người – về hoàn cảnh chính xác. Đa số họ đều nhấn mạnh về tầm quan trọng của việc không cho phép chủ sở hữu tình cờ tăng gấp đôi bất cứ chi phí nào, đặc biệt khi họ không có bất cứ nền tảng về tài chính nào.

Các cuộc đối thoại với kế toán nhanh chóng khiến chúng tôi loại bỏ phương án 1. Thay vào đó, chúng tôi nhanh chóng chuyển sang tập trung vào phương án 2 – sử dụng ngày ghi nhân các chuyển đổi

Đây là một cách tiếp cận trực quan đơn giản. Chủ sở hữu chỉ cần đi về năm họ ghi nhận chi tiêu, nhận thanh toán, v.v… và chúng tôi có thể sử dụng bất cứ ngày nào họ tạo ra chuyển đổi trên app là ngày của bảng kê. Chủ sở hữu không cần phải biết về tác động của ngày trên bảng kê – nó sẽ hoạt động bình thường.

Chúng ta sẽ lặp lại phần thứ 2 của bối cảnh gian lận với mô hình mới này.

  1. Vào 2016, chủ sở hữu edit chi tiêu tương tự và đổi ngày sang tháng 2/2016. Sau đó, họ gửi các bảng kê 2016 tới kế toán của mình.

Vào thời điểm đó, điều này như 1 thắng lợi lớn. Chúng ta vẫn có khả năng thoát khỏi các vấn đề mà không cần phải dạy các chủ sở hữu các kiến thức kế toán. Chúng tôi quyết định chọn lựa chọn 2 và chuyển tới việc tạo ra thêm hàng trăm quyết định tiếp theo.

Vào tháng 12 – một tháng trước khi hầu hết các chủ sở hữu cần đến chúng tôi – chúng tôi đã sẵn sàng, và đã thực hiện một phiên bản beta khác của bảng kê cho 2% người dùng. Phản hồi rất tố và các bảng kê được nhập vào mà không có vấn đề gì xảy ra.

Ra mắt ứng dụng

Tại sao quyết định này lại là một sai lầm?

Bạn có thể nhận ra không? Nếu có, thì Shopify đang tuyển dụng đấy :))

Một vài phần khác của bối cảnh: Đối với hầu hết chủ sở hữu, giai đoạn báo cáo thuế sẽ đi chung với lịch năm ( Tháng 1 – 12), vì vậy nên thuế 2016 sẽ bao gồm bất cứ sự chuyển đổi nào diễn ra giữa tháng 1/2016 đến tháng 12/016.

Hạn cuối nộp thuế thường là vào tháng 6 năm sau, điều này có nghĩa là chủ sở hữu có thể có một vài lần bắt đầu chia sẻ bảng ke với kế toán vào tháng 1/2017

Chỉ mình sự thật này không ảnh hưởng lắm đến chúng tôi bởi vì thời gian chủ sở hữu xuất các bản kê không ảnh hưởng lắm vì dữ liệu trong các lần xuất sẽ tôn trọng bất kì phạm vi ngày nào mà chủ sở hữu đã chọn ( Vd: Lựa chọn tất cả các thay đổi trong năm 2016)

Nhưng chính hành vi cùng với giả thiết xấu chúng tôi đã thực hiện về chủ sở hữu dẫn tới sự thất bại của chúng tôi

Giả thiết xấu mà chúng tôi thực hiện chính là:

Chủ sở hữu ghi lại các giao dịch trong app khi chúng xảy ra trong suốt cả năm

Sự thật là hầu hết các chủ sở hữu, như mọi người, hay trì hoãn và không thực sự ghi lại các giao dịch trên app trừ khi họ phải làm vậy nghĩa là thời gian khi họ cần làm việc với kế toán để nộp thuế,.. nghĩa là vào năm sau.

Sự kết hợp của giả thiết xấu này + các hành vi xuất dữ liệu của chủ sở hữu + quyết định thực hiện lựa chọn 2 căn bản làm tính năng trở nên vô dụng với hầu hết chủ sở hữu.

Điều này có nghĩa là việc các chủ sở hữu trì hõan bắt đầu nhập các giao dịch 2016 vào đầu 2017, tât cả các giao dịch sẽ được coi là thực hiện vào 2017, và bảng kê 2016 hoàn toàn trống rỗng.

Điều này. Chắc chắn. 100%. Là thảm họa.

Hậu quả

Chỉ 25% người sử dụng FreshBooks thường xuyên ghi nhân giao dịch suốt năm mới có thể sử dụng tính năng bảng kê. Những người còn lại, đơn giản là tiếp tục làm việc với các kế toán một cách thủ công để làm các báo cáo của FreshBooks trở nên dễ hiểu

Đây là Kicker: Vì chúng tôi bắt đầu chạy sản phẩm vào tháng 1 nên mãi tới tháng 6 mới biết được đã có vấn đề xảy ra! Trong suốt thời gian đó, chúng tôi đã tiệc tùng, chúc mừng số lượng bảng kê được gửi tăng dần, và lãng phí nhiều phản hồi của chủ sở hữu về việc gửi các bảng kê “… rất dễ dàng, cám ơn nhé” (họ không nhận ra dữ liệu trở nên vô dụng bởi vì các dữ liệu được xuất ra một cách tượng hình cơ bản). Team của chúng tôi thậm chí còn chuyển sang dự án khác.

Ơn trời là, ngay khi chúng tôi bắt đầu nghe về feedback, một team khác đã nhận việc này và nhanh chóng sửa tính năng vào thời gian sau để sử dụng ngày mà chủ sử hữu nhập dữ liệu (lựa chọn 1). Không may là chủ sở hữu vẫn gặp các vấn đề khi nhân đôi chi phí, nhưng nếu có 2 điều xấu, tốt nhất là hãy chọn điều ít xấu hơn. Kể từ khi thay đổi, bảng kê trong FreshBook đã thực sự trở nên hữu ích với chủ sở hữu.

Cùng Product Director của Websosanh khám phá mọi vinh quang, mọi gian khổ của vị trí PM tại đây!

Bài học kinh nghiệm

Chúng tôi không mất khách hàng vì tính năng tệ hại này, tuy nhiên quyết định của tôi đã khiến cả team tốn thời gian làm việc chăm chỉ nhiều tháng vô ích.

May mắn là tôi đã qua khỏi cơn thịnh nộ, và team tôi đã chuyển sang làm một sản phẩm khác có tác động cao nhất cho FreshBook vào năm sau. Là một PM, khi thực hiện quyết định tồi tệ như vậy đã dạy tôi một bài học nhớ đời mà tôi đã nằm lòng hôm nay:

  1. Phải nhận ra tác động của quyết đinh mình đã thực hiện, cho dù nó chỉ là một quyết định nhỏ đi chăng nữa. Một khi PM quyết định sẽ ảnh hưởng đến cả team và quy mô của sản phẩm. Hãy cảnh giác và luôn phải đi sâu vào chi tiết.
  2. Suy nghĩ thật kĩ càng về các quyết định được thực hiện dựa trên giả thiết. Giả thiết chỉ ra khó khăn nhất và những thứ đã ăn sâu vào trong công ty mà hầu hết mọi người đều quên rằng chúng là giả thiết. Thứ 2 là những giả thiết đã ẩn sâu vào thành kiến cá nhân khiến chúng ta không có nhận thức về nó
  3. Các nghiên cứu và xác nhận từ khách hàng đều rất quan trọng, tuy nhiên không phải lúc nào cũng là cơ sở để bạn quyết định. Trong câu chuyện này, tất cả các dấu hiệu đều tích cực nhưng chúng tôi cuối cùng vẫn thực hiện sai sản phẩm. Khách hàng không thể nói cho bạn biết nên xây dựng như thế nào vì họ chỉ có thể thấy phần sản phẩm mà họ tương tác cùng chứ không phải toàn bộ hệ thống đang được xây dưng.

Tôi hi vọng câu chuyện này sẽ xoa dịu hội chứng mạo danh mà hầu hết PM đều phải đối mặt hàng ngày khi cả team đều nhìn vào chúng ta mà đưa ra quyết định. Đây là một công việc cần đưa ra quyết định nhanh chóng tuy nhiên có nguy cơ cao với trách nhiệm vô hạn cho những quyết định đó.

Điều tồi tệ sẽ xảy ra. Bạn có thể không phải là người hoàn hảo nhưng không có nghĩa bạn sẽ không thể trở thành 1 PM tốt.

Nguồn: blackboxofpm.com

Đi thực tập vất vả và thậm chí không có lương: Câu chuyện của những người thành công trên toàn thế giới!

Không chỉ nổi tiếng và tài năng, ở những người này còn có một điểm chung khác: Họ đều từng đi thực tập rất vất vả, thậm chí không được trả lương và phải làm việc liên tục nhiều giờ liền.

Khi nhắc đến việc đi thực tập, nhiều người thường cảm thấy ngán ngẩm vì phải làm các công việc nhàm chán, tẻ nhạt, rồi thời gian cũng dài đằng đẵng không kém gì làm việc toàn phần. Thậm chí, nỗi ám ảnh nhất là khi nghe thấy cụm từ: “Thực tập không lương”.

Nhưng khi nhìn rộng ra, chúng ta mới biết được giá trị của việc đi thực tập nhiều hơn là đồng lương hay giấy chứng nhận. Kể cả những người nổi tiếng, họ cũng phải rất vất vả với công việc thực tập sinh trước khi trở nên thành công. Bill Gates không thể thành công nếu không có thời gian thực tập với máy tính và đạo diễn tài ba Steven Spielberg cũng chưa chắc có cho mình 3 giải Oscar trong sự nghiệp nếu không từng thực tập “chui” tại phim trường Universal.

1. Steven Spielberg

Cái tên Steven Spielberg không còn xa lạ với những người yêu điện ảnh Mỹ khi ông là người đã có 3 giải Oscar trong suốt sự nghiệp của mình. Tuy vậy, không ai biết rằng để có được thành công đó, Steven từng phải làm thực tập “chui” tại Universal.

Ở tuổi 17, một người bạn của gia đình đã giới thiệu cho Steven biết về một số công việc tại phim trường Universal. Vấn đề duy nhất rằng đó không phải là một công việc thực tập sinh “chính thức” và anh không được ra vào trong khu vực phim trường. Tuy nhiên, không vì thế mà Steven bỏ qua cơ hội quý giá này. Chàng thanh niên 17 tuổi vẫn lẻn vào phim trường mỗi ngày, tìm cách nói chuyện với các đạo diễn hay lẻn vào bất cứ chỗ nào có thể.

Dù bị đuổi ra bao lần, Steven vẫn cố gắng quay lại. Ông từng quay một bộ phim ngắn mang tên Amblin và khi các nhà sản xuất của Universal xem qua, họ đã vô cùng ấn tượng. Nhờ những tháng ngày miệt mài đi “thực tập chui” và dĩ nhiên không hề có lương, Steven Spielberg đã có được hợp đồng đầu tiên với Universal, mở ra con đường thành công cho ông sau này.

>>> Xem thêm: Các level trong công việc IT

2. Conan O’Brien

Conan O’Brien là một nghệ sĩ hài kịch nổi tiếng tại Mỹ. Tuy nhiên, sự nghiệp của ông lại phát triển theo hướng mà chẳng ai ngờ tới: Conan từng là một thực tập sinh tại Quốc hội. Trong buổi phỏng vấn “Inside the Actor’s Studio”, Conan nhắc đến việc mình từng là thực tập sinh cho ông Barney Frank tại Hạ Viện Mỹ. Đến năm 2015, ông Frank từng xuất hiện với vai trò khách mới trong một buổi trò chuyện của Conan trên đài TBS.

3. Tom Hanks

Trước khi trở thành một ngôi sao truyền hình nổi tiếng, Tom Hanks từng thực tập tại Lễ hội nhà hát Great Lakes, Cleveland, Ohio. Dù ban đầu thù lao rất ít ỏi và công việc cực kỳ bận rộn, Tom đã học được kỹ năng tự tin trên sân khấu cũng như nhiều kinh nghiệm trong lĩnh vực kịch. Cuối cùng, đợt thực tập kéo dài tới tận 3 năm và Tom Hanks cũng đã bỏ ngang đại học.

>>> Xem thêm: Con đường trở thành thực tập sinh tại Google

4. Bill Gates

Khi Bill Gates chỉ mới 17 tuổi, ông đã đi thực tập với công việc trong Hạ Viện Mỹ. Công việc chính của ông tại đây là đi gửi giấy tờ, chuẩn bị phòng họp mỗi ngày cũng như nhiều công việc văn phòng khác. Trong thời gian làm việc tại đây, ông mới nhận ra rằng chính trị không phải con đường mình muốn theo đuổi.

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

5. Oprah Winfrey

Oprah Winfrey là một hình mẫu thực tập sinh mà bất cứ ai nên học hỏi theo. Bà bắt đầu công việc thực tập tại đài truyền hình Tennessee rồi sau đó được nhận công việc đọc bản tin thời sự. Sau đó, sự nghiệp của Oprah Winfrey phát triển vượt bậc và bà đã lập ra được cả một đế chế truyền thông tại Mỹ.

6. Ursula Burns

CEO của hãng Xerox, bà Ursula Burns cũng đi lên từ vị trí thực tập sinh. Nhiều năm sau đó, bà đã làm nên sự nghiệp và trở thành người phụ nữ da màu đầu tiên được vào trong top 500 CEO do Fortune bình chọn.

Theo Wall Street Journal, Ursula đảm nhận công việc thực tập sinh tại Xerox vào năm 1980 khi đang hoàn thành nốt khóa học thạc sĩ tại đại học Columbia. Khi đó, công việc chính của bà là công nhân cơ khí. Với việc chứng tỏ bản thân thành công, bà đã leo lên nhiều vị trí và trở thành CEO của Xerox.

>>> Xem thêm: Kinh nghiệm đi thực tập dành cho lập trình viên

7. Steve Jobs

Sự nghiệp của Steve Jobs bắt đầu khi ông có công việc thực tập đầu tiên tại Hewitt Packard khi mới 12 tuổi. Tại đây, công việc hính của ông là làm việc trong một dây chuyển sản xuất lắp ráp ốc vít máy tính. Nhờ công việc thực tập này, ông đã gặp được Steve Wozniak, người sau này trở thành đồng sự của Steve Jobs gây dựng lên đế chế Apple vào năm 1976.

Nguồn: Applancer Careers via Kênh 14

Có nên học Vanilla JavaScript? Chắc chắn rồi!

Có nên học Vanilla JavaScript? Chắc chắn rồi!

Mục đích của bài viết này là để nhấn mạnh tầm quan trọng của JavaScript cơ bản đối với front-end developer. Tôi sẽ giải thích cho bạn hiểu vì sao bạn nên biết về (Vanilla) JavaScript. 

Ngoài ra, tôi cũng sẽ đưa một số nguồn học hữu ích để cho bạn bắt đầu tìm hiểu.

Mặt khác, tôi mong bài viết này sẽ giúp các web developers có thêm động lực để không bỏ qua nhưng phần quan trọng của JavaScript như hoisting, closures, hay prototypes và chỉ biết nhắm tới các frameworks như React hay Angular 2.

Mọi người đều muốn developer biết về ${addTheHotFramework}…

Vậy bạn có lí do gì để bỏ qua Vanilla JavaScript?

Có nên học Vanilla JavaScript? Chắc chắn rồi!

Rất khó để trở thành một developer giỏi nếu không hiểu cái nền tảng của một ngôn ngữ. Bạn sẽ cần biết về những qui luật trước khi bắt đầu trò chơi.

Tôi cảm thông với nhiều web developer muốn được đi làm sớm. Chính bản thân tôi cũng từng như vậy.

…..nhưng học về Vanilla JavaScript sẽ giúp ích cho bạn rất nhiều trong tương lai

Xin đừng hiểu nhầm rằng tôi có thành kiến đối với JavaScript frameworks. Nó hoàn toàn ngược lại. Rất nhiều trong số chúng sẽ giúp bạn viết code vừa đẹp lại sạch, dễ bảo trì và debug.

Thế nhưng JavaScript ecosystem đang phát triển quá nhanh. Các frameworks mới vẫn mọc lên như nấm. Nhiều tính năng được cải thiện và tích hợp. Và quan trọng nhất là tất cả những framework ngày nay sẽ bị thay thế bởi những kẻ kế thừa trong tương lai.

Do đó, bạn có còn nghĩ việc biết một JavaScript framework có đủ không?

Hay việc phải biết tất cả mọi libraries và frameworks liệu có khả thi?

Có nên học Vanilla JavaScript? Chắc chắn rồi!

Còn nếu bạn đã quen thuộc với nền tảng của JavaScript thì khi phải dùng framework mới thì bạn sẽ chỉ mất công học về cú pháp. Bởi những qui luật đều được giữ nguyên.

Ngược lại, bạn mà chỉ biết về một JavaScript framework thì sẽ rất khó khi muốn học thêm bởi mỗi framework sẽ dùng một set các qui luật JavaScript khác nhau. Như vậy sẽ rất mất thời gian để bạn học chúng cũng như dễ bị bug khi code hơn.

Các JavaScript frameworks và libraries đều dựa trên Vanilla JavaScript.

Do đó nếu bạn muốn gắng bó dài lâu thì phải biết Vanilla JavaScript. Nó là một trong những yêu cầu cần thiết để một developer thành công, đặc biệt là khi làm trong JavaScript ecosystem.

Có nên học Vanilla JavaScript? Chắc chắn rồi!

Kinh nghiệm cá nhân

Tôi trước khi làm developer đã từng là một luật sư. Chỉ mới cách đây 18 tháng, tôi viết được JavaScript function đầu tiên của mình, và từ tháng thứ mười tôi đã bắt đầu làm việc như một front-end developer.

Do không hề có bất kì kiến thức gì về lập trình, tôi đã mất rất nhiều thời gian để có thể học JavaScript đúng cách. Tôi đã thử qua nhiều cách thức học khác nhau, một số khá là tốt và số khá thì không được như vậy.

Nhưng quan trọng nhất vẫn là việc bạn sẽ phải học JavaScript và nền tảng của nó ngay từ lúc bắt đầu. Frameworks chỉ đứng thứ hai sau đó.

Có nên học Vanilla JavaScript? Chắc chắn rồi!

Hiện tại, tôi đang làm việc với một ReactRedux stack. Dù vậy, tôi vẫn thường gặp phải những vấn đề mà may mắn thay vẫn giải quyết được nhờ kinh nghiệm về Vanilla JavaScript. Đây là những bug cực kì thách thức nếu bạn chỉ biết vài framework.

Học React hay Angular 2 sẽ không giúp bạn biết objects sẽ được passed bởi reference  hay cách closures hoạt động. Để hiểu được những phạm trù này chỉ với framework sẽ rất là khó khăn.

Hơn nữa, khi làm về JSX (React, Vue, Inferno) hay TypeScript (Angular 2), bạn sẽ cần phải hiểu rõ cách mà các framework này hoạt động. Do đó, bạn cũng cần phải biết về JavaScript trước tiên.

Vậy thì tôi nên học JavaScript ở đâu?

Câu hỏi mà hẳn bạn đang thắc mắc là: “Có nguồn nào tốt để học Vanilla JavaScript?”

Phải nói rằng có hàng tấn các nguồn và sách về JavaScript và frameworks của nó. Tuy vậy chỉ có vài nguồn là thật sự tập trung về Vanilla JavaScript.

Có nên học Vanilla JavaScript? Chắc chắn rồi!

Eloquent JavaScript sẽ giúp bạn không chỉ hiểu về JavaScript mà còn cả nền tảng của lập trình. Nếu bạn đã là một developer thì cuốn sách này sẽ cho bạn một cái nhìn mới về JavaScript.

Một nguồn khác cũng khá tuyệt là series sách You Don’t Know JavaScript (YDKJS)  của Kyle Simpson. Kyle rất giỏi trong việc giảng dạy. Những bài học của ông dù là về những khái niệm phức tạp trong JavaScript vẫn rất dễ hiểu và chi tiết.

Một trong những điều tuyệt nhất về Eloquent JavaScript và YDKJS là bạn có thể đọc chúng miễn phí.

Còn nếu bạn thích xem video hơn là đọc sách thì tôi khuyến khích bạn thử qua Kyle’s online coursesJavascript: Understanding the Weird Parts của Anthony Alicea.

Tham khảo các việc làm cho lập trình Javascript mới nhất tại Topdev

Hãy học Vanilla JavaScript ngay từ bây giờ

Bạn sẽ không hối tiếc khi đầu tư thời gian quí giá của mình vào Vanilla JavaScript. Nó sẽ thật sự giúp cải thiện kĩ năng lập trình của bạn.

Với tôi, việc học JavaScript thật sự đem lại lợi ích to lớn hơn là đầu tư vào việc chỉ học Framework thôi. Bởi chúng đều chỉ là những con đường tắt, và ẩn sâu bên dưới, JavaScript là người điều khiển tất cả.

Nếu bạn có thể rút ra một điều gì sau khi đọc bài viết này, có lẽ nó sẽ tương tự như sau:

Vanilla JavaScript sẽ giúp bạn trở thành một developer thành công.

Có nên học Vanilla JavaScript? Chắc chắn rồi!

Nguồn: blog.topdev.vn via Medium

 

So sánh 5 API hàng đầu của Computer Vision

Trong sáu tháng qua, Google, Microsoft và IBM đã công bố một bộ “API thông minh” cung cấp nhiều loại hình hình ảnh, video, giọng nói và nhận dạng văn bản. Ví dụ như qua một bức ảnh ở công viên, bạn có thể nhận biết được các tags bao gồm một con chó, một dĩa nhựa và cây cối. Làm thế nào với các mô hình out-of-the-box ứng dụng cho các mục đích chung, và chúng ta có thể sử dụng chúng để xây dựng các sản phẩm hoặc các tính năng thú vị mới?

Trong bài đăng này, tôi sẽ so sánh khả năng gắn nhãn hình ảnh của năm nhà cung cấp với các quan điểm và đề xuất cho các bạn xây dựng sản phẩm. Tôi cũng cung cấp một công cụ mã nguồn mở, Cloudy Vision, để bạn có thể thử nghiệm những hình ảnh của riêng bạn và chọn nhà cung cấp tốt nhất cho bạn (spoiler: Google không phải là người chiến thắng). Cuối cùng, tôi chia sẻ kết quả ghi lại 40 ví dụ hình ảnh.

Lưu ý rằng mục đích của tôi nhằm để có được một cảm nhận về chất lượng của các API này, đây không phải là một nghiên cứu chính xác. Tôi cũng tập trung vào ghi nhãn hình ảnh, không phải phát hiện khuôn mặt hoặc OCR

Approach

Tôi bắt đầu bằng cách chụp một vài bức ảnh và chạy chúng thông qua các công cụ kiểm tra dựa trên web của một số nhà cung cấp. Kế hoạch của tôi là tự tìm kiếm các kết quả trong bảng tính. Than ôi, nhưng quá trình này quá tẻ nhạt. Nó cũng không đầy đủ bởi vì không phải tất cả các nhà cung cấp đều có các công cụ kiểm tra như vậy, ý tôi là Google.

Tôi nhanh chóng nhận ra rằng để xem xét và so sánh từng phần của nhiều hình ảnh, cách tốt nhất là xây dựng một công cụ nhỏ. Tôi đã viết một Python script để lặp lại một thư mục các hình ảnh, gọi các API của nhà cung cấp khác nhau, cache các câu trả lời, và hiển thị một trang web để xem các dữ liệu tôi quan tâm.

Cloudy Vision là một open source tools để tạo ra các kết quả như thế này cho bộ ảnh của bạn.

Cloudy Vision có thể ghi tag hình ảnh từ Microsoft, Google, IBM, Clarifai và Cloud Sight nhưng rất dễ mở rộng để hỗ trợ nhiều nhà cung cấp hơn. Nếu bạn có tập hình ảnh và muốn khám phá các tags, đây là một điểm khởi đầu tốt cho đánh giá định tính, cũng như cho việc kiểm tra tính chính xác nghiêm ngặt hơn (ví dụ: so sánh nhãn tính với bộ yêu cầu của bạn).

Observations

Tôi dùng khoảng bốn mươi hình ảnh thông qua 5 nhà cung cấp. Tôi khuyên bạn nên xem trang đó tạo thành các hiển thị của chính bạn trước khi đi xa hơn. Dưới đây là một số điều tôi nhận thấy:

  • Hầu hết các hình ảnh đều được gắn với một loại nhãn chính xác cao.
    Kết quả đã đủ tốt để hiểu được bản chất của một hình ảnh, ví dụ: nó là thực phẩm, phòng, nhạc cụ, hay động vật? Khá ấn tượng khi xem xét rất nhiều thứ bạn có thể ném vào nó.

  • Labels có tính cụ thể không đáng tin cậy

Nếu bạn muốn biết chi tiết, chẳng hạn như loại thực phẩm, hoặc chính xác là động vật nào trong bức ảnh, kết quả có sự khác biệt rất lớn. Một số ấn tượng, như nhận ra tablas của tôi (trống cổ điển Ấn Độ), nhưng nhiều hình ảnh không có nhiều nhãn cụ thể.

  • Rất hiếm có lỗi, nhưng sẽ xảy ra

Trong hầu hết các trường hợp, khi thuật toán bị lẫn lộn, nó có xu hướng tạo nhãn có điểm tin cậy thấp, thay vì chỉ đoán sai – vì vậy bạn có thể bỏ qua chúng một cách an toàn. Nhưng ngay cả trong thư mục lưu trữ của tôi, 5-10% các hình ảnh chỉ được dán nhãn không chính xác, đôi khi có kết quả vui nhộn.

  • Có sự khác biệt đáng kể giữa các nhà cung cấp.

Vì quan điểm công khai của họ, và những thành tựu gần đây về AI, tôi nghĩ rằng kết quả của Google sẽ cao hơn các nhà cung cấp khác, nhưng điều đó không nhất thiết phải đúng. Trong tập đoàn nhỏ của tôi, tôi đánh giá Clarifai ở vị trí hàng đầu, tiếp theo là Google và Microsoft về chất lượng tương đương, và sau đó thấp hơn IBM. Lưu ý rằng Clarifai là một công ty tư nhân chỉ tập trung vào việc cung cấp các API nhận diện hình ảnh, và họ đã làm việc này từ năm 2014, trước khi những người khổng lồ bước vào không gian này.

  • Clarifai làm tốt, Google với Microsoft cũng tạm được, Cloudsight… hừm

Bạn có thể nhận thấy trong các ví dụ ở trên rằng các chú thích của Cloud Sight thật tuyệt vời (bạn có thể xem ví dụ bên dưới). Nếu bạn truy cập trang web của họ, bạn sẽ nhận thấy rằng họ giới thiệu về ‘công nghệ nhận dạng hình ảnh’ của họ, và do đó bạn có thể đoán rằng đó là do một mô hình machine learning ấn tượng. Tuy nhiên, có vẻ như họ gắn tag của con người nhiều hơn so với những gì mà họ marketing.

Thứ nhất, độ trễ cho hầu hết các nhà cung cấp API là chưa tới 1 giây, trong khi các tài liệu của Cloud Sight yêu cầu bạn đợi 6-15 giây (trong thực tế thì nó khoảng 5-30). Thứ hai, tôi nhận ra một điều này bên trong tài liệu về sự riêng tư của họ “Dịch vụ của chúng tôi dùng một công nghệ độc quyền sử dụng cả computer vision và crowdsourcing”.Thứ ba, một số tìm kiếm khác đã bật lên chủ đề Reddit về cách chúng hoạt động, và nhận xét này từ humman tagger. Và cuối cùng, tôi đã gửi cùng một hình ảnh với các tên tập tin khác nhau, và có phụ đề khác nhau, cho thấy rằng việc gắn tag của con người là có liên quan. Oh, và nhãn hiệu đầu tiên có lỗi chính tả …!

Vì vậy, trong khi kết quả của Cloud Sight thực sự ấn tượng, tôi không chắc đó là công bằng khi so sánh chúng với các nhà cung cấp khác từ quan điểm nhìn của machine learning thuần túy. Hơn nữa, chi phí của họ cao hơn đáng kể, có thể cho rằng có nhiều trường hợp gắn thẻ thủ công ở phía sau hơn họ cho phép.

Tôi đã gửi cùng một hình ảnh nhưng với một tên tập tin khác nhau cho tất cả các nhà cung cấp. Tất cả đều có cùng các thẻ trừ Cloud Sight.

  • Xoay chiều có thể ảnh hướng đến độ chính xác

Tôi đã làm một phiên bản được quay ngược của hình ảnh của chú chó con được hiển thị ở trên,và như vậy, tôi có kết quả khác nhau. Điều quan trọng là phải nhận biết được, đặc biệt là vì thông tin xoay trong JPEG được lưu trữ trong dữ liệu EXIF ​​và có thể được xử lý bằng các cách khác không theo tiêu chuẩn bởi các ứng dụng khác nhau.

  • Kết quả sẽ tốt hơn nếu bạn zoom vào các khu vực cần quan tâm

Tôi muốn xem nếu tôi có thể lấy camera an ninh của tôi để cho tôi biết rằng có một gói hàng ở cửa. Nó đã không hoạt động tốt, cho đến khi tôi cắt hình ảnh của khu vực được quan tâm để xác định. Nếu trường hợp sử dụng của bạn cho phép người dùng xác định khu vực quan tâm, hãy xem xét cách tiếp cận này.

  • Giá cả theo số lượng

Giả sử bạn có 100.000 hình ảnh để dán nhãn. Google sẽ có chi phí 500 đô la, Clarifai 220 đô la, 200 đô la của IBM và giá của Microsoft vẫn chưa được công bố.

Không quá tồi, xem xét có giá rẻ nhất để có được ở quy mô lớn hoặc để offline processing(so với thời gian thực). Lưu ý rằng Cloud Sight, nhà cung cấp nhãn hiệu có thể đang thực hiện với rất nhiều con người, sẽ có giá 3.000 đô la, mức độ lớn hơn so với các nhà cung cấp gắn bó với machine learning.

Hãy lấy ví dụ giả thuyết: nếu tôi là Dropbox và tôi muốn cung cấp hình ảnh gắn tag cho khách hàng của tôi, giả sử mỗi khách hàng tải lên 500 hình ảnh một tháng, tôi sẽ phải trả 2 đô la cho mỗi khách hàng. Với kế hoạch hàng năm 100 đô la, điều đó sẽ ảnh hưởng đến lợi nhuận của Dropbox, nhưng về mặt lý thuyết, một công ty ở quy mô đó sẽ được giảm giá tốt hơn hoặc chuyển sang xây dựng in house sau khi chứng minh được giá trị cho thị trường.

Kết luận

Tôi ấn tượng với chất lượng phân loại chung – nó đủ tốt để có được đặc tính cơ bản của một hình ảnh, nhanh và chi phí thấp ở quy mô tương đối thấp.

Điều đó nói rằng, rất khó để đánh giá một giải pháp mà không có một vấn đề thực sự. Ví dụ, việc sử dụng là để phân loại(ví dụ: “đây là thực phẩm”), nếu tôi cần những thông tin chi tiết cho trường hợp sử dụng của tôi (ví dụ: “trang web công thức nấu ăn của tôi cần biết đây có phải là một mẩu thịt hay rau”) . Với ý nghĩ đó, hãy để tôi đặt ra một vài giả thuyết khi bạn có thể thấy các API này có giá trị một lần với bạn.

Các vùng mà API sẽ tỏ ra hữu ích ngay lập tức

  • Tổ chức và phân tích hình ảnh chung

Nếu sản phẩm của bạn là trang chia sẻ ảnh người tiêu dùng, trang web chụp ảnh cổ tích, hoặc chỉ có rất nhiều hình ảnh đa dạng mà bạn muốn nhóm và tìm kiếm, bạn có thể thấy rằng việc ghi nhãn chung là đủ để tăng giá trị. Điều này cũng đúng nếu bạn đang cố gắng nắm bắt được nội dung trong một tập hợp lớn các hình ảnh (ví dụ: “những loại gì được hiển thị trên áp phích phim và các thể loại khác nhau?”).

  • Khả năng phát triển E-commerce

Các trang web thương mại điện tử thường kết thúc với nhiều SKUs nơi họ có ít thông tin về sản phẩm nhưng có thể có hình ảnh. Không có từ khóa văn bản, các sản phẩm này phần lớn không thể tìm thấy. Ngay cả việc ghi nhãn cơ bản, như “áo thun” hoặc “áo mùa hè” có thể tăng doanh thu bằng cách làm cho sản phẩm ẩn này trước đây có sẵn thông qua tìm kiếm, trình duyệt, đề xuất…

  • Sử dụng tiểu sử dữ liệu của hình ảnh

Có rất nhiều camera theo dõi an ninh / vật nuôi / em bé ở ngoài đó có thể làm được nhiều hơn với dữ liệu hình ảnh mà họ đang thu thập. Mặc dù nhiều ứng dụng sẽ cần các mô hình tùy chỉnh (ví dụ: giám sát trẻ em Nanit), có thể có một số có thể sử dụng các API chung này, ví dụ: nhận được báo cáo hàng ngày từ camera an ninh nói với tôi khi người gửi thư của tôi đến, các thành viên trong gia đình vào / ra, con chó hàng xóm đi dạo, vân vân.

  • Hiểu hành vi của người dùng để tương tác, giữ chân, bán hàng

Trong nhiều trường hợp, hãy hiểu thêm về hành vi sử dụng của khách hàng giúp bạn cung cấp trải nghiệm sản phẩm tốt hơn hoặc cơ hội để bán hàng. Nếu bạn có một sản phẩm nơi người dùng tải lên hình ảnh của chính họ, bạn có thể thấy những gì họ đang làm và cung cấp cách để tự động cải thiện hình ảnh, bán cho họ một phiên bản tốt hơn hoặc chỉ cần gắn thẻ người dùng bằng một nhãn hiệu giúp bạn tiếp thị họ tốt hơn hình thức marketing offline.

Những vùng mà các API này sẽ không đáp ứng được

  • Yêu cầu đặc biệt cao, hoặc không phổ biến

Nếu bạn có một trang web về công thức nấu ăn và cần biết liệu hình ảnh có nigiri, sashimi, hoặc maki trong đó, thì có thể bạn muốn sử dụng một mô hình tùy chỉnh. Một số nhà cung cấp đã cung cấp các mô hình cụ thể cho các yêu cầu khác nhau, ví dụ: Clarifai có các mô hình tùy chỉnh cho đám cưới, du lịch hoặc thực phẩm.

Có nhiều khả năng, nếu bạn có thể sản xuất một bộ sưu tập có chú giải đáng kể, bạn sẽ muốn mô hình phân loại của riêng bạn. Trong trường hợp này, bạn không nhất thiết phải bắt đầu từ đầu bằng cách xây dựng phân loại của riêng bạn, các nhà cung cấp khác nhau cũng cung cấp các API đơn giản để đào tạo phân loại với các ví dụ tích cực (ví dụ “đây là sashimi”) và các ví dụ tiêu cực (ví dụ: “như sashimi nhưng không phải nó”). Tôi đã không cố gắng làm điều này, nhưng tôi mong muốn nghe nếu những người khác đã tìm thấy chúng để làm tốt.

  • Độ chính xác là quan trọng

Tính chính xác về gắn thẻ chung phụ thuộc vào mức độ chi tiết mà trường hợp sử dụng của bạn cần. Tôi đã không thực hiện đánh giá độ chính xác định lượng, nhưng số liệu định tính nhỏ của tôi cho thấy bạn có thể có khoảng 80-90% (phạm vi rộng). Nếu bạn cần gắn thẻ chính xác cao, các mô hình này có thể là một khởi đầu tốt, nhưng bạn sẽ muốn tăng thêm nó với một số loại xét duyệt của con người. Trong những trường hợp này, Cloud Sight có thể là một giải pháp tuyệt vời, nhưng cũng tốt Mechanical Turkey, hoặc người mới tham gia vào vấn đề này như Spare5 (đây cũng là những giải pháp tuyệt vời để xây dựng đào tạo phân loại của riêng bạn).

Suy nghĩ riêng:

  • Các API ghi nhãn hình ảnh này có nên dùng không?
    Tôi thấy khó để có được một ý tưởng về bao nhiêu người đang thực sự sử dụng các API này trong sản xuất. Có một số tín hiệu, chẳng hạn như các chủ đề như thế này trên Hacker News, hoặc phần thảo luận khá sôi động trên các diễn đàn Azure, nhưng tôi đã không nghe thấy từ những người dùng hài lòng. Tôi thầm nói rằng đây là những trường hợp tôi mô tả ở trên, và do đó, sẽ đặt cược rằng chúng ta sẽ thấy các công ty tư nhân và cộng đồng tiếp tục cung cấp các dịch vụ này.
  • Hình ảnh có dán nhãn chung chung cho Google, MS, v.v …?
    Tôi không chắc chắn về nhãn dán chung chung, nhưng những gì tôi biết là những sản phẩm gateway tuyệt vời cho các công ty cuối cùng sẽ phát triển và muốn đầu tư nhiều hơn vào việc xây dựng các mô hình tùy chỉnh. Tại thời điểm đó, bạn có thể bắt đầu tận dụng Tensor Flow của Google hoặc các sản phẩm Azure khác của Microsoft để giúp xây dựng, đào tạo và triển khai các mô hình của riêng bạn; và đây là nơi đặt cược chiến lược dài hạn thật sự. Vì vậy, mặc dù dán nhãn hình ảnh chung chung có thể không phải là mục tiêu cuối cùng của việc kinh doanh, nhưng đó là một cách xứng đáng để chiếm được khách hàng tương lai.
  • Tôi rất thích nghe từ người dùng thực.
    Tôi tò mò muốn nghe từ những người cần các giải pháp gắn thẻ, và đã thử bất kỳ nhà cung cấp này. Trường hợp sử dụng của bạn là gì? Liệu bạn có dùng các nhãn APIs trước tiên hoặc bạn cần một giải pháp tùy chỉnh nhiều hơn? Bạn đã quyết định đi với những nhà cung cấp này hay không? Bạn đã làm gì với thay vào đó, và làm thế nào nó là làm việc cho bạn? Nếu bạn có khuynh hướng chia sẻ, tôi rất muốn nghe nhiều hơn, và có thể đăng một bài đăng blog cập nhật lên blog này.

Resources

  • Cloudy Vision Github page
  • Cloudy Vision output for my small corpus
  • Microsoft Computer Vision API
  • Google Cloud Vision API
  • IBM Vision Recognition API
  • Cloud Sight API
  • Clarifai

Nguồn: blog.topdev.vn via goberoi.com 

 

Vietnam Web Summit – Chuỗi sự kiện được cộng đồng phát triển Web mong chờ nhất trong năm đã chính thức quay trở lại

Tiếp nối thành công của Vietnam Web Summit 2020 – chuỗi sự kiện công nghệ dành cho cộng đồng phát triển web. Năm nay, Vietnam Web Summit sẽ tiếp tục được tổ chức ở 2 thành phố lớn TP.HCM (01/12) và  Hà Nội (08/12).

Vietnam Web Summit là chuỗi sự kiện thường niên dành cho cộng đồng phát triển web, quảng cáo web. Được đánh giá là một trong những sự kiện web lớn nhất tại Việt Nam, với sự tham gia của các ông lớn như Amazon, Facebook, Nielsen…, Vietnam Web Summit 2017 hứa hẹn là đại tiệc công nghệ được mong chờ nhất trong giai đoạn cuối năm!

Vietnam Web Summit sẽ tiếp tục hỗ trợ các doanh nghiệp trưng bày booth demo sản phẩm, giới thiệu những ý tưởng công nghệ mới nhất đến từ các tập đoàn công nghệ, các Tech startups. Đây cũng là cơ hội gặp gỡ với các nhà đầu tư thiên thần, đại diện các quỹ đầu tư và xuất hiện trên các phương tiện truyền thông của sự kiện. 

Theo đại diên ban tổ chức Vietnam Web Summit dự kiến thu hút khoảng 9.000 developer trên cả nước, cùng hơn 100 diễn giả trong và ngoài nước, với hơn 100 chuyên đề chia sẻ chuyên sâu về Technical (Cloud, Tech, Trend) và E-commerce (Payment, Advertising, Marketing) cùng những cập nhật mới, xu hướng mới & dự đoán về ngành công nghiệp Internet tại Việt Nam. 

Theo đánh giá của các chuyên gia, năm 2017 ghi nhận sự bùng nổ của hàng loạt các công nghệ Web: Trí thông minh nhân tạo (AI), máy học nâng cao (Advanced Machine Learning), trợ lý ảo, thực tế ảo (VR) và tương tác thực tế (VR), … Đặc biệt trong giai đoạn cách mạng cộng nghiệp 4.0 đang đến rất gần, khi mà những công nghệ mới thay đổi từng ngày từng giờ thì Vietnam Web Summit 2017 là cơ hội lớn để các doanh nghiệp, developer cập nhật những công nghệ web mới nhất, trau đổi trực tiếp với các chuyên gia đầu ngành, đồng thời cũng là diễn đàn để các doanh nghiệp, developer được gặp gỡ, giao lưu, trao đổi kiến thức kinh nghiệm từ đó mở rộng quan hệ hợp tác và giới thiệu sản phẩm của mình tới cộng đồng.

Ưu đãi đặc biệt dành cho độc giả của Techtalk 200 bạn đăng ký vé đầu tiên sẽ được giảm 50 000/vé Standard.

Đăng ký tại đây

Thời gian & địa điểm sự kiện

  • 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 Trung tâm Hội nghị Forevermark, 614 Lạc Long Quân, Q. Tây Hồ, Hà Nội

Thông tin chi tiết:

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

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

 

Nguồn: TopDev via Techtalk

Làm sao để chuyển đổi từ Graphic Design sang UX Design? (phần 2)

Graphic design

PHẦN 1

Lợi thế lớn nhất của 1 Graphic design khi chuyển sang UX Design

Tính thẩm mĩ

Lợi thế lớn nhất của Graphic design khi chuyển sang UX Design là họ có thể làm mọi thứ trở nên hấp dẫn hơn. Một quan niệm sai lầm phổ biến về UX Design là không cần khả năng sử dụng thẩm mĩ vượt trội. Ngược lại, tính thẩm mĩ tốt được nhận thấy sẽ cải tiến tất cả trải nghiệm của người dùng sản phẩm – bằng cách làm họ thoải mái hơn, tạo ra ấn tượng ban đầu tích cực nói chung là cho thấy bạn đang quan tâm tới khách hàng.

Tính thẩm mĩ cũng giúp designer giao tiếp với các bên liên quan trong nội bộ công ty. Những người cựu-graphic design có thể trình bày kết quả khảo sát theo cách mà các bên liên quan phải ngồi im và thực sự chú ý. Kĩ năng graphic design thường được coi là tùy chọn trong UX research, nhưng không thể phủ nhận tác động của những kết quả khảo sát được trình bày đẹp. Nếu bạn thực sự muốn thay đổi, bạn sẽ cần phải cân bằng xu hướng khiến mọi thứ lộng lẫy với nhu cầu phát triển dự án design.

Đã có nhiều lần UX Design khi mà chỉ vài bức vẽ nguệch ngoạc ở phía sau tờ khăn ăn là quá đủ thay vì dành 3 ngày để tạo ra 1 tờ poster trong trường hợp này.

Các quy ước và xu hướng

Với nền tảng sẵn về design không chỉ có nghĩa là bạn có thể nắm bắt các thuật ngữ thiết kế, mà còn có nghĩa là bạn sẽ hiểu và nắm bắt được các xu hướng trong việc thiết kế web và app. Đa số các UX Design sẽ sử dụng các quy ước chuẩn (Như trạng thái chuyển đổi bật/tắt, danh sách thả xuống hay nhiều lựa chọn v.v.) vì người sử dụng rất mong chờ những tương tác này trên website.

Graphic design, đặc biệt khi bạn đã từng tạo ra các bản mẫu trong qua khứ – đều cũng sẽ quen thuộc với các quy ước này. Điều đó có nghĩa là bạn sẽ thích nghi nhanh hơn với vai trò là 1 UX Design hơn là một người không có nền tảng trước đó. Có thể nói giao tiếp là cốt lõi của bất cứ dự án design nào và khả năng trình bày tất cả những gì mình mong muốn là một lợi thế lớn.

Làm sao để tăng cường các kĩ năng khi nhảy từ Graphic Design sang UXDesign?

Liệu có khoảng cách nào giữa các kĩ năng của 1 Graphic Design và 1 UX Design hay không? Tất nhiên là có, nhưng đó không phải là 1 thứ không thể vượt qua. Graphic Design đã nói lên ngôn ngữ của thiết kế rồi, họ chỉ cần chải chuốt thêm cho các kĩ năng về UX Design nữa thôi.

Khi bạn đã có những kĩ năng đó rồi, bạn có thể đem chúng vào các dự án graphic design ( vì thiết kế trải nghiệm người dùng có thể cung cấp các thông tin như đối với thiết kế sản phẩm và đưa vào CV của bện để làm nổi bật các kĩ năng UX Design cũng như là Graphic Design).

Như đã đề cập ở trên, chìa khóa đích thực cho các graphic designer là hiểu các nghiên cứu người sử dụng trong tất cả các hình thức. Tất cả các khóa học chúng tôi nêu ra dưới đây đều giải quyết nhu cầu này ở mức độ lớn hơn.

Các khóa học Online

Interaction Design Foundation: Bạn có thể xem tại đây

Coursera: Bạn có thể tìm hiểu tại Coursera.org, là một kênh giáo dục giá rẻ nhưng có chất lượng khá cao, cung cấp khóa học trên nhiều lĩnh vực bao gồm cả UX.

Udemy: Là một bên mô giới khóa học lớn nhất thế giới. Họ không thiết kế ra các khoác học của riêng mình mà thay vào đó họ cho phép những người tạo ra khóa học bán trên nên tảng của họ

Các lớp học

Nielsen Norman Group: Nếu bạn có nhiều tiền hơn và thích học trên lớp thay vì các khóa học online thì bạn có thể tham khảo các khóa học tại  Nielsen Norman Group. Đây là một trong những nơi có danh tiếng tốt nhất và được tôn trọng nhất trong vấn đề đào tạo UX.

Cooper: Cũng là một trong những nơi có uy tín lớn trong đào tạo UX Design. Họ đưa ra nhiều địa điểm học – việc này sẽ phù hợp với những người ngại di chuyển.

Các khóa học đại học

Chúng tôi không chắc học đại học sẽ là một sự lựa chọn tốt nhất cho những người tìm kiếm cơ hội đổi hướng nghề nghiệp, không chỉ tốn nhiều chi phí mà còn tốn thời gian nữa. Bạn có thể học hỏi và tìm tòi các phương thức khác hơn là dành 3, 4 năm học đại học hay 2 năm học master.

Nếu bạn không biết mình nên đầu tư vào loại hình học tập nào thì cũng được thôi. Việc xác định các giá trị cộng thêm nào cần cho sự nghiệp của bạn có thể sẽ khá khó khăn. Nếu vậy, chúng tôi đã tập hợp được một phần tính toán để giúp bạn có quyết định tốt hơn thông qua ROI, hy vọng điều này có thể giúp ích cho bạn.

Xây dựng mối quan hệ

Một khi bạn đã chuẩn bị đầy đủ và cảm thấy sẵn sàng để làm 1 UX Design, có thể ban đầu sẽ cảm thấy khó khăn trong việc tạo các mối quan hệ. Cơ hội tốt nhất thường được tìm thấy khi có người giới thiệu việc trong ngành cho bạn. Một trong những nơi thích hợp nhất để tạo quan hệ là Linkedin. Hãy tham gia vào 1 vài group UX, bắt đầu đóng góp vào group đó cũng như xây dựng các network quan trọng với bạn của bạn. Nhưng cứ chậm rãi đã, đừng chỉ thể hiện và đòi hỏi 1 công việc ngay. Bạn sẽ cần các mối quan hệ trước khi có người giúp bạn.

Một cách hữu dụng khác để bắt đầu tạo quan hệ là follow các thành viên nổi tiếng trong cộng đồng UX trên Twitter. Bạn không chỉ học hỏi được rất nhiều từ họ mà còn có thể tương tác với các follower khác.

Mentor & Feedback

Một trong những cách tuyệt vời để phát triển sự nghiệp là làm việc với một người hướng dẫn đã từng làm trong lĩnh vực UX Design, bạn có thể tìm thấy người hướng dẫn thông qua network của chính bản thân mình.

Kết luận

Thật tuyệt nếu bạn chuyển từ Graphic Design sang UX Design, điều này có thể không quá khó như bạn nghĩ đâu. Bạn chỉ cần học tập thêm các kĩ năng cần thiết và áp dụng vào với công việc hiện tại. Nếu bạn cảm thấy đã đúng thời điểm, bạn có thể bắt đầu xây dựng các mối quan hệ của mình và lên lịch hẹn phỏng vấn ngay.

Nguồn: topdev.vn via interaction-design.org

Xem thêm: Các vị trí tuyển ui/ux designer lương cao

Để là một người thành công, đừng bao giờ tin vào những lời mà người thành công nói!

Bill Gates, Jack Ma, Steve Jobs hay đủ những minh chứng về sự thành công đi lên từ tay trắng có thể nói cho bạn nghe những điều đầy mê hoặc, đầy tính triết lý về sự thành công. Nhưng nếu tỉnh táo và muốn mình được như họ, điều đầu tiên bạn phải làm là bịt tai lại và đừng nghe họ nói.

Chẳng cần phải là những Bill Gates hay Jack Ma, Steve Jobs hay Mark Zuckerberg đình đám cả thế giới đều biết, chung quanh cuộc sống thường nhật này, mỗi người chúng ta có lẽ đã nghe mòn tai những câu chuyện “con nhà người ta” bỏ học/bỏ việc/bỏ thành phố về quê kinh doanh kiếm bạc tỷ, bán mỹ phẩm online tiền thưởng doanh thu vài chục tỷ, khởi nghiệp thành công sở hữu doanh nghiệp hàng triệu đô… Những từ khóa “thành công”, “đam mê”, “bứt phá” “bạc tỷ” khiến người ta cảm thấy được truyền cảm hứng và tiếp thêm khát khao.

Nhưng khi ta đã bị hạ đo ván, hay khi ta cảm thấy quá chán chường sau nhiều năm bươn chải mà thực tế sao chỉ toàn đắng cay, ta bắt đầu cảm thấy hình như có gì đó rất sai!

Đó cũng là lúc bạn bắt đầu học được những bài học đầu tiên về cách đặt lòng tin.

Để là một người thành công, đừng bao giờ tin vào những lời mà người thành công nói! - Ảnh 1.

Và bây giờ, để tôi nói bạn nghe, vì sao chúng ta không thể tin vào câu chuyện làm giàu hay câu chuyện thành công của người khác.

Trong một bài phỏng vấn, Chủ tịch công ty quảng cáo 24h Phan Minh tâm đã từng nói: “Đừng nghe những câu chuyện thành công, dù của Bill Gates hay Jack Ma, hay ngay cả chuyện thành công của ông chủ 24h. Mọi người cứ bảo tôi chia sẻ thành công, nhưng các bạn không thể “bơi” lại thành công. Có thể đã từng có một câu chuyện thành công như thế, nhưng khung thời điểm của câu chuyện ấy đã không còn nữa (PV: Gọi là thiên thời địa lợi khi sự việc ấy xảy ra). Các doanh nhân chia sẻ cho các bạn bí quyết, mặc dù có thể bạn thông minh hơn, tài giỏi hơn, nhưng nếu làm lại giống vậy thì tỷ lệ thành công tôi đánh giá chỉ 1/1000, 999 bạn còn lại không thể thành công được”.

Nếu bạn đã từng đọc tiểu thuyết “Hồn ma sành điệu” của nhà văn Sophie Kinsella, chắc hẳn bạn có biết một chi tiết khá buồn cười trong sách khi nhà văn miêu tả về một vị “diễn giả về làm giàu”. Ông ta đi khắp nơi với bài diễn thuyết ấn tượng là bắt khán giả giơ cao đồng tiền và đọc khẩu hiệu, như kiểu gửi sự khát khao kiếm tiền của mình vào vũ trụ và rồi chúng ta sẽ được đền đáp xứng đáng, rồi hàng loạt những giáo lý, điều luật khác về cách mà ông ta đã làm giàu.

Nhưng điều không ngờ nhất, là hóa ra ông không kiếm bạc tỷ ở nơi nào khác cả, mà tất cả những vị khán giả đang say sưa đặt hết niềm tin vào vị “diễn giả làm giàu” kia mới chính là nguồn kiếm tiền của ông ta. “Vị diễn giả” không bán kinh nghiệm, ông ta chỉ bán những lời hô hào đẹp đẽ. Xã hội của chúng ta đã quá quen với việc đặt câu hỏi Ai đó đã thành công như thế nào? Các quầy sách ngập tràn đầu sách về năm điều mười lẽ bạn cần làm, cần học để trở nên giàu có hơn. Nhưng rốt cuộc bạn sẽ nhận ra có quá nhiều “thuyết âm mưu” hay điều chưa kể đằng sau những lời đẹp đẽ nào đó.

Để là một người thành công, đừng bao giờ tin vào những lời mà người thành công nói! - Ảnh 2.

Xã hội của chúng ta đã quá quen với việc đặt câu hỏi Ai đó đã thành công như thế nào? Nhưng rốt cuộc bạn sẽ nhận ra có quá nhiều “thuyết âm mưu” hay điều chưa kể đằng sau những lời đẹp đẽ nào đó. – quote

Hồi trước, có một lần tôi biên tập bài phỏng vấn của một bạn trẻ khởi nghiệp trong lĩnh vực khá thú vị và mới mẻ, nhưng có câu hỏi vẫn chưa được trả lời trọn vẹn, tôi bảo cộng tác viên đi khai thác thêm. Cụ thể là bạn trẻ ấy đã huy động vốn như thế nào, vì ai cũng biết điều quan trọng nhất khi khởi nghiệp là tìm được những nhà đầu tư thiên thần – người sẽ bỏ tiền vào dự án. Rốt cuộc, câu trả lời là: Gia đình của bạn trẻ đó rất giàu có, và họ đã chi rất nhiều tiền cho con mình khởi nghiệp.

Nhưng bạn trẻ kia đề nghị không ghi chi tiết ấy vào bài viết với lý do: Sợ rằng viết như thế sẽ làm chùn bước những bạn trẻ khác cũng đang muốn khởi nghiệp (!) Câu chuyện này khiến tôi nhớ về một lần đọc được ở đâu đó viết về Donald Trump, rằng chàng thanh niên Trump ở vào tuổi đôi mươi tươi đẹp và giàu nhiệt huyết nhất, đã quyết định không ăn bám gia đình và khởi nghiệp với đâu đó chừng… 14 triệu đô la vay từ bố, chưa kể trong lúc kinh doanh khó khăn đã mượn của bố thêm 9 triệu đô la.

Nói vậy không có nghĩa là anh bạn trẻ kia hay Donald Trump hay bất cứ ai khởi nghiệp từ tài sản kếch xù của gia đình đều là người không tài giỏi. Họ giỏi chứ, ở đây không bàn về họ! Tôi chỉ muốn nói nếu bạn chưa bao giờ là phóng viên phỏng vấn hay biên tập viên, thì khi bạn lướt qua những con chữ trên mặt báo, bạn sẽ không bao giờ biết được điều gì đã được chọn ẩn đi trong những câu chuyện thành công khiến gần như cả thế giới phải nức lòng ngưỡng mộ.

Để là một người thành công, đừng bao giờ tin vào những lời mà người thành công nói! - Ảnh 3.

Nếu như tôi không tình cờ là biên tập viên của bài phỏng vấn đó, nếu như Donald Trump không ra ứng cử tổng thống khiến phe đối thủ phải đào xới profile thực sự của ông ta lên, thì có lẽ những dòng này cũng sẽ không bao giờ được viết ra.

Lý do cuối cùng tôi muốn nói rằng vì sao bạn không nên cả tin vào những điều đẹp đẽ, đó là vì xã hội chúng ta chưa quen nhìn nhận thất bại. Với đa số, thất bại chỉ là thua cuộc mà thôi! Mark Cuban đã viết trong một cuốn sách của ông: “Không quan trọng là bạn thất bại bao nhiêu lần (…) Tất cả những gì bạn cần làm là học từ chúng và từ những gì xung quanh, bởi vì điều quan trọng nhất trong kinh doanh chính là một lần bạn đạt đến thành công. Và khi đó, mọi người có thể nói rằng bạn may mắn như thế nào”.

Tất cả những người thành công đều từng thất bại nhiều hoặc rất nhiều lần. Không phải chúng ta không biết! Thực ra thế giới này cũng đã đầy rẫy những câu chuyện lên voi xuống chó. Nhưng giống như bước vào một cuộc hôn nhân, đa phần chúng ta đều đặt sai câu hỏi. Thay vì: “Anh/em tuyệt vời đến thế nào”, lẽ ra chúng ta phải hỏi: “Anh/em có thể điên rồ và không thể chịu nổi đến cỡ nào?”. Trong công việc, sự nghiệp, đa phần chúng ta đều hỏi: “Mình có thành công được như người đó không?”, trong khi lẽ ra phải hỏi: “Mình có thể chịu nổi những thất bại mà người đó từng trải qua hay không?”.

Để là một người thành công, đừng bao giờ tin vào những lời mà người thành công nói! - Ảnh 4.

Ví dụ, nếu bạn muốn được như Mark Cuban, ông chủ của một đội bóng, doanh nhân, nhà làm phim thuộc hàng tỷ phú Mỹ, bạn phải chắc rằng mình có thể đi qua được những năm tháng mà ông đã từng không ngần ngại chia sẻ: “Tôi về đến nhà và thấy cả căn phòng tối om vì không đủ tiền trả hóa đơn tiền điện. Đó vừa là nguồn động lực to lớn lại vừa là nỗi xấu hổ khó quên”.

Nếu bạn mơ một giấc mơ tỷ phú, hãy chuẩn bị tinh thần cho rất nhiều năm tháng bạn phải sống như một ăn mày khu ổ chuột! Đó chính là hiện thực!

Để là một người thành công, đừng bao giờ tin vào những lời mà người thành công nói! - Ảnh 5.

Có một thí nghiệm thế này: đem 5 con ong và 5 con ruồi nhốt chung trong một chai thủy tinh, sau đó đặt ngang cái chai, hướng cho đáy chai quay về cửa sổ. Chuyện gì sẽ xảy ra?

Năm con ong không ngừng hướng về phía đáy chai để tìm lối thoát, cứ thế cho đến khi kiệt sức hoặc đói mà chết; còn những con ruồi thì chỉ một lúc sau đã có thể xuyên qua đoạn cổ chai mà thoát thân. Lý giải ở đây chính là, ong vì thích ánh sáng và kiên định nghĩ rằng lối thoát là nơi có ánh sáng, nên tự đẩy mình vào chỗ chết. Ruồi thì chả để ý gì đến ánh sáng, chúng chỉ nghĩ cách nào để thoát thân nên bay tứ tung, kết quả là sau bao nhiêu lần nhầm hướng cũng đến lúc tìm được lối ra. Thí nghiệm này chỉ để nói lên một thông điệp:

Để là một người thành công, đừng bao giờ tin vào những lời mà người thành công nói! - Ảnh 6.

Thực ra điều này có thể gây lúng túng cho một số người. Kiên định cũng là tốt, mà uyển chuyển cũng là tốt? Làm người có nguyên tắc là tốt, nhưng biết thay đổi để thích nghi cũng là tốt? Rốt cuộc chúng ta phải làm sao mới đúng? Tin vào bản thân là tốt, mà không tin vào bản thân cũng là tốt, ủa vậy rốt cuộc là thế nào? Câu trả lời chính là:

Cân bằng mới là tốt! Liều lượng chính là thứ quan trọng! Ở đời, nói cho vui thì là: tuyệt đối không có gì là tuyệt đối!

Nếu bạn phải sợ một trong hai loại người: người hiểu biết mà quá kiên định, và người kém hiểu biết nhưng sẵn sàng thích nghi, thì bạn nên sợ hạng người thuộc vế đầu tiên. Bởi vì người quá kiên định thường khó lòng đối thoại. Họ có định kiến quá mạnh về mọi thứ, dán nhãn lên mọi loại người. Bạn sẽ cảm thấy khó chịu vì có thể họ quá kiêu hãnh để chấp nhận một ý kiến khác mình, hoặc có thể vì họ tùy tiện phán xét và xếp bạn vào một nhóm loại nào đó, quá nặng nề định kiến hoặc quá hời hợt về cảm quan. Họ có thể rời bỏ thứ gì đó rất nhanh vì đã dán nhãn “rác”, và cũng bâu vào một suy nghĩ nào đó rất chặt, vì tin nó là “đúng”.

Cả tin vào người khác đã đáng sợ, nhưng ít ai nghĩ rằng mình cũng có thể bị lừa bởi chính bản thân mình.

Chính vì thế một khi bạn đã là người quá cả quyết vào bản thân, người khác sẽ không còn muốn mở ra cho bạn thấy những cánh cửa khác nữa. Họ sẽ im lặng, hoặc rời đi một mình. Giống như nếu hình dung thí nghiệm ở trên là một bộ phim, chúng ta sẽ thấy một lũ ong ầm ầm cả quyết lao về đáy chai, không một con ong nào có thể nghe thấy tiếng gọi của những chú ruồi. Ngay cả khi tất cả ruồi đã thoát ra khỏi miệng chai, hẳn là đàn ong cũng không thèm bận tâm.

Để là một người thành công, đừng bao giờ tin vào những lời mà người thành công nói! - Ảnh 7.

Thực ra, bao nhiêu niềm tin đặt vào đâu là một bài toán rất khó của mỗi người. Ngày hôm nay ta có thể rất tin vào điều này để rồi ngay ngày mai tại một khúc quanh của cuộc đời mọi thứ bỗng ngã đổ rất đau lòng. Điều duy nhất ta có thể bám víu chính là sự tương đối và mưu cầu cân bằng giữa mọi thứ. Quá nghi ngờ cũng không tốt nhưng hãy luôn để mở cho mình những khả năng khác. Đừng bao giờ để bản thân bị mắc kẹt trong những câu chuyện của người khác và cả trong những cả quyết của bản thân mình.

Nguồn: kenh14.vn

Con đường trở thành Product Manager từ lập trình viên tại Amazon

Con đường trở thành Product Manager từ lập trình viên
Một vài năm trước, tôi còn không biết đến sự tồn tại của cụm từ “Product Manager”. Tôi là một software engineer và rất thích code. Tuy nhiên, hơn cả việc code logic, tôi lại thích làm việc với các bên liên quan để lấy yêu cầu cho app tôi đang built, và đưa ra các tiêu chuẩn thiết kế lấy người sử dụng làm trung tâm. Tôi cảm thấy phấn khích khi giải quyết các vấn đề và xác định các trải nghiệm người dùng trong sản phẩn của mình
Vài năm sau, tôi hiện tại là Product Manager tại Amazone Web Service.Nhiều người hỏi tôi – “Làm sao mà chị trở thành Product Manager được thế?” đặt ra cho tôi câu hỏi “ Vậy làm sao tôi lại có thể trở thành Product Manager?”

Hành trình của tôi

Tôi có background về Tech, tôi bắt đầu code từ khi còn học trung học và thích tự mình built các sản phẩm. Tôi có kinh nghiệm 5 năm làm trong các lĩnh vực Data Structure, Thuật toán, Database … và một vài khóa học khác ( tôi cũng trải qua 3 lần intern). Tôi tốt nghiệp đại học ngành Software Engineering và bắt đầu đi làm Dev tại Goldman Sachs. Cùng với đó, tôi cũng tham gia nhiều hackathons và làm việc trong các Tech projects.

Trong khi làm việc tại Golden Sachs, tôi có cơ hội hướng dẫn một nhóm nữ học sinh trong chương trình Technovation Challenge. Đây là cơ hội tốt cho tôi khi làm việc cùng 1 team để thực hiện 1 App Android về sức khỏe. Lần làm việc này đã cho tôi kinh nghiệm và củng cố niềm yêu thích của tôi trong việc xây dựng sản phẩm.

Trong tôi luôn có một niềm đam mê về thiết kế và nghệ thuật. Tôi trưởng thành trong thập niên 90 từ thời chưa có internet, tôi đã dành nhiều tiếng đồng hồ dùng tay của mình để tạo ra nhiều bức tranh trang trí. Sau khi tốt nghiệp đại học, tôi muốn học thêm về thiết kế nên đã đăng kí học một khóa học về Social Innovation ở Ideo/Acumen’s và Scott Klemmer’s về Computer Interaction. Cả 2 khóa học đều rất hữu ích, truyền cảm hứng và dạy cho tôi rất nhiều về các concept của HCI và thiết kế.

Cũng trong thời gian này, tôi được biết đến chức vụ “Product Manager”. Tôi cảm thấy rất hứng thú và bắt đầu tìm hiểu cách để trở thành PM.Sau đó, tôi tiếp tục học để có bằng Master về Software Management. Tấm bằng này mang tôi tới Sillicon Valley – nơi tôi tạo quan hệ với rất nhiều công ty, PM, Growth Hacker và Designer. Tôi cũng học hỏi được rất nhiều từ các chuyên gia và bạn học. Tôi dành cả mùa hè với vị trí Product Management Intern tại Groupon, lần thực tập này cho tôi thấy nhiều khía cạnh khác về một sản phẩm tiêu thụ của công ty. Sau đó, tôi tiếp tục làm việc trong một Project vs IBM, tập trung vào sản phẩm Bluemix. Lần làm việc này càng khiến tôi gia cố tình yêu của mình với Product Management. Project Bluemix đã đưa tôi đến thế giới điện toán đám mây và Paas. Sức mạnh của điện toán đám mây làm tôi say mê. Một vài tháng sau, tôi rất vui mừng khi có cơ hội tham gia AWS với vị trí Product Manager. Trải nghiệm của tôi tại AWS rất đáng nhớ…

Tham khảo tuyển dụng product manager lương cao trên TopDev

Vậy bạn muốn trở thành Product Manager đúng không?

“Liệu tôi có cần MBA mới trở thành Product Manager?”

“Liệu tôi có cần biết Code không?”

“Liệu tôi có cần học Nghiên cứu sinh để trở thành Product Manager không?_

Câu trả lời là “Không”

Thật sự không có con đường cố định nào để trở thành Product Manager cả, một vài PM giỏi có xuất thân từ chuyên viên và trợ lí sản phẩm. Những vị trí này đóng vai trò quan trọng trong việc học hỏi kinh nghiệm làm việc với KH và hiểu rõ nhất điểm quan tâm nhất của họ. Một vài PM có xuất thân từ Designer hoặc Marketer, hoặc có xuất thân từ Software Dev (hoặc QA engineer). Một vài PM thâm chí còn không có bằng cấp về Tech, họ học luật, tài chính, kinh tế.. Và một số có MBA, còn lại thì không.

Bạn không cần có bất cứ một bằng cấp riêng biệt nào để trở thành PM cả. Tuy nhiên, bằng cấp lại tạo cho bạn một thuận lợi lớn để lên được PM. Vi dụ, một PM trong Project về tech ( như Big Data hay Infrastructure Product) sẽ cần phải hiểu về các định nghĩa tech và quy trình liên quan. Một chuyên gia về Tech cũng sẽ nhận được nhiều sự kính trọng từ các team khác. Nhưng nếu bạn làm việc chăm chỉ, có thể bạn không cần bằng về Tech mà có thể học thông qua các phương tiện khác như MOOC online, hoặc là học từ thực tiễn công việc đang làm – bạn có thể có kiến thực sâu rộng về các vấn đề Tech như bất cứ ai có bằng CS.

“Vậy tôi cần làm gì để trở thành 1 PM?”

Để thay đổi career path của mình bạn chắc chắn cần phải học. Đầu tiên, để trở thành 1 PM, bạn phải có tâm huyết với sản phẩm đang làm. Bạn có thể tìm hiểu thông tin về các sản phẩm và công nghệ mới trên “Product Hunt” hoặc “Hacker News”.Hãy thử tất cả các sản phẩm mới khiến bạn hứng thú và tạo lập các ý kiện về sản phẩm đó. Đọc sách, báo, blog về sản phẩm, công nghệ mới, product management, design, growth hacking – Bất cứ thứ gì bạn quan tâm. Hãy nghe các Postcast trong việc xây dựng sản phẩm.

Tạo các mối quan hệ, quan hệ, quan hệ!. Hãy tham dự các buổi gặp gỡ nơi bạn có thể gặp và trò chuyện với các PM khác, designer, growth hacker, engineer và các chủ doanh nghiệp. Nếu bạn đang ở trong Sillicon Valley, tôi đề xuất bạn đến với buổi gặp mặt Lean Product và Lean UX. Hackathon cũng là một cách để tạo mối quan hệ và xây dựng các sản phẩm. Các mối quan hệ sẽ giúp bạn học hỏi từ các chuyên gia và xây dựng các mối quan hệ về job referral. kết nối với những mentor cũng rất tốt cho bạn.

Cuối cùng, điều tốt nhất bạn có thể làm để trở thành product manager là build sản phẩm. Bạn không cần phải là 1 PM trong 1 công ti nào cả, bạn có thể xây dựng dự án của riêng mình và học hỏi các kĩ năng cần thiết để trở thành 1 PM – từ ý tưởng, làm research, các yêu cầu cho một MVP, thiết kế và xây dựng 1 MVP, marketing, đứa sản phẩm tới KH, lấy feedback và phát triển sản phẩm.

Sản phẩm của bạn không nhất thiết phải làm thay đổi thế giới nhưng nó sẽ giúp bạn học hỏi được rất nhiều từ việc lên ý tưởng và giải quyết các vấn đề liên quan. Sau khi xây dựng sản phẩm, hãy cho cả thế giới biết. Nếu sản phẩm thất bại thì sao? Không vấn đề gì cả vì chắc chắn bạn đã học được rất nhiều kinh nghiệm quý báu. Hãy chia sẻ hành trình của bạn với những người khác và nhờ họ feedback cho bạn. Bạn có thể làm điều này một cách dễ dàng thông qua việc viết về các kinh nghiêm của mình hoặc đưa vào portfolio. Đây là một cách tuyệt vời để các bên tuyển dụng PM thấy được hành trình làm sản phẩm của bạn.

Link gốc tại Đây


Nếu bạn đang có dự định trở thành Product Manager, tham gia sự kiện “All about Product Management” tại TP.HCM để gặp gỡ & học hỏi bí kíp từ chuyên gia Lê Anh Quang – Product Director của Websosanh, đồng thời là Founder của Eggcellent

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

Làm thế nào để Tinder, Reddit, Airbnb, Etsy và Uber có được những người dùng đầu tiên?

Mùa hè này, tôi có cơ hội làm việc cho một dự án bất động sản gọi là Suuty. Chính vì vây, tôi phải tìm hiểu về các chiến lược thu hút những người dùng đầu tiên của các công ty khác nhau. Điều này dẫn tôi tới những câu chuyện thú vị, những phát hiện hay ho. Đây chỉ là một vài điều khiến tôi hứng thu.

# Chiến lược của Airbnb: Localization là vua

AirBed & Breakfast được bắt nguồn từ việc Brian Chesky và Joe Gebbia thuê ba chiếc nệm chân không trong phòng khách, để cho những người tham dự hội nghị thiết kế nội thất. Huy động tất cả các khách sạn trong khu vực họ nhanh chóng có được ba cái nệm hút chân không. Những vị khách của họ hoàn toàn hài lòng với trải nghiệm này. Vượt qua ngoài cả sự mong đợi của họ là sự hài lòng của những vị khách trẻ tuổi.

Brian và Joe đã chiêu mộ thêm người đồng sáng lập thứ 3 là Nathan Blecharczyk và tiếp tục thu các nhân sự khác. Mục tiêu là tổ chức các sự kiện cho các khách sạn trong khu vực. Họ sử dụng các sự kiền này và tình trạng thiếu phòng khách sạn như một phương thức để thu hút sự chú ý của mọi người đến với AirBnB

Lý giải về sự thành công của AirBnB có thể là do sự kết hợp giữa các nền tảng của họ với Craigslist. Không chỉ có tác dụng thu thập được các email từ các trình duyệt của Craigslist và thuyết phục hầu hết họ liệt kê các khoản thuê ngắn hạn của họ trên Airbnb, họ cũng dễ dàng cho người dùng đăng danh sách lên Craigslist thông qua Airbnb với một cú nhấp chuột – âm thanh.

# Chiến lược của Reddit: Cứ giả vờ cho đến khi bạn thực sự làm được điều gì đó


Không ai muốn sử dụng một diễn đàn im lặng. Vì vậy, Reddit đã giải quyết vấn đề này bằng cách tạo ra hàng tấn tài khoảng giả mạo và sử dụng nó để tương tác với nhau
Đó là một cách đơn giản để giải quyết câu chuyện gà và trứng, hoặc trong trường hợp này vấn đề người sử dụng và nội dung. Theo Steve Huffman, đồng sáng lập của Reddit, phải mất hàng tháng để trang chủ của Reddit được lấp đầy bằng nội dung organically .

Thành quả của chiến lược này là nó cho phép nhóm sáng lập tạo ảnh hưởng đến cộng đồng Reddit trong tương lai. Mặc dù có chút mỉa mai khi nói rằng cộng đồng ngày nay có tiếng nói riêng , nhưng không phải là không có chút gian dối nào những ngày đầu .

Nó cũng không làm tổn hại đến logo Reddit khá dễ thương. Alex Ohanian, đồng sáng lập của Reddit, tự hào là một trong số ít nhãn hiệu có đầu tư về mặt âm thanh. Trên thực tế, đó là đầu tư tiếp thị duy nhất của họ và với chi phí chỉ $ 500.

# Chiến lược của Etsy: Cung cấp cho người dùng những gì họ muốn.

Etsy đã may mắn vì ý tưởng này thậm chí đã hình thành từ trước khi họ có ý tưởng này, những người sáng lập đã tham gia vào một cộng đồng lớn đang kêu gọi thành lập 1 thị trường cho đồ handmade.

Ban đầu, nhóm Etsy là các nhà thiết kế web tự do và một trong những khách hàng của họ là một diễn đàn thủ công được gọi là getcrafty.com. Trong suốt quá trình thiết kế lại, nhóm Etsy đã tương tác với 10.000 người dùng của trang web để hiểu rõ nhu cầu của họ. Họ bắt đầu nhận thấy rằng có một số lượng lớn người dùng đang tìm kiếm một platform để bán đồ thủ công của họ.

# Chiến lược của Uber: Cung cấp cho người dùng một trải nghiệm tuyệt vời, khiến họ muốn nói về nó.

Garett Camp và Travis Kalanick, đến Paris để tham dự hội nghị LeWeb, họ bắt đầu cảm thấy khó khăn khi đi taxi. Đây là sự khởi đầu của UberCab, ban đầu nó là một dịch vụ black car.

Để có được những tài xế đầu tiên, Travis đã gọi điện thuyết phục những tài xế black car và đề xuất trả tiền cho họ dựa trên thời gian họ sử dụng ứng dụng. Ba trong số 10 tài xế đầu tiên mà ông gọi, đã đồng ý thử nó.

Sau đó, để khuyến khích khách hàng, họ đã cho sử dụng miễn phí tại các sự kiện công nghệ tại San Francisco . Họ đã làm việc chăm chỉ để cải thiện trải nghiệm người dùng tốt nhất có thể. Theo Kalanick, truyền miệng là hình thức marketing thúc đẩy doanh số hiệu quả và Uber đã không sử dụng hình thức marketing truyển thống

“95% trong số tất cả những tài xế của chúng tôi có nghe nói về Uber từ những tài xế Uber khác “- Travis Kalanick

“Khi mọi người nhận ra sự tiện dụng của ứng dụng, chỉ với 1 thao tác 5 phút sau có một chiếc xe xuất hiện, họ chắc chắc sẽ trở thành người ủng hộ thương hiệu của bạn ” – Max J. Crowley, Phát triển kinh doanh tại Uber

# Chiến lược của Tinder: Hãy suy nghĩ giống khách hàng mục tiêu


Các nhà sáng lập của Tinder đã xác định thị trường đại học là thị trường khó khăn nhất để thuyết phục người dùng sử dụng ứng dụng, vào thời điểm đó ứng dụng hẹn hò online vấp phải nhiều sự phản đối hơn so với hiện nay Làm thế nào để bạn nhận được sự chú ý của sinh viên đại học? Bạn nên thử áp dụng nó trong 1 bữa tiệc.

Các nhà sáng lập của Tinder đã xác định thị trường đại học là thị trường khó khăn nhất để thuyết phục người dùng sử dụng ứng dụng, vào thời điểm đó ứng dụng hẹn hò online vấp phải nhiều sự phản đối hơn so với hiện nay Làm thế nào để bạn nhận được sự chú ý của sinh viên đại học? Bạn nên thử áp dụng nó trong 1 bữa tiệc.

Trước khi Wolfe thực hiện chuyến đi đến các hội nữ sinh trên khắp đất nước, Tinder đã có ít hơn 5.000 người sử dụng. Khi trở lại, con số đó đã tăng lên khoảng 15.000. Sự thành công của họ có liên quan nhiều đến việc là người đầu tiên có những trãi nghiệm hẹn hò thú vị.

Mô hình phổ biến trên tất cả các công ty này là di chuyển không ngừng và sẵn sàng làm bất cứ điều gì họ có thể để tương tác trực tiếp với người dùng cuối của họ. Bằng cách đó, họ đã có thể xây dựng một sản phẩm, một nền tảng hoặc một cộng đồng mà người dùng của họ thích và muốn chia sẻ với bạn bè của họ.

Một điều thú vị cần lưu ý là những khách hàng đầu tiên trong kế hoạch lại không phải là những người mang đến thành công cuối cùng. Etsy đã có hàng ngàn người bán đăng ký khởi chạy nhưng cuối cùng, Reddit đã phải giả mạo người dùng trong nhiều tháng. Uber bắt đầu với 3 tài xế, và Airbnb bắt đầu với ba nệm không khí. Điều quan trọng hơn là những gì xảy ra sau khi bạn đã có được những người dùng đầu tiên.

Paul Graham, của Y Combinator, đã viết một bài báo nổi tiếng với nhan đề: “Do things that don’t scale.” Trong bài viết này , ông giải thích lý do tại sao ông đưa ra lời khuyên nghịch lý này, tôi có thể làm tốt hơn nhiều, nhưng tôi sẽ thu hút sự chú ý của bạn vào dòng này:

“Cốt lõi những gì bạn cần phải bắt đầu từ người dùng . Làm thế nào chỉ trong vài tháng có thể thu hút được nhiều người dùng nhất, nó phụ thuộc vào khả năng bạn có thể làm người dùng hạnh phúc như thế nào”- Paul Graham

500 khóa học Online Programming & Computer Science miễn phí nên học ngay trong tháng 9 (phần 2)

500 courses

PHẦN 1

INTERMEDIATE(301)

Machine Learning
Stanford University via Coursera
★★★★★ (314 ratings) | 4th Sep, 2017

Functional Programming Principles in Scala
École Polytechnique Fédérale de Lausanne via Coursera
★★★★★ (61 ratings) | 11th Sep, 2017

Algorithms, Part I
Princeton University via Coursera
★★★★☆ (56 ratings) | 4th Sep, 2017

Cryptography I
Stanford University via Coursera
★★★★★ (49 ratings) | 4th Sep, 2017

Functional Program Design in Scala
École Polytechnique Fédérale de Lausanne via Coursera
★★★★★ (38 ratings) | 11th Sep, 2017

Programming Mobile Applications for Android Handheld Systems: Part 1
University of Maryland, College Park via Coursera
★★★★☆ (38 ratings) | 11th Sep, 2017

CS188.1x: Artificial Intelligence
University of California, Berkeley via edX
★★★★★ (30 ratings) | Self Paced

Principles of Computing (Part 1)
Rice University via Coursera
★★★★★ (28 ratings) | 18th Sep, 2017

[New] Fundamentals of Containers, Kubernetes, and Red Hat OpenShift
Red Hat via edX
Self Paced

[New] Gameplay Programming for Video Game Designers
Rochester Institute of Technology via edX
11th Sep, 2017

[New] Building a Cybersecurity Toolkit
University of Washington via edX
10th Sep, 2017

[New] Hacking PostgreSQL: Data Access Methods
Ural Federal University via edX
28th Sep, 2017

Responsive Website Basics: Code with HTML, CSS, and JavaScript 
University of London International Programmes via Coursera
★★★★☆ (24 ratings) | 11th Sep, 2017

Practical Machine Learning
Johns Hopkins University via Coursera
★★★☆☆ (23 ratings) | 4th Sep, 2017

Software Security 
University of Maryland, College Park via Coursera
★★★★★ (22 ratings) | 18th Sep, 2017

Programming Languages, Part A
University of Washington via Coursera
★★★★★ (21 ratings) | 18th Sep, 2017

Cloud Computing Concepts, Part 1
University of Illinois at Urbana-Champaign via Coursera
★★★☆☆ (20 ratings) | 11th Sep, 2017

Learning From Data (Introductory Machine Learning)
California Institute of Technology via edX
★★★★★ (20 ratings) | 17th Sep, 2017

Agile Development Using Ruby on Rails — Basics
University of California, Berkeley via edX
★★★★★ (19 ratings) | Self Paced

Automata Theory
Stanford University via Stanford OpenEdx
★★★★☆ (18 ratings) | Self Paced

Intro to Machine Learning
Stanford University via Udacity
★★★★☆ (17 ratings) | Self Paced

Web Development
via Udacity
★★★★★ (17 ratings) | Self Paced

C++ For C Programmers, Part A
University of California, Santa Cruz via Coursera
★★★☆☆ (16 ratings) | 25th Sep, 2017

Algorithmic Toolbox
University of California, San Diego via Coursera
★★★★☆ (16 ratings) | 4th Sep, 2017

Principles of Computing (Part 2)
Rice University via Coursera
★★★★☆ (16 ratings) | 18th Sep, 2017

Machine Learning for Musicians and Artists
Goldsmiths, University of London via Kadenze
★★★★★ (16 ratings) | Self Paced

Beginning Game Programming with C#
University of Colorado System via Coursera
★★★★☆ (16 ratings) | 11th Sep, 2017

The Nature of Code
Processing Foundation via Kadenze
★★★★★ (16 ratings) | Self Paced

Android Development for Beginners
Google via Udacity
★★★★☆ (15 ratings) | Self Paced

Concepts in Game Development
Swinburne University of Technology via Open2Study
★★★★☆ (15 ratings) | 10th Sep, 2017

Programming Mobile Applications for Android Handheld Systems: Part 2
University of Maryland, College Park via Coursera
★★★★☆ (15 ratings) | 11th Sep, 2017

Intro to Artificial Intelligence
Stanford University via Udacity
★★★★☆ (15 ratings) | Self Paced

Algorithmic Thinking (Part 1)
Rice University via Coursera
★★★★☆ (14 ratings) | 18th Sep, 2017

Design of Computer Programs
Stanford University via Udacity
★★★★☆ (13 ratings) | Self Paced

Text Retrieval and Search Engines
University of Illinois at Urbana-Champaign via Coursera
★★★☆☆ (13 ratings) | 11th Sep, 2017

Object Oriented Programming in Java
University of California, San Diego via Coursera
★★★★★ (13 ratings) | 4th Sep, 2017

Introduction to Game Development
Michigan State University via Coursera
★★★★★ (12 ratings) | 4th Sep, 2017

Discrete Optimization
University of Melbourne via Coursera
★★★★☆ (12 ratings) | 25th Sep, 2017

Responsive Web Design
University of London International Programmes via Coursera
★★★★☆ (12 ratings) | 4th Sep, 2017

Java Programming: Solving Problems with Software
Duke University via Coursera
★★★☆☆ (12 ratings) | 4th Sep, 2017

The Arduino Platform and C Programming
University of California, Irvine via Coursera
★★★☆☆ (11 ratings) | 11th Sep, 2017

Interactivity with JavaScript
University of Michigan via Coursera
★★★★☆ (11 ratings) | 4th Sep, 2017

Introduction to Functional Programming
Delft University of Technology via edX
★★★★☆ (11 ratings) | Self Paced

Object-Oriented JavaScript
Hack Reactor via Udacity
★★★★★ (11 ratings) | Self Paced

Introduction to Software Product Management
University of Alberta via Coursera
★★★★☆ (10 ratings) | 11th Sep, 2017

Programming Languages
University of Virginia via Udacity
★★★☆☆ (10 ratings) | Self Paced

Algorithmic Thinking (Part 2)
Rice University via Coursera
★★★★☆ (9 ratings) | 18th Sep, 2017

Software Processes and Agile Practices
University of Alberta via Coursera
★★★★☆ (9 ratings) | 11th Sep, 2017

Cryptography
University of Maryland, College Park via Coursera
★★★★☆ (8 ratings) | 4th Sep, 2017

Responsive Web Design Fundamentals
Google via Udacity
★★★★★ (8 ratings) | Self Paced

Learning from Data (Introductory Machine Learning course)
California Institute of Technology via Independent
★★★★★ (8 ratings) | Self Paced

Image and Video Processing: From Mars to Hollywood with a Stop at the Hospital
Duke University via Coursera
★★★★☆ (8 ratings) | 18th Sep, 2017

Advanced Styling with Responsive Design
University of Michigan via Coursera
★★★★★ (8 ratings) | 4th Sep, 2017

Developing Android Apps
Google via Udacity
★★★★☆ (8 ratings) | Self Paced

Introduction To Swift Programming
University of Toronto via Coursera
★☆☆☆☆ (7 ratings) | 4th Sep, 2017

Cloud Computing Applications, Part 1: Cloud Systems and Infrastructure
University of Illinois at Urbana-Champaign via Coursera
★★★☆☆ (7 ratings) | 4th Sep, 2017

Julia Scientific Programming
University of Cape Town via Coursera
★★★★★ (7 ratings) | 25th Sep, 2017

Data Wrangling with MongoDB
MongoDB University via Udacity
★★★★☆ (7 ratings) | Self Paced

Software Testing
University of Utah via Udacity
★★★★☆ (7 ratings) | Self Paced

Client Needs and Software Requirements 
University of Alberta via Coursera
★★★★☆ (6 ratings) | 11th Sep, 2017

Ruby on Rails Web Services and Integration with MongoDB
Johns Hopkins University via Coursera
★★★★★ (6 ratings) | 11th Sep, 2017

Introduction to Meteor.js Development 
University of London International Programmes via Coursera
★★★★☆ (6 ratings) | 4th Sep, 2017

Web Application Development with JavaScript and MongoDB
University of London International Programmes via Coursera
★★★★☆ (6 ratings) | 11th Sep, 2017

How to Code: Systematic Program Design — Part 1
The University of British Columbia via edX
★★★★☆ (6 ratings) | Self Paced

Internet of Things: How did we get here?
University of California, San Diego via Coursera
★★☆☆☆ (6 ratings) | 4th Sep, 2017

Intro to DevOps
Nutanix via Udacity
★★★☆☆ (6 ratings) | Self Paced

Computer Architecture
Princeton University via Coursera
★★★★☆ (6 ratings) | 25th Sep, 2017

Intro to AJAX
via Udacity
★★★★☆ (6 ratings) | Self Paced

Intro to Algorithms
via Udacity
★★★☆☆ (6 ratings) | Self Paced

Software Construction in Java
Massachusetts Institute of Technology via edX
★★★★★ (5 ratings) | Self Paced

Computer Graphics
University of California, Berkeley via edX
★★★★☆ (5 ratings) | 19th Sep, 2017

Data Structures and Performance
University of California, San Diego via Coursera
★★★★★ (5 ratings) | 4th Sep, 2017

Computer Graphics
University of California, Berkeley via edX
★★★★☆ (5 ratings) | 19th Sep, 2017

Cloud Computing Concepts: Part 2
University of Illinois at Urbana-Champaign via Coursera
★★★★★ (5 ratings) | 4th Sep, 2017

Introduction to C++
Microsoft via edX
★★★★☆ (5 ratings) | Self Paced

Full Stack Foundations
via Udacity
★★☆☆☆ (5 ratings) | Self Paced

Intro to iOS App Development with Swift
via Udacity
★★★★☆ (5 ratings) | Self Paced

Software Development Process
Georgia Institute of Technology via Udacity
★★★★☆ (5 ratings) | Self Paced

Agile Development Using Ruby on Rails — Advanced
University of California, Berkeley via edX
★★★★★ (5 ratings) | Self Paced

Introduction to C++
Microsoft via edX
★★★★☆ (5 ratings) | Self Paced

Computer Graphics
University of California, Berkeley via edX
★★★★☆ (5 ratings) | 19th Sep, 2017

Software Debugging
Saarland University via Udacity
★★★★★ (5 ratings) | Self Paced

Interfacing with the Arduino
University of California, Irvine via Coursera
★★★★☆ (5 ratings) | 11th Sep, 2017

HTML5 Game Development
Google via Udacity
★★★☆☆ (5 ratings) | Self Paced

Java Programming: Arrays, Lists, and Structured Data
Duke University via Coursera
★★★★★ (5 ratings) | 4th Sep, 2017

Parallel Programming Concepts
via openHPI
★★★★☆ (5 ratings) | Self Paced

Computer Networking
Georgia Institute of Technology via Udacity
★★★★☆ (5 ratings) | Self Paced

Cloud Networking
University of Illinois at Urbana-Champaign via Coursera
★★★★☆ (4 ratings) | 11th Sep, 2017

Querying with Transact-SQL
Microsoft via edX
★★★★☆ (4 ratings) | Self Paced

Internet of Things & Augmented Reality Emerging Technologies
Yonsei University via Coursera
★★★☆☆ (4 ratings) | 4th Sep, 2017

Algorithms on Strings
University of California, San Diego via Coursera
★★★☆☆ (4 ratings) | 4th Sep, 2017

Database Management Essentials
University of Colorado System via Coursera
★★★★☆ (4 ratings) | 4th Sep, 2017

Internet of Things: Setting Up Your DragonBoard™ Development Platform
University of California, San Diego via Coursera
★★★☆☆ (4 ratings) | 4th Sep, 2017

Querying with Transact-SQL
Microsoft via edX
★★★★☆ (4 ratings) | Self Paced

Single Page Web Applications with AngularJS
Johns Hopkins University via Coursera
★★★★★ (4 ratings) | 11th Sep, 2017

The Raspberry Pi Platform and Python Programming for the Raspberry Pi
University of California, Irvine via Coursera
★★★☆☆ (4 ratings) | 11th Sep, 2017

Practical Numerical Methods with Python
George Washington University via Independent
★★★★☆ (4 ratings) | Self Paced

Java Programming: Principles of Software Design
Duke University via Coursera
★★★★★ (4 ratings) | 11th Sep, 2017

Intro to jQuery
via Udacity
★★★★☆ (4 ratings) | Self Paced

Interactive Computer Graphics
The University of Tokyo via Coursera
★★☆☆☆ (4 ratings) | 18th Sep, 2017

Website Performance Optimization
Google via Udacity
★★★★☆ (4 ratings) | Self Paced

Rails with Active Record and Action Pack
Johns Hopkins University via Coursera
★★★★☆ (3 ratings) | 11th Sep, 2017

Wireless Communication Emerging Technologies
Yonsei University via Coursera
★★★★☆ (3 ratings) | 4th Sep, 2017

Data Structures
University of California, San Diego via Coursera
★★★☆☆ (3 ratings) | 4th Sep, 2017

Mastering the Software Engineering Interview
University of California, San Diego via Coursera
★★★★☆ (3 ratings) | 4th Sep, 2017

Autonomous Mobile Robots
ETH Zurich via edX
★★★☆☆ (3 ratings) | Self Paced

Android Basics: User Input
Google via Udacity
★★★★☆ (3 ratings) | Self Paced

JavaScript Design Patterns
via Udacity
★★★★☆ (3 ratings) | Self Paced

Internet of Things: Communication Technologies
University of California, San Diego via Coursera
★★★☆☆ (3 ratings) | 18th Sep, 2017

VLSI CAD Part I: Logic
University of Illinois at Urbana-Champaign via Coursera
★★★★★ (3 ratings) | 4th Sep, 2017

Configuring Linux Web Servers
via Udacity
★★★★☆ (3 ratings) | Self Paced

Introduction to DevOps
Microsoft via edX
★★★★☆ (3 ratings) | Self Paced

Foundations of Objective-C App Development
University of California, Irvine via Coursera
★★★☆☆ (3 ratings) | 11th Sep, 2017

JavaScript Testing
via Udacity
★★★★☆ (3 ratings) | Self Paced

UX Design for Mobile Developers
Google via Udacity
★★★★★ (3 ratings) | Self Paced

Android Basics: Multiscreen Apps
Google via Udacity
★★★★☆ (3 ratings) | Self Paced

Networks Illustrated: Principles without Calculus
Princeton University via Coursera
★★★★☆ (3 ratings) | 4th Sep, 2017

Game Development for Modern Platforms
Michigan State University via Coursera
★★★★★ (3 ratings) | 11th Sep, 2017

Agile Software Development
ETH Zurich via edX
★★★★☆ (3 ratings) | Self Paced

MATLAB and Octave for Beginners
École Polytechnique Fédérale de Lausanne via edX
★★★☆☆ (3 ratings) | Self Paced

Introduction to DevOps
Microsoft via edX
★★★★☆ (3 ratings) | Self Paced

Introduction to MongoDB using the MEAN Stack
MongoDB University via edX
★★★★★ (3 ratings) | Self Paced

Autonomous Mobile Robots
ETH Zurich via edX
★★★☆☆ (3 ratings) | Self Paced

JavaScript Promises
Google via Udacity
★★★★★ (3 ratings) | Self Paced

Introduction to Mobile Application Development using Android
The Hong Kong University of Science and Technology via edX
★★★★☆ (2 ratings) | 24th Oct, 2017

Android App Components — Services, Local IPC, and Content Providers
Vanderbilt University via Coursera
★★★☆☆ (2 ratings) | 4th Sep, 2017

Programming Languages, Part B
University of Washington via Coursera
★★★★★ (2 ratings) | 18th Sep, 2017

Developing International Software, Part 1
Microsoft via edX
★★★★☆ (2 ratings) | Self Paced

Compilers
Stanford University via Stanford OpenEdx
★★★★☆ (2 ratings) | Self Paced

Browser Rendering Optimization
Google via Udacity
★★★★☆ (2 ratings) | Self Paced

Machine Learning: Unsupervised Learning
Brown University via Udacity
★★★★★ (2 ratings) | Self Paced

Android App Components — Intents, Activities, and Broadcast Receivers
Vanderbilt University via Coursera
★★★☆☆ (2 ratings) | 4th Sep, 2017

Analyzing and Visualizing Data with Power BI
Microsoft via edX
★★★★★ (2 ratings) | Self Paced

Introduction to Mobile Application Development using Android
The Hong Kong University of Science and Technology via edX
★★★★☆ (2 ratings) | 24th Oct, 2017

Approximation Algorithms Part I
École normale supérieure via Coursera
★★★★★ (2 ratings) | 11th Sep, 2017

Android Basics: Networking
Google via Udacity
★★★★☆ (2 ratings) | Self Paced

App Design and Development for iOS
University of Toronto via Coursera
★★★☆☆ (2 ratings) | 11th Sep, 2017

Internet Emerging Technologies
Yonsei University via Coursera
★★★☆☆ (2 ratings) | 4th Sep, 2017

Advanced Data Structures in Java
University of California, San Diego via Coursera
★★★★☆ (2 ratings) | 4th Sep, 2017

Client-Server Communication
Google via Udacity
★★★★★ (2 ratings) | Self Paced

Analyzing and Visualizing Data with Power BI
Microsoft via edX
★★★★★ (2 ratings) | Self Paced

Agile Planning for Software Products
University of Alberta via Coursera
★★★☆☆ (2 ratings) | 11th Sep, 2017

Algorithms on Graphs
University of California, San Diego via Coursera
★★★★☆ (2 ratings) | 4th Sep, 2017

Using Python for Research
Harvard University via edX
★★★★☆ (2 ratings) | Self Paced

Networking for Web Developers
via Udacity
★★★★★ (2 ratings) | Self Paced

Responsive Website Tutorial and Examples
University of London International Programmes via Coursera
★★★★★ (2 ratings) | 4th Sep, 2017

Mobile Application Experiences Part 1: From a Domain to an App Idea
Massachusetts Institute of Technology via edX
★★★★★ (2 ratings) | Self Paced

iOS App Development Basics
University of Toronto via Coursera
★★★★☆ (2 ratings) | 4th Sep, 2017

Build Your First Android App (Project-Centered Course)
École Centrale Paris via Coursera
★★★☆☆ (2 ratings) | 11th Sep, 2017

Web Application Development: Basic Concepts
University of New Mexico via Coursera
★★★★☆ (1 rating) | 25th Sep, 2017

Getting Started: Agile Meets Design Thinking
University of Virginia via Coursera
★★★★★ (1 rating) | 11th Sep, 2017

Advanced Algorithms and Complexity
University of California, San Diego via Coursera
★★★☆☆ (1 rating) | 4th Sep, 2017

Running Product Design Sprints
University of Virginia via Coursera
★★★☆☆ (1 rating) | 4th Sep, 2017

Managing an Agile Team
University of Virginia via Coursera
★★☆☆☆ (1 rating) | 11th Sep, 2017

Cybersecurity and Mobility
University System of Georgia via Coursera
★☆☆☆☆ (1 rating) | 4th Sep, 2017

Functional Programming in Haskell: Supercharge Your Coding
University of Glasgow via FutureLearn
★★★★☆ (1 rating) | 18th Sep, 2017

A developer’s guide to the Internet of Things (IoT)
IBM via Coursera
★★★★☆ (1 rating) | 4th Sep, 2017

Interfacing with the Raspberry Pi
University of California, Irvine via Coursera
★☆☆☆☆ (1 rating) | 11th Sep, 2017

Programming Languages, Part C
University of Washington via Coursera
★★★★★ (1 rating) | 4th Sep, 2017

Fundamentals of Computer Architecture
EIT Digital via Coursera
★★☆☆☆ (1 rating) | 4th Sep, 2017

Best Practices for iOS User Interface Design
University of California, Irvine via Coursera
★★★★★ (1 rating) | 11th Sep, 2017

Software Architecture for the Internet of Things
EIT Digital via Coursera
★★★★☆ (1 rating) | 11th Sep, 2017

Getting started with Augmented Reality
Institut Mines-Télécom via Coursera
★★★★★ (1 rating) | 18th Sep, 2017

Google Cloud Platform Fundamentals: Core Infrastructure
Google via Coursera
★★★★☆ (1 rating) | 4th Sep, 2017

Asynchronous Programming with JavaScript
Microsoft via edX
★★★★★ (1 rating) | Self Paced

Android: Introducción a la Programación
Universitat Politècnica de València via edX
★★★★☆ (1 rating) | Self Paced

Introduction to Real-Time Systems
IEEE via edX
★★★★☆ (1 rating) | Self Paced

Technical Interview
Pramp via Udacity
★★★★★ (1 rating) | Self Paced

Scalable Microservices with Kubernetes
Google via Udacity
★★★★☆ (1 rating) | Self Paced

Cyber Security Economics
Delft University of Technology via edX
★★☆☆☆ (1 rating) | Self Paced

2D Game Development with libGDX
Amazon via Udacity
★★★★★ (1 rating) | Self Paced

Gradle for Android and Java
Google via Udacity
★★★★★ (1 rating) | Self Paced

How to Code: Complex Data
The University of British Columbia via edX
★★★★★ (1 rating) | Self Paced

Software Architecture & Design
Georgia Institute of Technology via Udacity
★★★★★ (1 rating) | Self Paced

How to Win Coding Competitions: Secrets of Champions
ITMO University via edX
★★★☆☆ (1 rating) | 16th Oct, 2017

Introduction to Cloud Infrastructure Technologies
Linux Foundation via edX
★★★★☆ (1 rating) | Self Paced

Algorithms
Indian Institute of Technology Bombay via edX
★★★★★ (1 rating) | Self Paced

Android Basics: User Interface
Google via Udacity
★★☆☆☆ (1 rating) | Self Paced

Intermediate C++
Microsoft via edX
★★★★☆ (1 rating) | Self Paced

HTML5 Apps and Games
World Wide Web Consortium (W3C) via edX
★★★☆☆ (1 rating) | 1st Oct, 2017

Computation Structures 2: Computer Architecture
Massachusetts Institute of Technology via edX
★★★★☆ (1 rating) | Self Paced

Algorithms
Indian Institute of Technology Bombay via edX
★★★★★ (1 rating) | Self Paced

Principles of Machine Learning
Microsoft via edX
★★★★★ (1 rating) | Self Paced

Android Basics: Data Storage
via Udacity
★★★★★ (1 rating) | Self Paced

Material Design for Android Developers
Google via Udacity
★★★★★ (1 rating) | Self Paced

Android: Introducción a la Programación
Universitat Politècnica de València via edX
★★★★☆ (1 rating) | Self Paced

Developing Scalable Apps in Java
Google via Udacity
★★★★☆ (1 rating) | Self Paced

Android Performance
Google via Udacity
★★★★★ (1 rating) | Self Paced

Developing Scalable Apps in Python
Google via Udacity
★★★★☆ (1 rating) | Self Paced

Principles of Machine Learning
Microsoft via edX
★★★★★ (1 rating) | Self Paced

Intro to Theoretical Computer Science
via Udacity
★★★★★ (1 rating) | Self Paced

Intro to Progressive Web Apps
Google via Udacity
Self Paced

UIKit Fundamentals
via Udacity
Self Paced

Dynamic Web Applications with Sinatra
via Udacity
Self Paced

Enterprise Software Lifecycle Management
National Research Nuclear University MEPhI via edX
Self Paced

Probabilistic Graphical Models 3: Learning
Stanford University via Coursera
11th Sep, 2017

Web Connectivity and Security in Embedded Systems
EIT Digital via Coursera
25th Sep, 2017

Google Maps APIs
Google via Udacity
Self Paced

Concurrency
AdaCore University via Independent
Self Paced

The MVC Pattern in Ruby
via Udacity
Self Paced

Animation and CGI Motion
Columbia University via edX
11th Sep, 2017

Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming
Stanford University via Coursera
11th Sep, 2017

Cybersecurity Risk Management
Rochester Institute of Technology via edX
26th Sep, 2017

VR Scenes and Objects
via Udacity
Self Paced

Cybersecurity and the Internet of Things
University System of Georgia via Coursera
11th Sep, 2017

Reviews & Metrics for Software Improvements
University of Alberta via Coursera
11th Sep, 2017

Android Basics: Button Clicks
Google via Udacity
Self Paced

Graph Search, Shortest Paths, and Data Structures
Stanford University via Coursera
11th Sep, 2017

Moving to the Cloud
University of Melbourne via Coursera
25th Sep, 2017

算法设计与分析 Design and Analysis of Algorithms
Peking University via Coursera
25th Sep, 2017

Build a Modern Computer from First Principles: Nand to Tetris Part II (project-centered course)
Hebrew University of Jerusalem via Coursera
25th Sep, 2017

Computer Forensics
Rochester Institute of Technology via edX
26th Sep, 2017

Deploying Applications with Heroku
via Udacity
Self Paced

Foundations of Data Structures
Indian Institute of Technology Bombay via edX
Self Paced

Introduction to Architecting Smart IoT Devices
EIT Digital via Coursera
18th Sep, 2017

Learn to Code Electronic Music Tools with Javascript
Goldsmiths, University of London via FutureLearn
18th Sep, 2017

Firebase Essentials For Android
Google via Udacity
Self Paced

Introduction to Neurohacking In R
Johns Hopkins University via Coursera
18th Sep, 2017

Designing RESTful APIs
via Udacity
Self Paced

How to Make an iOS App
via Udacity
Self Paced

Advanced Android App Development
Google via Udacity
Self Paced

C++ For C Programmers, Part B
University of California, Santa Cruz via Coursera
18th Sep, 2017

Learn Backbone.js
via Udacity
Self Paced

How to create in Android
via Udacity
Self Paced

Offline Web Applications
Google via Udacity
Self Paced

The Software Architect Code: Building the Digital World
Universidad Carlos iii de Madrid via edX
Self Paced

iOS Networking with Swift
via Udacity
Self Paced

M233: Getting Started with Spark and MongoDB
via MongoDB University
Self Paced

Engineering Maintainable Android Apps
Vanderbilt University via Coursera
11th Sep, 2017

Android Ubiquitous Computing
Google via Udacity
Self Paced

面向对象技术高级课程(The Advanced Object-Oriented Technology)
Peking University via Coursera
25th Sep, 2017

Mobile Application Experiences Part 3: Building Mobile Apps
Massachusetts Institute of Technology via edX
Self Paced

iOS Persistence and Core Data
via Udacity
Self Paced

Toward the Future of iOS Development with Swift
University of California, Irvine via Coursera
11th Sep, 2017

How to Code: Systematic Program Design — Part 2
The University of British Columbia via edX
Self Paced

How to Code: Systematic Program Design — Part 3
The University of British Columbia via edX
Oct, 2015

LPL: Language, Proof and Logic
Stanford University via Stanford OpenEdx
Self Paced

VR Software Development
Google via Udacity
Self Paced

Front-End JavaScript Frameworks: Angular
The Hong Kong University of Science and Technology via Coursera
4th Sep, 2017

Fundamentals of Red Hat Enterprise Linux
Red Hat via edX
Self Paced

Developing Android Apps with App Inventor
The Hong Kong University of Science and Technology via Coursera
4th Sep, 2017

Building Functional Prototypes using Node.js
Microsoft via edX
Self Paced

Applied Machine Learning
Microsoft via edX
Self Paced

Front-End Web UI Frameworks and Tools: Bootstrap 4
The Hong Kong University of Science and Technology via Coursera
4th Sep, 2017

Introduction to TypeScript 2
Microsoft via edX
Self Paced

Software Testing Fundamentals
University System of Maryland via edX
23rd Oct, 2017

Database Systems Concepts & Design
Georgia Institute of Technology via Udacity
Self Paced

Software Analysis & Testing
Georgia Institute of Technology via Udacity
Self Paced

How Virtual Reality (VR) Works
University of California, San Diego via edX
Self Paced

Software Development Fundamentals
University of Pennsylvania via edX
Self Paced

Cloud Computing for Enterprises
University System of Maryland via edX
23rd Oct, 2017

Building Arduino robots and devices
Moscow Institute of Physics and Technology via Coursera
4th Sep, 2017

Developing Intelligent Apps and Bots
Microsoft via edX
Self Paced

Professional Android App Development
Galileo University via edX
Self Paced

Cybersecurity: The CISO’s View
University of Washington via edX
Self Paced

Testing with Agile
University of Virginia via Coursera
4th Sep, 2017

Introduction to C#
Microsoft via edX
Self Paced

Multiplatform Mobile App Development with NativeScript
The Hong Kong University of Science and Technology via Coursera
4th Sep, 2017

Algorithm Design and Analysis
University of Pennsylvania via edX
Self Paced

Teamwork & Collaboration
Rochester Institute of Technology via edX
16th Jan, 2018

C++ For Programmers
via Udacity
Self Paced

Google Cloud Platform Fundamentals for AWS Professionals
Google Cloud via Coursera
4th Sep, 2017

Building Interactive Prototypes using JavaScript
Microsoft via edX
Self Paced

Developing SQL Databases
Microsoft via edX
Self Paced

Data Structures and Software Design
University of Pennsylvania via edX
Self Paced

Professional Android App Development
Galileo University via edX
Self Paced

Introduction to Kubernetes
Linux Foundation via edX
Self Paced

Internet of Things: Sensing and Actuation From Devices
University of California, San Diego via Coursera
4th Sep, 2017

Homeland Security & Cybersecurity Connection — It’s Not About the Terrorists
University of Colorado System via Coursera
4th Sep, 2017

Introduction to Programming with Java: Fundamental Data Structures and Al
Universidad Carlos iii de Madrid via edX
9th Jan, 2018

New Android Fundamentals
via Udacity
Self Paced

iOS Design Patterns
via Udacity
Self Paced

Java for Android
Vanderbilt University via Coursera
5th Sep, 2017

Developing Intelligent Apps and Bots
Microsoft via edX
Self Paced

Applied Machine Learning
Microsoft via edX
Self Paced

Cybersecurity and the X-Factor
University System of Georgia via Coursera
4th Sep, 2017

Building iOS Interfaces
via Udacity
Self Paced

Games, Sensors and Media
University of California, Irvine via Coursera
11th Sep, 2017

Divide and Conquer, Sorting and Searching, and Randomized Algorithms
Stanford University via Coursera
11th Sep, 2017

Minecraft, Coding and Teaching
University of California, San Diego via edX
Self Paced

Software Construction: Data Abstraction
The University of British Columbia via edX
Self Paced

Swift for Developers
via Udacity
Self Paced

Документы и презентации в LaTeX (Introduction to LaTeX)
Higher School of Economics via Coursera
11th Sep, 2017

Introduction to DevOps: Transforming and Improving Operations
Linux Foundation via edX
Self Paced

Advanced Software Construction in Java
Massachusetts Institute of Technology via edX
Self Paced

Foundations of Data Structures
Indian Institute of Technology Bombay via edX
Self Paced

AngularJS: Framework Fundamentals
Microsoft via edX
Self Paced

Advanced CSS Concepts
Microsoft via edX
Self Paced

VR Platforms & Applications
via Udacity
Self Paced

Animation and CGI Motion
Columbia University via edX
11th Sep, 2017

Programmation Concurrente (avec Java)
Sorbonne Universités via edX
Self Paced

LAFF — On Programming for Correctness
The University of Texas at Austin via edX
Self Paced

VR Design
via Udacity
Self Paced

Introduction to Data Structures
University of Adelaide via edX
Self Paced

Multiplatform Mobile App Development with Web Technologies: Ionic and Cordova
The Hong Kong University of Science and Technology via Coursera
4th Sep, 2017

Shortest Paths Revisited, NP-Complete Problems and What To Do About Them
Stanford University via Coursera
4th Sep, 2017

Implementation of Data Structures
Indian Institute of Technology Bombay via edX
Self Paced

UML Class Diagrams for Software Engineering
KU Leuven University via edX
Self Paced

Architecting Smart IoT Devices
EIT Digital via Coursera
4th Sep, 2017

Mobile Application Experiences
Massachusetts Institute of Technology via edX
Self Paced

Networking and Security in iOS Applications
University of California, Irvine via Coursera
11th Sep, 2017

Nguồn: medium.freecodecamp.org

Làm thế nào để xây dựng social network bằng Ruby on Rails

Tôi là một Rails fanboy. Theo tôi Ruby on Rails là một trong những framework phát triển web tốt nhất từng được phát triển. Tôi đã sử dụng Rails trong hơn một năm và nó khá thú vị để làm việc. Nhờ đó mà việc phát triển web giúp tôi vui vẻ hơn. Có một thời gian, tôi đã nghĩ đến việc viết một bài blog về Rails  Tôi không viết bài bình thường về “Làm thế nào để phát triển một nền tảng viết blog dưới 5 phút bằng cách sử dụng Rails”.

Tôi muốn xây dựng một cái gì đó tuyệt vời và viết một hướng dẫn về nó. Ý tưởng phát triển một nền tảng mạng xã hội đã luôn luôn làm tôi hứng thú. Vì vậy, tôi sẽ cố gắng và xây dựng một mạng xã hội bằng cách sử dụng Rails.

Start Hacking

Để tạo ra một ứng dụng rails mới, hãy chạy rails new socify. Điều này sẽ tạo cấu trúc ứng dụng và Gemfile chứa các gemset mặc định kèm với Rails.

Đi vào app directory. Điều đầu tiên chúng ta cần làm là thay đổi gemset mặc định. Chỉ cần sử dụng Gemfile này chứa các gems yêu cầu. Để tìm được gems và giải quyết các sự phụ thuộc chúng ta sử dụng bundler. Lưu ý rằng bạn đã cài bundler trong quá trình cài đặt. Nếu không hãy quay lại và cài  bundle install.

Lưu ý: Để kiểm soát phiên bản tôi sử dụng Git. Bạn có thể sử dụng thay thế mặc định .gitignore bằng cái này.

Run Rails:

Các ứng dụng không có gì thay đổi cho đến nay kể từ khi chúng tôi đã không thêm bất cứ điều gì. Hãy thử chạy rails s và ghé thăm localhost:3000 để hiển thị trang landing page mặc định.

Tham khảo các vị trí tuyển ruby on rails lương cao

Asset Pipeline

Rails Asset pipeline nối liền, minify, phục vụ các assets ứng dụng. Chúng ta có thể thêm các tập tin tùy chỉnh css và js vào pipeline. Trước hết đổi tên application.css thành  application.css.scss vì chúng ta sẽ viết trong Sass. Cũng loại bỏ turbolinks từ application.js. Bao gồm các assets được yêu cầu.

@import "bootstrap-sprockets";
@import "bootstrap";
@import "font-awesome";
@import "jquery.datetimepicker";
@import "*";
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require bindWithDelay
//= require jquery.datetimepicker
//= require_tree .

Ứng dụng vẫn trỏ tới welcome board kể từ khi đường dẫn gốc chưa được định cấu hình. Hãy tạo home controller với hành động để làm trang đích. Thêm một Navbar đơn giản.

<nav class="navbar navbar-default navbar-fixed-top">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-top">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <%= link_to "Socify", root_url, class: "navbar-brand" %>
    </div>
    <div class="collapse navbar-collapse" id="navbar-top">
      <ul class="nav navbar-nav navbar-right">
        <% if user_signed_in? %>
          <li><%= link_to('Sign out', destroy_user_session_path, method: :delete) %></li>
        <% else %>
          <li><%= link_to 'Sign up', new_user_registration_path %></li>
          <li><%= link_to 'Sign in', user_session_path %></li>
        <% end %>
      </ul>
    </div>
  </div>
</nav>
rails g controller home front
Rails.application.routes.draw do
  root to: 'home#front'
end

Xác thực

Và một điều nữa, đừng “reinvent the wheel” đừng đi lại lối mòn. Chúng tôi sẽ cố gắng theo dõi điều này trong suốt quá trình phát triển ứng dụng này. Vì vậy, thay vì giải quyết vấn đề đã có một giải pháp tối ưu, chúng ta có thể sử dụng lại giải pháp. Luôn luôn ghi nhớ,

Một giải pháp để xác thực là Devise. Cung cấp một cơ chế xác thực tuyệt vời bằng cách xác thực người dùng, bảo mật và quản lý session. Quá tuyệt! Hãy sử dụng nó.

Chạy rails g devise:install. Xem thêm Getting started guide. để configure sau khi setting devise.

Tạo ra mô hình user bằng cách sử dụng rails g devise user. Hãy thêm một vài cột vào mô hình. Chạy  rake db:migrate để tạo bảng người dùng với các field tương ứng.

class DeviseCreateUsers < ActiveRecord::Migration
  def change
    create_table(:users) do |t|
      t.string :name,               null: false, default: ""
      t.string :email,              null: false, default: ""
      t.string :encrypted_password, null: false, default: ""
      t.string :about
      t.string :avatar
      t.string :cover

      t.string   :reset_password_token
      t.datetime :reset_password_sent_at

      t.datetime :remember_created_at

      t.integer  :sign_in_count, default: 0, null: false
      t.datetime :current_sign_in_at
      t.datetime :last_sign_in_at
      t.string   :current_sign_in_ip
      t.string   :last_sign_in_ip

      t.string   :confirmation_token
      t.datetime :confirmed_at
      t.datetime :confirmation_sent_at

      t.timestamps null: false
    end

    add_index :users, :email,                unique: true
    add_index :users, :reset_password_token, unique: true
    add_index :users, :confirmation_token,   unique: true
  end
end

Ngoài việc xác nhận người dùng, xác thực và quản lý phiên làm việc, thì nó cũng sẽ xử lý các thông tin của người dùng. Chỉ cần thêm :confirmable vào user model là được.

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable, :confirmable,
    :recoverable, :rememberable, :trackable, :validatable
end

Lưu ý: Đừng quên thay đổi config.reconfirmable thành false trong config/initializers/devise.rb.

Mọi thứ trong devise làm việc out-of-the-box. Không tin tôi? Hãy thử truy cập vào http://localhost:3000/users/sign_in. Bạn có thể thấy một hình thức tính toán đã tạo ra phía sau. Và đối với người sử dụng sign_up http://localhost:3000/users/sign_up. Nó thật tuyệt vời phải không!

Câu hỏi thực sự bạn có bây giờ là “Chúng ta có thể tùy chỉnh nó?”. Tất nhiên chúng ta có thể. Các  rails g devise:views lượt xem các chế độ xem mặc định và ghi đè lên ứng dụng. Chúng ta có thể sử dụng một số mã boilerplate cho các forms. Bạn có thể kiểm tra nó ở đây.

Vì chúng ta đang thêm các thuộc tính mới để tạo ra các forms, chúng ta cần phải đưa ra các bộ điều khiển mà params cho phép. Đọc thêm về params strong ở đây.

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception

  before_filter :configure_permitted_parameters, if: :devise_controller?
  protected
  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) << [:name, :password_confirmation]
    devise_parameter_sanitizer.for(:sign_in) << [:email, :remember_me]
  end
end

Posts & Event

Người dùng cần một cách để chia sẻ nội dung. Để tạo ra CRUD cơ bản cho bài viết hãy sử dụng scaffolding. Điều này sẽ tạo ra các mô hình, bộ điều khiển, góc nhìn cùng với việc di chuyển cơ sở dữ liệu. Và kể từ khi bài viết người dùng, chúng ta có thể thêm một tham chiếu đến nó để tạo ra các mối quan hệ cần thiết.

rails g scaffold post attachment:string content:text user:references
rake db:migrate

Tạo bài đăng:

Để tạo một bài đăng mới, hãy thêm mẫu sau vào home/index.html.erbposts_controller sẽ xử lý nó.

<%= form_for(@post) do |f| %>
  <div class="form-group">
    <%= f.label 'Update status' %><br>
      <%= f.text_area :content, class: 'form-control', autofocus: true, 
          placeholder: 'What\'s up?' %>
      <%= f.file_field :attachment, class: 'form-control' %>
  </div>
  <%= f.submit :post, class: 'btn btn-primary'%>
<% end %>
def create
  @post = Post.new(post_params) do |post|
    post.user = current_user
  end
  if @post.save
    redirect_to root_path
  else
    redirect_to root_path, notice: @post.errors.full_messages.first
  end
end

Khi chúng ta thực hiện @post.save rails sẽ tự động xác thực đối tượng đăng dựa trên xác nhận hợp lệ mà chúng tôi đã viết bằng post model. Nếu có lỗi, chúng ta sẽ bỏ qua nó trong khi chuyển hướng.

Carrierwave:

Để xử lý tải lên tập tin chúng tôi có thể sử dụng carrierwave. Với tập tin tải lên carrierwave thực sự dễ dàng để xử lý. Tạo một class uploader chứa cấu hình cần thiết để xử lý tệp sau khi tải lên. Bây giờ tất cả chúng ta cần làm là gắn kết người tải lên trong model.

rails g uploader avatar
class Post < ActiveRecord::Base
  mount_uploader :attachment, AvatarUploader
end

Tạo sự kiện:

Tạo sự kiện tương tự như bài đăng. Vì họ có tiêu đề và ngày, chúng ta có thể cần datepicker để chọn ngày và thời gian. Tôi chỉ cần sử dụng plugin jQuery sau đây https://github.com/xdan/datetimepicker. Thêm assets vào thư mục vendor/asset/  bao gồm trong application.js và application.css.scss. Định dạng ngày ở định dạng sau và để Rails chăm sóc phần còn lại.

(document).ready(function(){
  $("#event_when").datetimepicker({
    maxDate:'0',
    format:'Y/m/d H:i'
  });
});

Likes và comments


Vì chúng tôi đang xây dựng một ứng dụng mạng xã hội nên thực sự cần phải thêm những người thích và nhận xét. Tôi sẽ không phí thời gian như đã nêu ở trên. Xem tại acts_as_votableacts_as_commissionable.

Likes:

Sử dụng acts_as_votable nó thực sự dễ dàng để thêm likes/votes cho một model. Các lệnh sau đây sẽ tạo bảng votes để lưu trữ thông tin likes. Chỉ cần thêm acts_as_votable vào một model để làm cho nó vote được.

rails generate acts_as_votable:migration
rake db:migrate

Tạo ra một bộ xử lý để tạo ra hoạt động like/unlike

class LikesController < ApplicationController
  before_action :find_likeable
  before_action :authenticate_user!
  respond_to :js

  def create
    @likeable.liked_by current_user
  end

  def destroy
    @likeable.disliked_by current_user
  end

  private
  def find_likeable
    @likeable_type = params[:likeable_type].classify
    @likeable = @likeable_type.constantize.find(params[:likeable_id])
  end
end

Bình luận:

Acts_as_commentable làm ra một chút khác nhau mặc dù thiết lập là khá nhiều như nhau. Các lệnh sau sẽ tạo ra mô hình nhận xét cùng với việc di chuyển nó.

rails g comment
rake db:migrate

Bây giờ chúng ta đã được thực hiện khá nhiều với like và comment. Chỉ cần thêm các hình thức xem.

class CommentsController < ApplicationController
  before_action :authenticate_user!
  before_action :find_commentable, only: :create
  respond_to :js

  def create
    @comment = @commentable.comments.new do |comment|
      comment.comment = params[:comment_text]
      comment.user = current_user
    end
    @comment.save
  end

  def destroy
    @comment = current_user.comments.find(params[:id])
    @comment_id = params[:id]
    @comment.destroy
  end

  private
  def find_commentable
    @commentable_type = params[:commentable_type].classify
    @commentable = @commentable_type.constantize.find(params[:commentable_id])
  end
end
<%= form_tag comments_path(commentable_type: commentable.class.to_s, commentable_id: commentable.id), method: :post, remote: true do %>
  <div class="form-group">
    <%= text_area_tag :comment_text, nil, placeholder: 'Enter Comment', class: 'form-control' %>
  </div>
  <%= submit_tag :comment, class: 'btn btn-primary' %>
<% end %>

Lưu ý rằng tôi đang sử dụng remote:true, vì vậy các hình thức sẽ được gửi bằng cách sử dụng Ajax. Kiểm tra bài viết này về cách các mẫu từ xa hoạt động bằng cách sử dụng Ajax.

Tìm việc làm Ruby đãi ngộ tốt trên TopDev

Các mối quan hệ

Bây giờ đến phần quan trọng nhất của ứng dụng xã hội, quan hệ. Cho đến phần này, đây chỉ là ứng dụng mà mọi người có thể đăng, thích hoặc nhận xét. Thêm mối quan hệ giữa người dùng làm cho nó trở thành một mạng xã hội. Thêm  acts_as_follower. Oh yeah! Có một ruby gems ​​cho hầu hết mọi thứ. Đó là phần hay nhất của việc sử dụng Rails.

rails generate acts_as_follower
class User < ActiveRecord::Base
  acts_as_follower
  acts_as_followable
end
class FollowsController < ApplicationController
  before_action :authenticate_user!
  respond_to :js

  def create
    @user = User.find(params[:user_id])
    current_user.follow(@user)
  end

  def destroy
    @user = User.find(params[:user_id])
    current_user.stop_following(@user)
  end
end
<div class="follow">
  <% if user.followed_by?(current_user) %>
    <%= form_tag unfollow_path(user_id: user.id), method: :post, remote: true do %>
      <%= button_tag 'unfollow', class: 'btn btn-primary' %>
    <% end %>
  <% else %>
    <%= form_tag follow_path(user_id: user.id), method: :post, remote: true do %>
      <%= button_tag 'follow', class: 'btn btn-success' %>
    <% end %>
  <% end %>
</div>

Vậy là xong. Bây giờ bạn có thể bắt đầu theo dõi bất kỳ người dùng nào.

Public Activity

Ứng dụng xã hội mà chúng ta đang xây dựng cần phải theo dõi nhiều hơn các bài đăng. Nếu bạn nhận thấy facebook’s newsfeed nó cho thấy thích, nhận xét, follows và nhiều hơn nữa. Chúng tôi sẽ theo dõi hồ sơ bằng cách sử dụng public_activity gem. Tham khảo wiki on Github  về các hoạt động cộng đồng để thiết lập và hiển thị các hoạt động.

rails g public_activity:migration
rake db:migrate

Thêm các mục sau vào model bạn muốn theo dõi hoạt động, ví dụ như models/ post.rb. Và kể từ khi người dùng đăng nhập đã tạo ra chúng ta thêm current_user làm chủ sở hữu cho tài nguyên đã theo dõi.

class Post < ActiveRecord::Base
  include PublicActivity::Model
  tracked only: [:create], owner: Proc.new{ |controller, model| controller.current_user }
end

Chúng tôi sẽ tìm nạp tất cả các hoạt động sử dụng  PublicActivity::Activity::all trong hành động chỉ mục ở trang điều khiển. Hiển thị các hoạt động trên chế độ xem sử dụng render_activities(@activities) https://github.com/chaps-io/public_activity#displaying -activities.

class HomeController < ApplicationController
  respond_to :html, :js
  def index
    @activities = PublicActivity::Activity.all
  end
end
<div id="activities">
  <%= render_activities(@activities)%>
<div>

Lưu ý: Cần phải tìm nạp dựa trên việc liệu người dùng có đăng nhập hay không, nhưng ok cho thời gian bắt đầu. Check out đoạn code cuối cùng trên Github.

Cuối cùng, chúng ta cần tạo public_activity/model_name/with views cho mỗi hành động. Check out view/public_activity/ để xem nó được xử lý như thế nào. Chúng ta có thể theo dõi các hoạt động khác như nhận xét và các sự kiện.

NewsFeed

Nội dung NewsFeed sẽ khác dựa trên phiên người dùng. Khi đăng nhập, chúng tôi hiển thị action index được tạo bởi bạn bè của người dùng.

Nhưng, chúng tôi sẽ không hiển thị tất cả cùng một lúc. Điều này sẽ làm tăng page load khi dữ liệu trở nên rất lớn. Chúng ta sẽ paginate các bản ghi bằng cách sử dụng will_paginate.

class HomeController < ApplicationController
  before_action :set_user, except: :front
  respond_to :html, :js

  def index
    @post = Post.new
    @friends = @user.all_following.unshift(@user)
    @activities = PublicActivity::Activity.where(owner_id: @friends).order(created_at: :desc).paginate(page: params[:page], per_page: 10)
  end

  def front
    @activities = PublicActivity::Activity.order(created_at: :desc).paginate(page: params[:page], per_page: 10)
  end

  def find_friends
    @friends = @user.all_following
    @users =  User.where.not(id: @friends.unshift(@user)).paginate(page: params[:page])
  end

  private
  def set_user
    @user = current_user
  end
end

Cuối cùng

Xin chúc mừng! Bạn đã xây dựng một nền tảng mạng xã hội bằng cách sử dụng Ruby on Rails.

Nhưng nhìn vào trang web thiết kế có vẻ xấu. Vì vậy, chúng ta chỉ cần thêm quyền hạn và một số kiểu dáng cơ bản để nó trông đẹp.

Deploy

Triển khai ứng dụng rails trên Heroku rất dễ dàng. Tất cả chúng ta phải làm là thêm một ứng dụng heroku và đẩy nó bằng cách sử dụng Git. Tạo một ứng dụng mới trên heroku, thêm ứng dụng rails và đẩy đến máy chủ của heroku.

heroku login
heroku git:remote -a [appname]
git push heroku master
heroku run rake db:migrate

Vì ứng dụng của chúng ta phải gửi email để xác nhận và khôi phục mật khẩu, chúng ta cần thêm cấu hình smtp config/environment/production.rb. Tôi chỉ sử dụng sendgrid cho điều này. Ngoài ra chúng ta sẽ tải lên phương tiện truyền thông và heroku không lưu trữ nó trên máy chủ. Có một addon gọi là Cloudric mà chúng ta sẽ sử dụng.

Tôi nghĩ rằng nhiêu đây là khá nhiều. Mọi thứ đã triển khai và có vẻ tốt.

Để nạp dữ liệu giả, chúng ta sẽ sử dụng một task rake dưới lib / tasks. Chúng ta sẽ sử dụng fakerpopulator để tạo ra dữ liệu.

rake fill:data

Bạn có thể kiểm tra mã nguồn trên Github và bản demo được triển khai trên Heroku.

Đây là source code tại Github và bản demo trên Heroku

Một số link cần tham khảo

Nguồn: medium.com

Xem thêm các tin tuyển dụng IT mới nhất trên TopDev

“Hãy cứ làm việc bạn thích” – Nghe quen quá phải không? Thực ra đó lại là một lời khuyên cực kỳ tồi tệ!

interiors of an office --- Image by © Royalty-Free/Corbis

“Hãy làm công việc bạn yêu thích” là lời khuyên mà mọi sinh viên mới ra trường đều coi như kim chỉ nam cho định hướng sự nghiệp của mình. Thế nhưng Frank Talarico Jr., CEO công ty Goodwill lại cho rằng giới trẻ hãy ngừng tin vào điều đó.

“Hãy làm công việc bạn yêu thích” là lời khuyên mà mọi sinh viên mới ra trường đều coi như kim chỉ nam cho định hướng sự nghiệp của mình. Thế nhưng Frank Talarico Jr., CEO công ty Goodwill lại cho rằng giới trẻ hãy ngừng tin vào điều đó.

Hãy cùng lắng nghe những chia sẻ của Frank Talarico để có thể hiểu được tại sao ông lại khuyên giới trẻ như vậy:

Sau 20 năm kinh nghiệm với cương vị là một nhà quản lý, tôi hiếm khi thấy ai thành công và hạnh phúc khi theo đuổi một công việc chỉ vì họ “thích” công việc đó. Việc bạn chỉ làm điều mình yêu thích không có nghĩa lý gì cả. Sự thật là nếu sáng mai bạn tỉnh dậy đi làm một công việc khiến bạn “không cảm thấy giống công việc” thì rất có thể bạn sẽ tiếp tục lãng phí 20 năm và sau đó sẽ tự hỏi vì sao mình lại có thể bỏ phí những năm tháng đầy năng lượng nhất trong đời mình như vậy.

Đừng làm việc bạn yêu thích. Hãy chỉ yêu kết quả của việc bạn làm.

Hãy yêu những thành quả mà bạn tạo ra trong lĩnh vực của mình, yêu những cống hiến bạn đóng góp cho cộng đồng, xã hội, và cả (nếu đây cũng là điều bạn mong mỏi) cho túi tiền của bạn.

Hãy yêu cái cảm giác rằng sức lao động chăm chỉ của mình đang tạo ra sự thay đổi tích cực đối với những người cần nó. Đúng vậy, đam mê cá nhân của bạn cần phải cân bằng với lợi ích chung của xã hội. Một công việc chỉ thỏa mãn riêng sở thích cá nhân mà không tạo thêm lợi ích nào cho cộng đồng hay việc làm tốt giúp ích cho thế giới mà lại không khiến bạn hứng thú đều không phải điều mà bạn cần. Hãy tìm ra đâu là điểm mà đam mê của riêng bạn và những điều khiến thế giới tốt đẹp hơn giao nhau?

Đó là câu hỏi mà tôi tin rằng thế hệ ngày nay sẽ trả lời được.

Trong giai đoạn trưởng thành của tôi, thế hệ tiền bối luôn nói là tôi có thể thay đổi cả tương lai. Có lẽ cảm nhận của bạn về lời nói đó lúc này cũng giống như tôi lúc ấy: chúng sáo rỗng và hão huyền như những lời chúc được in trên tấm thiệp bà nội tôi gửi đến mỗi dịp lễ.

Nhưng hãy tin là điều đó có thể trở thành hiện thực. Bởi vì khả năng của con người là vô tận và sức trẻ thì vô biên.

Các bạn vô cùng may mắn khi đang sống trong một thời đại chưa từng có trước đây, nơi mà những doanh nghiệp tử tế sẽ giúp thế giới tốt lên mỗi ngày. Chúng ta có thể lấy ví dụ như gần đây, top 30 tập đoàn lớn của Mỹ đã gửi một bức thư mở đề nghị tổng thống Trump tiếp tục để Mỹ tham gia Hiệp định Paris về chống biến đổi khí hậu. Những công ty này – cũng như nhiều thành phố – thậm chí còn quan tâm và nghiêm túc thực hiện mục tiêu giảm khí thải carbon ngay cả khi chính quyền quốc gia đã rút khỏi nó.

Đó là cách các doanh nghiệp hiện nay vận hành: chỉ cần làm việc tử tế và chăm chỉ, doanh nghiệp đó sẽ phát triển tốt. Tôi nhận thấy rõ ràng điều này khi hằng ngày làm việc của mình ở vị trí CEO của Goodwill. Goodwill là một doanh nghiệp lớn phức tạp với hàng ngàn nhân viên, 24 cửa hàng bán lẻ, một hội đồng quản trị và tất cả các loại vấn đề rắc rối mà tôi thực sự hứng thú khi được giải quyết. Chúng tôi sử dụng những từ như “sáng kiến”, “đế chế” và “doanh nhân” thay vì “ý tưởng”, “công ty” hay “người buôn bán”. Chúng tôi là một doanh nghiệp lớn. Chúng tôi loại bỏ những rào cản để người khuyết tật hay có những người có tiền án có cơ hội việc làm bình đẳng với mọi người. Chúng tôi làm việc để thay đổi suy nghĩ của cộng đồng về việc nên để những cựu binh quay trở lại làm việc.

Tôi yêu kết quả của công việc mình làm: tìm kiếm ra giải pháp cho những vấn đề dường như không thể giải quyết được và tạo nên thay đổi tích cực một cách mạnh mẽ hơn nữa để giúp đỡ cộng đồng.

Trong thế giới hôm nay, bạn không còn phải lựa chọn giữa làm công việc tốt cho xã hội hay việc tốt cho bản thân mình. Tương lai thế giới rõ ràng rất cần những giải pháp đột phá để giải quyết hàng loạt vấn đề toàn cầu hiện nay. Đây chính là một chìa khóa đem lại cho bạn những công việc vô cùng hấp dẫn và xứng đáng.

Vậy nên khi bạn đang bước những bước đi đầu tiên trên con đường sự nghiệp của mình, hãy nhớ rằng: Đừng làm việc bạn thích. Hãy thích hiệu quả công việc của mọi thứ bạn làm.

Nguồn: Applancer Careers

500 khóa học Online Programming & Computer Science miễn phí nên học ngay trong tháng 9

500 courses

Tác giả đã lọc ra từ 8000 khóa học của Class Central & chia thành 3 cấp bậc: Beginner, Intermediate, Advanced. Với mỗi khóa học, tác giả lại đánh dấu rating để người học dễ theo dõi.

BEGINNER (118)

An Introduction to Interactive Programming in Python (Part 1)
Rice University via Coursera

Introduction to Computer Science and Programming Using Python
Massachusetts Institute of Technology via edX

Introduction to Computer Science and Programming Using Python
Massachusetts Institute of Technology via edX

Learn to Program: The Fundamentals
University of Toronto via Coursera

Intro to Computer Science
University of Virginia via Udacity

Introduction to Computer Science
Harvard University via edX

Ruby on Rails: An Introduction
Johns Hopkins University via Coursera

An Introduction to Interactive Programming in Python (Part 2)
Rice University via Coursera

How to Use Git and GitHub
via Udacity

Introduction to HTML5
University of Michigan via Coursera

Introduction to Linux
Linux Foundation via edX

Coding in your Classroom, Now!
University of Urbino via EMMA

Internet History, Technology, and Security
University of Michigan via Coursera

Intro to HTML and CSS
via Udacity

Introduction to VBA/Excel Programming
Cal Poly Pomona via Open Education by Blackboard

[New] Network Protocols and Architecture
Cisco via Coursera

[New] Introduction to Cisco Networking
Cisco via Coursera

[New] Home Networking Basics
Cisco via Coursera

[New] Internet Connection: How to Get Online?
Cisco via Coursera

[New] Object-oriented programming in Python: create your own adventure game
Raspberry Pi Foundation via FutureLearn

[New] Introduction to TCP/IP
Yonsei University via Coursera

[New] Data Communications and Network Services
Cisco via Coursera

Intro to Java Programming
San Jose State University via Udacity

Build a Modern Computer from First Principles: From Nand to Tetris (Project-Centered Course)
Hebrew University of Jerusalem via Coursera

JavaScript Basics – via Udacity

CS101: Computer Science 101 – Stanford University via Stanford OpenEdx

Programming Basics
Indian Institute of Technology Bombay via edX

Programming Basics
Indian Institute of Technology Bombay via edX

Introduction to CSS3
University of Michigan via Coursera

Programming Foundations with Python
via Udacity

DB: Introduction to Databases
Stanford University via Stanford OpenEdx

HTML, CSS, and Javascript for Web Developers
Johns Hopkins University via Coursera

Creative Programming for Digital Media & Mobile Apps
University of London International Programmes via Coursera

Networking: Introduction to Computer Networking
Stanford University via Stanford OpenEdx

Usable Security
University of Maryland, College Park via Coursera

HTML5 Coding Essentials and Best Practices
World Wide Web Consortium (W3C) via edX

Introduction to the Internet of Things and Embedded Systems
University of California, Irvine via Coursera

HTML5 Coding Essentials and Best Practices
World Wide Web Consortium (W3C) via edX

Introduction to Bootstrap — A Tutorial
Microsoft via edX

Programming Foundations with JavaScript, HTML and CSS
Duke University via Coursera

Code Yourself! An Introduction to Programming
University of Edinburgh via Coursera

Begin Programming: Build Your First Mobile Game
University of Reading via FutureLearn

Learn to Program: Crafting Quality Code
University of Toronto via Coursera

Introduction to Cloud Computing – IEEE via edX

Intro to Relational Databases – via Udacity

HTML5 and CSS Fundamentals
World Wide Web Consortium (W3C) via edX

Python for Everybody — Exploring Information
via Independent

Introduction to Programming for the Visual Arts with p5.js
University of California, Los Angeles via Kadenze

Introduction to jQuery – Microsoft via edX

Linux Command Line Basics – via Udacity

Introduction to jQuery – Microsoft via edX

Introduction to Java Programming — Part 1
The Hong Kong University of Science and Technology via edX

Python Programming: A Concise Introduction
Wesleyan University via Coursera

Paradigms of Computer Programming — Fundamentals
Université catholique de Louvain via edX

Programming in Scratch
Harvey Mudd College via edX

Introduction to Programming with Java: Starting to code in Java
Universidad Carlos iii de Madrid via edX

Introduction to Java Programming — Part 1
The Hong Kong University of Science and Technology via edX

Introduction to Programming with Java: Starting to code in Java
Universidad Carlos iii de Madrid via edX

Paradigms of Computer Programming — Fundamentals
Université catholique de Louvain via edX

Paradigms of Computer Programming — Abstraction and Concurrency
Université catholique de Louvain via edX

How To Create a Website in a Weekend! (Project-Centered Course)
State University of New York via Coursera

CS For All: Introduction to Computer Science and Python Programming
Harvey Mudd College via edX

Object-Oriented Programming
Indian Institute of Technology Bombay via edX

Object-Oriented Programming
Indian Institute of Technology Bombay via edX

The Computing Technology Inside Your Smartphone
Cornell University via edX

Learn to Program Using Python
University of Texas Arlington via edX

Introduction to HTML and JavaScript
Microsoft via edX

Think. Create. Code
University of Adelaide via edX

Intro to JavaScript – via Udacity

Java Programming Basics  – via Udacity

Introduction to Data Storage and Management Technologies
IEEE via edX

Programming for the Web with JavaScript
University of Pennsylvania via edX

Introduction to Computing using Python
Georgia Institute of Technology via edX

Android for Beginners
via Udacity

Android App Development for Beginners
Galileo University via edX

MyCS: Computer Science for Beginners
Harvey Mudd College via edX

Computing: Art, Magic, Science
ETH Zurich via edX

Networks: Friends, Money, and Bytes
Princeton University via Coursera

Learn to Program in Java
Microsoft via edX

Android Basics: Make Your First App
Google via Udacity

Web Applications for Everybody
via Independent

How to Code: Simple Data
The University of British Columbia via edX

Cyber Security: Safety at Home, Online, in Life
Newcastle University via FutureLearn

Web Coding Fundamentals for Artists
National University of Singapore via Kadenze

Introduction to Data Storage and Management Technologies
IEEE via edX

Android App Development for Beginners
Galileo University via edX

CODAPPS: Coding mobile apps for entrepreneurs
EMLYON Business School via Coursera

The Unix Workbench
Johns Hopkins University via Coursera

Monetize Android Apps with Business Models
Galileo University via edX

Introduction to Java Programming — Part 2
The Hong Kong University of Science and Technology via edX

AP Computer Science A: Java Programming Classes and Objects
Purdue University via edX

Swift for Beginners
via Udacity

AP Computer Science A: Java Programming Polymorphism and Advanced Data Structures
Purdue University via edX

Cyber Security Basics: A Hands-on Approach
Universidad Carlos iii de Madrid via edX

Introduction to Python: Absolute Beginner  – Microsoft via edX

HTTP & Web Servers – via Udacity

Introduction to Programming with Java: Writing Good Code
Universidad Carlos iii de Madrid via edX

AP Computer Science A: Java Programming Loops and Data Structures
Purdue University via edX

Learn Swift Programming Syntax – via Udacity

Mobile Web Development – Google via Udacity

Computing: Art, Magic, Science — Part II
ETH Zurich via edX

Web Accessibility – Google via Udacity

Introduction to Virtual Reality – via Udacity

GitHub & Collaboration – via Udacity

ES6 — JavaScript Improved – via Udacity

Java Fundamentals for Android Development
Galileo University via edX

Introduction to ReactJS
Microsoft via edX

Introduction to Java Programming — Part 2
The Hong Kong University of Science and Technology via edX

CSS Basics – Microsoft via edX

Java Fundamentals for Android Development
Galileo University via edX

Object Oriented Programming in Java – Microsoft via edX

Introduction to Python: Fundamentals – Microsoft via edX

Software Engineering Essentials
Technische Universität München (Technical University of Munich) via edX

Introduction to Python – via Udacity

JavaScript Introduction – World Wide Web Consortium (W3C) via edX

Logic and Computational Thinking – Microsoft via edX

Introduction to Cybersecurity – University of Washington via edX

Introduction to Web Development – University of California, Davis via Coursera

Nguồn: medium.freecodecamp.org

Nên trả lời phỏng vấn qua điện thoại như thế nào?

Nếu được lựa chọn phỏng vấn qua điện thoại hay phỏng vấn trực tiếp, phần lớn ứng viên thường chọn cách đầu tiên vì cho rằng hình thức này khiến họ “dễ thở” hơn là mặt đối mặt với nhà tuyển dụng. Tuy nhiên trong cái dễ lại có cái khó, “khó” ở đây là không phải ai cũng có khả năng “để lại vấn vương” cho nhà tuyển dụng. Đừng lo, đã có cách
Sự chuẩn bị không bao giờ là thừa

Dù là phỏng vấn qua điện thoại hay trực tiếp gặp nhà tuyển dụng, tìm hiểu về công ty, về công việc mà mình muốn ứng tuyển là điều bất cứ ai cũng phải làm nếu không muốn bị loại từ “vòng gửi xe”. Tiếp đến, hãy tìm kiếm, liệt kê, đưa ra phương án, luyện tập cách trả lời sao cho ấn tượng những câu hỏi mà bạn có nguy cơ “bị hỏi”. Ngoài ra, trong một số trường hợp, bạn có thể sẽ biết được ai sẽ là người phỏng vấn mình trong lần phỏng vấn chính thức. Còn chần chờ gì mà không nhanh chóng “truy lùng” người này qua mạng xã hội, người quen trong công ty…để hiểu hơn về họ để tìm cách trả lời phỏng vấn sao cho phù hợp.

Luôn trong tư thế sẵn sàng

Thông thường thì bạn sẽ được hẹn giờ phỏng vấn, tuy nhiên cũng có lúc bạn bị gọi bất thình lình do đó hãy chắc chắn là mình luôn trong tư thế sẵn sàng “ra trận” nha! Phỏng vấn qua điện thoại thì yếu tố không gian thật sự rất quan trọng, ví dụ như âm thanh xung quanh, bạn đang ở đâu,…Tốt nhất là hãy luôn nhắc nhở bản thân về cuộc gọi “thần thánh” sắp tới để đảm bảo là mình có thể nhấc máy ngay lập tức, phỏng vấn trong không gian yên ắng, thoải mái nhất và không có vấn đề nào diễn ra làm ảnh hưởng tới cuộc điện thoại.
Chuyên nghiệp trong mọi hoàn cảnh

Chính vì không phải đối diện trực tiếp với nhà tuyển dụng nên chúng ta không đặt mức độ quan trọng của cuộc phỏng vấn này lên hàng đầu. Trả lời phỏng vấn của nhà tuyển dụng trong tư thế nằm giải trí, quần áo xộc xệch,…tất nhiên, họ sẽ không thể thấy được bạn đang làm gì, mặc gì, nhưng tác phong sẽ ảnh hưởng trực tiếp tới thần thái, giọng điệu, cách trả lời qua điện thoại của bạn. Liệu bạn có thể giao tiếp qua điện thoại một cách chuyên nghiệp nếu như bạn đang nằm ườn trên ghế sofa không nhỉ?
Ngại gì không “mở”

Phỏng vấn qua điện thoại giống như một bài kiểm tra “đề mở”, và bạn có quyền mở tài liệu! Tài liệu ở đây là những ghi chú mà bạn thực hiện trong quá trình chuẩn bị như thông tin về công ty, cách trả lời câu hỏi sao cho “vừa lòng” nhà tuyển dụng mà bạn đã cất công tìm hiểu mấy ngày liền, những thắc mắc hay đề bạt mà bạn muốn gửi gắm đền nhà tuyển dụng,…Điều quan trọng là hãy “mở” một cách chuyên nghiệp qua việc để những “tài liệu” này ở nơi dễ nhìn nhất, lật “tài liệu” sao cho nhanh-gọn-lẹ mà không để nhà tuyển dụng phát hiện,…Chà, nghe thú vị quá bạn nhỉ!

Ghi chú những lưu ý

Trong suốt quá trình tuyển dụng, hãy ghi lại những điều mà bạn thấy cần thiết cũng như những thắc mắc của bản thân để nhờ sự giải đáp của nhà tuyển dụng ở cuối cuộc gọi. Một số ứng viên do quá hăng say phỏng vấn, hoặc chủ quan không ghi chú mà đã để lỡ khá nhiều thông tin quan trọng, gây ảnh hưởng không tốt đến kết quả tuyển dụng của bản thân về sau.

Gửi lời cảm ơn chân thành

Sau khi kết thúc cuộc phỏng vấn, trong vòng 48 giờ, một e-mail cảm ơn đến nhà tuyển dụng là cách đơn giản nhằm để lại ấn tượng tốt đẹp về bạn cho nhà tuyển dụng. Ngoài ra, đây còn là cơ hội để chúng ta “thủ thỉ” tâm sự, bày tỏ sự hào hứng, đam mê của mình đối với công việc mà mình muốn ứng tuyển cũng như cho họ thấy mình là người phù hợp với vị trí đó. Cuối cùng, nếu còn thắc mắc về vấn đề nào, hãy mạnh dạn xin họ lời giải đáp bạn nhé!

Tạo CV Online hấp dẫn cho dân IT tại đây

Nguồn: Applancer Careers via HR Insider

3 sự kiện lập trình bạn nên tham gia ngay cuối tháng 9 này!

Làm thế nào để lập trình giỏi hơn? – Câu hỏi đã gây không ít nhức nhối đối với các developer, đặc biệt là các bạn còn đang chập chững những bước đầu tiên. Thực tế đã có rất nhiều câu trả lời cho câu hỏi kinh điển này theo nhiều hướng phân tích đa dạng cùng những chia sẻ kinh nghiệm khác nhau.

Bạn có thể tự mình trao dồi kĩ năng code nhờ công việc, tự mình nghiên cứu đọc tài liệu. thay đổi 1 số thói quen, nguyên tắc khi lập trình.

Và đừng quên, bạn có thể học từ code của người khác. Tất nhiên, việc học từ kinh nghiệm của các Techlead, các Senior dev đi trước trong ngành sẽ tiết kiệm kha khá thời gian, đặc biệt nếu đó là những buổi Meetup chuyên sâu vào 1 kĩ năng, 1 công cụ nào đó mà bạn đang mơ hồ, chưa nắm vững.

Topdev giới thiệu đến bạn 3 sự kiện công nghệ nên tham gia ngay trong tháng 9 này, đảm bảo giúp bạn tiến thêm 1 bước nhanh hơn nữa trên con đường chinh phục sự nghiệp lập trình của mình.

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

GraphQL bao gồm 3 điểm đặc trưng sau: cho phép client xác định chính xác những dữ liệu cần, hỗ trợ quá trình tổng hợp dữ liệu từ nhiều nguồn dễ dàng hơn và sử dụng 1 type system để mô tả dữ liệu.

Lấy Facebook làm ví dụ. Facebook phải quản lí vô số data source và API clients mà REST API lại lộ khuyết điểm thiếu linh hoạt do tính chất dựa trên tài nguyên cố định, dẫn đến trường hợp “nghẽn cổ chai” thường thấy. Chính vì vậy, thay vì có đến hàng tá “endpoint” dư thừa, Facebook đã nghĩ đến giải pháp chỉ dùng một “endpoint” thông minh với khả năng tiếp thu những Query phức tạp rồi đưa ra output data với loại type tùy theo yêu cầu của client. Nói đơn giản hơn, đây là truy vấn hướng client, cấu trúc dữ liệu không khô cứng 1 khuôn mẫu từ server (REST API) mà thay đổi theo từng ngữ cảnh sao cho hiệu quả nhất đối với client Ngoài ra, GraphQL hoàn toàn có thể create, update, delete, nhưng với cấu trúc sáng sủa và cấu trúc phân tầng nên lại càng thuận lợi cho lập trình viên phía client.

 
Nhìn chung, nếu có định hướng phát triển nhiều dòng sản phẩm, nhiều client thì đây là cơ hội có 1-0-2 để tìm hiểu GraphQL tại buổi GRAPHQL – GIẢI PHÁP CHO VẤN ĐỀ PHÁT SINH QUÁ NHIỀU API với những nội dung chia sẻ cơ bản nhất diễn ra trong 180 phút đến từ diễn giả TRẦN TRỌNG THANH – CTO của Nâu Studio!

2/ Bắt đầu nghiên cứu Big Data từ đâu & như thế nào?

Năm 2005, Amazon từng sở hữu ba cơ sở dữ liệu Linux lớn nhất thế giới với dung lượng là 7, 8TB, 18, 5TB và 24, 7TB để xử lí hàng triệu hoạt động mỗi ngày cũng như những yêu cầu từ khoảng nửa triệu đối tác bán hàng.

Tương tự, Facebook cũng phải quản lí 50 tỉ bức ảnh từ người dùng tải lên. YouTube hay Google thì phải lưu lại hết các lượt truy vấn và video của người dùng cùng nhiều loại thông tin khác có liên quan.

Như vậy, Big Data đang dần trở thành từ khóa công nghệ được tìm kiếm nhiều nhất trong những năm gần đây. Nhưng liệu bạn đã hiểu rõ những công nghệ, nền tảng thực sự nào đứng sau Big Data?

Với buổi chia sẻ BẮT ĐẦU NGHIÊN CỨU BIG DATA TỪ ĐÂU & NHƯ THẾ NÀO, bạn sẽ nắm rõ những kiến thức, kĩ năng nào để nghiên cứu, thực hành Big Data nhờ sự hướng dẫn chi tiết của chuyên gia kinh nghiệm trong suốt 180 phút của buổi học.

3/ How Tiki Made Dzựt Cô Hồn?

Cứ mỗi tháng 7 hằng năm, sự kiện Dzựt Cô Hồn của Tiki lại thu hút sự chú ý của đông đảo cư dân mạng. Người dùng than thở vì canh mãi mà dzựt không được, nhưng đứng trên phương diện lập trình, liệu có dev nào đã từng thắc mắc Tiki sử dụng công nghệ, ngôn ngữ nào để xây dựng tạo nên 1 trong những chương trình rầm rộ nhất của mình?

Chưa dừng lại ở đó, hàng loạt vấn đề khác mà dân lập trình không thể làm ngơ: Từ framework, CSDL đến quá trình đảm bảo server, domain, cloud… chạy ổn định và cả những chiêu thức nhằm loại bỏ những khách hàng gian lận, hack, dùng Bot để can thiệp vào hệ thống.

Tất cả sẽ được tiết lộ tại buổi Meetup HOW TIKI MADE DZỰT CÔ HỒN với những chia sẻ chuyên sâu của chuyên gia, qua đây giúp bạn nắm vững cách giải quyết, xử lý “mượt mà” bài toán có hàng trăm ngàn request truy cập chỉ trong 3 giờ của buổi Meetup. Đây chắc chắn là 1 case study kinh điển và bài học kinh nghiệm quý giá dành cho các bạn Web dev, Tech team và Tech leaders.

Nguồn: Techtalk tổng hợp

Làm sao để chuyển đổi từ Graphic Design sang UX Design? (phần 1)

Graphic design

Nếu có một nghề 100% liên quan tới ý tưởng của mọi người về thiết kế là gì thì đó chính là thiết kế đồ họa (Graphic Design). Từ hình ảnh logo quen thuộc của MC Donald cho đến kiểu chữ và màu sắc của 1 poster film, thiết kế đồ họa đã tạo ra nhiều thiết kế mang tính biểu tượng và phổ biến quanh chúng ta hiện nay.

Vậy tại sao 1 Graphic Designer lại muốn chuyển sang UX Design? Đầu tiên phải nói về sự thỏa mãn và thành tựu bắt nguồn từ việc đi sâu vào chi tiết của sản phẩm bạn đang làm thay vì làm việc bên ngoài. Hơn thế nữa, theo PayScale, lương trung bình của Graphic Design ở United State là $41.000 nhưng lương cho UX Design lại lên tới $47.000.

Cho dù lí do chuyển đổi là gì đi nữa, rõ ràng đây cũng là một điều rất đáng khen ngợi. Nhưng làm thế nào để chuyển từ Graphic Design sang UX Design? Cùng tìm hiểu nhé.

Xem thêm: việc làm ui ux designer chất nhất cho bạn

Trải nghiệm người dùng (User Experience) và Thiết kế trải nghiệm người dùng là gì?

Trải nghiệm người dùng (User experience – UX) là các trải nghiệm người dùng cảm nhận được trong quá trình sử dụng 1 sản phẩm nhất định. Vì vậy nên công việc của 1 UX Design là tạo ra 1 sản phẩm cung cấp các trải nghiệm khả thi tốt nhất cho người sử dụng. Vậy làm cách nào?

Tất nhiên việc này sẽ bắt đầu từ việc thực hiện rất nhiều nghiên cứu. Bạn không thể tạo ra bất cứ giá trị nào cho khách hàng trừ khi bạn hiểu họ đang gặp phải vấn đề gì và bạn có thể giải quyết vấn đề đó giúp họ như thế nào, vậy đó chính là điều mà người sử dụng muốn hay đúng hơn là cần giải pháp của bạn. Bạn chỉ có thể hiểu được khách hàng bằng cách tương tác với họ.

Từ hình bên dưới có thể thấy được, UX Design dường như quan tâm tới 3 yếu tố căn bản sau: Hình dáng của sản phẩm, cảm xúc của sản phẩm và độ hữu dụng của sản phẩm đó.

Hình dáng của 1 sản phẩm là tạo ra 1 sản phẩm có vẻ ngoài thu hút, đặc biệt hòa hợp với giá trị của khách hàng và bắt được tinh thần mà sản phẩm mong muốn. Nói cách khác, hình dáng không nhất thiết phải đẹp nhưng nó nhất định phải đúng. Để làm vậy, phải hình thành một sợi dây liên kết tin tưởng và tín nhiệm giữa sản phẩm và người dùng.

Tiếp theo là cảm xúc, đó là việc phát triển sản phẩm tạo ra cảm giác vui vẻ khi sử dụng. Kể cả khi bạn tương tác hay phản ứng với sản phẩm, chúng đều nên tạo ra một trải nghiệm thoải mái chứ không chỉ thể hiện chức năng không.

Cuối cùng, độ hữu dụng chính là nền tảng của trải nghiệm người dùng. Nếu sản phẩm không hữu dụng, sự trải nghiệm khi sử dụng nó sẽ không bao giờ hoàn hảo. UX Design muốn tạo ra những sản phẩm có thể được thiết kế riêng để đáp ứng các nhu cầu đặc biệt của người sử dụng nhưng cũng phải cung cấp đủ các chức năng có thể được tiên đoán trước.

Vậy Graphic Design và UX Design có điểm chung gì?

Thiết kế theo cảm xúc

Graphic Designer là việc giao tiếp có cảm xúc thông qua kiểu chữ, màu sắc và hình ảnh. Kiểu chữ Serif và các màu tối, đậm sẽ gợi lên cảm giác lo lắng, nghiêm trọng, trong khi kiểu chữ San-serif và màu sáng dường như sẽ đem lại cảm giác vui vẻ hay phấn khích. Graphic Designer thường là những người rất giàu cảm xúc sẽ gợi lên những phản ứng từ phía người dùng. UX Design cũng quan tâm tới việc định hình cảm xúc của người sử dụng, mặc dù có thể ở phạm vi rộng hơn là bức tranh toàn cảnh của toàn bộ trải nghiệm người dùng với sản phẩm. Hơn cả việc tập trung vào kiểu chữ và màu sắc đúng đắn, UX Design cũng quan tâm  tới thiết kế chuyển động, giọng điệu của content, kiến trúc của thông tin hơn những thứ khác.

Suy nghĩ sáng tạo

Cả Graphic design và UX Design đều có kĩ năng về suy nghĩ sáng tạo. Đối với Graphic Designers, tạo ra các hình ảnh tuân thủ các quy ước (và do đó truyền đạt hiệu quả) trong khi vẫn giữ được một cảm giác độc đáo (nổi bật trong số các đối thủ cạnh tranh) đòi hỏi một vài suy nghĩ sáng tạo và quan trọng.

UX design cũng giống vậy, họ phải tạo ra các sản phẩm giải quyết vấn đề của người sử dụng, và thỉnh thoảng các giải pháp thông thường không phải lúc nào cũng tốt nhất hay thích hợp nhất.

Bản mẫu giả lập (Prototype)

Graphic Design thường tạo ra các Prototypevà wireframes cho thiết kế của họ trước khi chuyển giao một thiết kế hoàn chỉnh. Điều này cho phép khách hàng có thể feedback trên thiết kế của họ để cải thiện mà không cần phải vẽ lại từ đầu. UX Design cũng tạo ra các bản mẫu giả lập và sản phẩm mẫu, nhưng ít tập trung vào phần hình dáng mà tập trung vào cảm giác của nó. Prototype có tác dụng không? Nó có hữu dụng không? Có đáng giá không? Đây đều là những câu hỏi mà một UX design muốn trả lời.

Sự khác biệt giữa Graphic Design và UX Design

Tập trung vào người dùng vs Tập trung vào ảnh

Graphic Designer dường như theo đuổi sự hoàn hảo về việc lấy nét tự động trong các thiết kế của mình. Họ phải đảm bảo rằng các dòng chữ có khoảng cách và màu sắc phù hợp với các yêu cầu từ thương hiệu – luôn chiếm một phần quan trọng trong công việc của người Graphic Design.

UX Design lại tập trung vào người sử dụng. Họ nghiên cứu các giao diện giữa sản phẩm và người sử dụng, tìm cách để đảm bảo sản phẩm có thể đáp ứng được với các nhu cầu của người dùng. Để làm được vậy họ phải thực hiện nhiều nghiên cứu bằng cách nói chuyện và quan sát người sử dụng, tạo ra cá tính và câu chuyện cho người dùng, kiểm tra khả năng của người sử dụng và nhiều hơn nữa. Graphic Designer nếu muốn chuyển con đường sự nghiệp sẽ cần phải làm rất nhiều thứ để tìm ra cách thức hiện khảo sát người sử dụng.

Giải quyết các vấn đề lặp lại

UX Design có quá trình giải quyết các vấn đề lặp lại nhiều lần và có thể rất khác với khi bạn là Graphic Design. Bắt đầu với việc xác nhận vấn đề – thường được tìm thấy thông qua nghiên cứu và nếu không phải thì thường được xác nhận thông qua khảo sát người dùng. Không có điểm nào trong quá trình giải quyết vấn đề mà người sử dụng không quan tâm; nếu họ sẽ không trả tiền để giải quyết các vấn đề đó và điều đó nghĩa là công ty bạn sẽ không nhận được tiền.

Từ bước xác nhận vấn đề, các nghiên cứu sẽ tiếp tục được thực hiện để tìm cách giải quyết mà khách hàng cảm thấy tốt nhất – thường thông qua quan sát, bảng khảo sát, nghiên cứu dân tộc học, v.v…

Những khảo sát này sẽ thông tin đến bản thiết kế của sản phẩm. Designer sau đó sẽ kiểm tra với người sử dụng để xem liệu khảo sát đó có dẫn tới giải pháp đúng đắn hay không. Những bản thiết kế này chắc chắn sẽ lặp lại cho đến khi các bản khảo sát xác nhận rằng chúng đã đủ tốt.

Khi điều này xảy ra chứng tỏ sản phẩm đã sẵn sàng để ra mắt, nhưng quy trình thiết kế vẫn chưa kết thúc. Các bản thiết kế sẽ tiếp tục được kiểm tra và thực hiện các bản khảo sát người sử dụng, sau đó lại bắt đầu 1 vòng mới của việc khảo sát người dử dụng. Các cải tiến cho thiết kế sau này đều sẽ dựa trên những phản hồi này.

Đa môn và chuyên ngành

Graphic Design có những quy luật nhất định, có tay nghề chắc chắn và các kĩ năng đặc biệt (như kiến thức về kiểu chữ và màu sắc) nhằm tạo ra các hình ảnh tuyệt vời.

Ngược lại UX Design đa ngành hơn và liên quan đến nhiều kiến thức từ các ngành khác nhau. UX Design nhất định phải học về tâm lí con người, thiết kế tương tác, kiến trúc thông tin và kĩ năng khảo sát … để tạo ra các giải pháp đúng đắn đối với các vấn đề của người sử dụng. Don Norman, người tạo ra cụm từ “User Experience” (Trải nghiệm người dùng) – giải thích rằng trải nghiệm người dùng “bao gồm tất cả các khía cạnh trải nghiệm của 1 người dùng với hệ thống kể cả thiết kế công nghiệp, giao diện, tương tác vật lí và cách sử dụng”.

(còn tiếp)

Nguồn: topdev.vn via interaction-design.org

Học ngôn ngữ gì cho Data Science?

Học ngôn ngữ gì cho Data Science?

Data Science là một lĩnh vực vô cùng thú vị, kết hợp giữa thống kê nâng cao, phân tích số liệu và khả năng lập trình. Có rất nhiều ngôn ngữ lập trình thích hợp để dùng cho Data Science.

Tuy sẽ không có câu trả lời chính xác nhưng để thành công trong Data Science, bạn sẽ cần chú ý đến những điều sau:

Specificity – Chuyên biệt

Khi nói đến Data Science, bạn sẽ cần phải thuần thục tất cả các package và module khác nhau có trong ngôn ngữ lập trình bản thân chọn.

Generality – Tổng quát

Data scientist phải có kĩ năng tốt trong lập trình cũng như khả năng phân tích số liệu. Bởi phần lớn công việc hàng ngày của Data science là lọc và clean dữ liệu. Đây là một task mà không có bất kì machine learning packages nào có thể làm thay được.

Productivity – Năng suất

Với việc mọi thứ càng trở nên năng động hơn trong thế giới kinh doanh hiện nay, năng suất đóng cũng đóng vai trò rất quan trọng. Tuy vậy, nó đồng nghĩa với việc khả năng xuất hiện lỗi cũng nhiều hơn cũng như đòi hỏi kĩ năng cao từ các Data scientist.

Performance – Hiệu năng

Trong một số trường hợp, việc cải thiện hiệu năng cho code được ưu tiên hàng đầu, đặc biệt là khi ta có một lượng lớn các data quan trọng. Ngôn ngữ Compiled thường nhanh hơn so với loại interpreted, cũng như statically typed languages thì ít bị “fail” hơn khi so với loại dynamically. Tất nhiên bù lại thì hiệu năng của nó thấp hơn.

Đây là 4 tiêu chí mà bạn sẽ dùng để xếp hạng các loại ngôn ngữ lập trình cho Data Science. Giờ thì chúng ta cùng xem qua những ngôn ngữ nổi bật thường được dùng. Chúng sẽ được xếp hạng theo độ nổi tiếng cũng như dựa theo quan điểm và trải nghiệm của chính tôi:

R

Điều mà bạn cần biết

Được tung ra vào năm 1995 với tư cách là truyền nhân của ngôn ngữ lập trình S. R đã có những bước phát triển và cải thiện mình. Hiện project đang được hỗ trợ bởi R Foundation for Statistical Computing.

License

Hoàn toàn miễn phí!!

Điểm mạnh

Chất lượng tuyệt hảo, domain chi tiết và open source packages. R gần như có mọi package cho từng thể loại app khác nhau. Có thể kể đến là neural networks, non-linear regression, phylogenetics, advanced plotting, v.v…

Phần mềm cài đặt đã có tích hợp sẵn các function và phương pháp thông kê nâng cao. R cũng không gặp phải vấn đề gì với ma trận đại số.

Data visualization cực kì mạnh mẽ với các libraries như ggplot2.

Điểm yếu

Hiệu năng. Không có gì để bào chữa, R không phải là một ngôn ngữ nhanh nhẹn.

Chỉ thích hợp cho một số mục đích nhất định. R cực kì tuyệt vời về thông số và data science nhưng thua những đứa em khác khi bạn chỉ muốn lập trình chung chung thôi.

Quái. R có một số tính năng hơi quái khi đi ngược với các ngôn ngữ lập trình khác như: index bắt đầu từ 1, sử dụng nhiều assignment operators, cấu trúc dữ liệu lạ lẫm.

Kết luận – Tuyệt vời cho mục đích của nó

R là một ngôn ngữ vô cùng mãnh mẽ khi nói về thông số và data visualization, và cũng như việc là open source cho phép cộng đồng đóng góp cải thiện R. Gần đây, nó càng ngày nổi tiếng vì quá xuất sắc tại lĩnh vực của mình.

Python

Điều mà bạn cần biết

Học ngôn ngữ gì cho Data Science?

Guido van Rossum giới thiệu Python vào năm 1991. Kể từ đó, nó trở nên rất nổi tiếng bởi sự đa năng của mình và được dùng rộng rãi trong cộng đồng data science. Hai phiên bản chính hiện nay là 3.6 2.7.

License

Hoàn toàn miễn phí!!

Điểm mạnh

Python rất nổi tiếng, được xem là ngôn ngữ lập trình mainstream, thích hợp cho nhiều mục đích khác nhau. Nó có modules  được tạo ra nhằm mở rộng tính năng của mình cũng như sự trợ giúp đến từ cộng đồng. Có nhiều dịch vụ online còn cung cấp cả một Python API.

Python  rất dễ học bởi nó đơn giản. Do đó mà thường được các lập trình viên chọn ngôn ngữ đầu tiên để học.

Với những package như pandas, scikit-learn và Tensorflow khiến cho Python trở thành một lựa chọn khá tốt cho những app có áp dụng machine learning ở level cao.

Điểm yếu

Python là ngôn ngữ thuộc dạng dynamical, nên bạn sẽ phải rất quan tâm đến nó. Bởi các Type errors sẽ xuất hiện thường xuyên.

Với một số tình huống phân tích dữ liệu và thống kê, R sẽ vượt trội hơn so với Python. Còn nếu chỉ là đơn giản học chung chung thì lại có những lựa chọn khác tốt hơn Python.

Kết luận – Cân bằng mọi mặt

Python là một lựa chọn khá tuyệt vời cho data science. Đa phần bởi quá trình của data science nằm ở ETL process nên Python cũng rất được chú ý bởi sự thích hợp của nó.

SQL

Điều mà bạn cần biết

Học ngôn ngữ gì cho Data Science?

SQL (‘Structured Query Language’) defines, quản lí và queries databases. Xuất hiện từ 1974, trải qua nhiều thay đổi nhưng giá trị cốt lỗi vẫn được giữ nguyên.

License

Tùy thuộc – một số implementations miễn phí và số khác là tính phí.

Điểm mạnh

Cực kì hiệu quả với querying, update cũng như kiểm soát databases.

Declarative syntax giúp cho SQL trở thành một ngôn ngữ dễ đọc. Chẳng có gì khó hiểu với  SELECT name FROM users WHERE age > 18  cả.

SQL được dùng bởi rất nhiều ứng dụng khác nhau nên sẽ có ích khi bạn biết về nó. Các Modules  như SQLAlchemy giúp việc việc integrate SQL với các ngôn ngữ khác trở nên dễ dàng và nahnh chóng.

Điểm yếu

Khả năng phân tích của SQL khá hạn chế – ngoài tổng hợp, cộng, đếm và tính số trung bình cho data thì bạn không có nhiều lựa chọn lắm.

Programmer đôi khi sẽ thấy rằng SQL’s declarative syntax khá khó học

Có rất nhiều implementations cho SQL như PostgreSQL, SQLite, MariaDB. Điều quan trọng là chúng quá khác nhau đến mức việc bạn phải học từng cái đã rất đau đầu.

Kết luận – Hiệu quả và bền bỉ

SQL là ngôn ngữ thích hợp với việc xử lí data hơn là dùng để phân tích nó. Tuy vậy vẫn có nhiều quá trình data science dựa vào ETL, cũng như sự bền bỉ và hiệu quả của SQL đã chứng minh rõ sự mạnh mẽ của mình.  

Java

Điều mà bạn cần biết

Học ngôn ngữ gì cho Data Science?

Java là một ngôn ngữ lâp trình cực kì nổi tiếng, chạy trên (JVM) Java Virtual Machine. Nó cho phép tính di động giữa các platform và hiện đang được phát triển bởi Oracle.

License

Version 8 —  hoàn toàn miễn phí

Điểm mạnh

Ở khắp mọi nơi. Rất nhiều hệ thống và app ngày nay được tạo ra trên Java back-end. Tính năng tích hợp data science vào thẳng codebase quả thật cực kì mạnh mẽ.

Java bảo đảm bạn không phải lo về lỗi type. Đối với những big data applications, đây như là một thiên đường vậy.

Java là một ngôn ngữ compile với hiệu suất rất cao. Nhờ đó mà nó thích hợp cho việc tạo ra những ETL production code hiệu quả cũng như các thuật toán machine learning phức tạp.

Điểm yếu

Với những app tập trung về phân tích thông số thì Java sẽ không phải là lựa chọn đầu tiên bởi sự vượt trội của R và Python.

Không như R, Java không có nhiều libraries cho các phương thức thông kê nâng cao.  

Kết luận – Một ứng viên đầy tiềm năng cho Data Science

Có rất nhiều nguyên nhân để chọn Java làm ngôn ngữ data science. Rất nhiều công ty sẽ quí trọng khả năng tích hợp data science production code trực tiếp vào codebase, cũng như là hiệu năng cao và ít lỗi type của Java. Tuy vậy nếu như bạn chỉ tập trung thuần túy vào việc phân tích và thống kê thì ngoài Java ra vẫn có R và Python.

Scala

Điều mà bạn cần biết

Học ngôn ngữ gì cho Data Science?

Phát triển bởi Martin Odersky và được tung ra vào 2004, Scala là một ngôn ngữ chạy trên JVM. Nó là một mô hinh đa ngôn ngữ, cho phép sử dụng cả 2 phương thức object-oriented và functional. Framework Apache Spark cũng được được bằng Scala.

License

Miễn phí!

Điểm mạnh

Scala + Spark = cluster computing với năng suất cực cao. Scala là một lựa chọn lí tưởng khi làm với những data sets với qui mô lớn.

Đa mô hình: Scala programmers được hưởng tất cả những thứ tốt nhất. Cả hai mô hình object-oriented và functional đều có thể dùng được.

Scala được compiled vào Java bytecode và chạy trên JVM. Nhờ đó cho phép khả năng tương tác Java. Nhờ đó mà Scale là môt ngôn ngữ khá mạnh mẽ, phù hợp cho nhiều mục đích khác nhau.

Điểm yếu

Scala không phải là ngôn ngữ dễ cho bạn chọn đầu tiên để học. Cách tốt nhất là download sbt và set-up một IDE như Eclipse hay IntelliJ với Scala plug-in.

Syntax và type system rất phức tạp nên sẽ khiến nó không hấp dẫn bằng Python.

Kết luận – Hoàn hảo cho big data

Khi nói về cluster computing với Big Data, Scala + Spark là một sự kết hợp hoàn hảo cho bạn. Nếu đã từng dùng qua Java hoặc các ngôn ngữ thuộc statically typed, bạn sẽ thấy rằng các tính năng của Scala rất mạnh mẽ. Tuy nhiên nếu không nhắm tới qui mô như vậy thì R và Python sẽ là những lựa chọn phù hợp hơn.

Julia

Điều mà bạn cần biết

Học ngôn ngữ gì cho Data Science?

 

Với tuổi đời chỉ mới 5 năm, Julia đã gây được ấn tượng mạnh với cộng đồng lập trình. Nó được biết tới nhanh chóng nhờ vào việc nhiều ông lớn đã chấp nhận sử dụng Julia ngay từ thời điểm nó mới được tung ra.

License

Miễn phí

Điểm mạnh

Julia là một JIT (‘just-in-time’) compiled language với hiệu năng rất cao. Nó cũng có dynamic-typing cùng khả năng scripting như một interpreted language (Python chẳng hạn).

Julia được tạo ra nhằm để phân tích số liệu.

Code của Julia rất dễ đọc.

Điểm yếu

Do tuổi đời còn trẻ nên Julia vẫn chưa được ổn định khi dùng các packages khác nhau.

Mặt khác, số lượng của package vẫn còn rất hạn chế và không được phong phú đa dạng như các ngôn ngữ khác ở trên.

Kết luận – Dành cho tương lai

Vấn đề mà Julia  gặp phải là sự non trẻ của mình. Do đó hiện tại Python và R vẫn là những lựa chọn tốt hơn. Tuy vậy, nếu bạn muốn thử sự mới lạ cũng như có đủ kiên nhẫn thì Julia sẽ không làm bạn thất vọng.

MATLAB

Điều mà bạn cần biết

MATLAB là một ngôn ngữ chuyên về số liệu được dùng bởi nhiều đại học và công ty khác nhau. Được phát triển bởi MathWorks, một công ty chuyên về phần mềm số hóa.

License

Trả phí

Điểm mạnh

Dành cho việc thống kê và phân tích số liệu. MATLAB rất phù hợp cho những app chuyên về số cùng với áp dụng toán học nâng cao như signal processing, Fourier transforms, matrix algebra và image processing.

Data Visualization.

MATLAB được dùng rộng rãi từ toán học cho tới vật lí, Engineer.

Điểm yếu

Phải trả phí.

MATLAB không đa năng như các ngôn ngữ khác.

Kết luận – Là lựa chọn đầu tiên cho các app nặng về toán học

MATLAB với khả năng ưu việt của nó về phân tích và thống kê số liệu được xem là lựa chọn hoàn hảo cho data science.

Một số các ngôn ngữ khác

Vẫn có một số ngôn ngữ “mainstream” khác mà data scientists vẫn có thể dùng.

C++

C++ không phải là một lựa chọn thường thấy cho data science, dù nó cực kì nhanh cũng như rất nổi tiếng. Vấn đề đơn giản là nằm ở năng suất của nó.  

Thật sự mà nói, C++ vẫn có thể giúp ta tạo ra những machine learning feature ở level thấp, tuy vậy, những ngôn ngữ ở trên đều có thể làm được vậy và thậm chí là còn tốt hơn.

Kết luận – Không dành cho dùng hàng ngày nhưng nếu bạn thật sự chú trọng tới tốc độ xử lí.

JavaScript

Với sự phát triển của Node.js, JavaScript đang dần phát triển theo hướng server-side language. Tuy vậy, trong lĩnh vực data science và machine learning vẫn bị hạn chế rất nhiều. Nguyên nhân là bởi:

  • Kẻ sau đến muộn (Node.js chỉ mới có 8 năm tuổi)
  • Libraries và modules cho data science cực kì ít.
  • Dù Node.js nhanh nhưng JavaScript vẫn còn nhiều điểm yếu

Kết luận – Vẫn còn quá nhiều thứ cần phải cải thiện trước khi JavaScript thật sự được dùng cho Data Science.

Perl

Perl được xem như là dao thụy sĩ của giới lập trình bởi sự đa năng, phù hợp cho nhiều mục đích khác nhau. Chia sẻ nhiều điểm giống với Python nhưng lại có số phận khá lèo bèo và không có nhiều thành công trong data science như Python.

Kết luận – Một ngôn ngữ đa năng cho nhiều mục đích khác nhau nhưng không hề có điểm mạnh nào trong lĩnh vực Data science.

Ruby

Cũng là một ngôn ngữ nổi bật khác bởi sự đa năng của nó. Tuy nhiên cũng như Perl, khi so sánh với Python thì nó tỏ ra kém cạnh rất nhiều trong lĩnh vực Data Science.

Tuy hiện tại cũng có SciRuby project nhằm giúp Ruby phát triển thêm trong Data Science nhưng hiện tại thì Python vẫn là người dẫn đầu cuộc đua.

Kết luận – Không phải là một lựa chọn tốt nhưng cũng không quá tồi

Tổng Kết

Tôi thường dùng R, Python và SQL cho task hằng ngày, vốn tập trung vào việc phát triển data pipeline và ETL.

Tuy vậy với những project qui mô cũng như có liên quan tới Big Data thì Java và Scala là những lựa chọn tuyệt vời.

Còn nếu bạn muốn khám phá thì Julia project sẽ là một điểm tới hấp dẫn.

Nguồn: via Medium