Vào năm 2018, Harvard Business Review đã bầu chọn nghề Data Scientist – Nhà khoa học dữ liệu công việc “hot” nhất thế kỷ 21 để nhấn mạnh sự thành công và sức ảnh hưởng của Dữ liệu đến thị trường thế giới. Tuy nhiên, lĩnh vực này chưa hoàn toàn lớn mạnh như kỳ vọng, cũng như còn nhiều hiểu lầm – hiểu sai về công việc data scientist là gì. Nó xuất hiện với nhiều người như một thứ “kỹ thuật mờ”, có thể có khả năng triển khai sản phẩm hoặc dịch vụ của họ.
Sự hiểu lầm này có thể dẫn đến thất bại trong việc sử dụng tốt các nguồn lực. Hãy cùng lùi lại một bước để có cái nhìn chi tiết hơn về nghề Data Scientist, cùng như giải mã cách để bạn có thể “dấn thân” theo con đường này.
Data Scientist là gì?
Data Scientist (kỹ sư khoa học dữ liệu) là những người phân tích, sắp xếp và thay dữ liệu “kể chuyện”, bất kể nó có cấu trúc hay không. Công việc của họ sẽ cần phối hợp giữa cả khoa học máy tính, thống kê và toán học. Họ sẽ là người phân tích, xử lý và “mô hình hóa” các dữ liệu, sau đó diễn giải các kết quả để tạo ra các kế hoạch hoạt động cho team và doanh nghiệp.
Nói một cách dễ hiểu, nghề data scientist làm việc cũng dữ liệu và cho ra các insight mang tính phân tích. Họ sẽ truyền đạt các phát hiện và insight này với các bên liên quan – từ lãnh đạo cấp cao, quản lý đến khách hàng. Từ đó các công ty có thể trực tiếp hưởng lợi từ việc đưa ra các quyết định sáng suốt nhất để thúc đẩy tăng trưởng kinh doanh và lợi nhuận của họ (tức là, phụ thuộc vào bối cảnh của các ngành công nghiệp).
Tại Việt Nam, ngành CNTT cũng đang chứng kiến sự tăng trưởng tiềm năng của ngành Khoa học dữ liệu. Ngày càng có nhiều doanh nghiệp quan tâm hơn tới ngành khoa học dữ liệu và sẵn sàng đổ tiền cho việc nghiên cứu và phát triển. Không sai khi nói nghề Data Scientist đang là một trong những ngành hot nhất trên thị trường Việt Nam, liệu bạn hiểu rõ về nó?
Công việc của một Data Scientist
Data Science là gì ?
Credit: Matt Dancho
Mục tiêu của bộ phận Data Science là làm sao để các bộ phận các tại Doanh nghiệp có thể đưa ra các quyết định dựa trên dữ liệu tốt hơn. Vì thế Data Science có vai trò hỗ trợ (tương tự như CNTT) cho phép tổ chức hoạt động tốt hơn và tăng giá trị nhanh hơn thông qua việc ra quyết định tốt hơn.
Luồng công việc của bộ phận Data Science sẽ gồm các Cột mốc quan trọng (đám mây), các giai đoạn (đường kẻ đứt nét) và các bước (box màu xám). Quy trình bắt đầu từ một vấn đề cụ thể (Cột mốc 1) – doanh nghiệp sẽ ưu tiên đưa vấn đề này đến nhóm khoa học dữ liệu và họ sẽ bắt đầu vào quy trình quản lý dự án.
Chu trình Data Science có 3 giai đoạn:
Chuẩn bị – Dữ liệu được thu thập và làm sạch. Điều này cần một lượng thời gian đáng kể vì hầu hết dữ liệu còn nhiễu, có nghĩa là cần thực hiện các bước để cải thiện chất lượng và chuyển nó sang thành định dạng mà máy có thể hiểu và đọc.
Thử nghiệm – Đây là nơi các giả thuyết được tạo ra, dữ liệu được trực quan hóa và các mô hình được tạo ra. Điều này mất ít thời gian hơn so với khâu Chuẩn bị.
Phân phối – Báo cáo kết quả được ghi lại thành tài liệu, slideshow trình bày cho quản lý và một khi quản lý thông qua, các quyết định sẽ được truyền tải xuống để thay đổi.
Khi kết thúc quy trình, phần triển khai này sẽ là lúc một Business Value (cột mốc) mới cho doanh nghiệp được tạo ra.
Phân biệt Data Scientist vs Data Engineer vs Data Analyst
“Tháp workflow” của bộ phận Data Science
Tuỳ thuộc vào quy mô và mô hình doanh nghiệp, mỗi vị trí tại mỗi tổ chức sẽ có vai trò và trách nhiệm khác nhau. Tuy nhiên, mô hình tổng quan nhất về sự khác nhau của bộ ba Data như sau:
Data Scientist sẽ phân tích, kiểm tra, tổng hợp, tối ưu hóa dữ liệu và trình bày nó cho công ty. Các nhà khoa học dữ liệu thường có 4 nhiệm vụ chính trong một công ty: Phân tích, kiểm tra, tạo và trình bày chúng cho nhóm.
Các nhà khoa học dữ liệu phải có một nền tảng toán học và thống kê. Họ cũng hiểu và thành thạo việc tạo ra các mô hình máy học và trí tuệ nhân tạo. Việc tìm kiếm Data Scientist của doanh nghiệp cũng như tìm kiếm một Full-stacker và đòi hỏi nhiều thời gian.
Data Engineers sẽ phụ trách thu thập dữ liệu liên quan. Họ di chuyển và biến đổi Dữ liệu này thành “Pipeline” cho bộ nhóm Khoa học dữ liệu. Họ có thể sử dụng các ngôn ngữ lập trình như Java, Scala, C ++ hoặc Python tùy theo nhiệm vụ của họ. Kỹ sư dữ liệu chuyên về 3 hành động dữ liệu chính: thiết kế, xây dựng và sắp xếp các đường ống dữ liệu.
Có thể gọi họ là loại kiến trúc sư dữ liệu. Kỹ sư dữ liệu thường có kỹ thuật máy tính hoặc nền tảng khoa học và kỹ năng tạo hệ thống.
Data Analysts cũng sẽ tham gia vào việc lấy dữ liệu liên quan từ nhiều nguồn khác nhau và chuẩn bị nó để phân tích thêm. Dựa trên phân tích, một nhà phân tích dữ liệu cần đưa ra kết luận, hoàn thành các báo cáo cùng hình ảnh minh hoạ.
Do đó, chúng ta có thể thấy rằng phạm vi công việc của các nhà phân tích dữ liệu nhằm phân tích và mô tả các chiến lược trong quá khứ hoặc trước đó dựa trên dữ liệu quá khứ hoặc hiện tại, trong khi các nhà khoa học dữ liệu tập trung vào việc dự đoán và tính toán trước để tạo ra các chiến lược trong tương lai.
Workload của một Data Scientist
Nhìn vào nhánh Data Science, hầu hết mọi người sẽ nói rằng Data Science = Machine Learning. Tuy nhiên trên thực tế, Machine Learning (hoặc Modeling) sẽ chỉ chiếm khoảng 20% trong workload của một Data Scientist. Phần trăm công việc của Data Scientist được phân chia như sau:
Hiểu vấn đề của doanh nghiệp: Tiếp xúc và giao tiếp với Lãnh đạo/ Khách hàng (15%)
Làm việc của Dữ liệu: Lọc sạch dữ liệu, Học data, Visual hoá, Xử lý, Chuyển đổi, và Thấu hiểu (70%)
Truyền tải kết quả: Báo cáo, Soạn Slide Decking, và Build nên Công cụ ra quyết định tự động) (15%)
Data scientist sẽ dựa vào phân tích dự đoán, học máy, điều hòa dữ liệu, mô hình toán học và phân tích thống kê. Một chuyên gia dữ liệu sẽ tiến hành xử lý khối lượng dữ liệu lớn theo quy trình như sau:
Machine Learning Model
Mặc dù sự hiểu nhầm trên gần như đã phổ biến ở mọi nơi, việc xây dựng các mô hình máy học Machine Learning models chỉ là một bước của cả quá trình workload của một nhà khoa học dữ liệu. Sau khi đầu ra mô hình xử lý hậu kỳ, Data scientist sẽ truyền đạt kết quả cho các nhà quản lý, thường sử dụng các phương tiện trực quan hóa dữ liệu. Khi kết quả được thông qua, nhà khoa học dữ liệu đảm bảo công việc được tự động hóa và được phân phối một cách thường xuyên.
Nói tóm lại, người làm Data Scientist sẽ bao gồm:
Áp dụng các kỹ thuật định lượng từ kiến thức về thống kê, kinh tế lượng, optimizations và machine learning / deep learning về giải pháp cho doanh nghiệp từ nhiều lĩnh vực
Vận dụng các phương pháp thống kê để xây dựng các mô hình dự đoán
“Mở đường” cho việc ra quyết định dựa trên insight phân tích từ các bộ data có cấu trúc và không cấu trúc
Xác định các nguồn dữ liệu mới và khám phá tiềm năng sử dụng của chúng trong việc phát triển thêm các insight trong phát triển sản phẩm
Khám phá công nghệ mới và các giải pháp phân tích để sử dụng trong phát triển mô hình định lượng
Thiết kế và phát triển các báo cáo và bảng điều khiển tương tác tùy chỉnh
Duy trì và cải thiện các mô hình hiện có
Truyền tải insight và các phân tích với dàn lãnh đạo và Stakeholder cũng như các phòng ban liên quan để tiến hành thay đổi/ cập nhật
Lộ trình trở thành Data Scientist trong năm 2022
Tin vui cho tất cả những người đang bước vào ngành Data Science: Đường learning curve của ngành này không còn quá dốc nữa – đường vào nghề ở thời điểm hiện tại đơn giản hơn ngày xưa rất nhiều. Từ bất kì background nào bạn cũng có thể vào lĩnh vực này, đương nhiên phải kiên trì học nhiều – hiểu nhiều – cày nhiều, nhưng có thể đi chậm và chắc từ những cái căn bản.
Các ngôn ngữ Lập trình cơ bản
Python
Python mãi xứng đáng có một vị trí cao ổn định trong bộ toolkit của một Data Scientist. Nhiều chuyên gia chọn ngôn ngữ này vì hệ sinh thái được thiết kế đặc biệt cho khoa học dữ liệu. Python có cộng đồng phân tích dữ liệu lớn nhất, sẽ dễ dàng tìm thấy các ví dụ về phân tích trong Kaggle, tìm các ví dụ mã trong Stackoverflow (trang web hỏi đáp với hầu hết người mới bắt đầu và thường nâng cao câu hỏi là tốt) và cơ hội việc làm vì nó là ngôn ngữ phổ biến nhất trên thị trường.
SQL
Việc “nói cùng ngôn ngữ với database” là điều cần thiết cho các nhà khoa học dữ liệu. Bạn sẽ cần phải thành thạo SQL (xem thêm SQL là gì?) để có thể lấy thông tin từ cơ sở dữ liệu bằng cách sử dụng các hướng dẫn truy vấn mà không cần phải nối mã tùy chỉnh.
R
Với nhiều tính năng đặc biệt, R là ngôn ngữ được “làm thủ công” dành riêng cho data science và là khởi đầu cần thiết cho các Data Scientist năm 2020. Mọi thông tin và vấn đề số liệu sẽ được xử lý bằng R.
Hadoop
Mặc dù kiến thức về công cụ này là không bắt buộc, nhưng Hadoop làm tăng giá trị và khả năng chuyên môn của một nhà khoa học dữ liệu, đặc biệt nếu họ có kinh nghiệm với Hive hoặc Pig. Các công cụ đám mây như Amazon S3 cũng có thể giúp ích rất nhiều.
Machine Learning
Không có cách nào để trốn được Machine Learning (xem thêm Machine Learning là gì?) đâu, bạn chắc chắn phải hiểu hết những điều cơ bản của ML. Điều này cung cấp cho bạn một kiến thức khổng lồ để hiểu cách các mô hình khác nhau hoạt động bên trong và thậm chí nghĩ về mô hình tốt hơn cho từng vấn đề.
Có nhiều kỹ thuật phổ biến cho hầu hết mọi mô hình và bạn nên học các kỹ thuật này trước và chỉ sau đó tập trung vào tìm hiểu sự khác biệt toán học và chi tiết triển khai của chúng.
Thống kê (Statistics)
Phần tốt nhất, quan trọng nhất và không may là khó nhất để cuối cùng – Thống kê. Chính kỹ năng này sẽ phân biệt là Data scientist và Machine Learning Engineer. Không có đường tắt ở đây. Bạn nên bắt đầu với thống kê mô tả, biết cách thực hiện phân tích dữ liệu khám phá tốt (EDA) hoặc tối thiểu là các khái niệm cơ bản về xác suất và suy luận, hiểu rõ các khái niệm về sai lệch lựa chọn, Nghịch lý Simpson, liên kết các biến (cụ thể là phương pháp phân tách phương sai ), những điều cơ bản của suy luận thống kê (và thử nghiệm A / B nổi tiếng như suy luận được biết đến trên thị trường), và một ý tưởng cho thiết kế thử nghiệm.
Soft Skill: Suy nghĩ như một Data Scientist
Việc tự trau dồi và rèn luyện tư duy của một Data Scientist là một trong những kỹ năng quan trọng để phân biệt giữa một Scientist giỏi và một Scientist vừa đủ. Một số gợi ý cho bạn để tự rèn luyện cho mình:
Luôn tò mò
Hãy luôn đặt câu hỏi “Vi sao?”, tìm liên kết và những thông tin mới với những vấn đề trong cuộc sống hằng ngày. Trong công việc, các nhà khoa học dữ liệu cho ra insight từ dữ liệu và thông tin từ dataset và đưa ra các quyết định quan trọng theo đó. Việc phân tích hoàn hảo sẽ không hữu ích nếu nó không giải quyết được vấn đề cơ bản. Đôi khi bạn cần quay lại, thử một cách tiếp cận mới và điều chỉnh lại câu hỏi bạn đang cố gắng trả lời. Hãy luôn đặt câu hỏi.
Có tính tiểu tiết
Các nhà khoa học dữ liệu sử dụng rất nhiều công cụ để quản lý quy trình công việc, dữ liệu, chú thích và mã của họ. Điều quan trọng là phải làm việc khoa học, quan sát, thử nghiệm và ghi chép lại mọi lúc, để bạn có thể xem lại và suy nghĩ. Ngoài ra cần phải lưu lại tất cả các nghiên cứu, thông tin bạn phát hiện được không chỉ ở hiện tại – trong quá khứ nữa.
Biết sáng tạo
Nghe thì có vẻ mâu thuẫn, nhưng khoa học dữ liệu cần được tiếp cận ở nhiều cách thức – phương diện và góc nhìn khác nhau. Bạn không nhất thiết phải có background kĩ thuật, nhưng bạn cần phải có tư duy sáng tạo. Thông thường, suy nghĩ thay thế (alternative thinking) là chìa khóa cho cách bạn giải quyết một vấn đề mới. Nó sễ đi song song của tư duy logic để giúp bạn thành công trong nghiên cứu và giải mã insight.
Ngừng lo lắng
Bạn không nhất thiết phải là chuyên gia lập trình, hay tài chính hay bắt buộc từ chuyên môn nào cả. Rất nhiều Data Scientist trên thế giới đến từ ngành luật hoặc kinh tế hoặc khoa học hoặc cả bác sĩ. Tất cả nằm ở chính mình và nỗ lực mà thôi.
Nếu có thể linh hoạt và làm việc có hệ thống, bạn hoàn toàn có thể quen với các tool, frameworks và datasets, cũng như nhanh chóng phát triển sự thấu hiểu về về ngành và vấn đề của doanh nghiệp.
Tìm kiếm các nguồn học tập dành cho Data Scientist
Các Data Science course phổ biến nhất hiện nay
Machine Learning (Google ML): Các khóa học nhanh được update liên tục từ Google.
Deep Learning (Kaggle Learn): Sản phẩm mới từ Kaggle bên cạnh động đồng Kaggle đang hot, từ lý thuyết nhỏ đi kèm với nhiều ứng dụng thực tế.
Python for Data Science and Machine Learning (Udemy): Giải thích rất rõ ràng về các khái niệm khác nhau của cả khoa học dữ liệu và máy học. Khóa học này sẽ giúp bạn thành thạo thư viện scikit-learn phổ biến cho máy học. Nó cũng bao gồm phần giới thiệu về Spark và TensorFlow.
Complete SQL Bootcamp (Udemy): Một nhà khoa học dữ liệu cần có nhiều công cụ hơn trong kho vũ khí của mình hơn là chỉ lập trình R và Python. SQL là một ngôn ngữ quan trọng khác mà bạn sẽ thường sử dụng để tương tác với cơ sở dữ liệu. Khóa học này đã giúp tôi có được thực tập hiện tại và dạy tôi mọi thứ tôi cần biết về SQL trong hai ngày.
DataCamp: DataCamp có các khoá học từ 4-6 tiếng. Các khóa học này có các video giải thích ngắn và sau đó bạn sẽ có các bài tập để áp dụng các nguyên tắc từ các video. Mọi thứ xảy ra trong trình duyệt của bạn, vì vậy bạn không phải cài đặt bất cứ thứ gì. Điều này làm cho DataCamp trở thành sự giới thiệu hoàn hảo cho lập trình R và Python.
Tham khảo các khoá học Data Science miễn phí trực tuyến tại đây
Hy vọng với thông tin từ bài blog sẽ cung cấp được kiến thức hữu ích về Data Scientist là gì cũng như các lộ trình cơ bản để trở thành lập trình Data Scientist tương lại. TopDev Blog cũng sẽ tiếp tục series về Data Science trong thời gian sắp đến. Đừng bỏ lỡ nhé!
Sự kiện quy tụ những bộ óc thiên tài và sáng tạo để khám phá ra các giải pháp giúp giải quyết thử thách của các nhãn hàng đưa ra.
Singapore, 01 tháng 6 năm 2020 – Hiệp Hội Mobile Marketing (MMA), hiệp hội toàn cầu hàng đầu cho ngành tiếp thị di động, chính thức kêu gọi đăng ký tham gia MMA Ideathon 2020, một nền tảng cho sinh viên, chuyên gia công nghệ và chuyên gia Marketing cùng hợp tác và giải quyết các thử thách mà các nhãn hàng đưa ra trong thời kỳ COVID -19. Sự kiện trực tuyến tập trung vào chủ đề “The Next Big Tech Opportunity” – sẽ diễn ra từ ngày 26 đến 28 tháng 6 năm 2020.
Với lượng thời gian dành cho thiết bị có màn hình ngày càng tăng trong số những người tiêu dùng, di động đã trở thành kênh tiếp cận hàng đầu để các thương hiệu tiếp cận đối tượng mục tiêu của họ. Tuy nhiên, khoảng thời gian dịch bệnh COVID-19 đã đưa ra những thách thức khác nhau cho các marketer, chẳng hạn như làm sao để giảm ngân sách quảng cáo trong khi nhu cầu người tiêu dùng đang thay đổi. MMA Ideathon 2020 sẽ đưa những người tham gia cùng đi sâu vào những thách thức mà các thương hiệu hiện đang phải đối mặt cũng như những lo ngại mà họ cần phải giải quyết để phát triển sau khoảng thời gian COVID-19, mang đến các giải pháp phù hợp hơn.
Rohit Dadwal, Giám đốc điều hành MMA Châu Á Thái Bình Dương cho biết: “Cuộc thi IDEATHON 2020 sẽ cho phép người tham dự hiểu rõ hơn về số liệu nhờ các mentor về cách họ giải quyết hiệu quả những thách thức mà các thương hiệu gặp phải khi họ thực hiện những chiến dịch ưu tiên marketing. Chúng tôi chào đón tất cả những người quan tâm đến chương trình hãy đăng ký tham gia trước ngày đóng đăng ký là 26 tháng 6.
Trong suốt chương trình, các Nhãn hàng sẽ đưa ra các vấn đề của họ và đặt mục tiêu rõ ràng về các vấn đề họ gặp phải cũng như kết quả mà họ mong muốn. Sau bốn tuần, các đội tham dự sẽ trình bày các giải pháp của họ trước các Nhãn hàng. Hội đồng ban giám khảo sau đó sẽ chọn ba đội chiến thắng. Đối tượng tham gia bao gồm sinh viên, các nhà công nghệ, developers, freelancers và chuyên gia trong cộng đồng marketing hoặc mobile marketing. Cuộc thi không mất phí để đăng kí tham dự.
Các mốc thời gian cần lưu ý cho MMA Ideathon là:
Mở Cổng Đăng Ký Tham Dự Cuộc Thi: ngày 1 tháng 6
Nhận Ý Tưởng Dự Thi: ngày 6 tháng 6
Đóng Đăng Ký Tham Dự Cuộc Thi: 26 tháng 6
Webinar Giới thiệu cuộc thi: sẽ được cập nhật sớm
Chốt Ý Tưởng: sẽ được cập nhật sớm
Thông Báo Danh Sách Chung Cuộc: sẽ được cập nhật sớm
HACK IN 48 : sẽ được cập nhật sớm (trình bày kế hoạch làm việc và trình diễn nguyên mẫu)
MMA là hiệp hội tiếp thị di động phi lợi nhuận hàng đầu thế giới, bao gồm hơn 800 công ty thành viên, đến từ gần 50 quốc gia trên thế giới với trụ sở chính toàn cầu được đặt tại New York. Để biết thêm thông tin về MMA, vui lòng truy cập www.mmaglobal.com
AMP là gì? – Theo khảo sát của Google, khoảng 53% khách truy cập website sẽ rời đi nếu trang web này mất hơn 3s để load. Tốc độ tải trang là một trong những yếu tố quan trọng cần lưu tâm khi thiết kế websites. Vì vậy, khi Google phát hành bản update mobile-friendliness (thân thiện với mobile) và dần biến nó thành một trong những yếu tố đánh giá mobile search engine, các site owner dần tìm cách cải thiện mobile experience nhanh hơn.
Dù cho có tối ưu hóa trang cho người dùng mobile, nếu như trình duyệt mobile không tải nhanh hơn thì cũng khiến cho trải nghiệm người dùng bị gián đoạn. Vậy giải pháp nằm ở đâu? Cân nhắc qua AMP – hay còn được gọi Accelerated Mobile Pages. Hãy tìm hiểu AMP là gì và nó ảnh hưởng đến trải nghiệm người dùng mobile như thế nào.
AMP là gì?
Theo Google, AMP plugin có thể cắt giảm thời gian download từ 15 đến 85%. Tháng 12 năm 2015, Google phát biểu rằng Accelerated Mobile Pages có thể trở thành một yếu tố ranking (đánh giá trang). Các trang được tối ưu hóa AMP được thăng hạng tốt hơn, nhanh hơn và thậm chí còn chuyển đổi khách truy cập trang (visitor) sang khách mua hàng (customer).
AMP plugin ra đời giữa sự kết hợp giữa Google và Twitter – dự án open-source với mục đích tối ưu hóa tốc độ tải page trên điện thoại, biến một trang (vốn đã mobile friendly) có thể load nhanh hơn bằng cách tối giản hóa chỉ giữ những chức năng cơ bản.
Lợi ích của AMP
Tốc độ site, lượt truy cập, mobile search engine rankings có một mối tương quan đáng kể. Khi một trang web cụ thể load nhanh, người dùng mobile sẽ xem nhiều mục trên trang đó hơn, từ đó giảm bounce rate.
Tất nhiên khi bounce rate giảm và mức độ trải nghiệm tăng, Google cũng sẽ tăng điểm trên page. Như vậy, các trang có AMP plugin thường sẽ có ranking cao hơn các trang không có AMP.
Để kể ra những điểm cộng của AMP thì vô số, tuy nhiên 5 điểm đáng chú ý là:
Web có tốc độ tải nhanh đáng kể:
Content cũng quan trọng, tuy nhiên nếu user không thể truy cập trang thì đâu có ai đọc được bạn viết cái gì. Thậm chí chỉ delay 1 giây thôi có thể giảm conversion đến 3.5% và giảm lượt pageview đến 9.4% và tăng bounce rate đến 8.3% (theo 1 nghiên cứu)
Nếu trang tải chậm như rùa thì dĩ nhiên khả năng chuyển đổi mobile user sang khách hàng cũng khó mà xảy ra.
Tăng khả năng hiển thị mobile browsers cho content marketers:
Google đã bắt đầu hiển thị kết quả AMP trên list organic. Và bạn có thể xem chúng với các biểu tượng AMP màu xanh .
Nhờ vào đặc điểm “khác biệt” này từ biểu tượng AMP này sẽ giúp làm tăng click-through-rate. Người dùng sẽ có xu hướng click vào những trang có “tick xanh” khi họ nhận ra những trang này load nhanh hơn hẳn.
Cải thiện điểm ranking mobile search engine:
Tốc độ trang và tỷ lệ chuyển đổi có mối quan hệ khá chặt chẽ. Nếu người dùng thích trang tốc độ cao, khả năng họ theo dõi list hoặc mua hàng sẽ cao hơn. Tuy nhiên, AMP vẫn chưa là yếu tố đánh giá ranking của Google. AMP chỉ khả dụng trên bản mobile chứ không sử dụng trên phiên bản desktop.
Tuy nhiên với phiên bản mobile, các trang có ranking cao với organic mobile search result thì các trang được khai triển với AMP sẽ có rank cao hơn hẳn so với non-AMP.
Hỗ trợ ad linh hoạt
Một số người sử dụng website hay blog với mục đích kiếm tiền và cũng có thể thay thế công việc hàng ngày. Tuy nhiên luôn luôn có yếu tố làm “kỳ đà cản mũi” làm giảm conversion rate: như là header image, navigation menu, thanh sidebar, nút share social media, … Với AMP thì sẽ loại bỏ những thứ gây xao lãng này. Khi mà code được giảm đến 6 lần.
Tracking người dùng đơn giản hơn
Có nhiều lý do vì sao cần xác định người dùng đến từ đâu, họ xem những trang nào, … Và các công ty hỗ trợ giải pháp này bao gồm WordPress, Chartbeat, LinkedIn, Adobe Analytics, Pinterest và cả Twitter.
AMP Plugin hoạt động như thế nào?
AMP sẽ render các trang sử dụng optimized HTML. Những trang này sẽ load nhanh hơn vì một số HTML code tag manager sẽ làm chậm các trang sẽ được loại bỏ. Nếu JavaScript có trong các trang mobile thì các script này sẽ không được render trong AMP.
Bạn chỉ được phép sử dụng thư viện JavaScript mà AMP cung cấp. Có thế sẽ có lazy loading và đó cũng là điểm trừ của AMP.
Để các site AMP hoạt động, chúng cần được validate đúng cách.
Forms không được cho phép trên các trang AMP plugin.
Để có trải nghiệm tốt hơn thì một số fonts custom phải được load theo cách riêng.
Tránh các hình biến dạng bằng cách chỉnh lại chiều cao và rộng.
Sử dụng extension AMP-approved nếu muốn chiếu video trên trang.
Nếu bạn muốn tích hợp AMP plugin và dùng nó để cải thiện trang mobile, điều quan trọng chính là speed (tốc độ) và readability (có thể đọc được) chứ không phải share – ability (khả năng chia sẻ). Các button chia sẻ lên social media thậm chí cũng không hiển thị được vì đa số chúng dùng JavaScript.
Là tập con của HTML, ngôn ngữ này có các tag tùy chỉnh và properties, cũng có khá nhiều restriction (hạn chế). Tuy nhiên nếu quen thuộc với HTML cơ bản, cũng không phức tạp mấy khi adapt các trang sẵn có với AMP HTML.
Sự khác biệt giữa HTML thường và AMP HTML là trang AMP HTML phải có markup sau:
Quy tắc
Mô tả
Bắt đầu với cụm <!doctype html>
Tiêu chuẩn của HTML
Chứa tag <html ⚡> ở đầu
(<html amp> cũng được)
Xác định trang này là AMP content
Chứa tag <head> and <body>
HTML chính quy thì có hay không cũng được, nhưng AMP thì bắt buộc
Chứa tag <meta charset="utf-8"> như là tag con của tag <head> .
Xác định encode cho trang
Chứa tag <script async src="https://cdn.ampproject.org/v0.js"></script> bên trong thẻ <head>. Tốt nhất là để script này sớm nhất có thể trong thẻ head
Bao gồm và tải thư viện AMP JS
Chứa tag <link rel="canonical" href="$SOME_URL"> bên trong <head>
Hướng document AMP HTML đến phiên bản HTML chính quy
Chứa tag <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"> trong tag <head>. Nên có luôn initial-scale=1.
Là framework JavaScript cho trang mobile. Với một số phần, nó sẽ quản lý resource handling và bất đồng bộ loading. Lưu ý rằng bên thứ ba như JavaScript sẽ không được cho phép với AMP.
3. AMP CDN
Content Delivery Network thì không bắt buộc, nó lấy trang đã được kích hoạt AMP, đánh dấu cache và tạo một số tối ưu hóa hiệu suất.
Làm thế nào để AMP-hóa site của bạn?
Với trình độ cơ bản, bạn phải có sẵn 2 phiên bản của trang: phiên bản nguyên bản mà người dùng nào cũng thấy, và một phiên bản AMP.
Vì AMP sẽ không cho phép những thứ như form elements hay third-party như JavaScript, nên bạn sẽ không thể có lead forms, comments trên trang và các elements khác như phiên bản tiêu chuẩn.
Một lưu ý nữa là bạn phải viết lại template để phù hợp với các quy tắc. Ví dụ, tất cả CSS trong AMP phải in-line (nằm cùng dòng) và nhẹ hơn 50KB. Với một số font custom phải được load dưới dạng amp-font để kiểm soát loading tốt hơn.
Ngoài ra, multimedia cũng nên được “xử lý” cẩn thận. Hình ảnh cần sử dụng yếu tốamp-img tùy chỉnh và bắt buộc phải theo size cố định. Nếu hình ảnh sử dụng dưới dạng GIFs thì cần dùngamp-anim extended.
Để Google (và các sites khác có hỗ trợ AMP) detect được phiên bản AMP thì bạn cần phải xác định phiên bản gốc, và trang gốc phải có tag sau:
Tích hợp AMP như thế nào? Làm sao để bắt đầu với AMP trong WordPress
Một trong những cách đơn giản nhất để làm quen với AMP là thử nghiệm trực tiếp trên website WordPress – plugin official được phát triển vởi Automattic/WordPress là thường xuyên được update trên GitHub.
Bước 1: Install bản Official WordPress Plugin
Truy cập trang amp-wp GitHub và chọn “Download Zip”
Khi đã cài xong, bạn chỉ cần đánh dấu “/amp/” tại một trang article.
Bước 2: Xác thực (validation) và tùy chỉnh
Google Search Console sẽ chọn phiên bản AMP qua tag rel=”amphtml” được đính kèm bởi plugin, cho phép validations các articles. Tuy nhiên nó cũng không detect thay đổi nhanh chóng nên nếu bạn fix cái gì đó thì bản fix sẽ không cập nhật trong vài ngày.
Bạn nên sử dụng kết hợp giữa Search Console và Chrome validation. Để dùng Chrome validation process, truy cập một trong những AMP page trên Chrome và thêm “#development=1” vào cuối URL. Nhấn Ctrl + Shift + I để mở Chrome Developer Tools và đến Console.
Khi bạn refresh trang thì có 2 trường hợp: “AMP validation successful” (xác thực AMP thành công) hoặc nhận một list các vấn đề cần sửa.
Tuy nhiên thì mỗi cài WordPress plugin không đủ, và bạn sẽ phải dò lại và xác thực toàn bộ các trang liên quan đến AMP. Tùy thuộc vào các articles được định dạng thế nào mà có sự thay đổi phù hợp để được validate các trang AMP. Vấn đề mà mình thường gặp nhất là specify các thuộc tính chiều cao, chiều rộng của images và sửa các đoạn embed code YouTube không có https.
Bước 3: Sử dụng Schema Markup để validate
Để test các page có markup valid hay không, bạn có thể dùngGoogle’s Structured Data Testing Tool. Mình gặp vài vấn đề là WordPress không hiển thị logo và cần làm một số sửa đổi với plugin như sau.
Edit class-amp-post-template.php file, thông qua FTP hoặc bên trong WordPress Dashboard (Plugins > Editor và chọn “AMP”) sau đó đổi:
Hãy chắc chắn bạn đổi URL với đường dẫn tới logo và xác định chiều cao rộng với pixels. Thường thì logo tiêu chuẩn sẽ có kích thước 60px cao với chiều rộng <=600px.
Bước 4: Cài đặt Google Analytics tích hợp vào AMP WordPress Plugin
Để cho phép AMP WordPress plugin hoạt động với Google Analytics, edit amp-post-template-actions.php (khác file bên trên), qua FTP hay bên trong WordPress Dashboard (Plugins > Editor và chọn “AMP”), và thêm vào ở cuối đoạn:
Nhớ phải đổi UA-XXXXX-Y để đại diện GA property ID của website.
Giờ thì validate lần nữa các trang AMP và bạn đã có setup AMP cơ bản và có thể tracking cho WordPress website.
Lời kết
AMP thực sự khá tiện lợi, là bản nâng cấp của các trang mobile-friendly, giúp đáp ứng mong đợi tối ưu tốc độ của trang. Tuy nhiên ngoài việc tập trung vào AMP cũng đừng bỏ qua thiết lập các chiến lược mobile marketing phù hợp để tạo ra khách hàng và phát triển doanh nghiệp.
Vậy bạn đã AMP-hóa trang web của mình chưa? Nếu chưa, thì bạn còn đang chờ điều gì?
Có rất nhiều lý do khác nhau để một nhân viên có thể rời bỏ công việc hiện tại của mình. Nguyên nhân có thể đến từ những áp lực công việc, định hướng phát triển của tổ chức, môi trường và văn hóa doanh nghiệp chưa phù hợp nên họ mong muốn có thể tìm kiếm một công việc khác tốt hơn. Qua bài viết dưới đây, TopDev sẽ chỉ ra 4 yếu tố có thể khiến những người nhân viên giỏi trong doanh nghiệp của bạn rời đi. Đây cũng là những sai lầm mà nhiều tổ chức gặp phải trong chính công tác đào tạo, quản lý và phát triển nhân viên của mình.
Chưa có cơ hội phát huy những khả năng, thế mạnh bản thân
Bất cứ một nhân viên nào cũng muốn có cơ hội được thể hiện những thế mạnh của mình trong công việc. Tuy nhiên, nhiều doanh nghiệp hiện chưa có một kế hoạch rõ ràng về lộ trình phát triển của nhân viên.
Điều này vô tình khiến nhân viên trở nên hoài nghi về chiến lược phát triển lâu dài và những mục tiêu đã đề ra trước đó, liệu có quá xa vời, bất khả thi chăng? Mỗi nhân viên đều có những kỳ vọng nhất định về việc thăng tiến trong sự nghiệp của mình. Vì thế, nhân viên rất cần các tổ chức/doanh nghiệp tạo cơ hội để họ tham gia các hoạt động có liên quan đến việc định hướng, phát triển nghề nghiệp. Hãy trao cho họ cơ hội học hỏi để nâng cao trình độ, kỹ năng nghề nghiệp của bản thân mình một cách tốt nhất.
Ngược lại, một doanh nghiệp nếu không tạo được một môi trường làm việc năng động, cho họ cơ hội thử sức với nhiều cái mới, mang đến cho họ những thách thức cần phải vượt qua thì họ sẽ mãi dậm chân tại chỗ, không thể tiến bộ được. Ngoài ra, khi nhân viên cảm nhận rằng, họ không có cơ hội để phát huy tối đa những tiềm năng của mình, đôi khi họ sẽ tự trách mình vì nghĩ rằng mình yếu kém, mình không mang lại giá trị gì cho tổ chức.
Ví dụ như trong ngành lập trình IT, nếu công ty chỉ giao cho bạn những đầu công việc đơn giản, và chưa thật sự đi vào chuyên môn, bạn sẽ cảm thấy chán nản và thiếu động lực. Đồng thời, khả năng của bạn cũng không được phát huy triệt để ngoài việc chỉ làm việc theo một cái khuôn mẫu đề ra. Dù nhà quản lý có chia sẻ cho nhân viên tất tần tật về tầm nhìn, sứ mệnh và toàn bộ kế hoạch thì cũng vô ích nếu nhân viên họ cảm thấy chưa thỏa mãn về nhu cầu thể hiện năng lực.
“Sức sống nơi làm việc” – Yếu tố cốt lõi chưa được quan tâm đủ
Trong một báo cáo của Mars Drinks và LinkedIncho thấy, “sức sống nơi làm việc” là khái niệm nhằm mô tả các yếu tố biểu thị những cảm nhận riêng của nhân viên về công việc như: sự hợp tác, khả năng gắn kết, niềm vui trong công việc, hiệu suất làm việc,… Sức sống nơi làm việc là điều mà bất kỳ doanh nghiệp nào cũng cần phải có, sự giao lưu và tương tác có ý nghĩa quan trọng vì nó tạo ra một môi trường thân thiện, sôi nổi từ đó giúp nhân viên có thể dễ dàng giao tiếp nhiều hơn.
Tuy hiểu được vai trò, nhưng dường như các doanh nghiệp vẫn chưa có sự đầu tư đúng mực. Kết quả môi trường làm việc thì tẻ nhạt, thiếu giao tiếp nên sự cộng tác trong công việc trở nên khó khăn từ đó làm phát sinh những tranh luận, bất đồng. Và với những lý do đó, một nhân viên dù cho giỏi đến nhường nào thì việc rời bỏ vị trí công việc hiện tại chỉ còn là vấn đề thời gian.
Nhà tuyển dụng nên lưu ý rằng các nhân viên sẽ cảm thấy gắn kết hơn nếu công việc của họ đầy thách thức và quan trọng đối với họ, tạo ra cho họ giá trị về bản thân cũng như sự những đóng góp cho tổ chức. Và sức sống nơi làm việc là yếu tố quan trọng kích thích họ nỗ lực tạo ra các hiệu suất công việc mới và có động lực để tiếp tục phát triển năng lực của bản thân ngày một tốt hơn.
Sự công nhận về những nỗ lực
Nhiều người cho rằng việc tăng lương hằng năm sẽ đủ để khiến một nhân viên cảm thấy mình được đánh giá cao về sự nỗ lực. Tuy nhiên, nghiên cứu đã cho thấy tiền không phải lúc nào cũng là động lực tốt nhất mà.
Trên thực tế, một phần năm (20%) nhân viên cho biết họ chấp nhận một sự thăng tiến lên một danh hiệu cao hơn mà không cần phải tăng lương – họ mong muốn sự ghi nhận lớn về thành quả về những cống hiến của họ. Mặt khác, một phần ba trong số họ lại mong đợi sự công nhận cho thành tích mà mình đạt được một cách rõ ràng nhất, ví dụ tuyên dương trong cuộc họp hay những lời khen, đánh giá tích cực qua email chung của công ty thay vì trao cho họ một phần thưởng riêng.
Khi nhân viên họ nhận được sự công nhận đến từ sự thăng tiến trong nghề nghiệp, họ buộc phải cố gắng nhiều hơn. Đó là sự cam kết về việc đảm bảo được hiệu suất trong công việc, tác phong làm việc chuyên nghiệp, trách nhiệm đối với công việc sẽ nhiều hơn đồng thời việc họ cũng sẽ đối mặt với nhiều thách thức hơn.
Nếu một doanh nghiệp thiếu đi việc tạo động lực cho nhân viên mình thì đó được xem là lỗ hổng lớn khiến “vuột mất” những nhân viên tài năng.
Văn hóa môi trường công ty chưa phù hợp
Đây là lý do dễ nhận thấy vì khi một cá nhân không thể hòa nhập trong một môi trường văn hóa chung thì khó có thể hợp tác cùng nhau phát triển. Có nhiều nguyên nhân cụ thể hơn cho thấy một cá nhân không thích ứng được văn hóa làm việc của tổ chức.
Văn hóa công ty là một trong những yếu tố quan trọng với nhân viên.
Cách vận hành của tổ chức như thế nào?
Nhà quản lý có đánh giá cao nhân viên, tôn trọng họ, đối xử một cách công bằng không?
Có tổ chức các sự kiện, hoạt động và xây dựng nhóm để tạo môi trường làm việc tốt cho họ không?
Nhân viên có cảm thấy hạnh phúc khi làm việc trong công ty không?
Rất nhiều câu hỏi phát sinh xoay quanh vấn đề này. Ví dụ như một nhân viên cảm thấy cách vận hành những hoạt động của doanh nghiệp chưa thật sự đi đúng định hướng so với các giá trị cốt lõi mà nhà tuyển dụng hay chính tổ chức đó đề ra. Chính từ sự nhìn nhận này mà có thể những đề xuất, góp ý của nhân viên không được chấp nhận, bị bác bỏ và họ cảm thấy mình không được tôn trọng dẫn đến việc rời đi.
Điều nhân viên cần ở nơi làm việc chính là sự minh bạch và công bằng. Một người quản lý dễ gần đủ tinh tế và hiểu được cảm nhận của nhân viên, dẫn dắt và định hướng tốt về lộ trình phát triển của nhân viên. Quả thật, văn hóa công ty là yếu tố có thể giúp bạn giữ nhân viên của mình gắn bó lâu dài.
Lời kết
Những sai lầm phổ biến được đúc kết từ kinh nghiệm tuyển dụng, phát triển nhân sự là không giới hạn. Tuy vậy, TopDev đã xem xét và trình bày 4 sai lầm có ảnh hưởng lớn nhất đối với sự khả năng gắn bó lâu dài của nhân viên tại doanh nghiệp. TopDev hy vọng bài sẽ viết giúp các bạn có cái nhìn cụ thể hơn về vấn đề đồng thời có thể lập ra những kế hoạch quản lý, đồng hành và giữ chân các tài năng nhân sự của mình.
Tại các công ty công nghệ lớn, thuật toán là một trong những “cửa ải” mà nhà tuyển dụng đặt ra để thử thách tư duy logic của ứng viên IT. Vậy lập trình viên giỏi có cần “luyện” thuật toán hay không, và nên học thuật toán như thế nào? Cùng TopDev trò chuyện cùng anh Phạm Nguyễn Sơn Tùng – CEO tại trung tâm giảng dạy thuật toán BigO và cũng là giảng viên tại trường Đại học Khoa học Tự nhiên TP.HCM.
Những khái niệm xung quanh thuật toán
Trước hết, anh hãy giải thích Thuật toán là gì? Cách mà thuật toán hoạt động là như thế nào.
Thuật toán thực ra cũng đơn giản, không phải cái gì đó phức tạp. Nó là những phương pháp, những cách mà người ta yêu cầu mình làm đúng theo những quy trình như vậy thì nó sẽ ra được kết quả tối ưu.
Phương pháp này có thể đến từ nhiều nguồn khác nhau, có thể là một nhà khoa học họ sáng chế ra, cũng có thể là một nhóm người nào đó hoặc kinh nghiệm truyền nhiều năm, khi mà mình áp dụng đúng quy cách như vậy thì mình sẽ có những kết quả tốt hơn là những cái gì đó mình tự làm.
Thuật toán khác gì với cách lập trình thông thường? Nếu không biết về thuật toán thì có thể lập trình được không?
Bạn không biết thuật toán, bạn vẫn có thể lập trình và cũng có thể lập trình giỏi, tuy nhiên nếu bạn biết thuật toán bạn sẽ có thêm những phương pháp hay hơn. Tôi ví dụ thuật toán đơn giản như vậy, tôi cho bạn dãy số, và tôi yêu cầu bạn hãy tìm một con số mà tôi đưa có nằm trong dãy số đó không? Nếu như bạn không học thuật toán thì rất đơn giản, bạn cứ so sánh mỗi số một lần miễn sao bạn tìm được con số có nằm trong dãy số này hay không. Còn người khi học thuật toán, họ sẽ nghĩ khác, thứ nhất họ sẽ nghĩ những con số mà người ta đưa ra liệu nó có lớn hay không, tại vì nếu như người ta đưa lớn quá sẽ gây hiện tượng tràn số và nếu như mình phải làm thêm thao tác cộng, trừ, nhân, chia.
Số lượng người ta đưa ra bao nhiêu cũng ảnh hưởng đến việc sử dụng thuật toán, ví dụ người ta đưa ra 10 số, 20 số thì làm dễ, còn người ta đưa 1 tỷ số hoặc 10 tỷ số thì việc tìm kiếm đó nó rất không khả thi nếu mình tìm bình thường, như vậy thì mình phải áp dụng thêm thuật toán vào, bằng cách mình có thể sắp xếp trước những con số đó lại và khi mình sắp xếp như vậy thì mình sẽ tốn thời gian cho việc sắp xếp đó nhưng sau đó mình tìm kiếm rất là nhanh. Cuối cùng thời gian tìm kiếm rất là nhanh, dù là 1 tỷ số hay 10 tỷ số thì tìm kiếm trong vòng 1s cũng ra kết quả được. Còn nếu mình không áp dụng thuật toán, mình cứ làm hoài, cứ so sánh hoài, rồi khi người ta tăng lên thì thời gian chạy rất là lâu.
Vì sao gần đây thuật toán đang dần được chú trọng trong quá trình phỏng vấn?
Ở Việt Nam, tôi thấy mới thời gian gần đây thôi nhưng mà ở nước ngoài thì khá là lâu rồi. Từ lúc tôi học thuật toán hồi còn sinh viên cách đây mười mấy năm, gần 15 năm thì đã có những bài toán về thuật toán ở trên mạng rồi. Khi tôi đi thi đấu ở nước ngoài thì tôi mới nhận thấy rằng rất nhiều công ty hỏi về thuật toán. Họ thích hỏi về thuật toán như vậy vì khi ứng viên gặp các bài thuật toán khác nhau, từ đó họ hình thành nên kỹ năng giải quyết vấn đề, gọi là problem-solving, đó là một kỹ năng cần thiết trong lĩnh vực CNTT.
Thuật toán tối ưu không gian bộ nhớ và tăng tốc độ xử lý như thế nào?
Thực ra thuật toán gặp trong hằng ngày đời sống của mình. Nếu như bạn đi siêu thị, bạn sẽ có một thao tác cuối cùng trước khi ra siêu thị đó là bạn đứng tính tiền, nếu như bạn đứng tính tiền như vậy và người ta cho tính tiền thoải mái, người ta cho ai lại cũng tính tiền mà không cần phải xếp hàng, thì không gian chỗ đó sẽ trở nên rối và người tới trước, chưa chắc được tính tiền trước, đôi khi người tới sau họ chen lên họ tính tiền, tức là không có quy định gì hết.
Còn nếu như mình quy định ai tới trước người đó tính tiền trước, ai tới sau tính tiền sau thì như vậy mọi người sẽ sắp theo hàng thì không gian chỗ đó sẽ bình thường, sẽ không bị rối và tốc độ để người tính tiền xử lý sẽ nhanh hơn, đó là một thuật toán ứng dụng bên ngoài, mà thường trong thuật toán người ta gọi là queue, hàng đợi. Tức là nó có trong đời sống hằng ngày của chúng ta mà chúng ta không thấy thôi.
Thuật toán và tầm quan trọng không thể bỏ lỡ
Vì sao học thuật toán ở đại học lại “kém hấp dẫn” với nhiều bạn sinh viên? Nếu không học thuật toán thì sẽ bỏ lỡ những cơ hội nào?
Thực ra thuật toán cũng là một hướng đi trong ngành CNTT thôi, nếu như mình không học thuật toán nhưng mình học thứ khác thì mình cũng có con đường, định hướng nghề nghiệp tốt, nhưng mà khi mình học thuật toán mình sẽ có thêm nhiều lựa chọn. Còn về trường đại học, chúng ta có một số môn dạy về thuật toán, hình như 2 hoặc 3 môn, thực ra số lượng này không đủ, thuật toán thực ra rất khó và số lượng để chúng ta học và làm việc được với thuật toán thì cần ít nhất 6 đến 7 môn.
Với số lượng như vậy mà nhét hết vào chương trình để giảng dạy thì không đủ, tại vì không đủ thời gian cho những môn khác, người ta cần đa dạng hóa nhiều hướng đi cho sinh viên thì cắt bớt, bỏ bớt, như vậy sẽ gây ra hiện tượng khó hiểu, tại vì chúng ta dạy theo cấp bậc thì sẽ dễ hiểu hơn, còn chúng ta dạy 3, dạy 7, dạy 8, như vậy khi người học học vào, họ sẽ không bước lên từ từ, mà cảm giác là mình phải bước với lên mới hiểu, đâm ra gây tâm lý thuật toán khó hiểu, nhưng với tôi thuật toán không khó hiểu lắm nếu như chúng ta học từng cấp bậc một.
Thuật toán có thể tự học được không? Sẽ có những khó khăn gì nếu tự học?
Khi mình tự học mình phải trả giá một vấn đề rất lớn đó là thời gian, thực ra trong CNTT bất kỳ một hướng đi nào mình cũng có thể tự học, mình có thể tự học web, tự học AI, kể cả thuật toán cũng có thể tự học, tuy nhiên cần phải suy nghĩ lại đó là mình cần trả một cái giá lại đó là thời gian, tại vì tự học là mình phải tự tìm hiểu tất cả mọi thứ, mình sẽ có hướng đi sai và phải quay lại học, có những thuật toán mình cứ nghĩ là tự học nhưng thật ra người ta đã bỏ từ lâu rồi, khi mình tự học xong hết rồi thì khi quay lại người ta đã học được một cái mới hơn, hay hơn để giải quyết vấn đề đó, và như vậy mình phải học một cái khác bổ sung vô, phải mất một khoảng thời gian rất lâu.
Tuy nhiên việc tự học sẽ giúp mình sau này có một power rất mạnh, nghĩa là mình đã sai và làm lại, sai và làm lại thì tự nhiên mình có một nguồn năng lượng tự học rất nhanh nhưng như tôi đã nói là mình phải trả giá lại thời gian của mình, thời gian mất rất nhiều. Nên phải cần cân nhắc, sẽ học nhưng không phải là học ở trung tâm, mình có thể học ở người anh của mình, một người bạn của mình hay là người thầy nào đó mà có thể giao tiếp được thường xuyên, họ sẽ chỉ cho mình hướng đi để mình tự học tốt hơn. Chứ khi mình tự học, mình lên đọc sách, mình coi video thì như vậy tốn rất nhiều thời gian.
Theo tôi thấy thường tự học chúng ta sẽ đọc blog hoặc là xem video, như là bạn có thể vào các trang như Geeks for Geeks, nó là một trang viết rất nhiều thuật toán trên đó và có những video mẫu minh họa, rồi mình xem và sau đó có thể làm ngay luôn bài tập trên đó, đó là một trang khá hay, tôi nghĩ đó là một nguồn có thể đọc được và thực hành luôn. Còn sách thì đọc rất tốt nhưng lại nhanh chán, vì người ta viết rất formal, cuốn sách mà tôi nghĩ mới học thuật toán mà có thể đọc được đó là Introduction to Algorithm, cuốn sách đó đọc khá là chuẩn.
Ở góc nhìn từ một trung tâm đào tạo về thuật toán, anh nhận thấy mọi người đang có mối quan tâm thế nào đối với việc học thuật toán?
Như tôi đã nói, nếu mà ta tự học, tự tìm thì thuật toán trên mạng sẽ không đưa cho chúng ta từ số 1, số 3, số 4, số 5, số 6, mà khi mình tìm vô, mình tìm số 1, sau đó mình làm bài khác sẽ ra số 7, tự nhiên mình sẽ cảm thấy sao cái này khó hiểu quá và mình làm không được, tại vì tài liệu mình đọc được nâng cấp lên mà mình không biết, sau đó mình quay lại đọc số khác thì lại ra số 6, chứ không ra số 2. Nên dần bị tình trạng nản, rồi bỏ thời gian học lại, đi lại từ đầu nên đâm ra học hoài mình không tiến bộ. Nên tôi nói là nếu chúng ta tự học, tự tìm hiểu thì tốt nhất nên tìm người nào đó cho mình được lời khuyên, hoặc là khi mình đọc tài liệu, mình đọc một cái thôi, chú tâm mình đọc một cái đó thôi, đọc hết cái đó rồi hẵng tìm cái khác, chứ không sẽ bị tràn lan kiến thức, không chú tâm vào 1 cái.
Quy mô thị trường giảng dạy về thuật toán hiện nay ra sao? Nếu có một đơn vị khác tham gia vào thị trường giảng dạy thuật toán thì lợi thế của BigO Coding là gì?
Thực ra thị phần về thuật toán hiện nay chưa lớn lắm, so với lứa lân cận của mình, chẳng hạn Thái Lan, Singapore, mở rộng ra là Trung Quốc, Ấn Độ hoặc Mỹ, thì thị trường VN khá là nhỏ, chưa lớn lắm. Do tôi nghĩ môi trường Việt Nam còn khá nhiều những công ty về gia công phần mềm, mà thuật toán thông thường họ sẽ cần những công ty khởi nghiệp, những công ty mà họ có sản phẩm, cần tối ưu hóa sản phẩm đó hơn là những công ty gia công phần mềm nên tôi thấy thị trường hiện tại đang có nhưng rất nhỏ, không lớn lắm.
Hiện tại thì tôi đang mở là 3 khóa, tôi chia theo màu: blue, orange, red và black. Mà hiện tại ở Việt Nam mình chỉ mở được 3 khóa thôi, tại vì số lượng người học thuật toán chưa đủ nhiều để mình có thể dạy tiếp những khóa sau.
Với khóa đầu tiên, khóa green, dành cho những người họ chưa biết gì về lập trình, họ có thể học được mà không cần bài test đầu vào. Còn khóa blue, thứ 2, khóa chuyên giảng dạy về thuật toán, nhưng chủ yếu về đồ thị, khóa đó chỉ cần biết lập trình thôi, không cần biết thuật toán, vô sẽ dạy lại từ đầu về thuật toán, nhưng bạn phải rành lập trình rồi, rành syntax này nọ hết rồi. Khóa thứ 3 thì phải có bài test đầu vào, vì đó là khóa rất khó, có liên quan tới thuật toán, có 30-40% liên quan tới toán học nữa, mình phải rèn thêm về toán học để tối ưu hóa nữa, chỉ có khóa 3 có bài test đầu vào. Còn 2 khóa còn lại thì tôi hi vọng rằng 1-2 năm tới tôi sẽ được mở khóa đó, tức là có nhu cầu về khóa đó để tôi mở, hiện tại thì ở TQ, Ấn Độ thì họ đều có những cái lớp tới màu red và black luôn rồi, ở Việt Nam thì chưa, nhưng tôi hi vọng là sẽ được.
Anh hãy chia sẻ rõ hơn về chương trình đào tạo thuật toán tại Việt Nam và thế giới
Đối tượng tham gia thuật toán hiện tại theo tôi thấy khá là phong phú, tiểu học cũng có. Xong có khi mình nghe thấy, tiểu học thì học cái gì, học cái này tính toán nhức đầu, nhưng mà tôi thấy, khi tôi đi thi đấu bên nước ngoài, đặc biệt ở những nước châu Âu, tôi thấy mấy bạn nhỏ tiểu học đã học rồi, nhưng mà các bạn học thì cũng đơn giản thôi, ví dụ là cho con gấu bị lạc trong mê cung, làm sao đó dẫn con gấu đó ra theo đường ngắn nhất chẳng hạn, người ta tiếp cận những bài đơn giản như vậy, nên là tiểu học cũng có thể học được, các bạn THCS chắc chắn có thể học được rồi, chúng ta học từ từ, rồi quen; những bạn THPT chủ yếu học để đi thi, đặc biệt là thi quốc gia, thì khi bạn có giải quốc gia thì bạn sẽ được tuyển thẳng đại học. Còn đối tượng tiếp theo bên tôi là những người đi làm.
Người đi làm thì có hai dạng, một là muốn áp dụng thuật toán vào bên sản phẩm của họ, để họ tối ưu hóa giai đoạn nào đó mà đang bị mất thời gian. Còn đối tượng thứ hai là họ muốn có con đường nghề nghiệp khác hơn bình thường, nghĩa là họ muốn qua Singapore làm việc, họ muốn qua Canada, qua Mỹ, qua Úc, v.v….; thì ở đó những công ty lớn đầu vào thường là thuật toán nên là các bạn cần phải luyện, các bạn đó chủ yếu học để chuẩn bị cho phỏng vấn, nên đối tượng khá là rộng, nhưng chủ yếu bên tôi là người đi làm với sinh viên.
Liệu việc học thuật toán từ đại học có phải là hơi muộn? Vì sao nên học thuật toán ở giai đoạn sớm?
Như tôi nói thì thuật toán nó rất rộng, nó phủ nhiều lĩnh vực khác nhau, và vì vậy nếu như không dành thời gian nhiều để luyện nó thì đôi khi sẽ bị lủng kiến thức, nếu như có 1 cơ hội tốt luyện từ nhỏ thì mình sẽ học dần dần, sẽ đỡ hơn. Tuy nhiên, không phải ai cũng có cơ hội học từ nhỏ, đôi khi chúng ta ở dưới quê, tiếp xúc với máy tính đã khó rồi, huống chi là thuật toán, thì tôi nghĩ rằng nếu như chúng ta chưa tiếp xúc thuật toán, từ cấp 3 hay từ cấp 2 mà mình học ngay khi vào đại học thì cũng không có vấn đề gì cả, chỉ có 1 vấn đề duy nhất là liệu mình có đủ cái quyết tâm để mình theo nó hay không, mình phải học gấp 2 gấp 3 lần người khác, nếu có đủ quyết tâm, dành riêng thời gian cho nó thì tôi nghĩ nó vẫn rất tốt. Ví dụ như tôi có mấy bạn nữ học chuyên văn vẫn vào được các công ty lớn ở Mỹ, Twitter hay Facebook, vẫn bình thường và các bạn đó học 2 ngành không chuyên về tin học rồi và lại xa rất xa so với tin học, chỉ mới bắt đầu học từ đại học thôi, thì bạn vẫn vào được, thì tôi nghĩ rằng là chúng ta đừng nghĩ là “Ô, chúng ta học bây giờ nó quá trễ rồi, học từ năm 2, năm 3 là quá trễ, mà quan trọng là ta danh bao nhiêu thời gian từ đây cho đến lúc mà chúng ta bắt đầu, phỏng vấn thuật toán, làm những cái việc về thuật toán thế nào, dành đủ thời gian như vậy là sẽ được.
Lập trình viên có thế mạnh về thuật toán sẽ rất “khác”
Điểm mạnh và điểm yếu của lập trình viên Việt Nam so với khu vực? Đâu là thế mạnh mà LTV VN chưa khai phá hết?
Thì thực ra khi tôi dẫn dắt đội tuyển như vậy thì trong nhóm các bạn thường rất là giỏi rồi, tôi sẽ đánh giá chung các bạn lập trình viên ở Việt Nam so với những bạn nước ngoài như thế nào nó sẽ hợp lý hơn. Có 1 điều mà tôi thấy là những bạn học công nghệ thông tin ở nước mình họ thường rất chăm, chăm chỉ lắm, và nói 1 câu bình dân chút xíu là họ chịu cày, rất chịu cày, khi có 1 mục tiêu gì đó thì rất chịu cày, đó là ưu điểm rất tốt, tuy nhiên tôi thấy có 2 khuyết điểm đáng suy ngẫm, thứ 1 là họ dễ nản, tức là khi có 1 vấn đề mới xuất hiện, không còn quen thuộc so với họ trước đây, rất là dễ nản, nhưng mà công nghệ thông tin thường nó sẽ thay đổi rất nhanh, nên dễ nản như vậy thì ta sẽ không đến được đích cuối cùng.
Cái thứ 2 là rào cản về ngôn ngữ, đây là rào cản khá lớn, thí dụ bạn biết cái thuật toán là cái mức 7 bạn trình bày cho người khác bằng ngôn ngữ khác, chỉ ở mức 3 thôi, thì trình độ thuật toán của bạn cũng chỉ là 3 thôi, chứ không có 7, rào cản ngôn ngữ rất nguy hiểm là bình thường mình muốn đi ra bên ngoài, thành 1 công dân toàn cầu, mình phải giao tiếp bằng tiếng Anh, thông thường cái này những bạn Việt Nam hay yếu thế hơn so với những nước khác, đó là 2 khuyết điểm tôi thấy rất đáng lo, nhưng mà bù được cái ưu điểm của mình, mình chăm chỉ vô những gì mà mình thấy mình thiếu là được.
Career Path của lập trình viên thiên về Thuật toán và đâu là đích đến cuối cùng?
Tôi lấy ví dụ cụ thể học trò tôi luôn, mục tiêu của bạn đó là vầy, đầu tiên là các bạn sẽ làm ở 1 số công ty startup ở Việt Nam, nho nhỏ thôi, sau đó các bạn sẽ vào làm ở những công ty lớn hơn ở Việt Nam, khi các bạn đã bắt đầu có 1 số kinh nghiệm rồi, các bạn học thuật toán, sau đó các bạn sẽ qua các nước lân cận đặc biệt như là Singapore, các bạn làm ở 1 công ty startup lớn hơn, đó là ‘unicorn’ rồi. Sau đó các bạn có thể qua Úc, Canada hoặc thậm chí qua Mỹ, để các bạn có thể tiếp cận các công nghệ khác tốt hơn, thì cuối cùng tôi thấy được khi các bạn đã làm ở những công ty như Google, Facebook ở Mỹ rồi, nếu làm nhiều năm rồi thì các bạn có thể quay trở lại startup do chính cái sản phẩm của mình, và bạn áp dụng vô những cái thuật toán mà mình đã từng biết đã từng học để mình giải quyết 1 cái vấn đề nào đó trong cuộc sống bằng cái ứng dụng của chính mình, và đó là con đường mà các học trò của tôi đang đi như vậy.
Những lời khuyên thực tế cho lập trình viên
Có rất nhiều cuộc thi dành cho lập trình viên nói chung và về thuật toán nói riêng. Anh nhận xét gì về những “sân chơi” này?
Hiện tại nói về cuộc thi thì Việt Nam mình chưa có nhiều đâu, Việt Nam mình là rất ít, chúng ta phải có nhiều hơn những cuộc thi về thuật toán, chủ yếu hiện nay các bạn học thuật toán là các bạn thi của nước ngoài thôi, Việt Nam rất ít, những cuộc thi mà tôi thấy rất hay, chẳng hạn như cuộc thi của Google – Google Code Jam, Facebook Hacker Cup, đó là những cuộc thi chúng ta nên tham gia, là những công ty về toàn cầu, và những câu hỏi họ ra không phải là dùng để đánh đố mình 1 cái vấn đề gì đó mà có thể trong đó là 1 cái dự án gì đó của họ, mà họ chưa thể tối ưu hóa được, và họ nhờ 1 cái cộng đồng thi đấu có thể giải quyết được cái vấn đề đó hay không và khi mà họ có được 1 cái solution từ thí sinh rồi, thậm chí họ có thể gửi cái lời mời làm việc fulltime cho cái người đó, hoặc là họ lấy cái solution đó họ về để họ tham khảo giải quyết vấn đề của mình, nên đó là những cuộc thi mà chúng ta nên tham gia, nhưng nó rất khó đó. Nhưng bạn không cần phải đứng top 100 hay là 200, top 10000 cũng được, vì rất nhiều người thi trên thế giới, top đó cũng là rất giỏi rồi, và kỹ năng như vậy cũng rất tốt rồi.
Một số tips trong quá trình phỏng vấn tại những công ty lớn như Google, Facebook, …
Thông thường thì những bạn ứng viên phỏng vấn sợ hỏi lại câu hỏi mà người phỏng vấn hỏi, thường mình vào công ty công nghệ lớn người ta hỏi mình 1 câu hỏi thì điều quan trọng là mình phải làm rõ câu hỏi đó cái đã, đôi khi họ cố tình họ hỏi không đầy đủ, họ để cho cái người ứng viên hỏi lại họ để làm rõ ràng hơn câu hỏi, đó cũng là 1 cái cách mà để sau này người này join vào công ty của mình, tôi đưa cho anh 1 cái project chung như vậy, anh không hiểu anh vẫn cứ làm, mà không hỏi lại, sau này làm ra xong rồi mới biết làm sai, rất nguy hiểm nên kinh nghiệm của mình là sau khi nghe câu hỏi xong, thì mình phải rõ câu hỏi thật là rõ cái đã, thậm chí là có thể cho cái ví dụ vào để hỏi người khác rằng là với cái ví dụ này của tôi thì đúng như yêu cầu của anh là xuất ra kết quả này hay không, khi mà mình đã rành được, mình đã rõ được câu hỏi rồi, thì lúc này mình mới bắt đầu vào câu trả lời của mình.
Vào cái câu trả lời của mình thì mình lại có 1 cái kinh nghiệm nữa là phải nói ra những gì mình suy nghĩ. Bạn không thể đứng bạn viết hay ngồi bạn code từ đầu đến cuối xong rồi nói “Ờ tôi làm xong rồi, kết quả phải là như vầy” là ngày mai bạn rớt liền. Khi viết ra 1 dòng thì bạn phải nói ra là cái dòng này tôi muốn làm cái gì đó, tức là bạn phải thinking out loud, nói ra những gì mình suy nghĩ, thì khi mình nói ra như vậy thì người ta sẽ nghĩ “bạn này được, tức là tôi đang bắt nhịp với lại solution của anh” và điều này rất là tốt.
Mình phải nói ra cái suy nghĩ của mình, thì khi mình nói ra suy nghĩ của mình thì nó sẽ gặp 1 cái trở ngại là có thể mình đúng, có thể mình sai. Nó sai không có vấn đề gì cả, nếu vấn đề đó sai thì mình nói là “hồi nãy mình nghĩ nhưng nó bị thiếu cái chỗ này, nên bây giờ tôi có thể cập nhật lại chỗ này được hay không, thì mình cứ cập nhật thôi. Hoặc là “cái giải pháp của tôi đưa ra vừa rồi nó không có tối ưu lắm, anh có thể cho tôi 5p suy nghĩ để tôi tối ưu hóa cái này được hay không, thì người ta sẽ rất là thích những cái ứng viên như vậy, chúng ta trao đổi thẳng thắng và nó giống như là 1 cuộc trò chuyện giữa tôi với bạn như vầy, nó bình thường và nó không phải là 1 buổi phỏng vấn nghề nghiệp này nọ, nó quá quan trọng, xong rồi thì chúng ta vui vẻ nhận kết quả như vậy thôi.
Xin cảm ơn phần chia sẻ từ anh Tùng. Hy vọng qua bài viết này các bạn lập trình viên, hay các bạn sinh viên có đam mê với ngành CNTT có thêm những thông tin hữu ích về thuật toán cũng như cách nâng cao kỹ năng phù hợp. Từ đó, xây dựng cho bản thân những bước đệm chắc chắn trong sự nghiệp.
Khi còn là một junior developer, tôi luôn cảm thấy mình không có đủ kiến thức để chia sẻ với thế giới. Và tôi nhận ra vẫn còn nhiều người gặp khó khăn cùng vấn đề như tôi từng trải qua. Do đó, dựa vào kinh nghiệm của tôi và những người đi trước sẽ là chỉ dẫn tuyệt vời cho các fresher và junior thông qua các IT blogger.
Vì sao viết blog?
Trải nghiệm của bạn sẽ không giống với bất kỳ ai. Vì vậy, bài học rút ra luôn hữu ích cho mọi người, nhờ vào việc viết blog, tôi không chỉ giúp cho người khác học hỏi mà còn đang tự ôn lại những kỉ niệm quý giá ấy của chính bản thân.
Ngoài ra, blog còn giúp tôi cập nhật và theo dõi quá trình phát triển của bản thân. Nó cũng vô cùng hữu ích để bạn xác định hướng đi tiếp theo trong tương lai dựa trên những lĩnh vực mà mình còn yếu hoặc chưa biết.
Đây chính là những lý do chính của việc tôi viết blog. Bởi nó làm tôi cảm thấy mình có giá trị vì đã tạo ra được một thứ gì đó của riêng mình mà lại có ích cho những người khác. Chính những điều hữu ích như vậy mà nay tôi tổng hợp tại biết này những blogger nổi tiếng ngành IT cả trong và ngoài nước.
Blogger Nguyễn Văn Hương, Java Dev tại AXON Active Việt Nam. Nội dung chính của blog là những chia sẻ thủ thuật linh hoạt xử lý các vấn đề với Java – Agile mà anh từng trải qua. Đồng thời, đây còn là nơi anh nghiên cứu nhiều vấn đề trong cuộc sống.
Nguyễn Nhật Hoàng là một full-stack developer, blog của anh rất đa dạng về chủ đề, từ hướng dẫn học các skill cơ bản của AngularJS, ReactJS, JavaScript, Web Development… đến một số bài viết về kỹ năng mềm cho coder trong phỏng vấn, tìm việc, start-up.
Blog của anh có tên là asktester.com, đúng với tên gọi, đây là diễn đàn thảo luận, chia sẻ về ngành testing. Anh với nhiều năm kinh nghiệm đưa ra thông tin cụ thể, chi tiết và định hướng các nhân tố mới trong lĩnh vực testing.
Anh là một developer trẻ tuổi nhưng đã từng là trưởng đại diện của Cogini tại Việt Nam. Blog của anh viết nhiều về công nghệ và một số chủ để yêu thích của cá nhân anh.
Ehkoo là blog chuyên về lập trình web của Ân Cao, một front-end developer, hiện đang sống và làm việc tại Phần Lan. Mặc dù blog còn khá mới, số lượng bài viết chưa nhiều, song chất lượng bài viết của Ehkoo tương đối tốt. Nội dung blog xoay quanh 2 chủ đề chính:
Công nghệ web, đặc biệt về front-end
Chia sẻ những câu chuyện/ kinh nghiệm của đời lập trình viên.
“Lập trình viên giỏi không phải chỉ biết code”, chính là phương châm của blogger Phạm Huy Hoàng. Kỹ thuật lập trình chiếm phân nửa nội dung mà anh hướng tới, phần còn lại là kỹ năng mềm khác như: cách thương lượng lương, sắp xếp thời gian, con đường phát triển sự nghiệp
Anh là Thạc sĩ trường Đại học Công nghệ Thông tin. Mục đích lập ra blog này nhằm để hướng dẫn học viên lập trình Android, Windows Phone, Web Service, C++, C#, Java, Swift, …… từ cơ bản đến nâng cao. Bên cạnh hệ thống kiến thức bài bản, blog còn đưa ra những ví dụ thực tiễn khá hữu ích.
Tác giả của blog là anh Huy Trần, hiện đang là một Software engineer tại Mỹ. Anh viết blog từ năm 2015 và đã có một gia tài các bài viết hay về kỹ thuật, review sách và chuyện làm nghề. Phong cách viết của anh ngắn gọn và thực tế nên sẽ là một địa chỉ rất hay ho cho bạn ghé thăm. Các bài blog từ trước đến nay được anh tổng hợp dưới dạng markdown, bạn có thể truy cập trang blog để tải và tham khảo.
Anh là giám đốc kỹ thuật của Zappasoft tại Úc, từng xuất bản cuốn sách “Pro iOS Apps Perfromance Optimization and Tuning”. Trang blog của anh thuần về công nghệ thông tin và khoa học. Tuy đã ngưng viết một thời gian nhưng những bài viết của anh vẫn luôn được thu hút và bạn đọc quan tâm.
Anh là một Solution Architect của FPT Software tại Đà Nẵng. Blog chứa đựng những chia sẻ kiến thức về pattern design, JavaScript, blockchain, microservices ….. với văn phong kiếm hiệp, kinh dị, cổ tích …. nến rất hài hước và thú vị, thu hút nhiều bạn đọc theo dõi.
Anh đang là sinh viên Đại học Công nghệ thông tin nhưng đã sở hữu một blog cá nhân với tài nguyên đồ sộ. Blog của anh chủ yếu viết về kỹ năng, định hướng nghề nghiệp, các vấn đề học tập cho các developer. Ngoài ra, Khoa cũng viết bài trả lời các thắc mắc của mọi người về con đường học tập và chiến lược nghề nghiệp, tư vấn tận tình và anh cũng đứng lớp vài khóa học ngắn trên các trang web học code online.
Thái Dương là một developer đã làm việc tại Việt Nam nhiều năm. Sau đó, anh chuyển đến Sillicon Valley và hiện tại đang là kỹ sư bảo mật tại Google. Thái viết về khoa học máy tính, phát triển nghề nghiệp, kỹ năng tìm việc cho các developer. Blog của anh được nhiều developer yêu thích vì phong cách viết rất ngắn gọn, súc tích và có tính cởi mở
Đây là blog của anh Nguyễn Văn Trọng, một Bridge Software Engineer (BrSE) đang sống và làm việc tại Nhật Bản. Blog của anh Trọng tập trung và mang đến những thông tin hữu ích về con đường sự nghiệp từ developer thành BrSE.
Ngoài ra, blog của anh còn có những bài viết rất hữu ích về việc học tiếng Nhật và từ vựng IT tiếng Nhật cho các developer đang muốn theo đuổi việc làm tại thị trường này.
Blogger Thạch Phạm rất được yêu thích với các bài viết về thủ thuật WordPress. Ngoài ra, blogger này còn có các bài viết hướng dẫn về PHP, JavaScript, HTML/CSS, Linux Webserver
Blogger Sang Bùi hiện tại là QA Specialist cho một công ty ở Bangkok, Thái Lan. Anh thường xuyên đăng các bài viết bằng cả tiếng Việt và tiếng Anh chia sẻ kiến thức về software testing, đặc biệt là về automation và security test.
Tác giả của blog này là blogger cực kỳ nổi tiếng – Jeff Atwood, đồng sáng lập website hỏi đáp Stack Overflow thân thuộc với developer. Blog này với tiêu đề “Programming and Human Factors” viết về kinh nghiệm nhiều năm làm lập trình với những vấn đề “rùng rợn” của developer nhưng cuối cùng luôn đi kèm giải pháp cho vấn đề đó.
Joel Spolsky là nhà đồng sáng lập Stack Overflow cùng Jeff Atwood. Bạn có thể tìm thấy mọi thứ như thiết kế, phát triển phần mềm, quản lý cho đến bán sản phẩm ra thị trường. Độc giả blog cũng đa dạng từ junior developer, rock-star developer, software designer, tech lead, project manager, start-up, founder cho đến CEO. Và quan trọng là các bài viết của Joel cực kỳ chất lượng.
Scott Hanselman là một developer, giảng viên và diễn giả làm việc cho nhóm web platform tại Microsoft. Với kinh nghiệm lập trình đa dạng, những bài viết của Scott là kho công cụ cực kỳ hữu ích cho developer và những ý kiến về công nghệ, văn hóa, code và web.
Một nhóm developer giàu kinh nghiệm thực hiện blog với những bài viết sâu sắc về phát triển phần mềm đám mây, web và những ngôn ngữ lập trình căn bản như C++, Java.
Phil Hacck làm việc tại Github có sự quan tâm đặc biệt với cộng đồng phần mềm mã nguồn mở. Blog chia sẻ những kinh nghiệm về lập trình, Github và các dự án mã nguồn mở anh đang tiến hành
Robert Scoble là blogger nổi tiếng trong cộng đồng developer độc lập, một nhà “truyền giáo công nghệ”. Bài viết của Robert Scoble chủ yếu là những chia sẻ ngắn hướng đến cộng đồng IT đa ngành nghề.
Blog này dành cho Android developer, Cyril Mottier được công nhận là Google Developer Expert trên nền tảng Android. Blog chia sẻ kinh nghiệm tạo những ứng dụng di động với giao diện thân thiện, làm việc nhanh và tính tương tác cao giúp tạo ra những trải nghiệm thú vị cho người dùng.
Dù chủ yếu sử dụng ngôn ngữ Python trong việc viết code nhưng những bài blog của Erik dường như không giới hạn, rất đa dạng chủ đề. Từ machine learning, data engineering, back-end developer cho đến quản lý, cách tuyển dụng hiệu quả. Quá nhiều thứ hay ho bạn có thể gặt hái được trong blog này.
Blog rất hữu ích cho .NET developer. Chris Alcocl chon lọc thông tin và software hữu ích hàng ngày về .NET và chia sẻ trên blog. Bạn sẽ có cái nhìn cập nhật về những gì đang diễn ra xung quanh ngôn ngữ lập trình này một cách nhanh chóng.
Thế hệ Z (1995 – 2012) là nhóm thế hệ ra đời trong thời kỳ ổn định của sự phát triển công nghệ kỹ thuật số trước khi nó bùng nổ và có những bước tiến đột phá như hiện nay. Các nhà tuyển dụng ngày nay có xu hướng tuyển chọn những ứng viên thuộc nhóm thế hệ này.
Tuy có nhiều ý kiến trái chiều đã “nổ ra”, thế nhưng không thể phủ nhận được khả năng thích nghi, học hỏi và sáng tạo của thế hệ này. Cùng TopDev chỉ ra 3 điều cần biết khi lựa chọn đồng hành cùng Gen Z nhé!
1. Sự tôn trọng và công nhận về năng lực
Những áp lực mà Gen Z phải đối mặt không hề nhỏ khi nhiều người hoài nghi rằng kinh nghiệm và kỹ năng của họ đôi khi chưa đáp ứng kịp thời với xu hướng phát triển của nhiều mô hình doanh nghiệp?
Tuy nhiên, nếu đặt cạnh giữa những người lớn – thế hệ Millennials (1980 – 1994) thì thế hệ Z (1995 – 2012) lại nổi bật lên những đặc điểm nổi trội như hình bên dưới, đặc biệt là chính là sự am hiểu về công nghệ.
Gen Z chính là thế hệ đầu tiên của người bản địa kỹ thuật số thực sự.” Và quả thật, công nghệ chính là điểm đặc biệt lớn nhất của Gen Z. Việc am hiểu về công nghệ tạo ra một lợi thế trong bối cảnh thời đại mới và thời đại kỹ thuật số cần nhiều thứ hơn bên cạnh năng lực chuyên môn. Điều này không có nghĩa là các thế hệ khác không có sự hứng thú với công nghệ hoặc có những kiến thức về công nghệ của riêng họ.
Chính vì Gen Z hội đầy đủ tố chất để có thể phát triển xa hơn trong nghề nghiệp. Do đó, họ được kỳ vọng kế thừa và phát triển việc kết hợp năng lực tư duy đổi mới với những am hiểu về công nghệ để tạo ra sự thay đổi lớn hơn. Các nhà lãnh đạo nhân sự đã tôn trọng và công nhận năng lực của họ. Đó là lý do tại sao, nhiều doanh nghiệp đã chọn thế hệ Z là nhóm nhân viên tiếp theo tham gia đồng hành vào bộ phận nhân sự của tổ chức mình.
Việc tôn trọng và công nhận còn thể hiện qua việc tạo cơ hội cho các nhân viên Gen Z học hỏi, trau dồi những kỹ năng về công nghệ và vận dụng nó vào lĩnh vực nhân sự. Đó là cách thức hiệu quả giúp nguồn nhân lực hiện tại được đào tạo chuyên sâu, hướng đến một nguồn lực đa nhiệm. Đồng thời, do là nhóm thế hệ ra đời trong kỷ nguyên công nghệ số nên nhiều doanh nghiệp tin tưởng vào khả năng tương tác mạnh mẽ của Gen Z với thế giới công nghệ thông qua các phương tiện truyền thông xã hội, internet,…
2. Tạo ra tương tác thông qua sự phản hồi công việc
Gen Z là một thế hệ có ý thức xã hội cao với những mong muốn tham gia các chương trình xã hội thông qua nơi làm việc của họ. Nếu nắm bắt điều này, các nhà quản lý sẽ tạo ra sự tương tác tốt hơn với các nhân viên thế hệ Z. Điều này rất có ý nghĩa trong việc thúc đẩy phát triển các hoạt động.
Idalia Salsamendi, Giám đốc kinh doanh tại Chriselle Inc cho biết : “Những nhân viên thuộc Gen Z họ có một niềm tin rằng họ có thể là một phần của giải pháp nào đó khi thực hiện giải quyết một nhiệm vụ.”
Đồng thời, Gen Z còn tin tưởng vào việc xử lý các vấn đề và tự tìm giải pháp phù hợp sau đó, họ sẵn sàng trình bày với mọi người hơn là đưa ra câu trả lời đơn thuần, thiếu tính khả thi (hay nói cách khác là họ không phải kiểu người easier said than done). Vậy khi thấu hiểu điều này, các nhà quản lý cần cố gắng tạo ra một môi trường làm việc nhiều tương tác hơn bằng cách cho nhân viên bộc lộ những suy nghĩ của mình, hãy tiếp nhận những phản hồi của họ một cách chân thành nhất.
Vậy tại sao lại mở ra cho họ cơ hội trình bày sự phản hồi? Đơn giản, tính cách của thế hệ này chính là họ thích người quản lý của mình hành động giống như một huấn luyện viên (mentor/coach) hơn là ông chủ (boss). Và bản thân các nhà lãnh đạo nhân sự cần nhận biết đặc điểm này để làm việc với Gen Z hiệu quả hơn. Một điều quan trọng nữa là các nhà quản lý cần đặc ra các câu hỏi để khai thác góc nhìn của nhân viên, kích thích tư duy sáng tạo và trình bày quan điểm, đánh giá của mình về các vấn đề khác nhau. Khi đó, nhân viên được bộc lộ những gì mình có để tạo ra sự tương tác qua lại. Đó được xem là một biểu hiện cho việc tạo ra sự tương tác thông qua phản hồi.
Việc chấp nhận những phản hồi của nhân viên Gen Z chính là sự tôn trọng quyền lợi của họ trong công việc, đồng thời tạo ra sự liên kết bền vững hơn giữa sếp và nhân viên, giúp thiết lập một hệ thống nhân sự chặt chẽ.
3. Ưu tiên kết nối của con người và nắm bắt sự đa dạng
Mặc dù được biết đến như là một thế hệ nổi trội công nghệ, thế nhưng Gen Z lại có xu hướng đề cao các giá trị tương tác về trực diện (khả năng tương tác thông qua tiếp xúc) nhiều hơn. Vì đơn giản, với một thế hệ trẻ trung, năng động, sáng tạo và linh hoạt thì họ đề cao tính hiệu quả thông qua sự giao tiếp, tương tác trực tiếp.
Gen Z thích làm đồng nghiệp hơn là thích sự phân tầng trong xã hội. Họ gần gũi và không phân biệt cấp trên hay cấp dưới. Họ cho rằng con người là nhân tố quan trọng làm nên nhiều điều và sức mạnh từ sự kết nối của con người thật sự không có giới hạn. Chính sự kết nối tốt giúp các mối quan hệ được nuôi dưỡng sâu sắc hơn, công việc sẽ trở nên suôn sẻ khi chúng ta có cùng một kiến thức nền (background knowledge).
Gen Z cũng đang dẫn đầu trong việc bảo vệ sự đa dạng trong vấn đề hòa nhập. Gen Z kỳ vọng về giá trị đang dạng trong mọi tình huống. Với sự kỳ vọng đó, Gen Z thật sự tạo ra sự thay đổi lớn về khả năng phát triển, vận dụng linh hoạt và biến đổi dựa trên sự sáng tạo không ngừng của mình. Nhiều nhân viên họ có khả năng thích nghi rất tốt đồng thời biết rõ điểm mạnh, điểm yếu, những thế mạnh cần phát huy và những gì cần phải hạn chế tiếp xúc.
Các nhà quản lý cần hiểu điều này để đề ra những phương án tiếp cận hiệu quả hơn thông qua quá trình làm việc với Gen Z. Đừng gò bó họ trong một khuôn mẫu nhất định nào cả. Có thế, họ mới thật sự thoải mái và thể hiện đúng con người mình trong công việc.
Lời kết
Mỗi nhân viên là một mảnh ghép góp phần tạo nên những giá trị lâu dài cũng như giúp phát triển công ty ngày một vững mạnh hơn dựa trên những nền tảng đầu tiên. Các nhà tuyển dụng đã thật sự biết quan tâm, lắng nghe và theo dõi nhiều mối quan hệ của các nhân viên. Một doanh nghiệp phát triển toàn diện là một doanh nghiệp biết cách thể hiện được năng lực về tầm nhìn thông qua việc đánh giá năng lực các ứng viên và cả tổ chức.
Trong 5 năm gần đây, Việt Nam đã có nhiều thay đổi tích cực trong công cuộc chuyển đổi số, tiến tới một nền kinh tế số, xã hội số. Cũng chính vì vậy, làn sóng khởi nghiệp công nghệ (tech startup), cũng như việc gia tăng các dự án startup từ các công ty lớn đã có mặt trên thị trường. Với sự tăng trưởng mạnh của toàn ngành công nghệ nói chung, có thể nói năm 2020, Việt Nam sẽ được coi là một quốc gia IT của khu vực Đông Nam Á. Đi kèm theo đó là những khó khăn mà các nhà tuyển dụng ngành IT phải đối mặt trong suốt thời gian vừa qua.
“Với đặc thù tuyển dụng khó khăn của ngành IT, chúng ta đều hiểu rằng cách tốt nhất để tìm được ứng viên mới đó là phải trực tiếp test kỹ năng quan trọng nhất của vị trí đó, chưa kể là thông qua những phần kiến thức cơ bản để giúp nhà quản lý nhanh chóng biết được ứng viên có phù hợp và đủ khả năng làm việc cho doanh nghiệp của mình hay không, giảm thiểu được rủi ro tối đa trong quá trình sàng lọc ứng viên.” – ông Nguyễn Hữu Bình, CEO của TopDev, cho hay.
Việc đánh giá sai năng lực developer khiến sản phẩm nhiều lỗi, kéo dài thời gian phát triển, năng lực không tương xứng mức lương, chất lượng sản phẩm không đạt…khiến doanh nghiệp phải trả giá đắt bằng chính chi phí cơ hội
TopDev x HackerRank mang lại lợi ích giải phóng Tech Lead/ Manager khỏi công việc đánh giá ứng viên, trợ giúp các HR/ IT Recruiter không có background công nghệ trong việc tuyển dụng IT.
Khó khăn của doanh nghiệp khi “tự ý” sàng lọc ứng viên
“Cần phải đánh giá nhưng chưa thể thực hiện được” đó là ý kiến chung của hơn 1000 doanh nghiệp được TopDev khảo sát về quy trình sàng lọc ứng viên. Họ cho biết thêm, việc tuyển dụng đã khó, việc đảm bảo đầu vào của ứng viên chất lượng còn nan giải hơn. Trong thời điểm hiện tại, dù ngành IT đang được đánh giá là một trong những ngành mũi nhọn cho Việt Nam với hơn 153 cơ sở tổ chức đào tạo được khoảng 50,000 nhân sự cho ngành IT, nhưng các nhà tuyển dụng vẫn còn gặp nhiều khó khăn trong việc đảm bảo đầu vào của mình. Để có thể ứng dụng được các bài đánh giá hay phương pháp đánh giá giá ứng viên vào quy trình tuyển dụng, nhân sự đã và vẫn còn đối mặt với các rào cản sau:
Nếu tự xây dựng 01 đánh giá cho một kỹ năng nhất định, nhà tuyển dụng sẽ phải phối hợp cùng một Senior hoặc cả Tech lead có chuyên môn về kỹ năng đó, cho ra một sườn câu hỏi / challenge tương ứng với SOW (scope of work) của vị trí bạn đang tuyển. Tuy nhiên, 01 bài cho một kỹ năng và một mức level nhất định. Đối với các kỹ năng và level khác, quá trình này sẽ lặp lại, và người tuyển dụng sẽ phải tốn không ít thời gian và công sức để hoàn thiện được một bộ Test / Challenge hoàn thiện và đầy đủ.
Nếu phát triển cùng bên thứ ba: Các kênh tạo challenge và đánh giá ứng viên hiện tại chưa có mặt tại Việt Nam, cũng như nằm ở 1 hệ thống riêng lẻ. Vì thế nếu muốn sử dụng một bên ngoài hỗ trợ, Nhà tuyển dụng phải quản lý một lúc quá nhiều kênh trong quy trình tuyển dụng mà chưa tối ưu về 1 kênh duy nhất. Chưa kể giá thành các gói doanh nghiệp của service này khá đắt đỏ và cao cửa với doanh nghiệp Việt Nam.
“Một trong những đặc thù của tuyển dụng nhân sự IT là có thể đánh giá chính xác năng lực ứng viên dựa vào các bài test từ thấp đến cao. Với việc TopDev hợp tác với HackerRank, nhà tuyển dụng thậm chí còn được giải phóng khỏi khâu thiết kế bài test, khép kín hoàn chỉnh quy trình tuyển dụng từ khi đăng tin, nhận CV đến kiểm tra trình độ theo chuẩn quốc tế hoàn toàn tự động.” ông Bình cho biết thêm.
Đối với các doanh nghiệp lớn thì đối với mỗi vị trí có sẽ cần quy trình khác nhau, chính vì thế nhân sự viên nên phân định các yếu tố theo từng vị trí. Vì thế cần thiết phải có một nền tảng “của người Việt” và có thể tích hợp cả vào quy trình tuyển dụng cho nhà tuyển dụng IT, để tối ưu hoá lưu lượng quản lý và nhanh chóng đạt hiệu suất tuyển dụng. Cũng chính vì vậy, TopDev đã kết hợp với HackerRank để tạo ra những sản phẩm bài đánh giá sát hạch giúp nhà tuyển dụng có thể sàng lọc ứng viên qua các quy chuẩn của quốc tế.
TopDev lần đầu tiên mang chương trình đánh giá ứng viên IT uy tín nhất thế giới đến Việt Nam.
Nền tảng chấm điểm lập trình được ứng viên IT tin tưởng
HackerRank là một trang web cho phép các lập trình viên có thể trau dồi khả năng của mình, thông qua việc yêu cầu những người tham gia đưa ra lời giải cho những “thử thách và test lập trình”. Nổi cộm trong cộng đồng giới Lập trình viên và có hơn 11 triệu Lập trình viên toàn cầu tham gia rèn luyện, thực hành và kiểm tra năng lực ngay tại nền tảng của HackerRank.
HackerRank có gần 91 triệu thử thách/ test viết code cho Developer mọi kỹ năng thử trình độ, từ cơ bản cho tới phức tạp. Các bài tập đều có phân loại từ dễ tới khó, bất kỳ ai muốn thử sức cũng có thể tham gia.
“Đã làm Lập trình viên thì phải biết đến HackerRank để tập luyện.”
Hiện nay tất cả các công ty công nghệ hàng đầu thế giới đều đang sử dụng HackerRank for Work – cho quá trình tuyển dụng mảng kỹ thuật như Facebook, Quora, Shopify,… Tuy nhiên, với các doanh nghiệp Việt Nam thì vẫn còn khá xa lạ và với các gói Doanh nghiệp ‘khá đắt đỏ” làm cho doanh nghiệp Việt Nam khó tiếp cận được với phương pháp mới này.
… tích hợp cùng nền tảng tuyển dụng IT hàng đầu Việt Nam
Tích hợp được quy trình đánh giá ứng viên vào quy trình tuyển dụng hiện tại một cách nhanh chóng và tối ưu là vấn đề nan giải nhất với nhân sự IT hiện tại. Vì thế, hệ thống trang tuyển dụng TopDev đã tích hợp HackerRank ngay trên nền tảng của TopDev, để nhân sự có thể theo dõi trực tiếp và nhận ứng viên thích hợp chỉ từ 1 hệ thống duy nhất. Quy trình tuyển dụng sẽ giúp nhân sự đánh giá ứng viên một cách chuyên sâu hơn khi lấy ứng viên làm trung tâm.
Sau khi có kế hoạch đăng tuyển IT cho phía công ty với TopDev.vn, nhân sự cũng sẽ làm việc với team TopDev để thống nhất các vị trí – level cần test kỹ năng trên nền tảng TopDev x HackerRank để bổ sung vào JD cũng như tin đăng, theo các ngôn ngữ và trình độ cho trước
Luồng CV và ứng viên cho các vị trí trên hệ thống TopDev sẽ có thứ tự như sau:
Với các vị trí không cần test: Nguồn CV sẽ được hệ thống sàng lọc và gửi trực tiếp đến HR
Với các vị trí cần đánh giá qua HackerRank:
Các CV đạt yêu cầu sẽ được TopDev gửi qua email đến nhà tuyển dụng. Đồng thời nền tảng TopDev x HackerRank sẽ thông báo và yêu cầu ứng viên truy cập để thực hiện bài test theo level được tùy chỉnh và có sẵn của HackerRank.
Sau khi ứng viên hoàn thành bài test HackerRank trong thời gian quy định, kết quả bài test do HackerRank đánh giá sẽ được TopDev gửi qua email đến nhà tuyển dụng. Trường hợp ứng viên không hoàn thành bài test theo thời gian quy định, nhà tuyển dụng sẽ nhận được email từ TopDev thông báo kết quả ứng viên không hoàn thành bài test HackerRank.
Nhà tuyển dụng xem xét, đánh giá và tiến hành quy trình tuyển dụng tiếp theo sau đó
Từ đây quá trình đánh giá sàng lọc ứng viên sẽ hiệu quả hơn nhiều khi (1)nhận biết các ứng viên tiềm năng phù hợp nhất để nhanh chóng offer vào các vòng tuyển dụng tiếp theo và (2) nắm được tình hình năng lực các ứng viên nói chung để cho ra thanh đánh giá tối ưu hơn về doanh nghiệp.
Bộ tích hợp TopDev x HackerRank sẽ trực tiếp giải quyết cho nhà tuyển dụng IT:
Đánh giá phần “chìm” của các CV lập trình viên
Những phần “nổi” từ các CV như Điểm mạnh – Điểm yếu, các Skill ,… thông qua bài test sẽ giúp HR có cái nhìn trực quan hơn về mỗi ứng viên, tránh bias thiếu sót, mở rộng talent pool hiện có và nhanh chóng đạt mục tiêu tuyển được nhân sự IT của mình
Nhờ bài đánh giá mà công tác lọc CV sẽ nhanh chóng hơn, dễ “loại” hơn. Khi đối diện với cả chục trăm CV mỗi vị trí, càng ngày HR sẽ có xu hướng “mạnh tay” và “dã tâm” loại CV hơn nhiều. Các yếu tố về tâm lý và cảm xúc không nên ảnh hưởng đến chất lượng và làm tụt mất người tài. Từ kết quả đánh giá thu được, cả phía nhân sự và tech lead phụ trách sẽ loại bỏ được các CV “yếu” theo thang tiêu chí rõ ràng, rút ngắn quy trình tuyển dụng
Tạo nên quy trình tuyển dụng thống nhất
Nắm được tình hình tổng quan nhân sự để cho ra được thang đánh giá ứng viên và quy trình tuyển dụng thích hợp mà không phải hy sinh chất lượng. Đồng thời, nâng cao chất lượng talent pool của doanh nghiệp nói chung và thu hút thêm developer giỏi.
Tìm hiểu thêm chương trình tuyển dụng IT cùng TopDev.vn tại đây
Đồng hành cùng sứ mệnh nâng cao chất lượng ứng viên IT Việt Nam
Nền tảng tích hợp TopDev x HackerRank là sản phẩm đến từ mục tiêu đồng hành cùng nhà tuyển dụng IT tại Việt Nam và tăng cường chất lượng ứng viên IT cho doanh nghiệp Việt Nam. Nhu cầu về phương pháp đánh giá ứng viên đã từ lâu xuất hiện trên thị trường, nhưng vẫn còn quá nhiều khó khăn để triển khai và áp dụng vào quy trình tuyển dụng của doanh nghiệp Việt Nam. Từ đó, nền tảng tích hợp TopDev x HackerRank sẽ không chỉ mang “công nghệ” mới đến gần hơn với nhà tuyển dụng Việt, mà còn trực tiếp tích hợp vào một nền tảng đơn giản dễ sử dụng nhất cho HR với mức chi phí tối ưu và nguồn ứng viên chất lượng nhất.
TopDev x HackerRank hy vọng giải pháp ra đời sẽ tạo ra một sự cộng hưởng lớn, mang lại những giá trị thiết thực nhất cho doanh nghiệp.
Bài viết này tôi sẽ chia sẻ một số lời khuyên về những điều tôi đã làm trong thời gian thực tập 3 tháng vốn cực kì tuyệt vời này.
Dành nhiều thời gian nhất có thể với các đồng nghiệp
Khi một thực tập sinh đã xây dựng mối quan hệ với nhân viên của công ty và cho thấy rằng mình là một phần của nhóm, nhà tuyển dụng sẽ cảm thấy rất khó khăn để cho họ rời khỏi công ty.
Bản chất công việc của một nhà phát triển sẽ có liên quan tới nhóm. Hãy sử dụng kiến thức này làm lợi thế của bạn. Khi đã xây dựng được mối quan hệ tốt đẹp với đồng nghiệp của mình thì làm việc nhóm cũng sẽ được cái thiển. Quan trọng hơn, không một nhà tuyển dụng nào lại loại bỏ một thành viên tốt trong nhóm cả.
Vì vậy, hãy tận dụng thời gian nghỉ trưa và sau giờ làm, hãy luôn luôn cố gắng tạo mối quan hệ với các đồng nghiệp của bạn. Dành thời gian và tiếp tục xây dựng kết nối với các thành viên của công ty.
Hãy quan tâm đến tất cả các dự án và bài tập cho dù bạn nghĩ rằng bạn có khả năng làm việc đó hay không
Bản chất của một nhà phát triển là luôn tham gia các dự án và đối đầu với thách thức. Khi bạn được giao nhiệm vụ để làm việc với một cái gì đó hoàn toàn mới mẻ, nó có thể sẽ hơi đáng sợ nhưng bạn nên nhìn nhận chúng như một cơ hội học tập.
Nhà phát triển là những nhà giải quyết vấn đề tài ba. Khi vấn đề đó xa lạ với họ, lập trình viên sẽ làm tất cả để có được các tài liệu / tài nguyên cần thiết để tự tìm hiểu và hiểu rõ vấn đề.
Là thực tập sinh, các kỹ năng giải quyết vấn đề của bạn đang được thử thách. Hãy thử bước ra ngoài vùng an toàn của bản thân và học hỏi những điều mới
Làm theo trách nhiệm
Đừng chỉ làm đúng giờ rồi về. Thay vào đó, hãy tiếp tục làm việc về các dự án ngày cả khi ở nhà. Tất nhiên không phải lúc nào cũng vậy nhưng trong giai đoạn intern thì bạn cần phải làm mọi thứ để tận dụng cơ hội học hỏi.
Thời gian bạn làm việc cũng chính là lúc bạn phát triển.
Nó không bao giờ là một câu hỏi ngu ngốc. Nếu bạn không hiểu điều gì đó hoặc cần làm rõ thêm, luôn luôn hỏi.
Việc đặt các câu hỏi cho thấy bạn tò mò và thực sự quan tâm đến chất lượng công việc của mình. Bạn muốn mọi thứ được thực hiện đúng, cũng như muốn rõ ràng và có sự hiểu biết đầy đủ.
Mặt khác, nó luôn luôn tốt hơn là tự mình suy đoán. Hơn nữa, thực tập là một cơ hội để học hỏi từ những người khác, vì vậy hãy tận dụng nó.
Chỉ vì bạn là một thực tập sinh, không có nghĩa là bạn nên suy nghĩ hoặc hành động như vậy
Suy nghĩ của bạn tạo ra thực tại. Mất tinh thần tập luyện thì bạn cũng sẽ không có nhiệt tình dù có cố gắng tới thế nào đi nữa.
Thật ra, bạn không khác so với bất cứ ai. Bạn cũng sẽ phải chịu nhiều trách nhiệm cho công việc. Bạn được mong đợi sẽ thể hiện tốt nhất giống như mọi người khác. Bạn nắm giữ quyền lực để đóng góp cho công ty, cũng như mọi người khác.
Với suy nghĩ này, bạn chắc chắn sẽ thực hiện tốt trong thời gian thực tập của mình.
Bằng cách nghĩ về mình như là thành viên của công ty chứ không phải là một người chỉ đến để thực tập sẽ giúp bạn:
Hài hòa với văn hoá và với những người xung quanh bạn trong công ty.
Nhận được nhiều dự án và thách thức với sự tự tin.
Có khuynh hướng đặt nhiều nỗ lực và thời gian vào công việc của bạn.
Không bao giờ ngần ngại để nâng cao và cải thiện bản thân
Tôi chưa bao giờ nghĩ mình là một thực tập sinh, ngay cả khi tôi viết đơn xin thực tập. Thay vào đó, tôi luôn nghĩ rằng đó là một cơ hội để chứng tỏ mình cũng như là chìa khóa mang tới thành công.
Xem ngay những tin đăng tuyển dụng IT mới nhất trên TopDev
Mỗi khi lập trình Front-End mà gặp khó khăn mình thường “đi dạo” trên internet để kiếm hướng giải quyết, nhân dịp hôm nay rảnh rỗi mình tổng hợp lại hết những thứ hay ho này. Hy vọng sẽ giúp được anh em chút ít.
Front-end của website là thứ để tương tác với người dùng. Mọi thứ bạn thấy khi các trang web như màu sắc, các font chữ cho đến những menu có hiệu ứng xuất hiện và các thanh công cụ, là sự kết hợp giữa HTML, CSS và JavaScript được vận hành bởi trình duyệt trên máy tính bạn.
Các kỹ năng và công cụ
Các lập trình viên front-end là người có trách nhiệm xây dựng giao diện của một trang web và thiết kế kiến trúc giúp người dùng có trải nghiệm tuyệt vời. Con đường duy nhất để đạt được những mục tiêu đó là các lập trình viên front-end phải tu luyện thành công 3 ngôn ngữ chính: HTML, CSS, và JavaScript.
Không chỉ thuần thục các ngôn ngữ đó, mà những lập trình viên Front-end còn cần phải biết các framework như AngularJS, Backbone, Foundation, Bootstrap, và EmberJS, để chắc chắn nội dung website luôn hiển thị tốt nhất trên các thiết bị khác nhau. Ngoài ra những thư viện như LESS và jQuery, còn giúp ta tiết kiệm thời gian và tối ưu hơn.
Hiện tại có rất nhiều vị trí dành cho lập trình viên Front-end yêu cầu có kinh nghiệm với Ajax, đây là một kỹ thuật được sử dụng phổ biến bằng cách dùng JavaScript cho phép các trang có thể load tự động bằng cách tải dữ liệu máy chủ tại phần background.
Một lập trình viên front-end là người chịu trách nhiệm thiết kế nội thất của ngôi nhà đã được xây dựng bởi một lập trình viên back-end.
Cùng với những công cụ này, các lập trình viên Front-end sẽ hợp tác chặt chẽ với các designer hoặc nhà phân tích trải nghiệm người dùng (UX/UI designer) để biến những bản mockup, hoặc wireframe, từ bước lên ý tưởng phát triển tới sản phẩm thực tế. Một số lập trình viên Front-end có kinh nghiệm cũng có thể xác định chính xác các vấn đề cụ thể trong trải nghiệm của người dùng, đưa ra những đề xuất và giải pháp hệ thống hóa nhằm tác động đến thiết kế đó. Quan trọng là họ có khả năng phối hợp với những team khác trong công ty nhằm hiểu rõ mục đích cụ thể, nhu cầu, cơ hội. Từ đó hoàn thiện được sản phẩm đúng nhất.
Front-end là công việc có rất nhiều trách nhiệm, nhưng nó là việc rất thú vị để làm. “Tôi là một người làm kỹ thuật, vừa là một người có mắt thẩm mỹ”, Mikey Ilagan là một lập trình viên Front-end với 8 năm kinh nghiệm cho biết: “Vì điều đó, tôi rất thích tạo ra ảnh hưởng lên giao diện người dùng, các khía cạnh của một ứng dụng hoặc trang web mà người dùng tương tác và nhìn thấy.”
Nói chung, lập trình viên Front-end là người phải chịu trách nhiệm thiết kế nội thất cho một ngôi nhà đã được xây dựng bởi lập trình viên Back-end. Các hương vị và phong cách trang trí được quyết định bởi chủ nhà (khách hàng). Theo Greg Matranga, Giám đốc tiếp thị sản phẩm tại Apptix, nói về cả hai team front-end và back-end mà ông quản lý: “Các lập trình viên front-end đôi khi cảm thấy hào hứng hơn với những gì họ làm bởi vì họ thực sự có thể tận dụng khả năng sáng tạo của mình.”
Những vấn đề mà các Front-End developer thường gặp phải
Trong quá trình phát triển Front-end, điều quan trọng là phải hiểu được người dùng và những hành vi của họ, từ đó tạo ra một thiết kế Front-end đẹp mắt. Tuy nhiên, khi thực hiện việc này bạn cũng có thể mắc một vài lỗi viết code thường gặp nên tránh.
Sau đây là top 20 công cụ và tài liệu cực hay dành cho các bạn lập trình viên Front-End, từ đó cũng giúp các bạn giải quyết những vấn đề trong công việc được nhanh và hiệu quả hơn.
Cung cấp những thông tin rất đơn giản về layout, nó cho phép bạn chọn từng kiểu layout: Responsive, Adaptive, Liquid và Static, để bạn có thể cảm nhận được sự khác biệt giữa bốn loại layout này.
Mình nghĩ những thông tin cũng rất tốt đối với khách hàng, để họ có cái nhìn chính xác hơn về layout để đưa ra những yêu cầu phù hợp với mục đích của họ. Tiết kiệm thời gian cho cả hai bên.
Có một tài liệu trên W3C mô tả sự khác biệt có thể nhận thấy được giữa các đặc điểm kỹ thuật front-end của HTML, WHATWG, W3C, HTML5 HTML5.0 và W3C, HTML5 HTML5.1.
Bài này có thể hơi nặng về mặt kỹ thuật, nhưng bạn có thể tìm thấy một số công cụ mới thú vị ở đây.
Một trang web tĩnh là trang web được định sẵn một kiểu cố định, chủ yếu được mã hóa bởi Hypertext Markup Language (HTML) và gửi thẳng đến trình duyệt của người dùng theo kiểu cố định đó. Nó không có tính linh động và không thể tự động cập nhật thông tin cho đến khi người viết ra website đó sửa lại nội dung của nó.
Một cách dễ hiểu hơn, chẳng hạn như trang web cổ điển, một trang web dài năm trang hoặc một trang web tài liệu thường các trang web tĩnh, bởi vì người tạo ra website đã xác định nội dung cụ thể cho người xem biết trước. Điều này có thể bao gồm thông tin về một công ty và các sản phẩm và dịch vụ của mình thông qua văn bản, hình ảnh, hình động, nhạc / phim và menu tương tác và định hướng.
Ưu điểm của các trang web tĩnh:
Nhanh chóng để phát triển
Chi phí thiết kế thấp
Chi phí lưu trữ thấp
Nhược điểm của các trang web tĩnh:
Đòi hỏi chuyên môn phát triển web để cập nhật trang web
Trang web không hữu ích cho người sử dụng
Nội dung có thể bị trì trệ, dễ rơi vào tình trạng chết
Hướng dẫn này sẽ giới thiệu cho bạn thế giới của các ứng dụng static web (web tĩnh) và đưa ra giải pháp cho các vấn đề thường gặp phải khi xây dựng chúng.
Mục đích ở đây là cùng bạn tạo ra một kiến trúc giúp giảm bớt các vấn đề thường gặp.
Regular Expression sinh ra là để giúp cho cuộc đời của bạn bớt khổ. Hãy tưởng tượng xem bạn phải nai lưng ra copy-paste bao nhiêu code. Bạn hoàn toàn có thể download các tool về để replace giúp bạn. Nhưng bạn cần bao nhiêu tool mới cho đủ đây.
RegEx không phải là một ngôn ngữ lập trình. Nó chỉ là một BỘ CÚ PHÁP dùng để bắt chuỗi. Nhưng nó cực kỳ phổ biến và bất kỳ ngôn ngữ lập trình nào cũng hỗ trợ. Nó có cả trăm ngàn ứng dụng và công cụ ăn theo.
Và đây là một bài hướng dẫn “mở rộng” giới thiệu về các regular expression (biểu thức chính quy).
Mình nghĩ rằng sẽ mất nhiều thời gian hơn 55 phút được đề tại time read để thực sự lĩnh hội được điều gì đó, nhưng chắc chắn rất đáng xem.
Đây là một cách dễ dàng để tìm kiếm một thuộc tính CSS và nhanh chóng xem các giá trị có thể. Ví dụ: nếu bạn quên những giá trị nào được chấp nhận như font-variant.
Ngoài các giá trị, bản cập nhật mới nhất bao gồm các biểu đồ hỗ trợ trình duyệt cho từng thuộc tính, được cung cấp bởi caniuse.com.
ES6 là chữ viết tắt của ECMAScript 6, đây được coi là một tập hợp các kỹ thuật nâng cao của Javascript và là phiên bản mới nhất của chuẩn ECMAScript.
ECMAScript 6 (hay còn được gọi là ES6, ES2015) là phiên bản mới nhất của chuẩn ECMAScript. Chuẩn này được phê duyệt vào tháng 6/2015. Nó là một bản nâng cấp quan trọng cho ES kể từ ES5 đã được chuẩn hoá vào năm 2009.
Từ nhà phát triển Microsoft, Luke Hoban. Tổng quan về các công cụ mới trong ECMAScript 6.
Như repo đã chỉ ra, việc triển khai các tính năng này trong các công cụ JavaScript hiện nay, vì vậy sẽ rất hữu ích khi bắt đầu làm quen với front-end bằng công cụ này.
Tôi thường gặp khó khăn trong việc tìm đúng thông số kỹ thuật để nghiên cứu một cái gì đó. Đây là một bản tóm tắt ngắn gọn rất hay từ Mozilla về các liên kết mà bạn sẽ cần phải biết liên quan đến thông số kỹ thuật.
Đây là một hướng dẫn nhằm giúp các lập trình viên mới tiếp cận JavaScript và giúp các lập trình viên đã có kinh nghiệm tìm hiểu thêm về các ví dụ thực tiễn tốt nhất của nó.
Mặc dù tên là vậy, nhưng hướng dẫn này không có nghĩa là “cách duy nhất đúng” để tiếp cận JavaScript.
Tại đây chỉ thu thập tất cả các bài viết, mẹo và thủ thuật từ các lập trình viên hàng đầu và tổng hợp chúng tại đây. Và vì những kiến thức này đến từ những người giỏi nhất, nên có thể nói rằng đó là “cách đúng đắn” hoặc cách tốt nhất để làm việc với JavaScript.
Bạn có nghĩ vanilla.js là framework JavaScript tốt nhất không? Bạn đã luôn bỏ lỡ một cái gì đó tương tự như “JavaDoc” cho JavaScript.
Thì đây cái bạn không nên bỏ qua, nơi hoàn hảo để tìm kiếm thông tin về API HTML5.
Được tổng hợp ra từ các tài liệu đặc tả về HTML5 và rất dễ sử dụng nhờ thiết kế UX/UI thông minh.
Lưu ý rằng index này hữu ích nhất nếu bạn đã quen với HTML5 và JavaScript, dùng để tra cứu tên và cú pháp của các method. Tuy nhiên, để bắt đầu làm quen nhanh chóng, chúng tôi cũng đã tổng hợp những liên kết đến các hướng dẫn tương ứng trên trang tổng quan về thư viện cần thiết.
Cái này trông khá gọn gàng. Nó là một native app của Windows, Linux và là bản sao của Dash, một ứng dụng cho phép bạn tìm kiếm hơn 130 tài liệu API ngoại tuyến.
Với một vài phím tắt đơn giản, bạn có thể hiển thị trình duyệt API từ bất kỳ đâu trong không gian làm việc của bạn.
Flexbox là một kiểu dàn trang (layout mode) mà nó sẽ tự cân đối kích thước của các phần tử bên trong để hiển thị trên mọi thiết bị. Nói theo cách khác, bạn không cần thiết lập kích thước của phần tử, không cần cho nó float, chỉ cần thiết lập nó hiển thị chiều ngang hay chiều dọc, lúc đó các phần tử bên trong có thể hiển thị theo ý muốn.
Hiện nay, theo lời khuyên từ Mozilla thì chúng ta sử dụng Flexbox để thiết lập bố cục trong phạm vi nhỏ (ví dụ như những khung trong website) và khi thiết lập bố cục ở phạm vi lớn hơn (như chia cột website) thì vẫn nên sử dụng kiểu thông thường là dàn trang theo dạng lưới (grid layout).
Và đây là tài liệu tham khảo đa dạng để giúp bạn tìm cú pháp flexbox và những thứ ít phổ biến hơn.
Flexbox trong CSS có thể nói là một trong những kiểu dàn trang rất tốt để thay thế cho cách dàn trang thông thường là dùng float, thích hợp khi dàn trang những thành phần nhỏ trong website để hạn chế tối đa việc dùng float không cần thiết.
Mặc dù hiện tại chưa phải tất cả trình duyệt đều hỗ trợ CSS Flexbox nhưng trong tương lai, chắc chắn đây là một trong những tính năng mà các trình duyệt sẽ sớm hỗ trợ do khả năng tiện dụng và tùy biến tốt của nó mang lại.
Một ứng dụng giúp bạn tạo các nguyên tắc mã hóa JavaScript tùy chỉnh của riêng bạn.
Bạn cũng có thể tra cứu các hướng dẫn tùy chỉnh do người khác tạo và chia sẻ với nhóm của bạn hoặc các cộng tác viên khác.
Những công việc mà một Front-end Developer cần phải làm
Hiện nay, có nhiều cách để xây dựng một website nhanh chóng mà không cần tới những Web Developer chuyên nghiệp. Liệu quan điểm đó có đúng không? Dựa vào một nền tảng sẵn có trên internet, bạn có thể chọn template vừa mắt cho website, sau đó thêm một vài tính năng để tăng tương tác và bạn sẽ có riêng website chỉ sau 1 giờ đồng hồ. Rất dễ dàng đúng không, nhưng các website được tạo lên theo cách này thường gặp khó khăn trong việc cá nhân hóa những tính năng riêng.
Do đó, nếu bạn thuê một lập trình viên Front-end, website của bạn sẽ trở nên nổi bật hơn giữa đám đông. Và thực tế, những website bạn yêu thích vì có UX/UI hấp dẫn và các tính năng độc đáo…, đều có sự góp sức không nhỏ của một Front-End Developer có kỹ năng.
Ví dụ
Tất cả mọi thứ bạn đang nhìn thấy trên các trang web ngày nay bây giờ đều có thể được thực hiện bởi một nhóm gồm lập trình viên front-end, designer tạo ra logo và đồ họa, photographer cung cấp hình ảnh, copywriter viết nội dung. Nhưng người lập trình viên front-end có trách nhiệm kết hợp tất cả những mảnh ghép đó lại và chuyển nó thành ngôn ngữ web và tạo ra trải nghiệm mà bạn có khi xem trang web. Để lấy một ví dụ cụ thể, khi bạn cuộn con chuột lên xuống ở trang chủ của website Udacity. Bạn có để ý thấy rằng chữ “U” biến mất rồi xuất hiện trở lại không? Đó là tác phẩm của một lập trình viên front-end.
Kết
Để trở thành một lập trình viên Front-End không hề đơn giản. Đặc biệt là trong thời đại công nghệ phát triển mạnh mẽ như hiện nay. Việc nắm chắc kiến thức và thức hành tốt sẽ giúp bạn có được những cơ hội nghề nghiệp cao hơn.
Hầu hết những thứ mình kể ở đây là những thứ không được nhiều người biết đến khi làm việc với front-end (nếu bạn biết rồi thì tốt nha). Ngoài ra nếu bạn có tạo ra một cái gì đó hay ho hoặc biết về một công cụ, tài liệu hoặc bộ hướng dẫn mà bạn muốn chia sẻ, hãy cho mình biết tại phần comment nha. Xin cảm ơn các bạn đã dành thời gian.
Là nền tảng quản lý sự kiện trực tuyến uy tín, Ticketbox có hệ thống “trụ vững” với kỷ lục bán 5000 vé trong 8 phút (Show của Đen), hay 10.000 vé chương trình Running Man – Keep On Running. Hôm nay, cùng trò chuyện với CTO của Ticketbox – Anh Nguyễn Hoàng Việt để tìm hiểu đằng sau hệ thống lên đến hàng trăm lượt truy cập cần yếu tố nào về mặt công nghệ.
Về khách mời Nguyễn Hoàng Việt
Anh có thể giới thiệu về bản thân với độc giả được không?
Trước đó anh là Engineer Director của Tiki, nền tảng mua sắm trực tuyến và hiện tại bây giờ anh là CTO của TicketBox, hệ thống phân phối vé và quản lý sự kiện trực tuyến. Anh có khoảng trên 10 năm kinh nghiệm làm liên quan đến các giải pháp về công nghệ và sản phẩm tại thị trường Việt Nam.
Hiện tại là CTO tại Ticketbox, đâu là cơ duyên để anh đồng hành cùng Tiki từ trước đó?
Khi nhìn lại mình nhận ra một điều khá thú vị, vì quá trình mình tham gia Tiki sẽ không giống với đa số các bạn. Câu chuyện ở khoảng 2014 – 2015, Tiki bắt đầu launch sản phẩm là Miki, MiKi là một sản phẩm nền tảng mà đọc ebook trên online. Lúc đó vai trò là một Tech-guy thì mình khá tò mò, mình tò mò làm sao Tiki có thể phân phối sách được và làm sao để bảo vệ bản quyền của cuốn sách đó, mã hóa như thế nào để mọi người không thể lấy được nội dung. Vì tò mò như thế thành ra mình tìm hiểu và mình nhớ lúc đó Tiki làm rất tốt trong việc mã hóa và bảo vệ bản quyền sách trên các nền tảng iOS và Android. Mình mất gần 3 tuần và sắp bỏ cuộc rồi. Tại vì chuyện Tiki encrypt (mã hoá) trên nền tảng iOS, bản thân đã protect rất là tốt rồi, mình nhớ lúc đó mình phải jailbreak iPhone, sau đó mình phải cài phần mềm cần thiết vô để debug và đọc mã, debug từng biến số một, sau đó mình ra được mã key của Tiki và mình có thể hiểu được cách mã hóa của họ.
Và trong quá trình làm như thế thì cuối cùng mình thành công, mình tìm cách và biết được Tiki làm sao có thể mã hóa được sách của Tiki và đồng thời lúc đó cũng phát hiện ra một số lỗ hổng trên nền tảng đó. Mình không phải là black-hat hacker, nhưng mình report lỗ hổng đó cho anh Sơn, Tech Lead lúc đó (anh Trần Ngọc Thái Sơn – hiện tại là CEO của Tiki). Lúc đó mình không nghĩ đó là công việc của mình đâu, nhưng mà khi mình report như thế thì hai anh mời nói chuyện và thấy thú vị và cuối cùng mời mình làm việc, và câu chuyện của mình với Tiki bắt đầu từ thời điểm đó.
Nhìn lại trong 2 tuần mày mò đã có lúc mình muốn bỏ cuộc rồi, mà nếu như mình bỏ cuộc thì chắc mình đã không ngồi đây. Đó là cái thú vị của mình với Tiki. Tiki là công ty tăng trưởng rất nhanh, gần như gấp 2, gấp 3 lần mỗi năm, vì vậy mà những thách thức nó cũng tăng lên, có nghĩa là những gì bạn học được hôm nay thì ngày mai nó sẽ khác, thay đổi hoàn toàn và như thế mình học hỏi không ngừng, mình bắt buộc mình phải học hỏi không ngừng nếu không mình sẽ không phù hợp với công ty.
Chính bản chất của mình mong muốn học hỏi, tìm hiểu nhiều, quay đi quay lại mình đã đồng hành hơn 4 năm với Tiki rồi. Gần đây Tiki có TicketBox, lại có thử thách mới, nó cũng khá giống với mọi hệ thống thôi, mà TicketBox cũng là một ngành khác nên cố gắng thay đổi chuyện offline event lên nền tảng online như thế nào, ra sao? Đó cũng là một thử thách lớn mà mình cũng muốn giải quyết và cũng phù hợp với khả năng của mình, và mình quyết định mình chuyển sang bên đó và trách nhiệm CTO của TicketBox. Đó là câu chuyện Tiki, TicketBox và mình.
Với vị trí là CTO của Ticketbox thì anh có thể chia sẻ về công việc hằng ngày của CTO là gì không?
Với mức level của mình thì công việc một tuần, vai trò của CTO tất nhiên phải involve vào và hiểu business, trách nhiệm của bạn là từ business của công ty hướng tới cái gì và các bạn phải nghĩ ra sản phẩm phù hợp, và sản phẩm cần technology nào và bạn phải “enable technology” đó, ready và quay ngược lại mình xây dựng sản phẩm đó, mình deliver được business đó. Mỗi đầu tuần mình có hoạt động bàn luận liên quan đến business, cập nhật tình hình business như thế nào; tiếp theo mình có họp với Product Team, để xem nhu cầu business trong tình thế này cần sản phẩm như thế nào, các bạn sẽ làm sản phẩm như thế nào để phù hợp với thị trường. Khi sản phẩm ra yêu cầu một số technology nào đó cũng là những cuộc họp tiếp theo. Mình cũng phải gặp các bạn về Technical, và để mình hiểu technology này có thể ứng dụng được hay không trong thời điểm này để mà mình có thể có sản phẩm liên quan.
Bên cạnh đó khi mà sản phẩm đã launch ra rồi, thì mỗi sản phẩm sẽ có những cách định lượng về độ hiệu quả và chất lượng của nó, ví dụ về tech mình có những buổi họp về SLA (Service level Agreement), về khả năng chịu tải, về sử dụng resource, code, chi phí như thế nào ra sao, để mà trong những buổi meeting mình có quyết định thay đổi để mà làm sao công ty hiệu quả hơn và tăng trưởng.
Ngoài ra dù mình làm vai trò như thế nào, mình vẫn involve business thì cuối cùng mỗi ngày mình vẫn là anh chàng tech thôi – vẫn tò mò, muốn tìm hiểu về công nghệ, tìm hiểu những giải pháp mới. Thời gian sau những chuyện đó thì mình tập trung vào tìm hiểu những công nghệ mới có thể áp dụng được cho team mình và mình có thể phát triển những phiên bản demo giới thiệu cho các bạn để các bạn có thể hiểu và thấy rằng làm chuyện này là không khó và có thể làm được. Và khi mình enable technology đó rồi thì sẽ dễ dàng hơn cho các bạn làm product để xây dựng sản phẩm liên quan và như thế khi mình có sản phẩm rồi thì mình đưa ra ngoài thị trường. Một tuần, một ngày làm việc của mình ở TicketBox là như vậy!
Để hoàn thành tốt những công việc hằng ngày đó, theo định nghĩa của riêng anh, CTO nên là một người như thế nào? Kỹ năng và tốt chất nhất định phải có của một CTO là gì?
Bản chất là một doanh nghiệp về tech là mình có business idea, và để triển khai những idea đó cần có những sản phẩm trên nền tảng online và tùy các bạn đang ở môi trường như thế nào; và đây là môi trường online thì tất nhiên những thứ mình làm đều trên nền tảng online. Để làm như thế thì mình cần phải có technology nào, mà như vậy nếu bạn là CTO thì bạn phải hiểu về business, bạn phải biết được cách làm sản phẩm như thế nào để phù hợp với businessđó và thứ ba là bạn phải biết technology nào để làm sản phẩm đó. Bạn cần phải biết cả ba yếu tố như thế, và ba yếu tố đó khó có sách nào có thể diễn giải được, hoặc có diễn giải nhưng mà mình khó có thể hiểu được tất cả các ý như vậy, thì cái đó theo kinh nghiệm làm việc, theo những người mentor cho mình hay là theo những thứ mà mình tương tác mình làm sẽ biết được những chuyện đó. Do đó để thành một CTO giỏi thì cần phải hiểu được ba yếu tố đó và cân bằng được cả ba.
Những chia sẻ và kinh nghiệm riêng của CTO tại Ticketbox
Khi nào thì nên ra quyết định dựa trên dữ liệu, khi nào thì dựa trên giả định? Ưu khuyết điểm của mỗi loại là gì? Tại Ticketbox thì hướng nào được sử dụng nhiều hơn?
Quyết định dựa trên dữ liệu và dựa trên giả định không phải là hai thứ khác nhau mà nó là hai skill nhiều khi làm cùng 1 lúc, mình không nên phân định ra bạn này là data-driven, còn bạn này là tương đối, cảm tính, tại vì mục tiêu cuối cùng tại sao nói về chuyện cảm tính hay là giả định. Lại quay lại về chuyện bây giờ vai trò là CTO thì trong tay mình có thời gian, mình có cả thời gian của team mình, nhân lực của mình, ví dụ như 1 người 8 tiếng thì 10 người nhân lên là 80 tiếng, thực ra thì nó cũng có thể chuyển đổi thành tiền, tại vì 1 tháng là 80 người thì mình nhân lên thì sẽ biết được nó lớn như thế nào, ra sao.
Vai trò CTO ở đây là trở thành một nhà đầu tư, nhà đầu tư mới 80 tiếng trong tay đó hay là chuyển đổi thành tiền thì mình đầu tư như thế nào thì thứ nhất là nó tạo giá trị nhiều nhất và cái thứ hai là nó bớt rủi ro nhất, thì đầu tư cũng thế. Tất nhiên nguyên tắc đầu tư rõ ràng không thể có công thức tính toán hết mọi thứ thì ai cũng giàu rồi, thực tế như thế và nó luôn luôn sẽ theo kiểu là, một phần nào đó mình có tính toán để mình giảm rủi ro và một phần nào đó là cảm tính.
Tương tự như vậy ở TicketBox, tụi mình vẫn tồn tại 2 thứ đó, với những dữ liệu data có được thì tụi mình dựa trên đó để giảm rủi ro mà cuối cùng vẫn dựa trên kinh nghiệm quan sát mọi thứ xung quanh về thị trường, cách nhìn thị trường và technology nào phù hợp, và quyết định sử dụng lựa chọn đó. Và một phần nữa nhiều khi mọi người cứ nghĩ dữ liệu là những gì nó được tích trữ trên Database, hay những dữ liệu tính toán, bản thân mỗi người kinh nghiệm họ đi làm bao nhiêu năm, 5 năm hay 10 năm thì bản thân họ cũng là Database, họ cũng có dữ liệu như thế và thậm chí dữ liệu đã đúc kết sẵn rồi, có nghĩa là làm A chắc chắn là fail, làm B chắc chắn là fail, thì khi đó bàn A, B, C thì mình gạt bỏ A, B đi, mình làm C thôi, thì đó cũng là kiểu quyết định trên dữ liệu rồi, nhưng mà những yếu tố thành công mình để ý là luôn luôn dựa trên yếu tố may mắn rất nhiều và may mắn thì chính là giả định. Thì đó là cách tụi anh làm việc và sử dụng dữ liệu như thế nào, ra sao!
Khi giữa 2 bên Tiki và Ticketbox cộng tác cùng nhau thì có sự khác nhau trong tư duy hay không và nếu có thì anh đã làm gì để khắc phục?
Thực tế mình nghĩ các công ty đều giống nhau hết nhưng mà mỗi công ty đều có một văn hóa và cách thức vận hành, hoạt động khác nhau, thì đó cũng là yếu tố tạo nên thành công và tồn tại của công ty đó.
Tiki thì có những văn hóa, yếu tố giúp Tiki tồn tại 10 năm, TicketBox cũng thế, cũng có yếu tố văn hóa để giúp TicketBox tồn tại được trong vòng 7 năm. Đến hiện tại bây giờ thì rõ ràng là như thế khi 2 công ty cùng giao hòa với nhau thì cũng sẽ có những đặc điểm chung, cũng sẽ có những điểm khác. Điểm khác thì cũng tùy thôi, có những điểm khác tạo nên sự thành công của TicketBox, cũng có điểm khác tạo nên sự thành công của Tiki. Với những kết quả đó thì mình cố gắng giao thoa những điểm tốt nhất có thể chứ không phải mình loại trừ đi, không phải Tiki làm tốt, làm xấu là dành hết cho TicketBox hoặc là mình chỉ chọn những gì tốt của Tiki, cũng tương tự ngược lại như thế, TicketBox cũng thế, cái tốt cái xấu thì mình cố gắng làm sao mình có nhiều nền văn hóa, cách thức hoạt động tốt nhất có thể.
Mình nói văn hóa là từ đúc kết vậy thôi, văn hóa thực chất là do con người tạo ra, cách ứng xử của các thành viên trong team tạo nên chuyện đó và cách ứng xử của họ với công ty đó đã quen từ trước giờ rồi, thế nên nếu mà có trường hợp thay đổi thì nhất thiết mình phải làm họ hiểu tại sao tôi phải làm như thế, tại sao tôi phải suy nghĩ như vậy. Thứ hai là mình dễ dàng cho họ làm thử để họ biết được chuyện đó, đó là một số điểm khó khăn khi giao thoa văn hóa của hai công ty.
Anh có thể nói rõ hơn chỉ số đo lường hiệu quả là những gì không?
Thực ra nếu nói chỉ số thì chắc có cả ngàn chỉ số, và mình dùng cả ngàn chỉ số đó để đánh giá sản phẩm thì nó cũng không đúng, và chưa chắc chỉ số đó thể hiện thành công của sản phẩm, và thứ hai nữa là để hiển thị được cả ngàn chỉ số đó cũng rất phức tạp chứ không phải là ai cũng làm ra được chuyện đó. Quay lại về chuyện đó là business mình hướng tới đâu, sản phẩm mình xây như thế nào. Business mình hướng tới đâu thì để mình biết là điều thể hiện thành công của business đó là cái gì, ví dụ như thể hiện thành công của business đó là về mặt người dùng thì như vậy chỉ số liên quan phải về người dùng; còn nếu business đó liên quan đến lợi nhuận thì những chỉ số liên quan cũng phải liên quan đến mặt lợi nhuận, hoặc những cái mang tính về branding thì những hoạt động liên quan đến branding thì mình không thể nào lấy chỉ số về performance để đánh giá hoạt động branding như thế. Vậy mình build những sản phẩm liên quan và những sản phẩm đó mình mới bắt đầu thể hiện ra được là chỉ số nào biểu hiện ra được như vậy.
Ví dụ bây giờ mình dựng một tính năng để cho phục vụ tăng trưởng người dùng lên, như vậy topline của mình là về người dùng, thứ hai nữa để định nghĩa là người dùng thích sản phẩm này, họ phải tương tác với nó, như vậy mình cần cung cấp cái gì để họ tương tác, ví dụ như bây giờ chúng ta có like, comment, reaction thì đó là những thứ cung cấp cho tương tác: số lượng like, số lượng reaction là một cách thể hiện như vậy, hoặc mình ra sản phẩm mà để chiếu video thì mình cần định nghĩa video của mình hấp dẫn hay là sản phẩm dễ dùng thì khi người ta xem tới cuối mà lúc đó Time play video lại yếu tố đó để phản ánh những chuyện đó. Những chỉ số đó để làm gì? Quay lại câu hỏi khi nãy: tất cả những gì mình làm thì cần phải có assumption (giả thuyết), những chỉ số đó nó thể hiện rõ assumption đó có đúng hay không.
Những bạn làm business thì sẽ biết xây dựng những thứ liên quan P&L (Profit and Loss), ví dụ để có doanh thu cùng giả thuyết commission bằng 10% (ta mượn 100$ thì lợi nhuận là 10$) nhưng đó là ở assumption thôi, ra thực tế thị trường thì các đối tác chỉ trả được 7%.
Bằng cách như thế thì những chỉ số sẽ thể hiện rõ assumption, thì mình sẽ thấy khác bằng nguồn lực ban đầu mình dự định, thì mình phải sửa lại kế hoạch của mình. Và tính xem có sản phẩm nào phù hợp không để mình làm. Nó kết nối câu chuyện nãy nói về assumption, sản phẩm, chỉ số như thế nào, nó có sự liên kết với nhau ở chỗ đó.
Trong vị trí Director of Engineer tại Tiki có 1 công việc là chuyển từ UX sang PX (Personalized Experience). Anh có thể so sánh 2 khái niệm này cũng như tầm quan trọng của PX là gì không?
Thực ra mình không nên nhìn hai khái niệm đó là hai cái khác nhau, như là nếu tôi chọn cái này thì tôi không chọn cái kia.
Mình nên nhìn theo hướng tùy theo vấn đề mình giải quyết như thế nào và hiển nhiên, muốn lên được PX thì UX của bạn làm tốt trước đã. UX làm tốt nghĩa là sao, có nghĩa là người dùng dễ sử dụng, họ tiết kiệm thời gian trong việc đạt được mục tiêu họ mong muốn, bằng cách mình tổ chức nội dung website, thể hiện nút bấm như thế nào, thể hiện thông tin rõ ràng, tương tác nó dễ dàng hơn, thì đó là việc UX làm tốt. Nhưng mà sẽ có thời điểm mà khi bạn làm UX thấy bão hòa với lại bạn đổi nút lên trên nó cũng vậy, đổi nút xuống nó cũng vậy.
Anh nói ví dụ bây giờ Tiki chẳng hạn, trong suốt 10 năm có khoảng gần 20 triệu khách hàng, trung bình 1 năm cỡ 5, 6 triệu, nếu mà mình đánh đồng 5 triệu khách hàng đó theo một kiểu thì chắc chắn mình sẽ hài lòng một nhóm nào đó, và cũng sẽ không hài lòng một nhóm nào đó, như vậy mình cũng khó duy trì lâu dài được, lúc đó PX mới nhảy ra, bảo một chuyện là tôi không đối xử với mọi người như nhau, tôi đối xử cá nhân hóa theo mỗi người.
Ví dụ bạn là phụ nữ, bạn vào bạn sẽ quan tâm về mặt thời trang và những sản phẩm về trang điểm thì nếu hiển thị cho bạn về máy tính, điện thoại thì như vậy không hiệu quả mà bạn còn mất thời gian đi tìm kiếm các sản phẩm liên quan đến thời trang và tạo tương tác dài ra, và nhiều khi bạn cũng cảm thấy khó chịu nữa. Hoặc một phần nữa bây giờ mobile phát triển, Tiki có hơn 1 triệu sản phẩm, mà bây giờ màn hình mobile rất nhỏ, hiển thị chừng 5, 6 sản phẩm là cùng và để tìm sản phẩm như mong muốn thì phải lướt rất nhiều như thế, vậy bài toán đặt ra rằng là làm thế nào để 5, 6 sản phẩm đầu tiên mà khách hàng thấy được là đúng với cái họ mong muốn, và chỉ cần 1 click thôi là đã mua được sản phẩm mà khách hàng cần, thì PX là như vậy.
Hiển nhiên khi mình làm UX tốt, scale người dùng, scale sản phẩm, có sự tăng trưởng lên thì PX mới có giá trị, ví dụ bạn có 5 sản phẩm, Users bạn có 10 người, bạn đầu tư PX thì đằng sau đó là những thứ rất phức tạp, đầu tư như vậy thì nó cũng tạo ra sự hiệu quả về chi phí, về thời gian.
Tiki đã tối ưu hóa trải nghiệm của người dùng như thế nào?
Quay lại cái ví dụ vừa nãy là về chuyện Tiki đang đã có hơn 1 triệu sản phẩm, 1 đặc điểm nữa là mình phải thấy về mặt thị trường, người dùng Việt Nam sử dụng mobile nhiều hơn, thậm chí thị trường Việt Nam sẽ khá giống với Trung Quốc, khác với phương Tây là họ sử dụng từ máy tính chuyển sang mobile. Còn ở Việt Nam hay Châu Á nói chung là người ta sẽ xài mobile trước, để ý thì nhiều người họ có điện thoại còn trước khi họ có máy tính.
Màn hình điện thoại chỉ hiển thị được 5, 6 sản phẩm cùng 1 lúc, và với 1 triệu sản phẩm thì câu hỏi: làm sao để mà người dùng khi họ mở app lên, họ tìm được sản phẩm họ muốn ngay lập tức, nhanh nhất có thể, nếu dùng yếu tố con người thì hoàn toàn là không thể nào làm được, thì những tính năng như recommend (gợi ý) sản phẩm dựa trên những hành vi trước đó người dùng dựa trên xu hướng, xu thế người dùng, thì tụi MÌNH tính toán ra để biết là, thí dụ em là khách hàng, một khách hàng nữ, xu hướng hiện tại của mọi người thích như này thì sẽ recommend một số sản phẩm em có thể thích, để tìm sản phẩm của em nhanh nhất có thể, như mục tiêu của Tiki là ‘tìm kiếm’ và ‘tiết kiệm’, và tiết kiệm ở đây không chỉ là tiền mà còn về thời gian nữa, và đó là thứ mà anh cố gắng làm nhiều nhất để làm sao em tìm được sản phẩm nhanh nhất, và khi em đã tiết kiệm thời gian thì em có thể làm được nhiều thứ khác giá trị hơn, cho xã hội và cộng đồng.
Anh có thể chia sẻ “bí thuật” nào đằng sau công nghệ làm cho hệ thống vẫn chạy ổn định không bị lỗi error 404, bị lag hoặc “sập nguồn” không?
Thì nói ra chuyện này như công nghệ liên quan, thì mình tin là nó không có gì mới lạ với tất cả các đọc giả, như thực tế là như vậy, và cũng không gì đặc biệt lắm. Nhưng cách làm sao để mình giải quyết vấn đề đó trong thời gian ngắn, và thứ hai là chi phí làm sao hiệu quả, thì mình nghĩ đó là chuyện mà tụi mình đang làm tốt. Như em biết là khi mình build một hệ thống lên nó rất là nhiều khía cạnh, những khía cạnh khác nhau, những điểm khác nhau, thì câu chuyện khi mà traffic lớn nó vào một website hay là một app/hệ thống nó sập nó nằm ở cái chuyện ở nút thắt cổ chai ở một số điểm của hệ thống, thì nhiều khi nó đơn giản thì mắt thường có thể nhìn ra được, nhưng ở những hệ thống lớn phức tạp thì không thể nhìn bằng mắt thường được, nó có sự liên kết chuỗi khác nhau.
Anh nói thí dụ về Ticketbox, thời gian mà tiếp quản thì hiển nhiên là khả năng truyền tải nó ở một mức nhất định thôi, nó không thể nào mà khít được như những cái xâu hiện tại, và tất nhiên là nó có những tình huống mình thấy là nó không thể chịu nổi ở chuyện đó, và điều mà tụi mình tự hào nhiều nhất là về khả năng instrumental có nghĩa là khả năng mà mình có những dữ liệu, hệ thống để mà đo đạc và phân tích, biết được những vấn đề nó nằm ở đâu.
Anh nói ví dụ bây giờ là như Ticketbox chẳng hạn, mọi người cứ nhìn vào thì cứ tưởng rằng là traffic vô khi mà đặt vé thì đó là nắp cổ chai, mua đặt vé thì lúc đặt vé thì nó cần phải xử lý giao dịch đồng bộ, thì nút thắt ở đó, và mình tìm cách sửa chuyện đó ở đâu. Nhiều khi những hệ thống về báo cáo, phân tích của tụi mình nó là câu chuyện khác, là bây giờ khi mà khách hàng đi vào trang chi tiết sự kiện thôi, mà trong trang đó nó đã gọi rất là nhiều thứ, tới một hệ thống chính, database chính, thì dẫn tới nó đã quá tải ở khúc đầu đó rồi, thì chuyện nó tệ hơn nữa khi người dùng vào màn hình cuối cùng thanh toán, nó còn làm tệ hơn, và kết hợp hai cái đó nó làm điểm yếu của hệ thống. Đơn giản là tụi mình chỉ fix ở trang traffic vào nhiều nhất và đảm bảo là mình có thể truyền tải rất là nhiều và nó không tác động tới flow đằng sau nó, và cái flow đằng sau mình fix lại thì mình có khả năng mà service traffic lớn, đồng thời là khả năng đặt vé cùng một lúc nó giải quyết được.
Vấn đề ở đây nó không có gì đặc biệt hết, chỉ là những cái về mặt instrumental, về mặt định lượng nó đo lường được, về mặt hệ thống mình có thể xoay được những cái chỗ lách được và những chỗ cần lấp vào và tập trung fix những chuyện đó. Đó là những cái điểm mà mình xử lý, và ngoài ra nói về scale thì thật ra là do những hệ thống cloud, đám mây bây giờ, nó trở nên rất là dễ dàng, thí dụ mình có nhiều người vào thì chỉ đơn giản mình bỏ thêm tiền cho tăng lên chẳng hạn. Vấn đề mình đặt ra tiếp theo nữa là bây giờ nhiều traffic vào mà chi phí của mình nó vẫn không biến đổi, một là nó giảm hay là nó không tăng lên, thì câu hỏi làm sao thì tụi mình làm khá nhiều thứ để đảm bảo chuyện đó.
Anh có thể phân tích vị trí CTO và Product Manager cho mọi người có thể phân biệt?
Định nghĩa về CTO thì mỗi công ty nó cũng có sự khác nhau, nếu mà gạt sang một bên việc là về Title đi – trách nhiệm công việc là gì, thì sẽ có những công ty, đại khái sẽ cần một người rất là “deep” về Technical, hiểu về công nghệ, sản xuất về công nghệ, đại khái là hiểu công nghệ, enable công nghệ đó cho công ty đó và thứ hai nữa là cần có người hiểu về công nghệ đó và biết được insight về business, insight về khách hàng để xây dựng sản phẩm đó, thì những công ty đó nó sẽ có ông PM (Product Manager) riêng hoặc là CTO riêng, và hai ông kết hợp với nhau để mà cho cái business đó.
Tất nhiên cũng tùy, có những công ty khác là chỉ có một ông CTO thôi và ổng biết cả hai, tất nhiên là ổng không phải làm hết mà ổng sẽ có một bạn mạnh về tech hay về product, và trách nhiệm của ổng là kết hợp hai người đó lại với nhau, và mình thì ở vị trí thứ hai nhiều hơn, nhưng để trả lời câu hỏi của em về chuyện nếu mà CTO chỉ thuần về tech và bạn product thuần về sản phẩm á, thì như em thấy rõ có sự khác biệt, thì trách nhiệm của bạn CTO như thế thì bạn ấy phải enable tech cần thiết để build sản phẩm mà công ty đang hướng tới, công ty muốn.
Ví dụ cụ thể như là một sản phẩm nổi tiếng như iPhone đi, muốn làm được một iPhone thì cần nhiều technology trong đó, thời đầu technology lớn nhất đó là màn hình scroll, và trên thị trường lúc đó tất cả các màn hình scroll khác rất là kỳ, nó không có bay đi mượt, trượt như kia, nhưng thực ra cái tech đó không phải là không có, mà có từ trước rất là lâu rồi, có những ông sau build được tech đó nhưng vấn đề là ổng chỉ dừng ở technology thôi, ổng không biết tạo thành một sản phẩm như iPhone để đưa được ra tới thị trường, thì chuyện dùng technology đó để tạo ra sản phẩm là vai trò của ông product, ông ấy sẽ biết cái tech đó ổng kết hợp để tạo ra một sản phẩm để mà nó có thể tạo ra sự đột phá, thì đó là sự khác biệt, tất nhiên là còn nhiều thứ khác nữa, nhưng đó là sự khác biệt rõ ràng nhất, để mình có thể chia sẻ được ở hai vai trò đó.
Khi đảm nhận vị trí CTO của Ticketbox, anh có khám phá được điều gì thú vị về thị trường đặt vé trực tuyến?
Như Ticketbox mình nghĩ nó chỉ là hệ thống bán vé thôi, nhưng mà sau này khi làm một thời gian thì nhận thấy mình đang làm cái chuyện thay đổi cả một thị trường. Em tưởng tượng là hồi xưa giờ, bán vé tổ chức sự kiện thì là quầy vé, khách hàng mua vé xong khách hàng vào trong chỗ tổ chức sự kiện diễn ra, thì cái đặc thù đó thì hồi trước là: quầy vé ở đâu thì người biết tới ở đó thôi, quanh khu vực đó thôi, mình làm Ticketbox 10 năm thì chuyển quầy vé sang online. Khi mà chuyển sang quầy vé online, nó sẽ tiếp cận được nhiều người hơn, và đó là vai trò Ticketbox trước giờ vẫn làm như thế.
Còn câu hỏi mở tiếp theo là nguyên một chuỗi tổ chức sự kiện như thế là mua vé rồi kiểm soát vé đi vào rồi xong tới lúc cần xem nội dung thì trước đây Ticketbox chưa cần hiển thị nội dung đó, nhưng mà gần đây tụi mình cũng cố gắng làm việc đó luôn. Như em thấy là nguyên 1 chuỗi, từ cái chuyện là khách hàng tìm kiếm nội dung giải trí, mua vé và consume, đó là vai trò trách nhiệm của tụi mình và bây giờ là chuyển đổi từ offline sang online, nó giống như là tất cả các công ty online hiện tại bây giờ, giống như TopDev thôi, cố gắng chuyển đổi chuyện là tìm việc, kiếm việc như ngày xưa là ở những trung tâm việc làm như thế thì nhiều khi nó bị giới hạn về địa lý, nghịch lý này nọ. Cho nên online thì nó sẽ mở rộng hơn, nó sẽ đa dạng hơn, nó tạo đà phát triển hơn cho nền kinh tế của mình.
Đầu tiên là nói về công nghệ của anh Sơn, anh Sơn là CEO ở Tiki, thì anh muốn phục vụ dân Việt Nam với mọi nhu cầu thì trước giờ 10 năm thì Tiki làm rất là tốt chuyện phục vụ nhu cầu căn bản, tức là về chuyện mua sắm hàng hóa hoặc là mua dịch vụ, thì Tiki đang làm tốt chuyện đó, và để mở rộng hơn nữa thì Tiki muốn không chỉ vấn đề về nhu cầu như thế nữa, và mở rộng hơn nữa còn về vấn đề tinh thần nữa, Tiki muốn hướng tới đại khái là phục vụ người dân Việt Nam về nhu cầu tinh thần nữa, thì anh thấy có những hoạt động Tiki đi cùng Sao Việt ngoài ra thì đó cũng là lí do về sao Tiki nghĩ tới Ticketbox, và muốn Ticketbox tham gia cùng với công ty để làm chuyện đó, Tiki hoàn toàn có thể tự làm, nhưng nó sẽ mất nhiều thời gian hơn, và nó có thể sẽ làm mất sự tập trung của Tiki và thành ra chính vì thế Tiki quyết định là cùng đồng hành với Ticketbox. Mang lại nhu cầu tinh thần tốt hơn cho người dân.
Theo anh, việc sáp nhập Ticketbox vào Tiki có ý nghĩa như thế nào? Đến nay đã đạt được những thành tựu gì?
Thì tất nhiên là về mục đích của Tiki mong muốn là mang lại nhu cầu giải trí cho người dân Việt Nam, thì chuyện này nó cũng mang lại một phần nào đó tín hiệu về những dữ liệu mà tụi mình biết được, tất cả những dữ kiện liên quan tới nghệ sĩ lớn hay là những chương trình hội thảo, hay là những sự kiện đại khái mang tính giải trí, thì các bên đều tham gia hợp tác cùng Ticketbox hiện tại bây giờ. Có nghĩa là TicketBox thành một nơi mà mọi người có thể lên đọc, nếu họ có nhu cầu về giải trí họ có thể lên đó họ có thể tìm kiếm về nội dung giải trí.
Trước mắt không phải chỉ ở sự kiện không, thời gian vừa rồi tụi mình cũng có thêm là về phim ảnh nữa, tức là khách hàng có thể lên đó, xem về nội dung liên quan đến phim ảnh và có thể mua vé đi coi phim ở bên ngoài, thì đó là bước và những việc đã làm được, và nếu mà nói về một cách định lượng để mà thể hiện chuyện đó thì những thông tin mà mình chia sẻ, thí dụ bạn Đen làm việc với tụi mình, bán được vé như thế nào ra sao, thì đó là một định lượng bên ngoài để nhìn vào đánh giá điểm mà mình nói.
Lời khuyên dành cho các Engineer tương lai
Trong quá trình làm việc với các bạn trẻ, anh có nhận thấy còn một ít những bạn có tư duy đang hiểu sai về công việc của 1 Engineer?
Quay lại chuyện trách nhiệm của anh em Engineer Tech là mình chuyển đổi từ những cái gì mà nó mang tính vật lý nó mang tính offline lên nội dung online, như thế thì bạn đóng vai trò rất nhiều và triển khai chuyện đó, thì quan sát có 1 chuyện là sẽ có nhiều bạn nghĩ công việc của tôi nhận được yêu cầu viết gì tôi làm đó và tôi không có sự sáng tạo hơn nữa trong chuyện đó, thì mình nghĩ đó là điểm mà anh sẽ không lựa chọn. Mình rất thích các bạn có những sáng tạo về ý tưởng, thí dụ chúng ta đang nói chuyện với nhau như thế này, và khi mình sáng tạo qua online thì mình có thể dùng qua email, qua call chẳng hạn thì đó là những idea để mà nó thay đổi chuyện communication.
Nếu em đọc trên tất cả các bài báo nó liên quan tới những công nghệ đó thì được xuất phát từ các bạn engineer, các bạn làm ra một idea, một demo check thôi, các bạn làm ra thành một sản phẩm lớn thay đổi mọi thứ. Đặc điểm mình thấy nhiều khi các bạn engineer hay nghĩ đơn thuần, tôi chỉ làm theo yêu cầu, tôi không phải là những người có thể tạo ra ý tưởng thay đổi mọi thứ.
Không ít bạn mong muốn trở thành một Product Manager giỏi, anh có thể chia sẻ resources (sách, tài liệu,…) mà anh tâm đắc giúp các bạn đang theo đuổi con đường này không?
Sẽ không có 1 trường lớp nào cụ thể học hỏi để trở thành Product Manager cách cụ thể như thế, PM thuộc về kinh nghiệm nhiều hơn, ví dụ bây giờ Tiki chẳng hạn, từ trước giờ là mình có bán sách vật lý và câu hỏi là bây giờ tôi cũng muốn làm cho khách hàng có thể mua và đọc sách online thì bây giờ giải pháp như thế nào? Trên cả một thị trường như thế này thì trước giờ chưa có một nền tảng sách online nào để chứng tỏ là không ai có kinh nghiệm gì liên quan trên đó, rõ ràng nếu mà gọi là mình chọn một bạn và nói bạn là PM giỏi liên quan tới sách sai, vì thực tế không có sản phẩm nào liên quan thôi, thì như vậy anh suy nghĩ một chuyện nữa nếu như vậy thì resource tốt nhất nên là bạn theo một công ty nào đó có business requirement liên quan tới mảng bạn đang làm đó, trải nghiệm với nó, bạn xây nó, tối ưu hàng ngày thì từ từ bạn sẽ có kinh nghiệm liên quan tới chuyện đó.
Như mình làm khá nhiều về E-commerce thì nếu mà nói PM liên quan tới E-commerce, nên có một business nào đó muốn làm về E-commerce thì mình nghĩ có thể E-commerce tốt được, nhưng bây giờ nói là mình chuyển sang một ngành khác như Ride-hailing (kết nối tài xế và hành khách, ví dụ: Uber, Grab,…) chẳng hạn, nói anh là Group manager liên quan tới E-commerce nó cũng đồng nghĩa với Group manager liên quan tới Ride-hailing thì nó có thể rất là sai. Tất nhiên là mình có thể làm được chuyện đó khi trải nghiệm qua business đó, thì cách tốt nhất là các bạn nên làm ở một công ty product có sự tăng trưởng, thứ hai hiển nhiên các sản phẩm liên quan đó không phải là cái mới ở thị trường Việt Nam, thì mình phải đi học hỏi bên ngoài.
Rất cảm ơn phần chia sẻ của anh Nguyễn Hoàng Việt về quá trình làm việc tại TiKi và những câu chuyện thú vị về TicketBox. Hy vọng trong tương lai, sẽ ngày càng có nhiều ngành nghề có thể chuyển đổi phương thức từ dạng offline sang online, gạt bỏ những vấn đề địa lý và khó khăn vật lý. Và nếu các bạn còn muốn tìm hiểu “bí thuật” gì tại TiKi hay TicketBox, hãy recommend cho TopDev nhé.
Các vòng trong quy trình tuyển dụng được tạo ra để giúp nhà tuyển dụng một cái nhìn rõ ràng nhất về chân dung ứng viên, từ đó họ tạo ra các chế độ lọc ứng viên phù hợp. Càng nhìn thấu ứng viên, họ càng dễ đưa ra các quyết định tuyển dụng và càng chắc chắn về sự đúng đắn của quyết định về sau. Nhưng riêng đối với ngành IT, để tìm ra được ứng viên phù hợp nhất không thể chỉ dừng ở các mô hình tuyển dụng thông thường. Hãy cùng TopDev có cái nhìn sâu hơn ở các khâu đánh giá và sàng lọc ứng viên tốt nhất trong năm 2024.
Hậu quả khi đánh giá ứng viên sai
TopDev sẽ nói về 2 trường hợp đánh giá ứng viên chênh lệch mà nhân sự viên đang mắc phải :
1. Đánh giá “Cao hơn năng lực thực tế” – Nhận “nhầm” người “giỏi”
Chuyện tuyển chọn “sai người” là cái mà nhân sự viên đang phải chịu nhiều ảnh hưởng nhất. Bản thân doanh nghiệp phải tốn rất nhiều thời gian và ngân sách để tuyển được một vị trí IT, tuy nhiên không ít lần nhân sự phải thở dài ngao ngán khi đụng phải tình huống 2 chữ “sai người”.
Nhận sai người có những ảnh hưởng không nhỏ đến tình hình vận hành và nhân sự liên quan của doanh nghiệp:
Tốn chi phí & nguồn lực của công ty: Quy trình tuyển mộ nhân tài IT của một doanh nghiệp có thể đơn giản hoặc phức tạp tùy mô hình và cấu trúc doanh nghiệp.
Để tìm lấy CV bạn có thể tự đăng tuyển hoặc sử dụng dịch vụ tin đăng & tuyển dụng tuỳ mức độ yêu cầu công việc; đến Phỏng vấn tuyển được một vị trí thì tối thiểu công ty đều cần ít nhất từ Quản lý nhân sự, đến cấp Tech Leads hoặc quản lý trực tiếp vị trí, và có thể đến cả Quản lý cấp cao tại một số công ty IT thị trường như Nhật, Hàn,… Việc này không dễ để xúc tiến, và nếu như nhầm 1 bước thì sẽ có tiêu tốn quá nhiều nguồn lực của doanh nghiệp.
Ảnh hưởng workload và teamwork: Nhân sự đâu chỉ tuyển 1 – mà có thể lên đến gần chục vị trí IT cho vận hành sản phẩm doanh nghiệp. Dù cho công ty outsourcing hay product thì một khi đã cần thêm hoặc thay nhân sự đều ảnh hưởng không nhỏ đến khối lượng và chất lượng của công việc hiện tại.
Chuyện tuyển “sai người” không chỉ trì trệ chất lượng công việc, vừa mất thời gian và công sức bạn đầu tư vào đào tạo nhân sự mới, mà còn nội bộ các nhân viên đồng đội hiện tại sẽ chịu không ít ảnh hưởng vì phải phân chia công việc lại, nhân sự quản lý và tinh thần team không tốt khi thay đổi người ra vào liên tục.
2. Đánh giá “Thấp hơn năng lực” – Bỏ lỡ nhân tài
Đáng tiếc thay, một bài toán không đáng xảy ra nhưng cũng từ việc đánh giá “cao hơn năng lực” nhiều CV mà nhân sự đã bỏ lỡ mất nhiều CV đáng giá. Có thể nhiều CV không được trang bị hào nhoáng và “đủ ấn tượng” mà nhân sự sẵn sàng bỏ qua, nhưng cũng chính vì thế mà nguy cơ chọn sai người cũng cao lên, để lại không ít hậu quả “đậm” cho doanh nghiệp:
Ứng viên “giỏi” có ấn tượng tiêu cực về Brand: Đặc biệt từ vòng Ứng tuyển, khi chưa được tiếp xúc với nhà Tuyển dụng để thể hiện mình, với một bạn kinh nghiệm nhiều, hoặc có thể ít kinh nghiệm hơn nhưng thực hiện các project chuyên sâu nhưng thể hiện lên CV chưa “đủ đẹp” thì sẽ thua ngay từ vòng đầu.
Không chỉ tạo một sự không rõ ràng về, mà ứng viên sẽ bối rối về cơ chế và tiêu chí tuyển dụng của công ty từ đó tạo nên một ấn tượng không tốt về hình ảnh Employer của công ty. Bất cứ lập trình viên nào cũng là một đại diện cho cộng đồng lập trình viên, vì thế hình ảnh Employer tích cực với bất kì ứng viên nào cũng là quan trọng, đặc biệt với các Doanh nghiệp lớn và có quy trình xây dựng thương hiệu Employer quan trọng.
Ảnh hưởng workload performance: Khối lượng công việc và chất lượng quy trình sẽ bị ảnh hưởng ít nhiều khi tuyển không đúng người. Cũng như việc đầu tư vào sai người, sẽ tiêu tốn nguồn lực và thời gian của tất cả các team có trong quy trình tìm kiếm nhân tài. Có được một người đồng đội tiềm năng là điều mà đội ngũ tech nào mong muốn.
Ảnh hưởng KPI tuyển dụng: Việc kéo dài quy trình tuyển dụng để tìm “đúng” người cũng sẽ kéo dài thời gian để bạn đạt được mục tiêu tuyển dụng theo Tháng / Quý/ Năm của mình đã đề ra từ đầu năm 2024. Là một năm không thuận lợi từ nhiều yếu tố không thể kiểm soát được như dịch bệnh, nhân sự cần phải minh bạch và rõ ràng trong quy trình tuyển dụng hơn gấp nhiều lần để sử dụng nguồn ngân sách tối ưu nhất.
Trường hợp nào cũng sẽ để lại những ảnh hưởng không nhỏ đến thương hiệu nhà tuyển dụng cũng như Công sức tuyển dụng xây dựng đội ngũ của doanh nghiệp. Không chỉ 1 – Nhân sự viên và Doanh nghiệp mất đến 4 yếu tố làm nên thành công của một quy trình tuyển dụng IT hiệu quả:
Mất NGUỒN LỰC thời gian và ngân sách cho kết quả không đạt mong đợi
Mất CƠ HỘI DUY TRÌ giữ vững hình ảnh Employer tích cực – chuyên nghiệp
Mất NHÂN TÀI phù hợp về cho đội ngũ
Mất HIỆU SUẤT công việc và nhịp vận hành của cả đội ngũ Tech lẫn Doanh nghiệp
Từ đó, nhìn lại chặng đường tuyển dụng IT nửa năm qua, nếu như có gặp phải những trường hợp này, nhân sự viên cần phải điểm lại các lưu ý quan trọng và tìm hiểu thêm một số phương pháp đánh giá ứng viên kiểu mới đảm bảo chính xác hơn và áp dụng được với doanh nghiệp để đảm bảo không bỏ lỡ nhân tài công nghệ nào trong mùa “Ứng tuyển Vàng” tháng 9-10 này.
Trước khi đi vào đánh giá ứng viên IT …
Xét riêng về khía cạnh sàng lọc ứng viên (screening) đầu vào để tiến vào các bước trong quy trình tuyển dụng, hiện tại vẫn còn không ít những hiểu lầm, hiểu sai về số năm kinh nghiệm cũng như level đầu vào của ứng viên.
Để tiến vào khâu đánh giá ứng viên, trước hết nhân sự IT cần hiểu rõ các mức kinh nghiệm của ứng viên Lập trình hiện nay:
* Tính tại thời điểm năm 2021
Số năm kinh nghiệm
Năm sinh ứng viên
Entry-level
Mới ra trường
1998
1 năm KN
1997
2 năm KN
1996
Mid-level
3 năm KN
1995
4+ năm KN
Từ 1994 về trước
Trong thời điểm chuyển giao tuyển dụng sang thế hệ Gen Z, các ứng viên có độ tuổi khoảng từ năm 1994-1996 thường vẫn bị hiểu lầm là cấp “Mới ra trường” – “Graduated”. Song trên thực tế, đây là các ứng viên đều đã có tối thiểu 2 năm kinh nghiệm nếu làm việc đúng ngành từ khi tốt nghiệp. Các nhà tuyển tuyển dụng IT cần tránh hiểu lầm tai hại này để không bỏ lỡ các hồ sơ có năng lực và phù hợp nhưng bị đánh giá là “thiếu kinh nghiệm”.
Những lưu ý về sàng lọc CV ứng viên IT
Một bảng mô tả công việc hoàn thiện thì cần đi kèm với một list các tiêu chí đánh giá ứng viên tương ứng hợp lý. Bảng tiêu chí này sẽ phụ thuộc vào mức độ phức tạp và yêu cầu riêng của từng vị trí, và người làm nhân sự phải đề ra cụ thể những yêu cầu cần có ở một ứng viên, trước mắt là qua CV – đơn ứng tuyển của họ.
Càng nhận được nhiều đơn ứng tuyển, thì bạn càng trở nên “tàn nhẫn” hơn. Vì thế, để nhanh chóng phát hiện ra những ứng cử viên tốt nhất trong kho CV này, hãy lưu tâm đến một số chi tiết dưới đây:
Scan tìm kiếm sự ổn định và phát triển trong quá trình làm việc cũ: Mỗi đợt tìm kiếm nhân sự mới đóng vai trò như một “khoản đầu tư” mới. Chắc chắn bạn sẽ muốn tìm một nhân viên có thể ở lại và hỗ trợ công ty bạn đủ lâu để có thể “hoàn” lại đủ khoản đã đầu tư vững chắc này.
Tìm kiếm các hồ sơ rõ ràng về việc học tập và kinh nghiệm trong lĩnh vực cụ thểtheo yêu cầu của vị trí. Lý tưởng nhất là bạn tìm ra những ứng viên đã từng giải quyết những thách thức/ vấn đề mà vị trí cần họ giải quyết để nhanh chóng lọt vào vòng trong.
Tìm kiếm những điểm “Không đạt” của các CV có thể sẽ nhanh hơn việc tìm các điểm thích hợp theo tiêu chí của bạn! Không khó để bắt gặp tình trạng “mò kim đáy bể”, tìm mãi nhưng không được ứng viên phù hợp nhất. Thay vào đó, HR hoàn toàn có thể scan qua CV theo những tiêu chí “không phù hợp” và tập trung hơn vào số ứng viên tiềm năng không rơi vào những tiêu chí đó,.
Một số tiêu chí để đánh giá “Không đạt” điển hình:
Khoảng cách thời gian làm việc giữa các job (Employment Gaps)
Không chú ý đến chi tiết – Kỹ năng và kinh nghiệm không thống nhất
Nhảy việc nhiều trong thời gian ngắn (Lý do?)
v.v…
Đây là giai đoạn đầu tiên nhất để tìm ra các ứng viên tiềm năng có thể đồng hành cũng đội ngũ, vì thế càng rõ ràng thì quy trình sàng lọc và tuyển mộ mới được tối ưu về thời gian và chi phí.
Coding Assessment – Bài thực hành code đánh giá năng lực
Với đặc thù của ngành IT, chúng ta đều hiểu rằng cách tốt nhất để tìm được ứng viên mới đó là phải trực tiếp test kỹ năng quan trọng nhất của vị trí đó, chưa kể là thông qua những phần kiến thức cơ bản để giúp nhà quản lý nhanh chóng biết được ứng viên có thể và không thể làm gì.
Nền tảng tích hợp đánh giá ứng viên IT mới TopDev x HackerRank
Những bài thực hành đánh giá này có thể giúp đơn giản hóa quá quy trình tuyển dụng lập trình viên của bạn rất nhiều. Đểxây dựng nên Bài thực hành đánh giá cho một kỹ năng nhất định, bước đầu hãy thảo luận với Quản lý trực tiếp của vị trí, hoặc cùng một Senior Engineer cùng SOW (scope of work) của vị trí bạn đang tuyển. Cái ta cần lúc này là một sườn các yêu cầu một ứng viên phải có kiến thức và kĩ năng để giải quyết được các challenge có liên quan đến vị trí và họ đang ứng tuyển.
Điều quan trọng là phải sử dụng chúng theo cách phù hợp với công ty của bạn – không có một cách tiếp cận nào áp dụng được với tất cả mọi người. Các bài coding assessment này thì không khả thi khi áp dụng chỉ 1 bài cho nhiều vị trí. Nếu xây dựng nhiều bài test phù hợp cho từng vị trí, bạn cũng sẽ phải tốn không ít thời gian và công sức để hoàn thiện được một bộ Assessment hoàn thiện và đầy đủ.
Hiện nay có không ít các đơn vị chuyên cho ra Coding Assessment ra đời, cung cấp cho bạn đa dạng các bộ challenges hỗ trợ trực tiếp cho công tác tìm kỹ sư và lập trình viên của doanh nghiệp. Điển hình như HackerRank – một trong những trang web thực hành code và cung cấp các loại bài tập thực hành – đánh giá coding hàng đầu hiện nay.
Bằng cách cho phép các nhà tuyển dụng mảng công nghệ và các nhà quản lý tuyển dụng đánh giá khách quan các nhân tài ở mọi giai đoạn của quy trình tuyển dụng, HackerRank giúp các công ty tìm kiếm các lập trình viên lành nghề và giúp họ đổi mới nhanh hơn.
Đơn vị nổi tiếng với việc kết hợp các lập trình viên với các công ty tuyệt vời và hữu ích cho cả công ty và nhân viên, với hơn 7 triệu lập trình viên tham gia trang web này.
“Đối với các doanh nghiệp lớn thì đối với mỗi vị trí có sẽ cần quy trình khác nhau, chính vì thế nhân sự viên nên phân định các yếu tố theo từng vị trí.”
Video Interview – Quy trình phỏng vấn đánh giá mới cho doanh nghiệp
Phỏng vấn ảo hoặc phỏng vấn qua Video đang ngày càng trở nên phổ biến hơn – ngày càng có nhiều công ty nắm bắt công nghệ để hiện đại hóa quy trình phỏng vấn của họ, nhận ra rằng họ có thể giảm thời gian thuê tới 50% nếu họ sử dụng video phỏng vấn khi tuyển dụng. Tận dụng phỏng vấn trực tuyến không chỉ giải quyết vấn đề phỏng vấn qua điện thoại không hiệu quả, mà còn hỗ trợ đắc lực cho công tác tuyển dụng trong mùa Covid-19.
Có 2 dạng Phỏng vấn quá video để nhân sự và nhà quản lý lựa chọn phù hợp theo từng vị trí:
Phỏng vấn một chiều (One-way video interviews)
Có thể dùng để thay thế phỏng vấn điện thoại (phone call) không hiệu quả. Các câu hỏi có thể hiển thị dưới dạng văn bản hoặc video, cho phép các ứng viên ghi lại câu trả lời của họ một cách thuận tiện để gửi cho nhà tuyển dụng hoặc thuê người quản lý đánh giá và có được bức tranh chính xác hơn về ứng viên ngay trong giai đoạn đầu của quá trình tuyển dụng.
Phỏng vấn video hai chiều (Two-way video interviews)
Cho phép cả ứng viên và người phỏng vấn phát trực tiếp trong thời gian thực. Phỏng vấn hai chiều có hiệu quả cao để khắc phục khoảng cách và tình huống khi các cuộc phỏng vấn vật lý có thể không thực hiện được, chẳng hạn trong mùa vụ dịch COVID-19
Việc ứng dụng Phỏng vấn Trực tuyến là không đơn giản. Người làm nhân sự khi tiến hành áp dụng Video interview cần phải chú trọng một số lưu ý:
Phải minh bạch rõ ràng với ứng viên: Trước khi tiến hành phỏng vấn, bạn cần phải thông báo trước, vd: về cách sử dụng công cụ, việc video có được lưu lại hay không, nêu rõ các vấn đề về privacy và giải đáp cho họ nếu thắc mắc.
Đặt trải nghiệm của ứng viên lên đầu: Hãy nhớ ưu tiên trải nghiệm của ứng viên – giới thiệu về công ty, cho phép họ record nếu có thể, tạo không khí và tương tác để họ không bị áp lực.
Chọn ra phần mềm phỏng vấn thích hợp: Hãy cân nhắc chọn một công cụ video phù hợp với quy mô công ty/ đội tuyển dụng, cũng như có thể đồng bộ với ATS (Applicant Tracking Software) hiện tại của công ty.
Một số công cụ điển hình hỗ trợ cho đội HR :
Harver (phỏng vấn 1 chiều): Nền tảng sàng lọc ứng viên với module phỏng vấn video cho phép phỏng vấn ảo với ứng viên. Các đoạn phỏng vấn có thể được thu lại và kết hợp với các bài test để đánh giá được kĩ năng nhận thức (cognitive test) và khả năng hòa nhập (cultural fit).
RecRight (phỏng vấn 1 chiều): Vừa là 1 ATS và là nền tảng tuyển dụng qua video recruitment. Cả 2 tính năng sẽ cùng hỗ trợ cho nhà tuyển dụng để quản lý và chọn lọc ứng viên hiệu quả, trên chỉ 1 kênh duy nhất.
InterviewStream (cả 2 loại) : Là một phần mềm tuyển dụng cho phép nhà quản lý và nhà tuyển dụng scan ứng viên hiệu quả và có thể hẹn giờ và tạo hướng dẫn riêng cho phỏng vấn từng vị trí.
Tái thiết quy trình đánh giá và tuyển dụng IT 2024
Theo khảo sát Mercer về giới nhân sự tại mùa dịch, gần 87% các công ty đều đồng ý phải thay đổi cách thức tuyển dụng của họ giữa lúc bùng phát COVID-19. Đây chính là thời gian để xem xét lại và tái thiết nó.
Nếu nhìn lại kế hoạch tuyển dụng mà bạn chuẩn bị kỹ lưỡng cho năm 2023 hồi cuối năm 2022 có lẽ không còn thực thi được nữa. Hãy review lại tổng thể kế hoạch tuyển dụng, và phối hợp với phòng IT để phân chia ra rõ: Những vị trí/ skill nào đang có nhu cầu tuyển gấp nhất để chọn phương pháp tuyển nhanh nhất, và các vị trí nào có thể đợi – tuyển dần sau.
Điều quan trọng nhất đó là, trong thời điểm hiện tại, Employer Branding sau dịch đóng một vai trò chủ lực trong việc quyết định sự lựa chọn của các ứng viên giữa hàng ngàn cơ hội đang có mặt trong biển việc làm. Làm thế nào để củng cố và xây dựng nên thương hiệu nhà tuyển dụng thật chuyên nghiệp, đậm chất IT mới nhưng vẫn công khai và minh bạch về những chính sách, phúc lợi và cơ hội cho nhân viên IT,… là điều mà đội ngũ nhân sự viên luôn hướng tới nhưng khó có thể một mình xây dựng nên được.
Các chương trình của TopDev đã và đang làm sẽ giúp cho đội ngũ nhân sự hoạch định chiến lược quảng bá và xây dựng hình ảnh một cách chuyên nghiệp và đúng angle mà chỉ có những người trong ngành mới hiểu, từ đó giúp công ty quảng bá văn hoá Employer Branding của mình một cách dễ hiểu và trực quan nhất đến với các bạn lập trình viên.
Việc củng cố quy trình đánh giá ứng viên IT tại các công ty công nghệ là công tác liên tục, cần người nhân sự luôn phải cập nhật và kiểm tra các phương pháp cũ cũng như các chiến lược mới để đảm bảo tìm được những ứng viên IT chất lượng nhất cho doanh nghiệp. Hãy đón đọc các thông tin cập nhật mới nhất về xu hướng & thị trường tuyển dụng IT tại Việt Nam trong năm 2024 cùng TopDev.
Áp lực công việc là chuyện mà bất cứ một nhân viên nào cũng phải đối mặt. Chính áp lực tạo ra sự căng thẳng. Thế nhưng căng thẳng không phải lúc nào cũng tiêu cực vì đôi khi nó có thể giúp tạo động lực để bạn hoàn thành nhiệm vụ nhanh chóng, hiệu quả hơn.
Điều chúng ta cần đề cập ở đây là khi căng thẳng trở nên quá lớn sẽ gây ảnh hưởng xấu từ chất lượng công việc cho đến cuộc sống cá nhân, sức khỏe tinh thần của bạn. Trong bài viết lần này, TopDev muốn đề cập đến một số bước giúp bạn giảm căng thẳng tại nơi làm việc.
1. Tạm dừng những việc đang làm
Điều đầu tiên chắc chắn người bệnh nên làm là tránh xa những áp lực do công việc gây ra cho mình triệu chứng căng thẳng.
Nếu thấy quá áp lực với những phân tích logic của ngành lập trình IT, thì hãy lập tức dừng lại ngay, bước ra ngoài phòng làm việc trong 1 khoảng thời gian ngắn chừng 15 đến 30 phút. Việc này giúp bạn có thể rời bỏ những suy nghĩ, những áp lực tức thời để có thể thư giãn tuyệt đối.
Với một nhân viên văn phòng, khoảng thời gian này có thể cùng đồng nghiệp uống trà và nói chuyện về cuộc sống một cách tích cực. Tập trung cho công việc là điều hoàn toàn tốt nhưng cũng cần có những khoảnh khắc quan tâm đến cảm xúc của bản thân. Nếu cảm thấy bản thân mình không đủ hứng thú và không thể làm tốt được ngay lúc đó thì có thể hoãn lại chốc lát để nghỉ ngơi và thư giãn. Cân bằng được điều này người bệnh sẽ giảm được những căng thẳng nhanh chóng và hiệu quả.
2. Xác định nguyên nhân
Nhiều người cho rằng điều này không cần thiết, tuy nhiên việc xác định các nguồn cơn gây ra sự căng thẳng là bước đi quan trọng trong quá trình loại bỏ những áp lực của nhân viên.
Theo nghiên cứu từ Hiệp hội Tâm lý Toàn cầu, một số yếu tố được cho là các nguyên nhân tạo ra sự căng thẳng liên quan đến công việc được kể đến như: mức lương thấp, khối lượng công việc dày đặc, môi trường hoạt động ít cơ hội phát triển, công việc thiếu sự thú vị và tính thách thức, các vấn đề về phúc lợi xã hội còn chưa được đảm bảo,…
Trong nhiều trường hợp, nhân viên khi gặp phải vấn đề căng thẳng, dường như họ cố tìm cách giải quyết theo cách của mình. Có những cách thức thiếu lành mạnh hoặc càng làm họ rơi vào trạng thái bế tắc. Để hạn chế điều này, bạn nên học cách nhận biết về dấu hiệu của sự căng thẳng.
Việc tự nhận thức giúp bạn xác định đúng trạng thái căng thẳng của tâm trí và tích cực làm việc để tìm ra cách đối phó tốt hơn, lành mạnh hơn.
3. Đánh giá thói quen giao tiếp & ghi lại hoạt động hằng ngày
Khi bạn đã bình tĩnh và xác định được căng thẳng liên quan đến vấn đề công việc thì bước tiếp theo chính là hãy đánh giá cách bạn làm việc và tương tácvới các đồng nghiệp. Mỗi một thay đổi nhỏ trong quá trình giao tiếp và tác phong làm việc của bạn có thể giúp thiết lập và kết nối tốt hơn với những người xung quanh đồng thời loại bỏ một số lo lắng.
Bạn sẽ chủ động giao lưu với đồng nghiệp để tạo sự liên kết xã hội hay bạn sẽ lựa chọn cách trốn đằng sau màn hình máy tính và hạn chế tiếp xúc? Hãy nhớ rằng bạn không cần phải là một người quá tích cực đi giao tiếp xã hội, tìm kiếm quá nhiều thứ trong một môi trường mở mà đơn giản là mỗi ngày, mỗi tuần, bạn được làm việc một cách vui vẻ và cảm thấy thoải mái nhất. Đừng ngại đưa ra những chủ đề nhẹ nhàng, thú vị để bắt chuyện. Điều này kích thích niềm vui trong công việc, giải phóng những năng lượng tiêu cực và sẽ giúp bạn đạt được hiệu suất làm việc tốt hơn.
Thực hiện giao tiếp hiệu quả là cách tốt nhất để bạn “thanh lọc” những suy nghĩ tiêu cực, những căng thẳng ra khỏi con người mình. Hãy tập cách giao tiếp nhiều hơn nhưng vẫn đảm bảo không vượt quá giới hạn cho phép. Bên cạnh việc giao tiếp, bạn có thể ghi lại những gì bạn đã trải qua trong một ngày. Nhớ lại xem những ai mình đã tiếp xúc, những gì mình đã làm để biết được bạn đang đi đúng hướng hay lạc lõng so với tiến độ thực hiện công việc chung của tập thể.
““Giữ nhiệm vụ với một danh sách việc cần làm là điều cần thiết để thành công và bảo vệ sức khỏe tinh thần nói chung. Trong thời đại kỹ thuật số, việc khi lại các nhiệm vụ của bạn trong ngày có vẻ tẻ nhạt, lãng phí và không cần thiết. Nhưng hãy tin rằng, những lúc áp lực, căng thẳng thì những gì bạn ghi lại lại tiếp thêm động lực thay đổi nhiều hơn.”
Chia sẻ của Austin Paley, Phó Chủ tịch điều hành tiếp thị tại Podible .
4. Quan trọng: Đầu tư nhiều hơn cho chính mình
Các thói quen hàng ngày của bạn thường có thể giúp đánh giá được mức độ căng thẳng của bạn. Việc phá vỡ những thói quen xấu và rèn luyện những điều tốt có thể giúp bạn cảm thấy thoải mái hơn trong ngày làm việc, tránh được tình trạng trầm cảm, căng thẳng tột độ. Dưới đây là một số thói quen tốt để áp dụng.
Lịch trình nghỉ vào ngày của bạn. Nếu bạn dán mắt vào chiếc ghế của bạn trong cả ngày làm việc và không bao giờ dành thời gian cho bản thân khỏi các công việc , bạn sẽ dễ bị căng thẳng hơn nhiều. Lời khuyên của chuyên gia là nên xây dựng các giờ nghỉ được cố định vào lịch trình hàng ngày – là cách bạn dành nhiều thời gian cho bản thân mình trước mọi hoàn cảnh.
“Đi dạo, nhâm nhi cà phê, đọc sách hoặc dành thời gian để ngồi xuống và ăn trưa.”
Những lịch trình này cho phép bạn dành thời gian để giải tỏa tâm trí, cho bộ não nghỉ ngơi khỏi bất cứ việc gì đang làm bạn cảm thấy rắc rối và giúp giảm căng thẳng. Thời gian nghỉ kéo dài không quá một giờ nên bạn không lo sẽ ảnh hưởng đến hiệu suất công việc. Đặc biệt, việc nghỉ ngơi như vậy sẽ tạo sự thuận lợi vì bạn có một không gian riêng để thư giãn, biết đâu bạn sẽ có những ý tưởng mới.
Lưu ý rằng việc lên lịch cho những khoảng thời gian này nên được duy trì mỗi ngày để đạt hiệu quả cao, giúp bạn rèn luyện bản thân để chuẩn bị cho việc “thiết lập và kích hoạt lại sức mạnh bộ não” của mình.
Dành thời gian để tự duy trì thể chất, tinh thần và cảm xúc
John Koeberer, tác giả của Green-Lighting Your Future: How Manestest the Perfect Life (Nền tảng xuất bản độc lập của CreatSpace, 2013), cho biết một chế độ ăn uống lành mạnh và tập thể dục thường xuyên, cùng với một sức khỏe tinh thần tốt có thể giúp bạn chiến thắng sự căng thẳng.
Lời kết
Hãy loại bỏ những áp lực bằng cách chăm sóc và tử tế với chính mình. Một thể chất khỏe, tinh thần và cảm xúc được cân bằng trước những thay đổi của công việc sẽ là giải pháp tối ưu dành cho bạn. Chỉ cần tâm trí, cơ thể và tâm hồn của bạn ở trong tình trạng mạnh mẽ thì đó sẽ là một yếu tố mấu chốt giúp ngăn chặn những tâm trạng tiêu cực phát sinh.
Bài viết dịch lại của một anh làm product design cho facebook đăng tải trên medium
Khi chưa vào làm cho Facebook, tôi chưa hề biết thế nào gọi là thiết kế để giải quyết vấn đề cho người sử dụng.
Tôi học được rằng giải quyết vấn đề cho người sử dụng không bao giờ là công việc đo từng ly từng tí pixel được thiết kế, nó đòi hỏi phải làm việc như một phần của team để tìm ra cách giải quyết.
Ngày xửa ngày xưa tôi rất thích các trang web với nhiều hiệu ứng lạ mắt, những logo ý nghĩa, những bản thiết kế làm lại (re-design) của những designer từ khắp nơi cho những trang web nổi tiếng,… . Ngày xưa tôi từng mơ ước trở thành kế toán, tôi thích trở thành người giữ tiền cho các công ty lớn, thế rồi tôi thấy những thiết kế lộng lẫy đó trên mạng, tôi nghĩ rằng, chắc đây có thể là một công việc với nhiều điều thú vị hơn một kế toán viên.
Giờ khi tôi đã là product design cho các sản phẩm của Facebook, với hơn 2 tỷ người người sử dụng, tôi biết rằng những gì tôi từng tưởng tượng trước đây về thiết kế chỉ là phần nổi của tảng băng chìm.
Thiết kế tốt hơn phải giải quyết một vấn đề thực tế của người sử dụng
Khi mới bắt đầu, tôi dành thời gian hàng đêm để làm những website, ứng dụng nhỏ, những dự án chẳng ai biết tới, những ý tưởng rất ngô nghê như ứng dụng hẹn hò dựa trên kết quả tìm kiếm.
Lúc đó tôi đã nghĩ rằng mình là product design thực thụ. Tôi vẽ ra tất cả các màn hình, flows cho ứng dụng, và tự nhủ rằng đã xong hết 90% của công việc, phần còn lại là quăng hết đống design đó cho các anh lập trình viên code đúng theo thiết kế này và hiển nhiên ngồi bắt bẻ các anh lập trình không làm đúng ý tôi.
Giờ nhìn lại, những gì trước đây mình làm còn rất xa so với công việc của product design, trước khi làm việc cho Facebook, tôi chưa bao giờ bỏ thời gian ra để xác định vấn đề cần giải quyết ở đây là gì trước khi bắt tay vào làm, tôi chỉ muốn làm cái gì đó thật “ngầu” để trưng lên Dribbble hay Behance để câu like.
Giờ tôi không còn lơ lửng trên 9 tầng mây, tôi phải đứng cùng vị trí với người sử dụng, tôi cùng các đồng nghiệp của mình cùng nhau xác định bài toán đặt ra là gì, đưa ra một giải pháp được cho là khả thi nhất dựa trên dữ liệu chúng tôi có được, test thử giải pháp trên một số lượng nhỏ người sử dụng trước khi đưa nó vào vận hành chính thức.
Giờ tôi cũng rất dễ bị hấp dẫn bởi các xu hướng thiết kế mới, nhưng không bao giờ áp những xu thế này để giải quyết các vấn đề mà không cần suy nghĩ, nó là một hành động ảnh hưởng xấu đến những người trong team đã và đang đối mặt với vấn đề đó hằng ngày, họ biết rõ vấn đề cần giải quyết là gì hơn ai hết, nó giống như câu nói “nếu ai cũng có cây búa trong tay, thì mọi thứ chỉ như cái cán búa”.
Product Manager và Lập trình viên luôn là bạn tốt nhất
Tôi từng tưởng tượng, tôi sẽ trang bị cho những designer là cấp dưới, đồng nghiệp của tôi những vũ khí ‘hạng nặng’ để đối phó với bên kia chiến tuyến là các anh lập trình viên cù lần. Chúng tôi sẽ cùng nhau thương thảo những vấn đề cực quan trọng như nên sử dụng màu gradient nào đang là hot trend bây giờ, hay tạo ra cái mới, bo tròn bao nhiêu là đủ, bao nhiêu là quá lố…
Ở Facebook, rất nhiều cơ hội để làm việc với các designer khác. Tôi ngồi ngay kế vài anh lão làng như thế trong công ty, thế nhưng mấy anh này lại làm việc trên các sản phẩm khác, nên tôi chỉ tiếp xúc nhiều với product manager và các lập trình viên.
Một designer chỉ tập trung cho một sản phẩm nào đó của Facebook, vì với độ lớn của sản phẩm mà chúng tôi đang làm, nếu các anh designer cứ nhảy từ team này qua team khác, sẽ mất khá nhiều thời gian để người mới có thể bắt kịp tốc độ dự án.
Product manager là người nắm rõ nhất những gì các team đang làm. Vì thế tôi luôn tin tưởng tìm đến anh ấy khi cần một cái nhìn khác về thiết kế của mình hay những gì tôi nên tập trung nhiều hơn trên sản phẩm cần đạt được.
Làm việc với mấy anh cù lần ‘developer’ giúp tôi trở nên tốt hơn rất nhiều, mấy anh chỉ cho tôi rất nhiều điều mà tôi không lường trước. Ví dụ, tôi thường không quan tâm đến thời gian phản hồi từ điện thoại đến server, các phác thảo của tôi gần như chỉ tính đến chuyện click-response ngay lập tức. Các anh dev cho tôi thấy việc truyền gửi dữ liệu cần tốn một thời gian nhất định và còn phụ thuộc yếu tố mạng nhanh hay chậm, anh cho tôi thấy sự khác biệt trải nghiệm rõ rệt khi mở ứng dụng của tôi với mạng siêu nhanh của công ty và mạng rùa bò ở các nước có đường truyền thấp.
Sản phẩm khi thiết kế luôn chịu ảnh hưởng của yếu tố technical, ở Facebook chúng tôi luôn đưa anh lập trình vào trong quá trình thiết kế ngay từ giai đoạn đầu của design, làm như vậy để biết được những ràng buộc nhất định về mặt kỹ thuật, lắng nghe cách giải quyết vấn đề từ góc nhìn từ developer.
Tôi có thể ngồi kế rất nhiều designer khác, nhưng người bạn thân thiết giúp sản phẩm của tôi tốt hơn là các anh developer và product manager
Bạn đang thiết kế sản phẩm cho người sử dụng hoàn toàn khác bạn
Trừ trường hợp bạn tự làm tự xài, đa phần các sản phẩm được thiết kế ra được dành cho những người không am hiểu thiết kế, phần lớn người sử dụng sản phẩm Facebook nằm ngoài nước Mỹ, không sử dụng con Iphone đẳng cấp nhất thời đại mà tôi đang sử dụng.
Team UX research ở Facebook luôn biết sản phẩm chúng tôi đang tạo ra cho ai sử dụng, họ mời những con người thật với nhiều tiêu chí khác nhau đến phòng labs để kiểm thử chức năng mới, nói chuyện với những người sử dụng từ nửa vòng trái đất, đo lường ảnh hưởng của những thay đổi trong sản phẩm bằng những đánh giá được gửi đi khắp nơi.
Với những “chứng cứ” người thật việc thật, những người gặp rắc rối khi thực hiện một tác vụ được thiết kế, chúng tôi có được những giải pháp nhanh nhất từ những lập trình viên ưu tú.
Ví dụ, thông qua research chúng tôi mới thấy được cái nút nhỏ xíu “Add Friend” có thể tốt trên tiếng anh nhưng với những ngôn ngữ khác lại không ổn.
Thiết kế sẽ được cân đo đong đếm
Khi ngồi nhà thiết kế cho chính mình, tôi chẳng bao giờ nghĩ tới chuyện đi cân đo các thiết kế của mình, phần lớn khi ra quyết định một thiết kế được đưa ra dựa trên sở thích cá nhân nhiều hơn trên những số liệu, căn cứ thực tế.
Ở Facebook tôi học được rằng trước khi muốn giải quyết vấn đề nào đó chúng tôi cần dựa trên những thông tin liên quan về vấn đề đó. Ai sử dụng tính năng này? Bao nhiêu người sẽ chịu ảnh hưởng từ các thay đổi được đưa ra? Những thay đổi tích cực có đủ lớn để chấp nhận rủi ro cho những thay đổi này không?
Dữ liệu luôn là kẻ chiến thắng trong mọi cuộc tranh cãi. Đó là câu khẩu hiệu ở Facebook, nếu bạn là designer làm việc ở đây, nếu muốn tranh cãi vấn đề vì đó tốt hơn hãy có dữ liệu cụ thể để thuyết phục đồng đội.
Khi team tôi bắt đầu đi lòng vòng quanh một vấn đề mà chưa ngã ngũ, tôi thường sử dụng câu hỏi “Tại sao”. Tại sao chẳng ai vào mục Giúp đỡ trên website của bạn? Phải chăng họ quá rành không cần vào xem hay họ chẳng biết vào đó bằng cách nào?
Công việc này không như bạn đã nghĩ
Tôi đã từng nghĩ công việc của một product design phần lớn là để làm cho sản phẩm được đẹp một cách “lồng lộn”. Từ ngày bị lôi vào Facebook tôi nhận ra mình đã hiểu sai khái niệm về product design.
Visual designer mới làm công việc trang điểm cho sản phẩm, công việc của tôi là phối hợp với đồng nghiệp của mình, xác định bài toán mà người sử dụng sản phẩm chúng tôi muốn giải quyết, chuyển nó thành những giải pháp thiết kế tốt nhất có thể, tìm ra cách đánh giá để biết chúng tôi có thành công trong việc giải quyết vấn đề đó không.
Bài viết của: Jason Cashdollar | Product designer at Facebook
Theo số liệu do HackerRank công bố, hiện nay HackerRank đã xếp hạng hơn 1,5 triệu developer toàn cầu dựa trên tốc độ và độ chính xác. Những kết quả gần đây cũng cho thấy Trung Quốc là quốc gia có lập trình viên xếp thứ hạng cao nhiều nhất, sau đó là Nga và Ba Lan.
HackerRank là gì?
Những công ty lớn như Amplify, Quora và Capital One đều đang sử dụng HackerRank for Work – cho quá trình tuyển dụng mảng kỹ thuật. Ngoài là thuớc đo kỹ năng, HackerRank cũng tổ chức một số chương trình hackathons, như CodeSprints, cũng là một cách để các công ty tìm kiếm những ứng viên tiềm năng.
HackerRank là một website cho phép các lập trình viên trau dồi, học hỏi và rèn luyện kỹ năng của bản thân. Website này sẽ yêu cầu những người tham gia đưa ra lời giải cho những “thử thách lập trình” hay những bài toán lập trình. Qua đó những kết quả và tốc độ giải đáp vấn đề sẽ được HackerRank sử dụng để đánh giá và xếp hạng các lập trình viên tham gia.
Ngoài việc ghi điểm trong mắt nhà tuyển dụng, các developer cũng có thể luyện code trên HackerRank. Những ưu điểm có thể kể về HackerRank như là: HackerRank có hệ thống compiler online, từ đó không cần cài thêm bất kỳ compiler nào trên máy và có thể lâp trình trực tiếp trên Web. Thứ hai, HackerRank có đa dạng các bài code (có sẵn cả unit test để biết đúng sai) để các coder luyện tập và thử sức. Sau khi cải tiến bản thân qua các bài code, các coder có sẵn nguồn các bài thi tuyển dụng của các công ty lớn toàn thế giới.
Lưu ý khi học code trên HackerRank
function Rectangle(a, b) {
}
Đây là dòng đầu tiên của một hàm mà họ yêu cầu bạn viết trong 10 Days of Javascript. Viết đối tượng hình chữ nhật là ngày thứ 4 trong 10 ngày. Hầu hết các coder sẽ dùng tiếp dòng đầu tiên này và điền vào chỗ trống những gì còn thiếu giữa hai dấu {}. Đây có lẽ cũng là điều mà HackerRank mong đợi.
Nhìn dòng đầu tiên này thì bạn có thể hiểu rằng a là một cạnh của hình chữ nhật và b là cạnh còn lại. Nếu bạn đọc mô tả đề bài, thì sẽ biết rõ ràng rằng a là chiều dài của hình chữ nhật và b là chiều rộng.
Tại sao lại cần bí mật?
Batman cần giữ kín danh tính của mình vì anh thường dành buổi tối để làm những việc phạm pháp, dù đó là việc tốt, anh ấy vẫn có thể bị bắt. Để có thể được tự do và mang đến công lý cho người khác, anh ấy không thể để người khác biết rằng mình chính là Bruce Wayne.
Nhưng, a và b ở đây không cần giữ bí mật danh tính thực sự của chúng (chiều dài và chiều rộng của hình chữ nhật). Trên thực tế, tất cả những gì chúng sẽ làm trong hàm này là chiều dài và chiều rộng của hình chữ nhật. Điều đó có nghĩa là chúng không cần phải là a và b. Vậy tại sao chiều dài không thể là length (chiều dài trong tiếng Anh) và chiều rộng là width (chiều rộng)?
Tác hại của cách đặt tên đó là gì?
Trong bài tập HackerRank này, bạn sẽ chỉ viết vài dòng code thôi. Chưa kể hai tham số logic duy nhất để tạo một hình chữ nhật là chiều dài và chiều rộng của nó. Bạn có thể sẽ không quên a và b là gì trong đoạn code. Mặc dù vậy, không chỉ có bạn đọc code của bạn, vẫn còn những người khác nữa và có thể nhiều người trong số họ không thể biết được a và b là gì.
Bạn có thể cảm thấy đoạn code rất ngắn gọn và thông minh, và dường như HackerRank làm vậy rất ổn.
OK, nhưng nghĩ một chút xem, trong công việc có bao giờ bạn viết app, chương trình nào mà lại có ít code như vậy không? Nếu là một ứng dụng có 10.000 dòng code, mỗi hàm có các tham số với chữ cái a, b, c, d, e thì câu chuyện sẽ rất khác. Bạn có thể đọc hiểu code này vì bạn viết ra nó, nhưng nếu ai đó được bàn giao code này từ bạn có lẽ họ sẽ vừa đọc vừa chửi thầm trong bụng.
Bạn có thể nghĩ Devon khó tính hoặc tìm đúng ví dụ tệ nhất trên nền tảng này để chê bai. Tất nhiên, không phải mọi bài tập trên HackerRank đều sử dụng tên biến tối nghĩa, nhưng có nhiều bài tập như vậy. Đây là một ví dụ khác:
'use strict';
process.stdin.resume();
process.stdin.setEncoding('utf-8');
let inputString = '';
let currentLine = 0;
process.stdin.on('data', inputStdin => {
inputString += inputStdin;
});
process.stdin.on('end', _ => {
inputString = inputString.replace(/\s*$/, '')
.split('\n')
.map(str => str.replace(/\s*$/, ''));
main();
});
function readLine() {
return inputString[currentLine++];
}
// Complete the minimumBribes function below.
function minimumBribes(q) {
}
function main() {
const t = parseInt(readLine(), 10);
for (let tItr = 0; tItr < t; tItr++) {
const n = parseInt(readLine(), 10);
const q = readLine().split(' ').map(qTemp => parseInt(qTemp, 10));
minimumBribes(q);
}
}
Nhiều biến trong code trên không hề dễ hiểu, t là gì, q là gì, n là gì, tItr là gì… Mục đích chính mà tác giả muốn nói ở đây chỉ là hãy đặt tên biến cho rõ ràng, hãy viết code sao cho ai mới đọc cũng có thể mường tượng được hàm này làm gì, biến này là cái gì mà thôi. Vì sao cần phải như vậy?
Viết code là dành cho con người
Bạn có thể nghĩ rằng code dành cho máy tính. Không phải đâu. Code dành cho con người. Nếu nó dành riêng cho máy tính, chúng ta không cần ngôn ngữ cấp cao như Javascript hay Python.
Hãy ghi nhớ điều này khi bạn viết code: Viết làm sao để người khác đọc code bạn viết mà họ hiểu được. Các tên biến, tham số và hàm nên chứa càng nhiều ngữ cảnh càng tốt để giúp người đọc hiểu những gì họ đã đọc. a là một tên biến rất tệ. length là tên biến tốt và lengthInInches thậm chí còn tốt hơn (nếu bạn mong đợi phép đo được tính bằng inch). Nếu code thay đổi, hãy đảm bảo bạn cập nhật các tên đã đặt để phản ánh những gì chúng đại diện.
Vì HackerRank là một công ty lớn, có uy tín, nên việc bạn có code được đánh giá tốt trên nền tảng này cũng khiến các nhà tuyển dụng chú ý hơn.
Chỉ là, khi bạn thực hành trên HackerRank, hãy rèn cho mình thói quen tái cấu trúc những cái tên vô nghĩa khủng khiếp thành một cái tên có thể truyền đạt ý nghĩa và bối cảnh cần thiết để đọc code. Khi bạn làm việc với các dự án bên ngoài nền tảng, đừng để cho việc đặt tên tối nghĩa làm hại code của bạn và mang lại cho bạn danh tiếng là một dev viết code không thể đọc nổi.
Bằng cách luôn tâm niệm rằng viết code là để cho người đến sau bạn có thể đọc, bạn không chỉ tạo sự dễ dàng cho các nhà phát triển khác làm việc với bạn mà còn khiến cho khách hàng muốn thuê lại bạn và giới thiệu bạn với các công ty khác cần bạn giúp đỡ.
Có một bình luận vui dưới bài rằng: Khi bước chân vào nghề tôi đã được bảo rằng: “code làm sao để gã sau vào có thể đọc hiểu” và “hãy tưởng tượng người kế thừa đống code của bạn là một gã to cao, nóng tính, biết rõ bạn đang ở đâu” (Nếu hắn đọc không hiểu sẽ tìm đến nhà và cho bạn một trận – người dịch).
Một số lưu ý tổng quan cho các bạn mới gia nhập HackerRank
Trong tương lai sẽ có không ít các công ty công nghệ tiến hành ứng dụng HackerRank như một bước để đánh giá trong quy trình tuyển ứng viên IT, thì đừng quên lưu ý một số mẹo nhở dưới đây khi bắt tay vào thử HackerRank:
Các thử thách và bài test đều tính giờ, hãy tập trình cao độ và không được xao nhãng.
20–30% tỉ lệ thành công đến từ việc hiểu rõ với hệ thống. Trước khi chính thức đi vào challenge có thể thử sức một số cái trước, vd:Khởi động bằng miền của các thuật toán. Phải chắc chắn rằng bạn nắm bắt được cách viết và submit code.
Biết các ngôn ngữ có sẵn để test.
Thường trong mỗi challenge sẽ có nhiều vấn đề cần giải quyết, và nếu bắt đầu từ bài khó nhất sẽ không hợp lý. Cách tốt nhất phải là xử lý lần lượt độ khó tăng dần. Hãy đọc sơ trước và quyết định cách giải quyết sau.
Hãy giảm thiểu thời gian giữa các vấn đề sau khi đã bổ sung. Bạn có thể dành thêm ít thời gian để quyết định xem nó có phải là thành phẩm final hay chưa, và rồi đảm bảo rằng không quay lại nữa.
Mọi vấn đề đều bao gồm giải trường hợp công và trường hợp tư nhân. Điểm của You sẽ dựa trên cả hai. Nếu vấn đề nằm ở chỗ có kiểm tra các phương thức về public và private, điểm của bạn được đánh giá trên cả hai. Trong trường hợp, dù mã bổ sung được thông qua mọi phương thức về public, điều đó không đồng nghĩa với việc sẽ thông qua phương thức về private. Hãy nghiên cứu thêm các trường hợp ở rìa. Vd: kiểm tra xem input có rỗng không; 1,2 hay nhiều yếu tố khác nhau, v. v môi trường HackeRank sẽ cho phép bạn chạy mã trên các test bài tự tuỳ.
Đảm bảo bất cứ gì cho mọi vấn đề. Nếu không biết cách giải quyết bạn vẫn có thể kiếm được vài điểm từ nó. Tuy nhiên, hãy cố gắng giải quyết đúng vấn trọng tâm ít nhất một – hai vấn đề nào đó trong bài.
Trang chủ cần tạo ra sự khác biệt: một vài mẫu template có thể giúp bạn như việc có thể sao chép và dán chúng trong suốt quá trình tham gia challenge. Ví dụ: BFS/DFS/Tìm kiếm nhị phân.
Hãy luyện tập nhiều nhất có thể trong lần đầu tiên. Bạn có thể thử giải quyết ít nhất một vấn đề từ mỗi tên miền phụ của các thuật toán
Một kết quả tốt không phải là một trò ảo thuật, nó cần nhiều sự luyện tập và nỗ lực.
TopDev tổng hợp
Truy cập ngay các công việc IT đãi ngộ tốt trên TopDev
Python là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng, do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991. Python được thiết kế với ưu điểm mạnh là dễ đọc, dễ học và dễ nhớ. Với các đặc điểm gần như là triết lý căn bản của ngôn ngữ Python như: “đẹp đẽ tốt hơn xấu xí, minh bạch tốt hơn che đậy, đơn giản tốt hơn phức tạp, phức tạp tốt hơn rắc rối và dễ đọc” được trình bày trong tài liệu “The Zen of Python”. Ngôn ngữ lập trình Python có hình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình. Cấu trúc của Python còn cho phép người sử dụng viết command code với số lần gõ phím tối thiểu. Với việc tài liệu lập trình Python hiện nay tuy có nhiều nhưng tài liệu Python tiếng Việt lại khá ít, hi vọng bài viết tổng hợp dưới đây bao gồm tài liệu tiếng Việt và tiếng Anh sẽ giới thiệu đến các bạn để học tập và trao dồi kiến thức về ngôn ngữ này tốt hơn, dựa theo các tài liệu này các bạn có thể tự học ngôn ngữ lập trình Python từ cơ bản tới nâng cao cũng như được cập nhật kiến thức mới nhất từ các chuyên gia.
Điểm nổi bật nhất của Python so với các ngôn ngữ khác đó chính là nhờ cú pháp cực kỳ đơn giản và thanh lịch, rất thích hợp cho các bạn newbie chưa biết gì về lập trình, nhưng không vì thế mà đánh giá thấp Python vì đây cũng là ngôn ngữ nổi tiếng về sự chặt chẽ, nhanh, mạnh và hiện đã có mặt ở mọi hệ điều hành. Có thể thấy rất nhiều ví dụ từ những trò chơi điện tử đơn giản, cho đến những thuật toán tìm kiếm phức tạp hay nền móng cho các bạn sinh viên ngành Khoa học máy tính, Python là sự lựa chọn hoàn hảo cho mọi lập trình viên, dù bạn là người mới bắt đầu hay đã có thâm niên trong nghề. Đặc biệt là với sự bùng nổ về công nghệ AI – Trí tuệ nhân tạo trong những năm gần đây, cái tên Python liên tục được nhắc đến nhiều hơn bao giờ hết trong lĩnh vực Công nghệ Thông tin.
– Là bước đệm hoàn hảo cho các ngôn ngữ khác vì Python là ngôn ngữ hướng đối tượng được ứng dụng rất đa dạng.
– Được trả lương cao vì tại Mỹ, cùng với Ruby, Python là ngôn ngữ đứng thứ 2 về lương của 1 lập trình viên với khoản $107,000 / năm.
– Thiết thực trong thiết kế web cũng như ứng dụng web vì Django, web framework được viết bởi Python sẽ khiến lập trình web trở nên đơn giản hơn.
– Tương lai của AI và được cung cấp bởi các thư viện đa dạng, phong phú tạo tính linh hoạt của ngôn ngữ, tốc độ xử lý, và các tính năng cho Machine Learning.
Nhược điểm của ngôn ngữ Python
– Tốc độ chậm hơn so với các ngôn ngữ C/C++ hay Java.
– Không phải là ngôn ngữ tốt dành cho nền tảng mobile.
– Python không phải lựa chọn tốt cho các bài toán cần tối ưu bộ nhớ.
– Python có nhiều giới hạn khi làm việc với cơ sở dữ liệu phức tạp.
Ứng dụng trong Machine Learning
Python là ngôn ngữ lập trình phổ biến nhất được sử dụng trong Machine Learning và thị giác máy tính: SciPy là một gói thư viện dành cho toán học, khoa học và kỹ thuật. Pandas là một thư viện dành cho phân tích dữ liệu. scikit-learn là một thư viện dành cho ML.
Và rất nhiều ứng dụng trong các lĩnh vực khác như phân tích dữ liệu – data analysis, tự động hóa – automation, test tự động – selenium, IOT…
Python ….Rất là cơ bản của tác giả Võ Duy Tuấn. 1 trong những tài liệu tiếng Việt hiếm hoi và khá đáng giá về Python. Sách được chia làm 15 chương, mỗi chương sẽ trình bày 1 khía cạnh của Python mà bạn sẽ gặp phải và sẽ hữu ích khi biết các kiến thức này trong việc áp dụng Python vào công việc trong tương lai.
Nội dung bao gồm: Hello world, Cú pháp, Phân chia module, Class, Kết nối MySQL, Kết nối Redis, Kết nối Memcached, Kết nối RabbitMQ, Restful, Client, Thao tác trên tập tin, Xử lý hình ảnh, Xử lý file JSON, Xử lý file XML, Gởi email với SMTP Socket Programming…
Với tài liệu Python hiện nay chủ yếu là tiếng Anh, tài liệu miễn phí bằng tiếng Việt này sẽ giúp bạn nhanh chóng tự học ngôn ngữ lập trình Python.
A Byte of Python
Đây là quyển sách lập trình Python hoàn toàn miễn phí. Được xem như bài hướng dẫn cho những người mới bắt đầu về lập trình đến với ngôn ngữ Python. Nếu như bạn chỉ biết mỗi việc lưu các tệp văn bản trên máy tính thì đây chính là quyển sách dành cho bạn. Ngoài ra quyển này còn chỉ cho bạn cách sử dụng Python version 3, cũng như cách làm quen với phiên bản cũ hơn như Python version 2.
Think Python 3rd Edition
Quyển Think Python sẽ giới thiệu các bạn mới bắt đầu đến việc lập trình bằng ngôn ngữ Python. Nó bắt đầu với những ý tưởng cơ bản của lập trình, và được thiết kế cẩn thận để xác định tất cả các điều khoản khi nó được sử dụng trước tiên và để lập trình mỗi ý tưởng mới trong tiến trình logic. Với những phần lớn hơn, như đệ quy hay lập trình hướng đối tượng được chia ra thành chu kỳ nhỏ với từng bước nhỏ và được giới thiệu xuyên suốt khóa học qua các chương. Ngoài ra sách của sử dụng Python 3, hướng dẫn chạy Python trên trình duyệt hiện có, giới thiệu các tính năng thú vị của Python như cấu trúc dữ liệu bổ sung, list comprehension và các bài tập đòi hỏi tư duy rất thú vị.
Automate the Boring Stuff with Python
Nếu bạn từng tốn hàng giờ liền chỉ để đổi tên các tệp hay cập nhật hàng trăm cột spreadsheet, thì hẳn bạn cũng đã quá ngán ngẩm với những task tẻ nhạt này. Nhưng không sao vì giờ đây bạn đã có chiếc máy tính để làm những điều này thay bạn. Trong quyển sách này, bạn sẽ học cách sử dụng Python để viết các chương trình mà có thể hoàn thành những việc bạn mất hàng giờ để làm chỉ trong vài phút! 1 khi bạn đã thành thục các kỹ năng cơ bản của lập trình, bạn sẽ tạo ra được các chương trình Python mà sẽ thực thi 1 cách dễ dàng việc tự động hóa 1 cách hữu ích và ấn tượng.
Ngoài ra quyển này cũng thích hợp cho các newbie, bạn không cần kinh nghiệm về lập trình để bắt đầu cũng như giúp bạn viết các chương trình hết sức thực tiễn và thấy được ngay kết quả.
Dive into Python 3
Dive into Python 3 của Mark Pilgrim là 1 quyển hướng dẫn thực tế tới Python 3 và sẽ khác với quyển tiền nhiệm của nó là Python 2. Mỗi chương bắt đầu với 1 code hoàn chỉnh như 1 thí dụ, tiến hành phân tích và giải thích từng phần, và sau đó đặt tất cả lại cùng nhau với phần tóm tắt ở cuối chương. Ngoài ra quyển còn đi kèm các ví dụ chương trình được viết lại hoàn toàn để minh họa các ý tưởng mới mạnh mẽ đang có sẵn trong Python 3 như set, iterator, generator, closure, comprehension và các trường hợp chi tiết của việc chuyển 1 thư viện chính từ Python 2 sang Python 3. 1 phục lục toàn diện về tất cả các thay đổi cú pháp và ngữ nghĩa trong Python 3. Đây chắc hẳn phải là resource hoàn hảo cho bạn nếu bạn cần phải chuyển các ứng dụng của mình sang Python 3, hoặc bạn cũng có thể nhảy ngay vào ngôn ngữ Python 3 cách nhanh chóng và tiếp tục ngay lập tức nếu bạn đã có 1 chút kinh nghiệm về lập trình ngôn ngữ C hay Java.
Learn Python the Hard Way
Tác giả Zed Shaw đã hoàn thiện hệ thống tốt nhất thế giới cho việc học Python của bạn. Theo từng bước của quyển sách và bạn sẽ thành công như hàng trăm ngàn newbie khác mà Zed đã chỉ dạy. Chỉ cần bạn có sự kỷ luật, cam kết và kiên trì, tác giả sẽ cung cấp cho bạn mọi thứ còn lại. Trong quyển Learn Python the Hard Way tái bản lần thứ 3 này, bạn sẽ học Python bằng cách luyện tập với 52 bài tập thủ công tinh tế. Hãy đọc chúng. Gõ lại chính xác (không xài copy – paste đâu nhá). Sửa lỗi của mình. Quan sát chương trình chạy. Và làm như thế, bạn sẽ học được cách phần mềm làm việc; 1 chương trình tốt sẽ trông ra sao; cách đọc, viết và nghĩ về code; và cách để tìm và fix lỗi bằng cách dùng các mẹo mà những lập trình viên chuyên nghiệp khác đang sử dụng. Quan trọng nhất, bạn sẽ học cách làm theo các bước vốn sẽ cần để bắt đầu viết các phần mềm Python xuất sắc của riêng bạn. Sẽ có khó khăn lúc mới bắt đầu, nhưng dần dần bạn sẽ bắt kịp và cảm thấy thật tuyệt! Bài hướng dẫn này sẽ là phần thưởng đền đáp cho từng phút bạn đã bỏ ra. Nhanh chóng thôi bạn sẽ biết rõ về 1 trong những ngôn ngữ mạnh mẽ và phổ biến nhất thế giới và sớm trở thành 1 lập trình viên Python chuyên nghiệp.
Invent Your Own Computer Game with Python
Tác giả chia sẻ: “Tôi là AI Sweigart, và tôi viết sách để dạy các bạn mới bắt đầu học code. Tôi đưa chúng lên mạng 1 cách hoàn toàn miễn phí vì việc lập trình khá là quý báu và mọi người cần phải được tiếp cận nó.”
Học lập trình sẽ giúp bạn thông minh hơn và phát triển khả năng của bạn. Ngành khoa học tên lửa sử dụng lập trình, nhưng lập trình chưa chắc là ngành khoa học tên lửa. Dù bạn là 1 học sinh / sinh viên đang chuẩn bị cho 1 sự nghiệp trong ngành lập trình, hay 1 nhân viên văn phòng với hàng tá thư mục đầy ắp các tệp spreadsheet, hoặc chỉ đơn giản là người có sở thích làm ra các trò chơi điện tử thì ngôn ngữ lập trình Python là 1 khởi đầu xuất sắc cho bạn tới thế giới lập trình. Ngược lại với hầu hết sách khác chỉ đưa ra lý thuyết là chính, quyển này sẽ hướng dẫn cho bạn viết các trò chơi mini như các trò chơi trên nền tảng DOS ngày xưa cũng như tương tác thú vị với các dòng lệnh. Chi tiết, cặn kẽ và dễ hiểu là những ưu điểm của quyển này và ngay cả các học sinh nhỏ tuổi từ 10-12 tuổi cũng có thể học được.
Making Games with Python and Pygame
Nếu bạn đã hoàn thành quyển trên, thì đây sẽ là phần tiếp theo mà bạn nên tiếp tục và nó cũng dành cho độ tuổi đa dạng như quyển trước. Making Games with Python & Pygame bao gồm thư viện Pygame với hơn 11 source code của các trò chơi điện tử. 1 khi bạn đã hiểu rõ phần căn bản của lập trình Python, giờ đây bạn có thể mở rộng khả năng của mình bằng cách dùng thư viện Pygame để làm ra các trò chơi 2D với đồ họa, hoạt hình và âm thanh. Với hơn 11 source code trò chơi là bản clone của các trò kinh điển như Nibbles, Xếp Gạch, Simon, Xếp kim cương, Othello, Connect Four, Flood it, và còn nhiều nữa.
SÁCH PYTHON NÂNG CAO
Learning Python 5th Edition
1 khi bắt tay vào quyển sách này, nó sẽ giới thiệu toàn diện, chuyên sâu về cốt lõi của ngôn ngữ Python đến cho bạn. Dựa trên các khóa học nổi tiếng của tác giả Mark Lutz, tái bản lần thứ 5 này sẽ nhanh chóng giúp bạn viết code hiệu quả, chất lượng cao bằng Python. Là 1 cách lý tưởng để bắt đầu, dù bạn chỉ biết 1 chút về lập trình hay đã là 1 lập trình viên chuyên nghiệp đã thông thạo các ngôn ngữ khác. Hoàn tất nó với các câu đố vui, bài tập và minh họa hữu ích, bài hướng dẫn khá dễ dàng để làm theo và bắt nhịp này sẽ giúp bạn bắt đầu với Python 2.7 và 3.3 – những phiên bản mới nhất của Python 2 và 3, cộng thêm tất cả các bản phát hành khác thường dùng ngày nay. Bạn cũng sẽ học những tính năng vượt trội của ngôn ngữ mà gần đây đã trở nên thông dụng trong code Python. Tuy khá dài và nhiều chữ nhưng quyển sách rất chuyên sâu này sẽ cho bạn 1 nền tảng vững chắc về Python. Rất phù hợp cho những bạn đã có kinh nghiệm về lập trình, nhất là về lập trình hướng đối tượng.
Effective Python
Khá dễ dàng để bắt đầu với việc viết code bằng Python: đó cũng là lý do tại sao nó lại phổ biến đến như vậy. Tuy nhiên, Python có sức mạnh, độ quyến rũ và biểu cảm đặc trưng vốn có thể khó nắm bắt vào lúc mới bắt đầu, cũng như những cạm bẫy tiềm ẩn có thể dễ dàng khiến bạn vấp ngã nếu không hiểu rõ về chúng. Effective Python sẽ giúp bạn khai thác toàn bộ sức mạnh của Python để viết ra những code đặc biệt mạnh mẽ, hiệu quả, dễ bảo trì và hoạt động tốt.
Bằng cách viết ngắn gọn, minh họa đơn giản dựa theo phong cách tiên phong của quyển best-selling Effective C++ từ tác giả Scott Meyers, tác giả Brett Slatkin tổng hợp tới tận 59 bài thực hành, mẹo, phím tắt và ví dụ code thực tế tốt nhất từ những chuyên gia lập trình viên. Qua các ví dụ thực tế, Slatkin còn tiết lộ các mẹo hiếm thấy, phức tạp và thành ngữ có tác động mạnh mẽ đến hành vi và hiệu suất của code. Bạn sẽ học và chọn được cách hiệu quả nhất để hoàn thành các task mấu chốt khi gặp phải nhiều sự lựa chọn cùng lúc, và cách để viết code dễ hiểu, dễ duy trì và dễ cải tiến hơn.
Effective Python thích hợp cho những bạn ở trình độ trung cấp và nâng cao. Được chia ra thành nhiều phần nội dung, được miêu tả và minh họa chi tiết. Ngoài việc giúp cải thiện code Python của bạn, nó còn giúp bạn khỏi việc mù quáng làm theo những hướng dẫn rập khuôn, cũng như cho bạn sự thấu hiểu sâu sắc về các lý do kỹ thuật tại sao nó lại như vậy. 11. Python Cookbook
Nếu bạn cần sự giúp đỡ cho việc viết phần mềm bằng Python 3, hay muốn update các code Python 2 cũ của mình, quyển sách này chính là thứ bạn đang tìm. Gói gọn với các công thức thực hành được viết và kiểm tra với Python 3.3, quyển cookbook đặc biệt này dành cho những lập trình viên Python đã có kinh nghiệm, vốn đang muốn tập trung vào các tool hiện đại và thành ngữ. Bên trong quyển sách này bạn sẽ tìm thấy những công thức hoàn chỉnh với hàng tá các chủ đề bao gồm phần cốt lõi của ngôn ngữ Python cũng như các task chung cho lĩnh vực ứng dụng khá đa dạng. Mỗi công thức chứa các ví dụ code mà bạn có thể dùng trong dự án của mình ngay lập tức, kèm theo bài thảo luận về việc bằng cách nào và tại sao giải pháp lại hoạt động như vậy.
Fluent Python
Sự đơn giản của Python giúp bạn trở nên năng suất 1 cách nhanh chóng, nhưng điều này có nghĩa là bạn không sử dụng hết mọi thứ mà nó mang lại. Với quyển gối đầu nằm này, bạn sẽ học được cách viết code Python hiệu quả, ‘idiomatic’ bằng cách tận dụng các tính năng tốt nhất dễ bị bỏ qua của nó. Tác giả Luciano Râmlho sẽ mang bạn qua các thư viện, tính năng cốt lõi của Python, và chỉ cách để code của bạn ngắn, nhanh và dễ đọc hơn cùng 1 lúc. Nhiều lập trình viên Python thâm niên thường cố vặn vẹo Python để phù hợp với các pattern mà họ đã học từ các ngôn ngữ khác và không bao giờ khám phá các tính năng khác của Python vốn nằm ngoài trải nghiệm của họ. Với cuốn sách này, những lập trình viên Python như thế cũng sẽ được hướng dẫn kỹ lưỡng để trở nên thành thạo với những đặc điểm riêng của Python hơn, đặc biệt là Python 3. Để hiểu rõ từng bước và nắm kiến thức Python vững vàng hơn bạn nên đọc 3 tài liệu Python kể trên theo thứ tự 1. Effective Python – 2. Python Cookbook – 3. Fluent Python với độ phức tạp tăng dần.
Rtfm: Red Team Field Manual
Đây là 1 quyển khá là thú vị nếu như bạn cũng tập tành làm hacker! The Red Team Field Manual (RTFM) là 1 sách hướng dẫn kỹ lưỡng và không tì vết đặc biệt dành cho các thành viên Red Team nghiêm túc, (trong thuật ngữ quân sự thì thuật ngữ Red Team thường được sử dụng để xác định các nhóm có tay nghề cao và có tổ chức, hoạt động như các đối thủ và/hoặc kẻ thù hư cấu đối đầu với lực lượng “chính quy” aka Blue Team), những người thường tìm thấy bản thân họ trong 1 nhiệm vụ mà không cần đến Google hay thời gian để scan 1 trang web của ai đó. RTFM bao gồm syntax cơ bản được sử dụng thường xuyên trong các tool dòng lệnh cho Linux và Windows, nhưng nó cũng gói gọn các trường hợp sử dụng đơn lẻ cho các công cụ mạnh mẽ khác như Python và Windows PowerShell. RTFM sẽ liên tục giúp bạn tiết kiệm thời gian tìm kiếm các các nuance – sắc thái khó nhớ của Windows như Windows wmic, tool dòng lệnh dsquery, registry values then chốt, syntax tác vụ theo lịch trình, vị trí khởi động và scripting Windows qua 90 trang ghi chép các lệnh. Bên cạnh 2000 cú pháp và hướng dẫn tương ứng từ cơ bản đến nâng cao, phần quan trọng nhất của quyển này chính là nó còn dạy cho bạn các kỹ thuật mới của Red Team nữa!
Black Hat Python: Python Programming for Hackers and Pentesters
Cách tốt nhất để ngăn chặn các hacker mũ đen chính là tìm hiểu các kỹ thuật & mánh lới của họ, và Python cũng là 1 trong những ngôn ngữ lập trình được đặc biệt ưa chuộng bởi các hacker. Không phải ngẫu nhiên mà Python được chọn để tạo ra các hacking tool mạnh mẽ và hiệu quả, đồng thời nó còn được lựa chọn cho hầu hết các nhà phân tích bảo mật. Nhưng làm thế nào mà điều kỳ diệu này lại xảy ra? Hãy cùng tìm hiểu qua quyển sách này nhé. Trong Black Hat Python, tác phẩm gần đây nhất của Justin Seitz (tác giả của quyển best-selling Gray Hat Python), bạn sẽ khám phá mặt tối hơn trong khả năng của ngôn ngữ Python – viết các trình thám thính network, thao túng các packet, lây nhiễm các máy ảo, tạo ra các trojans vô hình và còn nhiều nữa. Ngoài ra các kỹ thuật nội bộ và những thách thức sáng tạo sẽ đồng hành cùng bạn xuyên suốt, chỉ cho bạn cách để mở rộng hack và khai thác theo cách riêng của bạn. Cuối nhưng không đuối, bạn cũng sẽ được hướng dẫn để kích thích khả năng tạo ra các công cụ mạnh mẽ, vốn là điều không thể thiếu khi nhắc tới offensive security – bảo mật công kích.
KHÓA HỌC PYTHON ONLINE
Real Python Tutorials
Tại khóa học Real Python, bạn có thể học tất cả mọi thứ về Python từ con số 0. Mọi thứ từ phần căn bản nhất của Python, cho tới lập trình web cũng như web scraping hay để trực quan hóa dữ liệu và hơn thế nữa…
Sau khi đã bắt đầu với những kiến thức cơ bản bạn sẽ được tiếp tục làm quen với những web framework phổ biến của Python hiện nay như Django, Flask, web2py. Hay cách sử dụng các tool như Vagrant, Git, Heroku để tạo các ứng dụng bằng Python. 1 trang rất thú vị nhất là cho những bạn lập trình viên cuồng tất tần tật về ngôn ngữ Python.
Python Jumpstart by Building 10 Apps
Đúng với cái tên Python Jumpstart by building 10 Apps, chương trình này sẽ giúp cho bạn sớm làm quen với Python qua các dự án thực tế, thích hợp cho các bạn đã có chút kinh nghiệm về lập trình. Được mở đầu với lời giới thiệu hấp dẫn trên trang TalkPython rằng: “Lập trình thật vui và hữu ích. Học tập để trở thành 1 lập trình viên về phần mềm cũng vui không kém! Khóa học này sẽ dạy cho bạn mọi thứ bạn cần phải biết về ngôn ngữ lập trình Python trong mọi lúc dựng các ứng dụng hấp dẫn và thú vị”, 10 ứng dụng thú vị của quyển sách sẽ bao gồm: Hello World, Đoán số, Ứng dụng sinh nhật, Nhật ký cá nhân, Trang xem dự báo thời tiết, LOLcat Factory, Wizard battle, Ứng dụng tìm tệp, Trang phân tích giá bất động sản, Ứng dụng tìm phim. Ngoài ra các khái niệm được hỗ trợ bởi hình ảnh súc tích cũng như đi kèm phụ đề và transcript.
Code Academy: Learn Python
Nếu bạn chưa biết gì về lập trình thì đây là khóa dành cho bạn, các bài học tương đối đơn giản, dễ hiểu, tương tác cao và hình ảnh bắt mắt. Chức năng code ngay trên trình duyệt mà không cần phải tải về cũng khá là tiện lợi. Còn nếu bạn đã có kinh nghiệm trên 6 tháng thì nó có thể hơi dễ so với bạn. Còn có 1 khóa học tương tự bên Code Schoolnhưng mình nghĩ ở khóa này codeacademy vẫn vui hơn.
Theo mình các khóa này rất hợp cho các bạn tập làm quen với lập trình 1 cách thân thiện nhất, nhất là về phần học lập trình và viết code. Còn bạn đã có nền tảng, thích dựng này nọ thì khóa số 16 vẫn thích hợp hơn.
Python Tutorial for Beginners: Learn Programming in 7 Days
Đây là khóa học trên trang Guru99 cho những bạn mới bắt đầu với lập trình, đặc biệt 23 bài hướng dẫn này hoàn toàn miễn phí và được chia ra rất khoa học như: Căn bản Python, Cấu trúc Dữ liệu Python, Cơ sở Python, Khoa học Dữ liệu Python và đặc biệt “Những thứ bạn phải biết!” khá hữu ích cho việc học Python của bạn. Trang web cũng thiết kế khá vui nhộn và tất cả những gì bạn cần làm là nhập email để đăng ký thôi!
Python for Entrepreneurs
Thêm 1 khóa học thú vị từ trang TalkPython, dành cho những bạn đã có kiến thức cơ bản về ngôn ngữ Python, và Python for Entrepreneurs sẽ giúp bạn phát triển kỹ năng của mình bằng cách mở 1 startup hay kinh doanh trên web nhỏ, cũng như chỉ cho bạn từ cách dựng 1 trang web và mọi thứ bạn cần để biến nó thành 1 online business hoạt động tốt. 20. Intro to Python for Data Science Khóa học này dành cho các bạn theo đuổi ngành Khoa học dữ liệu, như Machine Learning, Deep Learning, Tầm nhìn máy tính hay Phân tích thống kê.. Cách tốt nhất để theo khóa học này là bạn nên thành thục ngôn ngữ Python cũng như 2 thư viện phổ biến nhất của Python là NumPy và SciPy.
Bài này nằm trong loạt bài chuẩn kiến thức để đi thi web mobile specialist của google. Một vài điểm cần nhớ khi thiết kế và làm việc với form
Thiết kế form cần tránh việc bắt user làm tới làm lui, đòi hỏi nhiều thông tin hơn cần thiết, hay cảm giác bị lạc lối giữa một cái form quá dài quá nhiều step
Nguyên tắc chung
Bật autofill trên form đề trình duyệt của user có thể tự điền các field đã biết, hiển thị lại những giá trị mà user đã nhập
Label rõ ràng để user biết mình đang nhập cái gì, ở đâu.
Tránh lặp lại
Ví dụ trên trang đăng ký nếu chúng ta đã cho user nhập first name và last name, có thể cho generate tự động ra một giá trị cho field nickname để đăng nhập. Hoặc trường hợp trên trang checkout, cho phép lưu lại địa chỉ giao hàng cho lần checkout sau.
Để tiết kiệm thời gian tiền bạc cho user, khai thác tính năng autocomplete có sẵn của trình duyệt.
Ta muốn autocomplete giá trị gì thì báo với trình duyệt luôn, hoặc dùng giá trị name='giá trị name chuẩn', hoặc autocomplete='giá trị autocomplete chuẩn'
Với các form được chia làm nhiều step trước khi submit, một thanh trạng thái cho user biết mình đang đến bước nào là bắt buộc.
Giá trị ngày tháng
Trường ngày tháng để user chọn từ lịch, không tách ra thành các input độc lập dạng ngày-tháng-năm, user không cần phải mở một ứng dụng calendar khác đó trên điện thoại, trên máy tính để kiểm tra ngày trước khi chọn.
Sử dụng input type phù hợp
HTML5 hỗ trợ khá nhiều kiểu input, khi cung cấp giá trị type rõ ràng cho input, trình duyệt sẽ biết và hiển thị kiểu keyboard nào cho phù hợp trên điện thoại, cũng như có những validation tích hợp sẵn
type='url'
Chuỗi bắt đầu phải là ‘http://’, ‘ftp://’, ‘mailto:’
type='tel'
Ko có ép một syntax hay validation nào cả, giúp hiện thì bàn phím điện thoại trên mobile
type='email'
Trên mobile nó sẽ hiện sẵn phím @
type='search'
Bàn phím search chuẩn trên từng thiết bị
type='number'
iOS yêu cầu có thêm pattern='\d*' để hiển thị bàn phím số
type='range'
Hiển thị kiếu slider control
type='datetime-local'
Giá trị ngày tháng có timezone
type='datetime'
Giá trị ngày tháng ko có timezone
type='time'
Chỉ có giá trị giờ
type='week'
Chỉ có giá trị tuần
type='month'
Chỉ có giá trị tháng
type='color'
Bảng màu để chọn
Gợi ý thông qua trường datalist
<datalist /> là element cho phép chúng ta cung cấp các giá trị gợi ý với một <input />
<label for="frmFavChocolate">Favorite Type of Chocolate</label>
<input
type="text"
name="fav-choc"
id="frmFavChocolate"
list="chocType">
<datalist id="chocType">
<option value="white">
<option value="milk">
<option value="dark">
</datalist>
User không bắt buộc phải chọn các giá trị trong datalist, chỉ là gợi ý thích thì chọn
Trên thẻ input, nếu muốn input được focus ngay lập tức khi vừa vào trang, như login, focus vào ô username. Thuộc tính autofocus này sẽ tự động bị ignore trên mobile để tránh xuất hiện bàn phím ko cần thiết.
<input type="text" autofocus ...>
Hãy tin vào Chrome
Rất nhiều trường hợp vì customize theo ý design mà tính năng autofill của Chrome không còn chạy đúng, nguyên nhân có thể là
Không sử dụng input chuẩn
Lỗi thường thấy khi phải customize cái dropdown theo design mà không thể dùng thẻ <select />
Dùng placeholder giả
Placeholder giả là gì? Thay vì dùng attribute placeholder, dùng value="First Name" rồi viết javascript để khi focus xóa giá trị này đi.
Tự động copy shipping address vào billing address
Cơ bản thì Autofill của Chrome KO thể chạy được nữa nếu chúng ta cho copy dữ liệu từ shipping address qua billing address bằng javascript
Với function thường giá trị của this khá khó lường, tùy thuộc thời điểm chúng ta gọi nó. Như tình huống sau, nếu không có strict mode, thì giá trị nó là global object (window), còn có strict mode nó sẽ là undefined
function myFunction() {
console.log(this);
}
myFunction();
// => global object (window)
Giá trị nó sẽ tùy thuộc vào ngữ cảnh, như trong trường hợp này, nó chính là object chính chủ của phương thức
Với arrow function, this sẽ luôn bằng với giá trị của function ở ngoài, arrow function không khai báo thêm vùng tự trị riêng (execution context), mà dùng chung với thằng cha
Higher-Order Component (HOC) là kỹ thuật mà các bạn lập trình viên Việt Nam rất thích khi nhắc đến React, riêng mình thì không.
HOC nghe khá trừu tượng và cao siêu, một cái tên sang chảnh cho một cách làm trong React, nó cũng có cái hạn chế và ưu điểm riêng, tuy nhiên thích thì học thôi.
Ôn lại Currying function
Để đọc hiểu bài này dĩ nhiên cần nắm cơ bản ES6, hiểu cà-ri function là thế nào (Currying Functional Programming)
Cà-ri function là cách viết tách một function nhận một đốn…ggggg arguments, tách function đó ra thành nhiều function con, mỗi function nhận 1 argument. Ví dụ
// một hàm sum thông thường
const sum = (a, b) => a + b;
// cà-ri function
const curriedSum = function(a) {
return function(b) {
return (a + b)
}
}
// viết hàm cà-ri bằng arrow function
const curriedSum = a => b => a + b
//gọi hàm cà-ri
curriedSum(4)(5)
Một số cách viết khác của ES6 tìm lại mấy bài cũ của mình đã chia sẻ.
Higher-Order Function
Cái này không mới, trước đây trong javascript vẫn thường viết kiểu truyền một callback function (vì trong javascript function được xem là object nên làm được chuyện này), hay 1 function trả về một kết quả trả về của function khác.
Các hàm như add, multiply chấp nhận số lượng input không giới hạn, hàm calculator sử dụng như một container, làm cha thiên hạ, sai hết đứa này tới đưa khác làm việc, extend thêm một số xử lý trước khi gọi hàm add, multiply
Higher-Order Component
Một higher-order component là một một function nhận vào một component như một argument và trả về “phiên bản mở rộng” của component đó.
Với những trang thương mại điện tử lớn, có những ngày lượt truy cập lên tới hàng triệu mỗi giây. Vậy cách giải quyết của những kiến trúc sư – architect trong những tình huống trên là gì? Cùng trò chuyện cùng anh Trần Phong Phú – Solution Architect đến từ Sendo để học hỏi kinh nghiệm của anh khi đưa ra được cái nhìn tổng quát để có những giải pháp cho từng vấn đề của hệ thống.
Là một công ty công nghệ do chính đội ngũ kỹ sư con người Việt Nam xây dựng nên.
Vai trò và sứ mệnh của Sendo được đóng gói rất đơn giản, dùng thương mại điện tử đại diện cho quốc gia.
Đảm nhận vai trò Solution Architect, công việc của anh xoay quanh:
Đóng góp vào sự phát triển tốt lên mỗi ngày của công ty, theo hướng cải thiện những gì chưa tốt.
Phát hiện ra những yếu tố bất thường để tìm cách giải quyết nó.
Thúc đẩy planning và chiến lược, làm thế nào để giúp công ty phát triển về mặt công nghệ, sự tăng trưởng.
Đáp ứng mục tiêu, thay đổi về mặt tổ chức hay về mô hình hoạt động của công ty.
Một ngày làm việc bình thường của mình là sáng đến công ty, mình tham dự các buổi DSM chung với mọi người để nắm bắt công việc, các issue nào đó. Sau đó mình sẽ tìm kiếm trưởng bộ phận khác để trao đổi và thảo luận vấn đề cần giải quyết như thế nào. Sau đó mình về bàn làm việc của mình cứ như vậy làm việc thôi.
Chia sẻ những kinh nghiệm thực tế tại Sendo
Vào những dịp khuyến mãi lớn (10/10, 11/11,…) lượng người truy cập tăng cao. Vậy làm sao để hệ thống không bị chậm hay bị sập?
Cái này mình nghĩ về mặt kỹ thuật hầu như mọi người đều có sự hiểu biết về hệ thống, nên việc đối phó những cái này như nhau. Ví dụ như Tiki, chương trình “Giựt cô hồn”, phần lớn trong trường hợp này chúng ta chuẩn bị một kịch bản, giả lập tình huống, như vậy chúng ta có thể chuẩn bị hạ tầng, máy móc các tình huống chúng ta phải đối phó với nó, Chúng ta xây dựng các nền tảng như vậy để khi có lượng truy cập vào thì đúng với kịch bản của mình chứ không phải mình bị bất ngờ.
Vì khi hệ thống sập, ví dụ như mình chạy chương trình lúc 12h, nhiều khi nó sập mình mất cả nửa tiếng đến một tiếng khắc phục chuyện đó thì gần như nó qua khung giờ vàng rồi cho nên không cần thiết, cơ bản là các nền tảng phải thiết lập sẵn để đối phó với chuyện như vậy. Nhiều khi chúng ta chỉ muốn 1 thôi nhưng offer lên 5 hoặc 10 luôn thì có thể làm được như vậy.
Tỷ lệ rủi ro bị sập là bao nhiêu khi mà nhiều khi mình chuẩn bị sẵn nhưng có nhiều tình huống phát sinh?
Như nãy mình nói, mình muốn 1 nhưng mình có thể chuẩn bị từ 5 đến 10, cho nên là từ khi mình vào công ty, chưa bao giờ chứng kiến những cái đó, những hậu quả mà không ai nghĩ sẽ diễn ra. Về mặt hệ thống, sẽ có những lúc bị chập chờn, cơ bản mình sẽ thiết kế hệ thống nào đó, gần như là trải nghiệm người dùng tại thời điểm đó đơn giản là mình xem sản phẩm gì đó rất hot, người dùng họ vào cái đó và họ mua cái đó thôi, trải nghiệm rất là đơn giản, click được sản phẩm họ chuẩn bị sẵn từ trước đó rồi, họ mua, họ bấm nút và họ thanh toán, mình chỉ làm sao có flow đó nó smoothly thôi, chứ người dùng họ không vào để làm chuyện khác, nói chung huy động hệ thống hơi lớn để đáp ứng phép flow đó. Cá nhân mình thấy các công ty thương mại điện tử, hoặc bất kỳ công ty nào cũng không thể fail trong tình huống đó được.
Từ lúc tốt nghiệp thì anh xác định theo con đường Solution Architect luôn hay anh thử sức với nhiều vị trí khác nhau và cuối cùng chọn con đường này?
Mình cũng chưa từng nghĩ mình làm ra là trở thành Solution Architect. Tới bây giờ mình mới hiểu được là rất khó để một bạn developer nào tốt nghiệp ra trường lại lựa chọn con đường đó, cái đó giống như là khi mình thành công mình quay lại mình tô vẽ career path thì hợp lý hơn. Bất cứ ai cũng đều muốn việc mình thành công, nên đơn giản là một người sinh viên ra trường việc họ muốn là thành công, cái sự thành công đó tùy theo giai đoạn.
Ví dụ như mình đi làm cũng hơn 10 năm, mỗi lúc nghĩ về sự thành công nó đều khác nhau. Thời còn trẻ mới ra trường, thành công của mình là title gì đó nghe nó kiêu kiêu, như là leader chẳng hạn để mình kiếm được nhiều tiền, sau này rồi thì thấy sự thành công khác đi. Tạm thời mình đủ ăn đủ mặc rồi, nên bây giờ mình mong muốn làm sao để đóng góp giá trị bản thân mình cho công ty, cho cộng đồng.
Tại sao Sendo lại lựa chọn mình trở thành Solution Architect, hoặc trước kia ở các công ty là người design các hệ thống, bởi vì trước đây mình là người xây dựng các hạ tầng, ví dụ mình làm ra cái đó mình sẽ chịu trách nhiệm đến cùng với nó. Không thể lúc nào mình desgin từ ban đầu cũng đúng, nhưng khi có cái gì sai thì mình là người có trách nhiệm đi khắc phục, khi đó mình được tin tưởng từ người mentor của mình, người lãnh đạo của mình, họ cho mình cơ hội để mình thực hành chuyện đó.
Anh hãy chia sẻ vấn đề làm một leader có tâm là như thế nào?
Như thế nào là leader có tâm, thì mình tin vào một người, khi mình gặp bế tắc, người đó sẽ chỉ giúp mình, mình sai từ đâu và mình nên làm lại như thế nào cho đúng, làm bản thân mình strong lên, mình có thể đủ lông, đủ cánh, mình có thể tiếp tục cống hiến cho công ty đó tiếp hay mình có thể rời bỏ để chuyển vị trí khác, mình làm, mình phát triển được bản thân. Một người leader, mentor có tâm như một người anh có tâm, không thể để em của mình, đồng nghiệp của mình núp sau bóng mình mãi được. Đối với mình như vậy là có tâm.
Lúc đảm nhiệm vị trí Solution Architect thì anh tưởng tượng công việc đó như thế nào? Và thực tế nó có giống như anh tưởng tượng không?
Mình tốt nghiệp đại học, mình là cử nhân hay kỹ sư gì đó, đó như là certificate chuẩn do bộ cung cấp rồi. Một người đạt tiêu chuẩn như vậy hầu như đều có background về toán học, về triết học, hay cái gì đó nó giống như nhau, gần như là có nền tảng giống nhau.
Còn nói về vị trí công ty, đơn giản như senior, ở đây họ là senior nhưng ở kia chưa chắc là senior. Một vị trí như full-stack developer, thì ở chỗ khác họ define full bao gồm cả devops hay thế này thế nọ, còn ở chỗ khác thì anh biết làm web, anh biết làm back-end, front-end như vậy thì là full-stack rồi. Thì vị trí solution architect cũng vậy, cũng tùy công ty định vị về vai trò này nọ khác nhau. Đối với vị trí của solution architect mình nghe mọi người nói vị trí Architect cần có 4 định hướng hay thấy mọi người làm về chiến lược, về chiến thuật, hay làm về article hay planning.
Phần lớn các tiệm ăn thiên về các mảng phía dưới, không phải làm về chiến lược, chủ yếu làm về chiến thuật, làm về emplacement, planning. Ví dụ như khi công ty giao cho mình việc gì đó, mình nghĩ về mặt placement thì như thế nào, về mặt các kĩ thuật, chiến thuật mình làm như thế nào. Ví dụ các bài toán phải đòi hỏi thực sự về tư duy, về cách làm, chứ không phải cứ nhào vô mà làm được.
Ví dụ như bài toán về notification chẳng hạn, mảng thương mại điện tử, một user có rất nhiều device, mình không biết user xài cái nào và có hàng chục triệu user như vậy. Thì tất nhiên các nền tảng bây giờ mình nghe đơn giản là đã có, chẳng hạn như Google Drive Space này nọ nó bắn rồi, vậy mình care cái gì về nó. Giả sử mình cần thống kê về số lượng notification ai đọc và chưa đọc, mình phải lưu lại thông tin user đó với tin nhắn đã đọc hay chưa True – False, nó lên đến hàng triệu messages, nói chung con số nó khủng khiếp, và nhiều tháng thì con số nó khủng khiếp hơn nữa. Và mỗi lần bắn 1 tin marketing như vậy nó có thể hoàn toàn gây ra tắc nghẽn hay đình trệ. Câu hỏi đặt ra là mình cần có chiến thuật, cách làm để mình đảm bảo được requirement và vừa phát triển tính năng đó không bị bế tắc, nếu như mà sập hệ thống là mình bế tắc rồi. Mình có thể làm được điều đó bằng cách planning, bước 1 làm gì, bước 2 làm gì, thường thường công việc của anh hướng như vậy.
Anh có thể tóm gọn khái niệm về Solution Architect theo quan điểm của anh được không?
Mình có thể tìm hiểu các tổ chức lớn, khi define role như thế nào thì mình có thể nhìn theo đó một cách tổng quát. Nhưng trong buổi phỏng vấn mình chia sẻ về Software Architect thiên về hướng emplacement, về chiến thuật, còn ví dụ như về Technical Architect thiên về strategy cộng với emplacement, đó là các tổ chức người ta làm.
Còn khi nói chung một người làm về software, về mặt bản thân người đó cần có một số skills nhất định, cần có skill về kỹ thuật là một điều kiện kiên quyết, nhưng ngoài ra cần có hiểu biết về business nữa, người làm business đã cực khổ đi kiếm khách hàng về, nhưng người làm về kỹ thuật không hiểu biết về business lại trách móc khách hàng stupid thì hai bên sẽ khó giao tiếp với nhau. Rồi mình phải hiểu về process để cho mọi thứ hoạt động trơn tru, một tổ chức càng lớn thì process càng hoàn thiện. Cuối cùng kỹ năng gần như chúng ta cần phải học suốt đời, kỹ năng communication, xây dựng các mối quan hệ tốt đẹp, giống như là relationship.
Riêng những bạn muốn đi theo con đường Solution Architect thì anh có lời khuyên gì cho xuất phát điểm cũng như lộ trình học tập của mấy bạn không?
Rất khó để mà mình khuyên một bạn nào đó ra trường đi theo con đường Solution Architect, làm thế nào để mình thuyết phục được người khác là tui giỏi lắm rồi, bây giờ tui sẽ đảm nhận vị trí solution architect ở công ty của mình, tui làm vị trí này, tui sẽ đem về benefit thật là lớn cho anh? Công ty mình có tổ chức, có những người đã từng đóng góp có người đồng hành của mình rồi, nên là mình không thể nào thấy một người này mà bỏ người kia, nó có rất nhiều yếu tố khiến cho người lãnh đạo – người đồng ý nhận mình làm vị trí solution architect – họ phải cân nhắc, mình phải thỏa các điều kiện không chỉ bản thân mình thôi là mình sẽ làm được.
Nhưng, một bạn developer làm thế nào trong quá trình từng giai đoạn mình phát triển bản thân thì mình phát triển đúng với giai đoạn của mình. Ví dụ như mình mới ra trường, một trong những điều mình thiếu là skill về technical, tại vì ở trường người ta dạy tổng quát mình cũng phải hoàn thiện các skill còn lại, về mặt ngôn ngữ, hệ thống, chiến thuật, database và tất cả những gì mà mình chưa biết, sau đó mình tiếp tục hoàn thiện các skill về business. Và tất nhiên đầu tiên mình là người mới ra trường, chẳng ai đi trao đổi business với mình cả, đi ra ngoài bô bô về business thì thấy hơi trẻ con một chút; rồi nói về quy trình, những người làm về quy trình phải có kinh nghiệm mới làm về quy trình được, chứ mình còn trẻ mà vào làm quy trình thì sẽ bị xáo trộn mọi thứ, rồi sau này mình lớn, mình trở thành senior rồi thì tất nhiên mình mới nói về xây dựng mối quan hệ tốt đẹp, ý là lúc mình còn trẻ mình cũng có nhưng đó là với bạn bè, đồng nghiệp thôi, còn xây dựng mối quan hệ mà mình muốn đề cập để lúc nào mình làm việc cũng smoothly. Mình nghĩ mọi người cứ đi theo từng giai đoạn, từng nấc của cuộc đời như vậy, đến một lúc nào đó trở thành Solution Architect vị trí manager, hoặc có thể mình chọn trở thành vị trí lập trình viên bình thường thôi, cũng là sự lựa chọn của bản thân mình, happy với sự lựa chọn đó.
Ví dụ như mình làm Solution Architect, và lúc nào mình cũng phải đi tranh luận, thuyết phục người khác, rất tốn năng lượng và mất rất nhiều thời gian, mình nghĩ chuyện này chuyện kia, không có thời gian chăm sóc gia đình con cái, còn khi mình là lập trình viên, mình lên mình nhận đúng task và mình làm và tất nhiên mình cũng tạo ra mọi thứ tốt đẹp trên thế giới này thôi và rồi mình về mình ăn ngon ngủ yên, đó là sự lựa chọn của cuộc đời.
Tại sao anh chuyển sang làm về E-commerce? Có phải do tiềm năng nào đó hay có thách thức mà anh muốn khám phá không?
Bản thân mình mọi thứ đến với mình một cách tự nhiên. Ở những công ty lớn họ có rất nhiều điều hay để mình học hỏi, giống như mình nghĩ ở một công ty nhỏ tất nhiên nó đã có một đầu vấn đề rồi mình làm mình cũng biết, nhưng khi ở công ty to nó càng có nhiều vấn đề nữa và làm thế nào để học vận hành bộ máy to như vậy thì đó là một cái thách thức, nếu như mình nhìn vào và nghiên cứu kỹ phần đó sẽ thấy được cách họ giải quyết rất là hay.
Gameloft là một công ty rất to, vận hành có lớp lang, những người mới vào được training một cách bài bản, công việc thì có công cụ để mà khi giao đến từng người thì rõ ràng, mạch lạc; một công ty có giàn hậu thuận đằng sau rất lớn những người giỏi về mặt kỹ thuật, do vậy khi mình ở đó mình được học rất là nhiều. Bài học đầu tiên ở Gameloft mà mình học được đó là các mình em đồng nghiệp rất là máu lửa, tầm nhìn rất xa, thời điểm đó mình ra trường, mình không hiểu vì sao họ lại có được như vậy, và nó giúp mình đặt ra được khát vọng để mình được giống như họ. Lần thứ 2 là mình hiểu được áp lực của người làm business là như thế nào, mình mới thấy thông cảm cho vị trí quản lý của mình, họ chịu rất nhiều áp lực, đó là bài học đầu tiên khi mình làm ở Gameloft mình nhận được.
Sau đó mình làm về công ty outsourcing, cũng làm về product, nhưng mà trong công ty có phát triển sản phẩm chuyên đi thu thập dữ liệu và tách ra thành công ty gọi là Unit Media, để làm về thu thập và phân tích dữ liệu, ở đó cũng có nhiều bài học, là nơi mình trưởng thành thật sự về mặt kỹ thuật. Requirement của sản phẩm đó, nghe thì đơn giản nhưng mà nó phức tạp thế này, mình phải thu thập dữ liệu làm sao nhanh nhất, những nội dung mà người VN mình trao đổi bằng tiếng Việt có ở tất cả các kênh truyền thông phải thu thập về sau nhanh nhất để khách hàng của mình để họ biết được khách hàng của mình đang complain chuyện gì đó trong thời gian rất ngắn để mà đội xử lý truyền thông can thiệp kịp thời, đánh giá tình hình, xem xét và xem cách giải quyết như thế nào.
Giai đoạn sau mình làm ở Sendo, là công ty to và phát triển nhanh, vì vậy đòi hỏi mình phải thiết kế hệ thống thích nghi được sự phát triển nhanh như vậy, với lượng người dùng, lượng traffic lớn, mình cũng phải thiết kế hệ thống làm sao đáp ứng được những chuyện đó. Về thương mại điện tử thì các công ty đều quan tâm yếu tố security, thì mình cũng phải tìm hiểu những chuyện như vậy.
Quay lại câu hỏi “cơ duyên nào chuyển qua thương mại điện tử”, thực ra mình nghĩ đó chuyện cũng giống bao người. Khi mình cũng trưởng thành và cần tìm một môi trường khác thử thách hơn, người anh hiểu năng lực của mình và giới thiệu mình sang một nơi khác phù hợp và mình tiếp tục qua đó đón nhận những thử thách mới, là lúc mình qua làm e-commerce, mình thấy đó là quyết định đúng đắn.
Công nghệ nào đáng sử dụng cũng như ưu/nhược điểm của công nghệ đó?
Đối với suy nghĩ của mình 1 bạn lập trình viên thì nên học ít nhất là 2 ngôn ngữ và nên giỏi ít nhất là 2 ngôn ngữ. Thí dụ như mình có thể giỏi về Golang cả PHP, hay PhP và NodeJS chẳng hạn, rồi về mặt Database, mình nên giỏi cả dựng như cơ sở dữ liệu quan hệ như MySQL, và các cơ sở dữ liệu không mối quan hệ như MongoDB mình còn gọi là NoSQL á. Về mặt framework mình cũng nên biết ít nhất là 2, mình nghĩ như vậy là bởi vì nó giúp cho mình có 1 cái nhìn rộng mở hơn 1 vấn đề, vì lúc nào mình cũng nghĩ về 1 thứ nên mình tự bóp hẹp bản thân mình và nhìn ngắm bản thân mình trong 1 cái gì đó, khi mình nhìn rộng ra 2 hướng, thì nó sẽ có tính tương hỗ và tương thích với nhau thí dụ cái kia nó làm cái này, cái kia nó làm cái khác, 2 cái đó không thể nào giống nhau được, do đó là mình mới hiểu được những người Creator của ngôn ngữ đó họ suy nghĩ gì, họ có cái triết lý gì, họ có cái quan điểm gì trong bản thân họ. Và đó là cái điều mà khi mình biết những chuyện đó, giống như là mình học hỏi được từ những người đi trước, từ những bộ não siêu việt, là những người thiết kế ra ngôn ngữ, cái framework là họ có cái tư duy về hệ thống rất là tốt, tư duy về tổ chức này nọ, và đó là cái khiến cho mình trở nên gọi là mình hiểu biết rộng ra, không chỉ sâu mà rộng.
Anh có thể chia sẻ về những lỗi nào mà một người nhiều kinh nghiệm như anh vẫn có thể gặp phải và điều đó làm anh thay đổi như thế nào?
Một trong những mistake mình hay gặp phải, thí dụ như mình đo lường vấn đề nó dưới mức mà vấn đề đó thực sự có thể đối mặt. Bởi vì mình có thể do chủ quan dựa trên kinh nghiệm của mình, cái thứ 2 là mình không nhận đủ các nguồn thông tin, không phải người khác giấu mình cái gì mà do trong quá trình trao đổi và nói chuyện với nhau mình có thể dễ dàng bị miss những cái thông tin như vậy, dẫn đến mình estimate cái gì thì mình hay under cái mức đó, thí dụ như các bạn lập trình viên bình thường, thì thường over các task được giao, vì khi manager họ nghĩ được rồi, họ chia cái task cho nó nhỏ nhất đến mọi người, nhưng ông manager lại có cái lỗi hay estimate 1 vấn đề dưới ngưỡng cái mức đó, dẫn đến nhiều dự án thất bại như vậy. Đó là những lời thay cho manager thường gặp, còn đối với người làm kỹ thuật thông thường như mình, những lỗi hay gặp là mình bị thiếu cái kỹ năng, ví dụ mình không đánh giá hết hậu quả về vấn đề liên quan tới tài chính network, security, mình không đánh giá được tại 1 thời điểm nào đó, cái mạng với cái băng thông của mình nó sẽ có vấn đề, rồi mình cũng không biết trong cái tổ chức của mình nó có những cái lỗ hổng gì về bảo mật, hay lỗi gì mà nó có thể xảy ra, tại vì những lỗ hổng về cái security không hẳn về yếu tố kỹ thuật phải tốt mà nó còn về yếu tố con người, vận hành về hệ thống, nó rất là khó để cho mình có cái nhìn nào mà hoàn thiện về nó hay ngăn ngừa được những chuyện như vậy, nên nó sẽ vẫn diễn ra.
Việc xây dựng hệ thống thương mại điện tử ở Việt Nam có khác gì so với thế giới?
Mình cũng không thực sự làm những công ty nào mà gọi là tầm cỡ thế giới như là Alibaba, Amazon để mà nói về những vấn đề hay thách thức mà thực sự họ phải đối mặt để giải quyết là gì. Nhưng thực sự làm ở công ty và môi trường Việt Nam trong business về thương mại điện tử thì mình biết là những vấn đề đó nó diễn ra hàng ngày và không dễ giải quyết. Nếu như mình có solution giải quyết và dĩ nhiên không diễn ra nữa, thậm chí là người ta sẽ bán solution đó cho mọi người luôn, và ai cũng có solution là thành công rồi. Thật ra để mà giải quyết những vấn đề đó, nó cần 1 thời gian dài, từ cái việc là xã hội mình thay đổi hành vi, được training lại hành vi, giống như những người trẻ của mình thì mình không rảnh đâu mà đi dìm hàng người khác làm niềm vui cả, cái chuyện đó nghe nó xảy ra như vậy là do hiệu ứng lan truyền của mạng xã hội thôi chứ nó không hẳn là cái chuyện nghiêm trọng, phần lớn cái chuyện mà mình cần lo lắng ở đây là giữa các đối thủ, họ chơi xấu lẫn nhau, bây giờ em bán quần áo, bạn kia bán quần áo giống em thì họ sẽ tìm cách phá em, và người dùng sẽ suy xét chuyện đó, cái nguy hiểm nhất là những người khác họ phá 1 ai đó với mục đích tối tăm với cái ý đồ nào đó không tốt, nếu họ phá vì niềm vui thì hôm sau gặp chuyện khác vui họ sẽ không làm điều đó nữa, thì cái chuyện đó đáng lo ngại, thì cái việc đó, nó không chỉ xử lý về mặt kỹ thuật mà cả những cái xử lý về mặt quy định vận hành. Ngoài ra nó cũng có cái yếu tố là những khách hàng thương mại điện tử họ chạy event thì họ sẽ gom ra lượng lợi ích rất là lớn, thí dụ họ bán iPhone với giá rất là thấp, thì lúc đó sẽ có những đội rất là chuyên nghiệp họ săn hàng thưởng như vậy, thì họ sẽ dùng post, hoặc cái thủ thuật nào đó để mà họ lấy những cái lợi ích đó, về cho bản thân họ, thì thực sự cái vấn đề này về mặt yếu tố kỹ thuật là giải quyết được, dựa trên những fact về 2P, dựa trên hành vi họ, để mà ngăn ngừa những chuyện đó diễn ra, để đưa họ vào cái thang đợi, chậm hơn những người bình thường, để mà nó công bằng với tất cả mọi người.
Theo anh tiềm năng của việc ứng dụng AI trong việc detect những fraud trong lĩnh vực E-Commerce có khả thi không? Hay sẽ có những khó khăn thách thức gì? (về nhân lực, cấu trúc, hệ thống, quy trình…)
Thật ra mấy vấn đề về AI, trước đó mình cũng làm về big data cũng vậy, thách thức nhất của AI là làm sao tăng độ chính xác vấn đề mình làm nên, tại vì nó không phải là con người, thì đòi hỏi máy phải có độ chính xác lớn, nếu nó không lớn như kỳ vọng thì sẽ xảy ra chuyện gì, tức là người ta sẽ nghi ngờ là cái tầng giá trị đó vẫn có những cái chính xác và những cái sai sót, thí dụ mình đánh giá cái người đó là gian lận, nhưng thực ra không phải là gian lận, những người không gian lận nhưng bị đánh nhầm là gian lận, vì vậy nó sẽ có rất là nhiều phản hồi tiêu cực từ phía khách hàng về.
Quay lại với Solution Architect, theo anh đâu là 3 tiêu chí tiên quyết cần có đối với vị trí này?
Mình cũng muốn nói ý này là không chỉ ở vị trí kiên quyết, mình xin nhắc lại không phải kiên quyết của vị trí solution architect mà đối với 1 bạn lập trình viên, thì cái đầu tiên quan trọng và kiên quyết nhất là kỹ thuật xây dựng thì các kỹ năng về mặt kỹ thuật phải được xây dựng dựa trên yếu tố phần lớn là phải tự học, không ai hơi đâu mà chỉ, hay ngồi dạy cho mình, còn người khác dạy hay chia sẻ với mình là bởi vì cả 2 cùng nhận ra được điều còn thiếu của người này, mình học hỏi được người này, mình học hỏi từ người kia, cho nên bản thân mình phải là người biết tự học để mình chia sẻ kiến thức với người khác và nhận được từ người còn lại, thì cái kỹ năng tự học đối với mình là cực kỳ quan trọng, coi lại những điều mà cần trước để mấy bạn phát triển bản thân lên, để trở thành 1 lập trình viên giỏi, đối với 1 senior hay 1 người chuyên về làm architect, đầu tiên là kỹ năng tự học, mục tiêu của nó chính là không phải cái gì mình cũng sẽ được biết hết ở trường, hay là tất cả mọi thứ mình sẽ nhận được từ người khác, mà những kiến thức đó nó nằm trên mạng, trong các framework, hay trong các opensource, hay trong những bài viết, bài chia sẻ, có rất nhiều kênh, hay những kênh giáo dục này nọ, mình phải học nó thì mình tiếp cận với những người đồng nghiệp anh em của mình, mình chia sẻ lại đó và nhận lại những cái chia sẻ ngược lại từ những mảng kiến thức khác người khác dành cho mình, thì mình improve bản thân. Thì nói về tự học, 1 trong những cái đặc điểm mình cho rằng là khả năng ghi chép tất cả những thứ đã được học, dùng đầu óc của mình để nhớ và tự trong 1 môi trường công việc nó áp lực và chịu nhiều căng thẳng, tức là đôi khi mình sẽ quên mất hôm trước mình làm cái gì rồi, do đó mình phải ghi chép lại tất cả mọi thứ được học, mình phát triển kỹ năng, việc block lại tất cả thông tin mình học được, những cái lỗi mà mình đã gặp phải để mà review lại bản thân, hay là mình sẽ đem nó chia sẻ lại cho các bạn junior, những người mà mình sẽ thành trainer trực tiếp cho các bạn đó. Cái thứ 2 là kỹ năng thấu hiểu, thấu hiểu về công việc của người khác, tại vì mình phải thấu hiểu cho bộ phận làm business, như khi mình làm về công ty outsourcing theo kiểu là tìm kiếm và dành lấy từ khách hàng để công việc nó rất là khó rồi mình cũng thấu hiểu cho đồng nghiệp của mình, họ cũng gặp những cái khó khăn trong cái công việc nhất định, tức là mình đi làm mình không thể nào chờ mistake của người khác để mình tấn công họ, mình phải nhìn ra, thông cảm, ông làm wrongmain sẽ thông cảm cho ông làm HM, và ngược lại, thì cái chuyện đó nó giúp mình xích lại gần, hiểu họ.
Theo em thấy việc xây dựng 1 đội dev làm việc hiệu quả rất là quan trọng và cần nhiều yếu tố khác nhau. Anh có thể chia sẻ tips hoặc lời khuyên nào không? Và anh có sử dụng các hình thức như pair programming, cross-training,… hay tạo điều kiện cho các juniors thử sức hay không?
Như em nói mong muốn trở thành người đồng nghiệp tốt của người khác là mong muốn của mình, suy nghĩ của mình đơn giản lắm, mình không muốn ai đi theo sau cái bóng của mình, mình mong muốn tất cả mọi người đều đi song hành cùng mình, tiến lên phía trước cùng mình, vì vậy mà kỹ thuật hay những điều mà mình có thể giúp cho đồng nghiệp của mình bằng cách trực tiếp hay là những cái âm thầm lặng lẽ, mình đều cố gắng làm cả, những cái chiến thực cần có giống như làm pairwork theo nghi thức, đó là phương pháp phát triển phần mềm của công ty, công ty nó có nhu cầu thì mình làm thôi, không vấn đề gì, nhưng tất cả tình cảm, suy nghĩ của mình, mình phải có cái suy nghĩ luôn luôn thúc đẩy các anh em đi lên phía trước, tức là nếu mà có những cái thử thách, hay tìm hiểu những cái điều gì hay mình cũng suy nghĩ làm thế nào để làm cho mọi người thích cái đó, muốn tìm hiểu cái đó, và muốn làm được cái đó, thì cá nhân mình, mình luôn muốn như vậy, thì với những cái suy nghĩ như vậy, cho nên là mình sợ cái người mà minh chia sẻ tất cả mọi thứ, biết tất cả mọi người, giúp cho mọi người hiểu rõ vấn đề, thì khi hiểu rõ mọi người sẽ hiểu là mình có muốn làm chuyện đó hay không, và hiểu rõ thì nhiều khi sẽ thấy thú vị và thấy thú vị thì mọi người sẽ muốn làm, còn mình hay dở trong cái việc mà trở thành 1 người manager tốt giống như là quan tâm chuyện tâm tư tình cảm, gia đình, tình yêu, hay họ ở những cái khía cạnh khác, thì mình không phải là người giỏi trong lĩnh vực đó, như những cái chuyện như là nhiều khi chuyện tình cảm với nhau mình cũng hơi bối rối, mình phải feedback lại hay là mình phải trả lời câu đó như thế nào, nếu câu trả lời của mình hời hợt thì mình nghĩ lại người khác sẽ buồn, mà cái câu hỏi là mình nghĩ để trả lời cho chính xác thì mình phải đào sâu vào trong mối quan hệ đó, thì mình không có thiên hướng như vậy.
Làm thế nào để một bạn xác định được là mình nên đi theo con đường Solution Architect? Anh có lời khuyên nào dành cho các bạn đang muốn hướng tới công việc này không?
Nếu thực sự có quyết tâm để trở thành người top talent về mặt SQL thì giống như mình đã từng xem 1 cái video của TopDev của anh Tùng Nguyễn, trước là làm head về engineering Tiki, sau đó khoảng 1 thời gian mình cũng có buổi ngồi nói chuyện với anh ấy trong quán cà phê. Giống với những gì anh ấy chia sẻ, nói chung để trở thành top talent về mảng SQL, thì có nghĩa là mình viết code giỏi, một cách bài bản, mình phải kiểm chứng và test những phần mềm như QC thực thụ, mình có thể deploy vừa delivery sản phẩm của mình như 1 DevOps 1 cách hoàn chỉnh, thì mình có thể tâm đắc với các chia sẻ của anh Tùng, cách thứ 2 là nhìn vào tính cách của những người như anh Tùng Nguyễn, là người điềm tĩnh, 1 người cẩn trọng, 1 người thông minh nhưng mà khiêm nhường, tại vì mình phải xác định được những điều mình làm, và tất cả những việc làm đó mình sẽ phải học hỏi, thì phải có ai đó, đồng nghiệp chia sẻ mình, giúp đỡ mình, thì với những cái tính cách, công việc thành công như vậy mình có thể tham khảo, học hỏi, nhìn vào đó để đối chiếu với bản thân mình, thì với tính cách của anh Tùng, rất là dễ chia sẻ với người khác, dễ dàng nhận sự hỗ trợ khác, có thể cùng tìm hiểu vấn đề đó chưa đúng, hoàn thiện nó, thì anh nghĩ đó là hình mẫu mà 1 người thành công muốn tham khảo.
Trong team anh có vị trí full-stack developer không? Theo quan điểm của mình, anh có nhận xét gì về vị trí và vai trò của full-stack developer?
Vị trí fullstack developer trong giai đoạn quá trình lịch sử của nước mình nó chia nhiều giai đoạn. Giai đoạn đầu tiên là giống như mình là 1 vương quốc, đế chế như vậy, thì 1 ông vừa biết làm PHP backend có thể làm các HTML frontend thì trở thành fullstack, nên biết làm jQuery, hay Angular này nọ thì trở thành fullstack. Sau này thì những ông biết làm fullstack, thì đòi hỏi cao hơn 1 chút, như biết 1 chút về backend như PHP, biết 1 chút về Frontend, viết app mobile chẳng hạn thì trở thành fullstack. Rồi thậm chí là biết làm về Database nữa, thì gom tất cả những cái đó thì thành fullstack. Ngày nay fullstack là 1 người có đầy đủ tất cả kỹ năng develop về mặt testing, về mặt operate giống như là DevOps, thì những người đầy đủ tất cả các kỹ năng trở thành fullstack, nhưng mà cho đến thời điểm hiện tại của năm 2020, thì chúng ta sẽ thấy, khái niệm nó bị tác động bởi những cái tổ chức lớn như là Google, Amazon thì phải thêm 1 cái yếu tố mà người developer phải biết nữa đó là security thì tất cả những chuyện đó, trở thành fullstack. Tại sao có sự phát triển đó, thì bởi vì đơn giản, kiến thức nó có sự kế thừa, thí dụ như đất nước mình, mảng công nghệ thông tin cách đây 10 năm chỉ là PHP. Bây giờ mình đã tham gia vô sâu hơn trong cái gọi là cái dây chuyền sản xuất, hay cái dây chuyền công nghệ thông tin của thế giới, mình cũng dần dần tiếp cận và được nhận về những cái project, dự án đó, mình cũng có thể có những công ty được xem là kỳ ân, do đó là mình cũng phải áp dụng mấy cái tư tưởng cao như vậy, để mà duy trì và tiếp tục phát triển, do đó là những cái nền tảng đó, đã được đưa về nước mình và được áp dụng, và nhiều cái đã áp dụng thành công. Bây giờ cái khái niệm đó, nước mình cũng đạt được những cái mức độ cạnh tranh như vậy.
Rất cảm ơn anh Phú đã chia sẻ rất tận tình về quá trình làm việc cũng như các kinh nghiệm, bài học anh tự rút ra. TopDev chúc anh và Sendo ngày càng phát triển và thành công hơn nữa, xóa bỏ khoảng cách giữa công nghệ Việt Nam và thế giới, bắt kịp những tiến bộ mới nhất của công nghệ, cũng hy vọng các bạn độc giả có định hướng về Solution Architect hay các bạn developer hiểu rõ hơn cách phát triển bản thân và định hướng nghề nghiệp của chính mình.