Các lập trình viên từ Microsoft đã làm việc cực kì ấn tượng và cho ra lò code editor khá tốt hiện nay, và những update hằng tháng của mình cho thấy bao nhiêu tâm huyết của họ để cải thiện nó.
Nhưng một editor tốt thì không thể hoàn thiện được nếu như thiếu các extension tốt. Sau đây là tổng hợp danh sách 8 extension không thể nào thiếu. Nó giúp làm việc trơn tru hơn và tiết kiệm được rất nhiều thời gian về lâu về dài.
Color Info
VS Code đã cung cấp một preview box màu trong các file CSS. Color Info cho phép bạn có cái nhìn tổng quan về các màu sắc mà bạn chọn, hoàn toàn bằng giá trị CMYK hoặc alpha. Nó giống giống color picker nên rất tiện dụng.
Nếu như bạn phải làm việc trên nhiều máy (đôi khi cả máy virtual), thì extension này là quá hợp lý, nó giúp bạn đồng bộ setting và extension nhờ có Github Gist để download/upload.
Nó giúp highlight các TODO, FIXME và bất kì keyword nào bạn xác định. Chỉ cần viết TODO: và không chỉ highlight chính nó, nó còn highlight tất cả những cái bạn đã viết trong project.
Bookmarks là một extension dùng các bookmark màu xanh nhỏ trong file gutter. Nó cực kì tiện lợi khi bạn cần chuyển vị trí trong file, hoặc nếu bạn cần một cái reminder nhanh gọn trong project. Tôi cài bằng shift + cmd + = (toggle bookmark) và shift + cmd + -(bookmark tiếp) và nhờ vậy mà tôi có thể nhảy qua lại các file mà không cần phải rời bàn phím. Nó còn add một panel nhỏ ngay dưới browser để list ra tất cả các bookmark đang hoạt động trong project hiện tại.
Extension này khá rõ ràng. Chỉ cần type ở đầu file/ directory và nó sẽ tự động điền tên cho bạn. Tiện lời khi bạn cần dẫn đến file nằm trong node_modules.
Mọi khi bạn thường truyền các dependency trong các file Javascript nhờ có Webpack. Nhưng khi bạn cần mockup cái gì đó nhanh gọn, extension này sẽ hỗ trợ. Chỉ cần sử dụng command palette và bạn có thể insert các URL hoặc các tag script/style của tất cả các library dùng cdnjs.
Renova Cloud là đối tác được ủy quyền của Amazon Web Services. Chuyên cung cấp các dịch vụ tư vấn, triển khai và quản lý các giải pháp trên điện toán đám mây cho doanh nghiệp. Mục tiêu của Renova Cloud là hỗ trợ doanh nghiệp trở nên linh hoạt, tiết kiệm chi phí và tối ưu hiệu suất khi vận hành mô hình kinh doanh trên nền tảng mây.
Renova Cloud cung cấp các dịch vụ
▶ Tư vấn: Một đối tác cloud đáng tin cậy với đầy đủ các khả năng kĩ thuật và chuyên môn mang đến tất cả các giải pháp tùy chỉnh cho riêng bạn.
▶ Triển khaI: Cho dù cloud của bạn là on-premise hay off-premise hay hybrid, yếu tố bảo mật là vấn đề cốt lõi. Đồng hành cùng Renova Cloud, bạn sẽ không phải lo lắng bất kì điều gì.
▶ DevOps: Linh hoạt và sáng tạo. Hỗ trợ doanh nghiệp nhanh chóng vận hành và đi vào hoạt động Thời gian phản hồi và đi vào hoạt động sẽ nhanh hơn khi đến với chúng tôi.
▶ Quản lý giải pháp: Đẩy nhanh triển khai, đơn giản hóa vận hành và trao quyền cho doanh nghiệp để đưa ra các quyết định với các dịch vụ quản lý trọn gói.
Tới năm 2021, hơn 70% người dùng doanh nghiệp sẽ được trang bị đáng kể các năng lực trên cloud.
Dịch vụ Điện toán đám mây đã nhận được sự gia tăng bảo trợ của các doanh nghiệp có nhu cầu hoạt động hiệu quả hơn và đối mặt tốt hơn với những thách thức công nghệ mới. Là đối tác của Amazon Web Services, Renova Cloud cung cấp dịch vụ tích hợp trên điện toán đám mây cho doanh nghiệp.
Các lợi ích mà dịch vụ tích hợp này mang lại bao gồm
Với cách tiếp cận dựa trên hiệu quả chi phí, Renova Cloud đảm bảo với các Doanh nghiệp vừa và nhỏ (SMEs), các Doanh nghiệp lớn rằng Renova Cloud có thể tối đa hóa các giá trị họ có thể đạt được cho các dịch vụ Điện toán đám mây thông qua dịch vụ triển khai hiệu quả
Việc tạo ra một Remote Data Center (Trung tâm dữ liệu từ xa) cũng là một khía cạnh quan trọng đối với việc sử dụng Dịch vụ Điện toán đám mây
Các trung tâm dữ liệu (Data Center) có thể được tạo ra ngay lập tức, tại bất kỳ địa điểm nào, không có giới hạn địa lý đối với việc sử dụng Dịch vụ Điện toán đám mây. Việc lên kế hoạch tài chính cho một Doanh nghiệp hết sức dễ dàng khi sử dụng Dịch vụ Điện toán đám mây, cũng như linh hoạt về chi phí và có thể đưa ra các phân tích quan trọng cần thiết cho sự phát triển của Doanh nghiệp.
Renova Cloud cung cấp dịch vụ Điện toán đám mây như một lựa chọn tin cậy, cung cấp dịch vụ CNTT tập trung hoàn toàn tùy biến nhằm xử lý nhu cầu của từng khách hàng. Renova Cloud thấu hiểu sự quan trọng trong việc cung cấp một phạm vi rộng lớn các dịch vụ nhằm quản lý tốt toàn bộ nhu cầu CNTT của một Doanh nghiệp.
Mr. Doron Shachar – CEO của Renova Cloud sẽ là một trong các diễn giả hot nhất Vietnam Mobile Day 2018. Nhanh tay đăng kí và đừng bỏ lỡ cơ hội gặp gỡ và chia sẻ với đại diện của Renova Cloud nhé
Với một quốc gia có trên 90 triệu dân như Việt Nam, theo ước tính đến năm 2020, thế giới sẽ có 20,8 tỷ kết nối và xu hướng phát triển theo hướng xã hội thông minh, thành phố thông minh. Rõ ràng môi trường khởi nghiệp trong lĩnh vực ứng di động tại Việt Nam là một mảnh đất vô cùng màu mỡ.
Năm 2023 đã đi được ¼ chặng đường, các developer nên chuẩn bị tinh thần cho 8 xu hướng tiếp theo sẽ là:
Progressive web app trỗi dậy
Mobile-First Indexing là cốt lõi
Tốc độ mobile app quyết định mọi thứ
Content riêng biệt cho user
Micro-moment có vai trò lớn
A.I – trí tuệ nhân tạo là con át chủ bài
Livestream sẽ là chiến lược social mới
Thanh toán trực tuyến bằng mobile
AR và VR sẽ thống tri thị trường
Và còn rất nhiều xu hướng mobile đáng chú ý nữa sẽ được cập nhật trong ngày hội công nghệ lớn nhất Việt Nam – Vietnam Mobile Day.
Bên cạnh đó, VIETNAM MOBILE DAY LẦN THỨ 8 sẽ còn mang đến cho bạn hơn 100 chuyên đề hấp dẫn xoay quanh các nhóm chủ đề lớn:
What is the future of Fintech?
_Bl0ckch@in: Bubble Or Revolution
Mobile App and Game: All about the red ocean strategy
AI world domination? Real or fiction?
The future of Marketing
Cùng nhiều nhóm chủ đề hấp dẫn khác
Bạn còn chần chừ gì nữa, đăng kí ngay để đồng hành cùng Vietnam Mobile Day
Bài chia sẻ của tác giả Nghiêm Tiến Vĩnh tại cộng đồng Launch
Blockchain được biết đến là công nghệ đứng đằng sau hệ thống tiền mã hóa nổi tiếng nhất thế giới – Bitcoin. Có thể nói khi Bitcoin gây bão trên thị trường tài chính thì Blockchain cũng gây sốt trong giới công nghệ. Số lượng công ty có ý định nghiên cứu và áp dụng Blockchain ngày càng nhiều, lương trả cho kỹ sư Blockchain ngày càng cao. Công ty nào cũng muốn đi trước đối thủ, áp dụng công nghệ được cho là tương lai của thế giới này. Blockchain được hứa hẹn sẽ thay đổi cuộc sống 1 cách sâu sắc, không chỉ trên Internet mà còn trong thế giới thực, từ tài chính cho tới nông nghiệp. Nhưng…
Sau một thời gian tìm hiểu, tôi lại có suy nghĩ khác. Có phải người ta đã quá tô hồng những lợi ích của Blockchain mà bỏ qua những nhược điểm “chết người” của nó ? Ít có bài phân tích viết về nhược điểm của Blockchain, và do đó, tôi muốn viết bài này mong có thể cùng thảo luận với tất cả mọi người.
Câu hỏi gốc mà tôi đặt ra là ” Tôi có thể sử dụng Blockchain vào ứng dụng hiện tại không ? “Và câu trả lời mà tôi tìm được là “Phần lớn những bài toán giải được bằng Blockchain thực ra cũng có thể giải được bằng cách khác”
(Lưu ý: tôi muốn hướng đến những bài toán/ứng dụng không liên quan lĩnh vực tài chính)
Gần đây tôi có tham gia 1 hội thảo về Blockchain, có sự tham gia và trình bày của VeriMe. Theo trình bày của bạn thì nhờ ứng dụng công nghệ Blockchain mà các bạn ấy đã giải được bài toán mà nhiều năm chưa giải được. Theo cách truyền thống, các bạn ấy phải lưu trữ thông tin người dùng trên 1 máy chủ trung tâm, và như thế sẽ gặp vấn đề về lòng tin (như vụ Facebook vừa qua). Giải pháp hiện tại là các bạn dùng cách lưu trữ phân tán (lưu trên chính thiết bị người dùng) và áp dụng thêm tiền kỹ thuật số (đồng VME) để tạo mô hình kinh tế trong phần mềm.
Vấn đề ở đây là các bạn cho rằng các bạn đã ứng dụng Blockchain để giải quyết bài toán gốc – NHƯNG – không phải thế. Cái các bạn ứng dụng là “tiền kỹ thuật số”, để tạo ra “giá trị gia tăng” cho sản phẩm. Các bạn không lưu trữ thông tin gì trên Blockchain (mà lưu trực tiếp trên máy người dùng) do đó không thể nói là ứng dụng công nghệ Blockchain. Nếu bỏ phần tiền đi trong ứng dụng của bạn, thì nó không khác gì một ứng dụng bình thường, chỉ là chuyển từ lưu trữ trên server sang lưu trữ ngay trên thiết bị cuối.
Có nhiều sản phẩm khác cũng được giới thiệu là áp dụng công nghệ Blockchain như truy xuất nguồn gốc, logistic, lưu trữ dữ liệu.. Đây là những bài toán cũ, vốn đã có những giải pháp ở mức này hay mức khác, và nay được nghiên cứu để áp dụng Blockchain. Nhưng liệu việc áp dụng Blockchain vào những lĩnh vực này có hiệu quả không ? Khi mà Blockchain tồn tại những nhược điểm sau :
1. Thông tin lưu trữ mãi mãi và không thể sửa được
Người ta nói đến đặc điểm này của Blockchain như là một ưu điểm nổi trội của công nghệ này. Chúng ta có thể thấy đây là giá trị cốt lõi của Blockchain khi áp dụng vào tiền mã hóa. Nhưng, nếu áp dụng vào một ứng dụng khác thì sao ?
– Truy xuất nguồn gốc có cần lưu trữ thông tin mãi mãi không ? Liệu ngày hôm nay tôi có muốn biết 5 năm trước mình đã ăn cái gì, mua ở đâu, trồng như thế nào không ?
– Khi lưu trữ file trên nền tảng blockchain, tôi có cần biết cách đây 10 năm tôi đã upload file gì lên không?
Trong phần lớn trường hợp, câu trả lời sẽ là “Không”. Vấn đề của blockchain là nó lưu trữ mọi thứ mãi mãi, và nó có thể gây ra một sự lãng phí lớn về không gian lưu trữ. Càng sử dụng lâu, càng nhiều “rác”. Bitcoin hiện cần tối thiểu 145Gb trên máy tính để download toàn bộ giao dịch đã phát sinh. Đấy là mới chỉ những thông tin về giao dịch (mua-bán), nếu nó phải thêm vào những thông tin khác về sản phẩm, vận chuyển, và những metadata khác nữa thì sẽ thế nào. Mỗi node khi muốn tham gia vào hệ thống phải chuẩn bị ổ cứng dung lượng lớn để download sổ cái chung này.
2. Vấn đề băng thông
Mỗi node cần liên lạc với những node khác để nhận giao dịch về, xác thực giao dịch và công bố kết quả kiểm tra giao dịch. Những nhiệm vụ này làm tốn băng thông mạng, có thể ảnh hưởng lớn tới mạng Internet trong khu vực. Từ link ở phần 1 các bạn cũng có thể thấy băng thông cần thiết là 500Mb download/1 ngày và 5Gb Upload/ngày. Wtf ?
3. Vấn đề độ trễ xác minh giao dịch
Không ai xa lạ với vấn đề này. Mạng Bitcoin càng lúc càng mất nhiều thời gian để xác minh 1 giao dịch. Đã có những giải pháp kỹ thuật hoặc những mô hình Blockchain cải tiến để giải quyết vấn đề này. Nhưng thực sự thì vẫn chưa thể bằng những mô hình truyền thống như Visa. Tôi đang có ý định áp dụng tiền mã hóa thành 1 loại tiền để giao dịch trên ứng dụng livestream của mình – Myidol.live. Đây là 1 ứng dụng livestream tặng quà như Bigo nhưng có thể chạy được trên Facebook, Youtube. Khách xem tặng tiền cho người đang livestream – concept cơ bản là vậy. Vấn đề xác minh giao dịch gây ra phiền toái không hề nhỏ ở đây. Khi khách hàng tặng quà cho idol, người ta muốn thấy quà của mình xuất hiện lên màn hình – ngay lập tức – hoặc ít ra cũng trong phạm vi 30s. Không thể tặng quà xong chờ 10 phút sau thì mới biết giao dịch đó có thành công hay không. Pain in the ass.
4. Vấn đề về xử lý
Mạng Blockchain như Bitcoin sử dụng Proof of Work, nôm na là “làm việc hăng say, vận may sẽ tới”. Càng bỏ nhiều công sức thì xác suất kiếm được thưởng càng cao. Việc này đã tạo nên cơn sốt card đồ họa mà chúng ra đã thấy. Người người nhà nhà thi nhau tậu dàn trâu cày khủng để đào tiền kỹ thuật số và duy trì mạng Blockchain.
Điều này đồng nghĩa việc xây dựng mạng blockchain trên ứng dụng di động là bất khả thi do giới hạn về năng lực tính toán. Tôi có ý tưởng xây dựng một ứng dụng voting nhỏ trên smartphone cho cộng đồng, với tham vọng minh bạch hóa quá trình bầu cử (lý thuyết là vậy). Nhưng ứng dụng như vậy sẽ gây nóng máy và hao pin, chẳng ai thích điều đó cả. Kể cả khi toàn bộ cộng đồng tham gia và sử dụng ứng dụng voting của tôi, cũng sẽ gặp phải vấn đề tiếp theo
5. Vấn đề tấn công quá bán
Có 2 cách để ứng dụng Blockchain cho sản phẩm của mình. 1 là ứng dụng 1 mạng lưới Blockchain đã có sẵn – lựa chọn thường thấy là mạng ETH. Cách thứ 2 là xây dựng mạng Blockchain của riêng mình. Việc đó nảy sinh vấn đề. Tôi đã nghĩ đến việc áp dụng Blockchain trong việc kê khai hóa đơn doanh nghiệp. Công ty này bán hàng cho công ty khác, đó là 1 giao dịch. Nếu có thể áp dụng được Blockchain thì thực sự tăng tính minh bạch và giảm tải cho khâu kiểm toán. Ngoài việc 1 mạng lưới như vậy cần sự vào cuộc mạnh mẽ của chính quyền, thì những thông tin như vậy sẽ không muốn áp dụng 1 mạng Blockchain công cộng như ETH. Nhưng xây 1 mạng riêng thì không phải là chuyện dễ dàng. Phải yêu cầu mỗi doanh nghiệp cung cấp 1 máy tính kết nối mạng để duy trì và xác thực mạng Blockchain?
Nếu mạng tự xây dựng không đủ độ lớn cần thiết, nguy cơ bị tấn công quá bán là rất cao (Trường hợp 1 node có năng lực tính toán lớn hơn 50% toàn hệ thống có thể thao túng được kết quả xác thực giao dịch)
6. Vấn đề trustless
Mạng Blockchain được xây dựng với ý tưởng là bạn không cần tin tưởng ai để thực hiện giao dịch. Bạn tự mình xác minh mọi giao dịch và đảm bảo không có gian lận – và nó thực sự hoạt động tốt. Nhưng smart contract có còn đảm bảo được điều này? Smart contract là một ý tưởng rất hay mà tôi hứng thú tìm hiểu. Concept đơn giản nhất là tôi và anh cá cược về thời tiết ngày mai nắng hay mưa. Cả 2 cùng đưa tiền cho 1 cái smart-contract giữ, nếu nắng, nó tự động chuyển tiền cho anh, nếu mưa nó chuyển tiền cho tôi. Mọi việc có vẻ công bằng và minh bạch. Nó giải quyết vấn đề là không cần đưa tiền cho 1 người thứ 3 mà không biết có thể tin tưởng được hay không. Vậy, liệu có thể tin tưởng Smartcontract ?
Smartcontract luôn luôn hoạt động theo những gì nó được lập trình, tôi và anh đều xem được mã nguồn và biết nó làm gì, tại sao nó làm như vậy.
Trở lại ví dụ trên, vấn đề đặt ra là làm sao cái Smartcontract này nó biết hôm nay trời nắng hay mưa? Chúng ta có thể sử dụng API của 1 dịch vụ thứ 3 để xác định điều này, nhưng như thế lại quay trở lại bài toán tin tưởng. Liệu có thể tin tưởng bên thứ 3 này hay không ? Smartcontract không thể hoàn toàn 100% trustless nếu dữ liệu đầu vào là không đúng.
Không chỉ có vậy, nếu hôm nay lúc nắng, lúc mưa sẽ gây ra sự không thống nhất giữa các node và không nhận được kết quả xác đáng.
7. Vấn đề ăn cắp ý tưởng
Smartcontract là trong suốt và ai cũng có thể đọc, hiểu, biết nó làm gì. Điều đó là tốt trong 1 giao dịch, 2 bên cần hiểu rõ những gì mình kí kết. Việc này lại đặt ra 1 câu hỏi khác. Nếu tôi cung cấp cho khách hàng 1 dịch vụ có sử dụng smartcontract. Thì đối thủ cũng có thể dễ dàng copy và tạo ra dịch vụ tương tự trên Blockchain ?
8. Vấn đề bảo mật tài khoản
Blockchain cung cấp cho chúng ta một cái hòm chứa tiền và quảng cáo rằng không gì có thể phá vỡ được. Tiền của bạn sẽ mãi là của bạn, miễn là “bạn giữ chìa khóa”. Chìa khóa ở đây là 1 chuỗi ký tự dài mà bạn không thể nhớ theo cách thông thường bạn nhớ mật khẩu đăng nhập website. Và khi bạn có hàng trăm cái chìa khóa như vậy, bạn phải lưu trữ chúng ở một nơi nào đấy. Chúng ta lại quay lại vấn đề cũ, thay vì làm sao để giữ tiền an toàn thì làm sao giữ chìa khóa được an toàn.
Có rất nhiều câu chuyện kể về một anh chàng nào đấy mất đi cả 1 gia tài chỉ vì thanh lý máy tính cũ, mà trong đó có chứa chìa khóa tới ví Bitcoin đào từ nhiều năm trước. Những website như blockchain.info cho phép bạn tạo ví và lưu trữ chìa khóa trên đó thì lại đưa hệ thống về bài toán lưu trữ tập trung, dễ dàng bị hacker ghé thăm và đánh cắp tiền.
Và khi bạn muốn đưa ví blockchain vào ứng dụng của mình, bạn sẽ phải trả lời câu hỏi : “Ứng dụng hay người dùng sẽ là bên giữ chìa khóa ?” – Cách nào cũng rắc rối cả.
Đây là những đúc kết của tôi khi cố gắng mày mò tìm cách ứng dụng Blockchain vào những sản phẩm của mình. Và kết luận của tôi là “Blockchain chỉ phù hợp với ứng dụng Finance; với những ứng dụng Non-Finance, chúng ta sẽ có cách tiếp cận đơn giản và hiệu quả hơn Blockchain nhiều lần!” Những ý kiến này hoàn toàn là quan điểm cá nhân và tôi rất muốn được lắng nghe ý kiến phản biện của bạn.
Với những đặc điểm ưu việt, nhưng _Blockch@in vẫn còn đó những tồn tại những nhược điểm như trên. Vậy, liệu bạn đã có riêng cho mình những chiến lược toàn diện khi ứng dụng công nghệ này chưa?
Với topic“UMBALA NETWORK – A _BL0CKCH@IN BASED CAMERA STREAMING ECONOMY” tại VIETNAM MOBILE DAY LẦN THỨ 8, diễn giả NGUYỄN MINH THẢO – FOUNDER & CEO của UMBALA sẽ trực tiếp chia sẻ những vấn đề xoay quanh Blockhain trong tương lai cũng như những kinh nghiệm hữu ích từ mạng lưới Umbala trong suốt thời gian anh dẫn dắt.
Tham gia Việt Nam Mobile Day để nhận được những tài liệu hấp dẫn nhất về Blockchain:
✨ THỜI GIAN:
– 27/08/2021 tại Hồ Chí Minh.
– 30/08/2021 tại Hà Nội.
Khái niệm Big Data (dữ liệu lớn) là một thuật ngữ được nhắc đến rất nhiều trong những năm vừa qua, và vẫn chưa có dấu hiệu giảm nhiệt trong năm 2021. Hiện nay, có nhiều sự thổi phồng xung quanh khái niệm trên, và điều đó thật đáng tiếc, vì Big Data là một công cụ cực kì quan trọng mà nhờ đó, xã hội sẽ trở nên tiến bộ hơn.
Trong quá khứ, chúng ta thường nhìn vào những dữ liệu nhỏ, tìm hiểu ý nghĩa của chúng, để cố gắng hiểu về thế giới, và giờ đây, ta có nhiều dữ liệu hơn, nhiều hơn bao giờ hết. Những gì ta biết là khi có một lượng lớn dữ liệu, ta có thể làm những điều mà trước kia không thể.
Dữ liệu lớn thì mới mẻ và vô cùng quan trọng. Một nghiên cứu được thực hiện bởi IBM với 1900 giám đốc điều hành được khảo sát trên toàn cầu cho thấy những doanh nghiệp, tổ chức hoạt động dựa trên việc phân tích số liệu có sự chênh lệch về doanh thu vượt trội là 33%, và chính điều này lý giải cho việc Big Data đang ngày càng được sử dụng rộng rãi cho mọi lĩnh vực từ thương mại, tài chính, viễn thông, y tế, giao thông vận tải cho tới an ninh và quản lý công.
Dĩ nhiên, dữ liệu lớn đương nhiên không hoàn hảo. Trong nhiều trường hợp và hoàn cảnh khác nhau, nó sẽ rất dễ thay đổi và mang theo mình nhiều nguy cơ tiềm tàng chưa thể đong đếm được hết. Nhưng quy cho cùng thì, công cụ nào có tốt hay xấu cũng phụ thuộc vào chính người sở hữu và sử dụng nó mà thôi.
Đến với sự kiện Vietnam Mobile Day, diễn giả Ông Xuân Hồng – một gương mặt không còn quá xa lạ với cộng đồng lập trình sẽ có bài chia sẻ chuyên sâu về chủ đề “Credit Scoring trong thời đại Big Data”, hứa hẹn sẽ mang đến một cái nhìn mới về việc chấm điểm tín dụng được sử dụng trong Big Data hiện nay.
Anh Hồng sở hữu một lí lịch “khủng” với gần 5 năm trong ngành IT và gần 2 năm trong riêng lĩnh vực Data Analyst sau khi tốt nghiệp thạc sĩ tại JAIST (Japan Advanced Institute of Science and technololy). Anh sở hữu vốn kiến thức sâu rộng liên quan đến Dữ liệu, Hệ thống và những xu hướng công nghệ nổi bật thời gian qua như Machine Learning, Python, Java, Scala, GNU/ Linux, NodeJS, MongoDB, PostgreSQL, MySQL, Apache Spark, Docker…
Để đồng hành cùng diễn giả Ông Xuân Hồng, đừng ngần ngại đăng kí những chiếc vé giới hạn ngay hôm nay nhé!
✨ THỜI GIAN:
– 08/2021 tại Hồ Chí Minh.
– 09/2021 tại Hà Nội.
Có rất nhiều lựa chọn text editor cho bạn. Atom và Sublime Text 3 là một trong những text editors nổi nhất hiện giờ.
Sublime Text đã là sự lựa chọn khá phổ biến lâu nay trong giới lập trình. Nó ổn dịnh và đáng tin cậy.
Atom ra mắt bởi GitHub sau Sublime Text. Đây là một text editor hoàn toàn tùy chỉnh. Vì Atom được viết trên HTML, CSS, và JavaScript, bạn có thể tự tùy chỉnh nếu bạn có sử dụng các ngôn ngữ trên.
Text editor nào cũng đều rất có ích cho việc lập trình, vì thế nên bạn cần chọn 1 editor phù hợp rồi dùng thuần thục cho quen. Khi bạn đi sâu hơn vào sự nghiệp lập trình, hãy thử một text editor khác để xem các features khác có phù hợp với workflow của mình hay không.
I. ATOM
Atom là một text editor miễn phí do Github tạo nên. Atom là một open source, nghĩa là tất cả các code của nó đều có thể đọc được, thay đổi theo mục đích sử dụng và thậm chí là đưa ra các cải thiện phù hợp. Atom là một “text editor có thể hack được” vì nó hoàn toàn tùy chỉnh. Bạn có thể xem thêm các package cho Atom thường sử dụng nhất tại đây.
KHÁM PHÁ ATOM
Adding a Project Folder
Atom mang đến cái nhìn tổng thể về project của mình, nên bạn có thể sắp xếp các folder và file khác nhau dễ dàng. Đây là cách sử dụng nó:
Trong menu bar của Atom, chọn File > Add Project Folder. Nó giúp launch file manager của bạn. Hãy xác định folder chứa text hoặc file và chọn Open.
Folder sẽ mở trong side pane của Atom, hiển thị các contents. Chọn từ list file, hoặc chọn một subfolder.
Chọn một Theme
Atom cho phép bạn chọn 1,300 theme khác nhau để phù hợp với color preferences và tối ưu hóa cho code dễ đọc. Các theme rơi vào 2 loại: UI (viết tắt của User Interface) và syntax.
Để thay đổi Atom theme:
Trong menu bar của Atom, chọn Atom > Preferences.
Trong Preferences pane, chọn Themes.
Trong section Choose a Theme, bạn có thể tự xào trộn cho mình UI riêng và các syntax theme từ lựa chọn có sẵn, hoặc khám phá hơn 1,300 Atom themes có sẵn.
Install một Package
Các Package là các add-on đặc biệt giúp bạn tùy chỉnh trải nghiệm code của mình bằng Atom. Ví dụ, bạn muốn một package nhấn mạng các lỗi syntax trong lúc code. Các package như vậy gọi là các linter.
Hãy install linter-tidy cho HTML:
Trên Atom menu bar, chọn Atom > Preferences > Install. Nó sẽ mở ra Settings pane.
Trong vùng search, search linter-tidy. Atom sẽ search trong database của các package.
Khi Atom tìm ra linter-tidy, install package bằng cách click Install:
Để tắt hoặc xóa packages, chọn Atom > Prefererences > Packages, tìm package muốn hủy và chọn Disable hoặc Uninstall.
II. SUBLIME TEXT
Sublime Text cũng là một text editor khá phổ biến. Khác với Atom, Sublime Text is phần mềm có tính phí. Nhưng Sublime Text sẽ cho bạn dung thử miễn phí hoàn toàn trước khi bạn quyết định mua nó hay không. 10 package thường dùng cho Sublime text 3.
TÌM HIỂU CÁC FEATURE SUBLIME TEXT
Add một Project Folder
Giống như Atom, Sublime Text cho bạn cái nhìn tổng thể project của bạn nên bạn có thể định vị các folders và files dễ dàng. Đây là cách dùng nó:
Trên thanh top menu bar, chọn Project > Add folder to project. File manager sẽ mở ra. Định vị project folder tùy ý và chọn Open.
Folder sẽ mở một pane phụ của Sublime Text, hiển thị các content trong folder. Chọn từ list các files, hoặc chọn subfolder.
Chọn Color Scheme
Atom call các themes, còn Sublime Text gọi là các color scheme. Thay đổi color scheme để phù hợp với color preference của bạn và tối ưu hóa chất lượng code.
Để thay đổi color scheme của Sublime Text:
Chọn Sublime Text > Preferences > Color Schemes từ thanh top menu.
Chọn một color scheme từ hơn 20 option có sẵn.
Install một Package
Trước khi cài packages trong Sublime Text, bạn cần phải cài Package Control.
Để cài Package Control:
Trên thanh top menu của Sublime Text, chọn View > Show Console. Sublime Text console sẽ mở ra phía dưới cửa sổ.
BA hiện nay đang là ngành nghề đang cần rất nhiều nhân lực, nhưng chính xác BA (Business Analyst) là gì, làm gì, yêu cầu công việc ra sao và cần học những gì để có thể làm BA. Cùng TopDev theo dõi bài viết hôm nay để giải đáp tất cả thắc mắc xoay quanh Business Analyst.
Business Analyst (BA) là gì?
Business Analyst viết tắt là BA được hiểu là vị trí chuyên viên phân tích nghiệp vụ hay phân tích dữ liệu doanh nghiệp
BA chính là người đứng giữa, kết nối khách hàng với bên kinh doanh và đội kỹ thuật của doanh nghiệp.
Nhiệm vụ chính của BA là phân tích nhu cầu của khách hàng, sau đó truyền đạt, phối hợp với các bộ phận liên quan để có phương án giải quyết phù hợp.
Ngoài ra, business analyst đóng vai trò quan trọng trong việc cải thiện và tối ưu hóa quy trình hoạt động của các doanh nghiệp. Họ sử dụng khả năng phân tích kinh doanh để làm việc với các bộ phận cốt lõi của công ty, từ đó nâng cao năng suất, hiệu quả và lợi nhuận. Dưới đây là chi tiết về vai trò và trách nhiệm của Business Analyst.
BA không chỉ có trong lĩnh vực IT mà còn có trong những lĩnh vực khác như ngân hàng, logistics, y tế,… các vị trí BA này được gọi là non-IT BA.
3 vai trò chính của BA trong dự án
Là người kết nối giữa các stakeholder, giữa stakeholder và nhóm phát triển.
Là người hiểu về cấu trúc, chính sách, cách vận hành của tổ chức.
Đề xuất các giải pháp giúp tổ chức đạt được các mục tiêu.
Định hướng chuyên môn chính của BA
Management Analyst
Management Analyst (Chuyên gia phân tích quản lý) chịu trách nhiệm nghiên cứu và đánh giá quy trình hoạt động trong tổ chức để cải thiện hiệu suất. Họ phân tích các dữ liệu, xác định các vấn đề và đề xuất giải pháp tối ưu đ tăng hiệu suất kinh doanh cho tổ chức, công ty đồng thời tiết kiệm chi phí không cần thiết.
Systems Analyst
Systems Analyst (Chuyên viên phân tích hệ thống vận hành) tập trung vào việc nghiên cứu phân tích và thiết kế hệ thống thông tin trong tổ chức. Công việc của họ là xác định các yêu cầu của user, phân tích tính khả thi của hệ thống, và phối hợp với các developer để đảm bảo rằng hệ thống đáp ứng tốt nhất nhu cầu của doanh nghiệp.
Data Analyst
Data Analyst (Chuyên gia phân tích dữ liệu) chịu trách nhiệm thu thập, xử lý và phân tích dữ liệu nhằm cung cấp thông tin hữu ích phục vụ cho quyết định kinh doanh. Họ sử dụng các công cụ và kỹ thuật phân tích để tìm kiếm các mẫu, xu hướng và thông tin chi tiết có thể hỗ trợ trong việc ra quyết định chiến lược của tổ chức.
>> Bài viết liên quan: BA vs DA – Data Analyst khác gì Business Analyst? Giải đáp ngay!
Làm thế nào để trở thành một Business Analyst (BA)?
Để trở thành BA không nhất thiết bạn phải là người trong ngành IT, tuy nhiên để trở thành BA xịn thì đó là câu hỏi dành cho cả những người trong và ngoài ngành IT, vậy cần bổ sung những tố chất gì để trở thành BA? Chúng tôi xin đưa ra những phân tích bên dưới như sau:
BA trong lĩnh vực IT
Những bạn đang học và làm việc trong lĩnh vực IT như lập trình viên, tester nếu muốn trở thành một BA, họ cần bổ sung thêm những kiến thức cơ bản về các nghiệp vụ khác như kế toán, nhân sự, tài chính… Thường thì những người thuộc lĩnh vực này sẽ dễ dàng hơn trong việc trở thành một BA. Bởi ngoài kiến thức nền tảng chuyên về IT, thì tuỳ vào từng lĩnh vực dự án và tuỳ vào mức độ chuyên sâu của lĩnh vực đó, mà họ sẽ chỉ cần tìm hiểu thêm những kiến thức liên quan và chuyên sâu.
Tuy nhiên, đa phần thì dân kỹ thuật thường có kỹ năng mềm không tốt mấy nhất là các kỹ năng giao tiếp hay đàm phán. Vì vậy nếu mà dân kỹ thuật có 2 tố chất trên thì rất dễ trở thành BA xịn.
BA cho người không chuyên IT
Lợi thế thường thấy của nhóm non-IT BA (thường là dân kinh tế, marketing) đó là về kỹ năng giao tiếp cũng như đàm phán, họ là những người năng động, linh hoạt, và kỹ năng trao đổi cũng tốt hơn. Tuy nhiên rào cản lớn nhất của họ vẫn là kỹ thuật, để hiểu rõ, để có khả năng đàm phán thì họ cần nắm các hệ thống, quy trình kỹ thuật cần thiết, như thế thì mới có thể tư vấn rõ cho khách hàng được.
BA không xuất thân từ kỹ thuật thường làm trong các công ty/tổ chức/doanh nghiệp chỉ liên quan đến một lĩnh vực chuyên môn nào đó nhất định. Họ vẫn đóng vai trò cầu nối, nhưng sản phẩm cuối cùng mà BA này cùng nhóm phát triển phần mềm tạo ra phục vụ cho mục đích sử dụng nội bộ. Do đó, BA lúc này cần có kiến thức chuyên sâu về nghiệp vụ hơn.
BA vừa có kiến thức về IT, vừa có kiến thức cơ bản ở các lĩnh vực khác
Những người thuộc nhóm này thường là những lập trình viên/quản lý dự án lâu năm, đã trải qua nhiều dự án ở các lĩnh vực khác nhau. Họ có kiến thức sẽ bao quát hết mọi lĩnh vực vừa IT, vừa kinh tế. Do đó, nhóm đối tượng này sẽ dễ dàng trở thành BA nhất. Tuy nhiên những người này thường có cảm giác trì trệ, chậm chạp. Vì vậy cái cần thay đổi của họ là nên thường xuyên cập nhật công nghệ mới cũng như linh hoạt trong mindset của mình mà thôi.
Đây là một trong những công việc đáng mơ ước với mức lương cao, đãi ngộ tốt. Bạn có thể xem hàng dài danh sách công ty có Business Analyst jobs tại TopDev.
Các kỹ năng cần có của một Business Analyst
Tư duy phân tích dữ liệu
Tư duy phân tích dữ liệu là nền tảng cơ bản của một Business Analyst. Khả năng xử lý và diễn giải các dữ liệu phức tạp giúp BA đưa ra những quyết định chính xác và hiệu quả. Bạn cần nắm vững các công cụ phân tích dữ liệu như Excel, SQL, hoặc các phần mềm BI (Business Intelligence) để biến dữ liệu thành thông tin có giá trị.
Brainstorming
Brainstorming là kỹ thuật tạo ra ý tưởng và giải pháp thông qua việc động não tập thể. Kỹ thuật này giúp BA thu thập các ý tưởng từ nhóm, khám phá các vấn đề và tìm ra giải pháp sáng tạo. Brainstorming thường được sử dụng để giải quyết các vấn đề phức tạp và phát triển ý tưởng mới.
Tư duy phản biện
Tư duy phản biện không chỉ giúp bạn đánh giá thông tin một cách chính xác mà còn là yếu tố then chốt trong việc phát hiện những bất thường và đưa ra giải pháp phù hợp. Kỹ năng này cho phép bạn đặt câu hỏi đúng và suy nghĩ một cách logic, từ đó hỗ trợ sự phát triển của chiến lược kinh doanh.
Kỹ năng giao tiếp
Các BA cần giao tiếp rõ ràng các chi tiết như yêu cầu dự án, thay đổi yêu cầu và kết quả test, đây là các yếu tố quan trọng quyết định thành công của một dự án hay không. Ngoài ra kỹ năng ngoại ngữ và khả năng sử dụng văn bản để giao tiếp cũng là kỹ năng thiết yếu đầu tiên trong sự nghiệp của một BA.
Với bản chất của công việc, các Business analyst dành rất nhiều thời gian tương tác với người sử dụng, khách hàng, người quản lý và team làm phần mềm.
Kỹ năng công nghệ
Để xác định các giải pháp kinh doanh, một BA nên biết những gì các ứng dụng công nghệ đang được sử dụng, những kết quả có thể đạt được thông qua các platform hiện tại và ứng dụng các công nghệ mới. Testing phần mềm và design hệ thống kinh doanh cũng là những kỹ năng phân tích kỹ thuật quan trọng. Để giao tiếp với khách hàng bạn cần dùng ngôn ngữ kinh doanh, còn để giao tiếp với team kỹ thuật thì chắc chắn bạn phải có kỹ năng này.
Nhạy bén trong kinh doanh
Một Business Analyst cần có khả năng nhận diện các xu hướng và cơ hội trong môi trường kinh doanh. Điều này không chỉ giúp bạn hiểu rõ hơn về thị trường mà còn hỗ trợ trong việc đưa ra các giải pháp sáng tạo nhằm tối ưu hóa lợi nhuận và giảm thiểu rủi ro.
Kỹ năng xử lý vấn đề
Ngành IT luôn luôn có sự thay đổi rất nhanh, công việc của các BA cũng thường xuyên bị thay đổi. Khi các chuyên gia đang developer các giải pháp kinh doanh của khách hàng, không có gì là chắc chắn cái đó sẽ được sử dụng, do đó việc tìm ra cách để nhanh chóng giải quyết vấn đề và tiến tới hoàn thành dự án một cách thành công là một trong những điều quan trọng của một BA.
Kỹ năng ra quyết định
Đây là kỹ năng quan trọng khác của một người BA. Một BA nên có khả năng đánh giá tình hình tốt, tiếp nhận đầu vào từ các bên liên quan và chọn một ra một hướng xử lý hợp lý với tình hình các bên.
Kỹ năng quản lý
Một kỹ năng khách mà BA cần có là khả năng quản lý dự án. Lập kế hoạch phạm vi dự án, chỉ đạo nhân viên, xử lý yêu cầu thay đổi, dự báo ngân sách và giữ tất cả mọi người trong dự án trong vòng ràng buộc thời gian quy định chỉ là một số trong những kỹ năng quản lý mà một BA nên có.
Kỹ năng đàm phán và thuyết phục
Khi đấu thầu cho các dự án của khách hàng, kỹ năng đàm phán của một BA phải sử dụng thường xuyên để đạt được mục tiêu là kết quả có lợi cho công ty và một giải pháp hợp lý cho khách hàng. Để duy trì các mối quan hệ tốt giữa các team bao gồm kinh doanh hay kỹ thuật và với các đối tác bên ngoài đòi hỏi một BA phải có kỹ năng đàm phán và thuyết phục mạnh mẽ.
Học ngành nào thì có thể làm BA?
Chưa có một chuyên ngành hay trường học nào ở Việt Nam đào tạo chuyên sâu 100% về ngành học này. Tuy nhiên, để trở thành một nhân BA, bạn có thể lựa chọn một số ngành học liên quan như:
Các ngành học dành cho dân Business Analyst tương lai
Nhóm ngành Công nghệ thông tin
Không phải ngẫu nhiên mà những người làm trong ngành IT thường được xem là dân BA, vì đa phần dân IT là những người dễ dàng nhất trong việc chuyển đổi sang làm trong lĩnh vực phân tích nghiệp vụ. Theo đó, bạn có thể lựa chọn rất nhiều ngành học khác nhau trong ngành công nghệ thông tin để phát triển đam mê của mình:
Các ngành học này sẽ mang đến cho người học một cái nhìn cơ bản về ngành công nghệ thông tin nói chung và kỹ thuật chuyên ngành nói riêng. Bên cạnh đó, đây cũng là nhóm ngành đòi hỏi suy nghĩ logic rất cao, do đó, bạn có thể học được cách xây dựng, vận hành, phát triển các hệ thống phần mềm một cách hiệu quả nhất. Những bài tập thực tế cần giải quyết trong quá trình học cũng giúp ích rất nhiều cho công việc của một BA sau này.
Nhóm ngành Kinh tế
Trong nhóm ngành kinh tế, các ngành học bạn có thể lựa chọn như quản trị kinh doanh, quản trị tài chính, kế toán, kiểm toán, ngân hàng,… Các công việc của Chuyên viên phân tích dữ liệu liên quan rất nhiều đến các yếu tố tài chính, lợi nhuận công ty, khách hàng. Vậy nên, những sinh viên tốt nghiệp ngành kinh tế được xem là những “mầm non” đầy hứa hẹn cho vị trí Business Analyst.
Công việc của business analyst
Để có thể làm tốt nhất công việc của một BA cũng như giúp giữ lửa đam mê khi làm trong ngành, trong quá trình học kinh tế bạn cũng có thể đăng kí thêm một số khóa học ngắn hạn về công nghệ thông tin. Đây chắc chắn sẽ là điểm cộng cực lớn cho việc phân tích dữ liệu và làm việc sau này của bạn.
Ngành hệ thống thông tin và quản lý
Đây được xem là nhóm ngành đào tạo sát nhất với nghề BA. Các lựa chọn chính của ngành hệ thống thông tin và quản lý gồm Kiến thức cơ bản về Kinh tế và Kiến thức cơ bản đến chuyên sâu của Hệ thống thông tin quản lý. Các môn học này đi sâu vào đào tạo cho sinh viên khả năng tổng hợp và xử lý dữ liệu. Kỹ năng quản lý hệ thống thông tin là cực kỳ cần thiết với bất kỳ doanh nghiệp nào trong việc tổ chức và điều hành hoạt động của công ty.
Mức lương của BA là bao nhiêu?
Mức lương của ngành Business Analyst khá đa dạng, phụ thuộc vào kinh nghiệm và vị trí làm việc. Theo báo cáo của Payscale, mức lương trung bình toàn cầu cho một Business Analyst là khoảng 65,573 USD mỗi năm. Tại Việt Nam, mức lương cho từng cấp bậc của Business Analyst như sau: Fresher thường nhận từ 10 – 15 triệu đồng mỗi tháng, Junior từ 15 – 20 triệu đồng, Senior từ 20 – 40 triệu đồng và các cấp quản lý có thể nhận từ 40 – 60 triệu đồng mỗi tháng.
Thông qua những thông tin trên về ngành Business Analyst, chi tiết về khái niệm, mô tả công việc cũng như các kỹ năng cần có để trở thành 1 BA, TopDev hy vọng bạn có thể tìm được định hướng phù hợp với khả năng và đam mê của mình.
Sáng ngày 18.04, TopDev phối hợp với VECOM (Hiệp hội TMĐT Việt Nam) đã tổ chức thành công buổi họp báo công bố sự trở lại của chuỗi sự kiện công nghệ lớn nhất Việt Nam – Vietnam Mobile Day. Buổi họp báo có sự tham gia của đại diện các nhà tài trợ, đối tác, đơn vị hỗ trợ, đơn vị đồng hành, diễn giả và các đơn vị Báo chí & Truyền thông.
Theo đại diện BTC, VMD2018 dự kiến thu hút hơn 10.000 lượt người tham dự và hơn 200 Techstartup; cùng hơn 100 topic chuyên sâu về công nghệ được chia sẽ bởi hơn 100 diễn giả đầu ngành trong và ngoài nước; đặc biệt là sự xuất hiện của các chuyên gia đến từ các tập đoàn lớn như: Google Play, Microsoft, Nielsen, Facebook,… chắc chắn sẽ làm thỏa lòng mong đợi của những tín đồ đam mê công nghệ, đồng thời mở ra nhiều cơ hội phát triển mới cho các doanh nghiệp trong lĩnh vực công nghệ tại Việt Nam.
Những topic chủ chốt của VMD lần đầu tiên được bật mí tại buổi họp báo:
Xu hướng và các điểm mới của phát triển Mobile tại Việt Nam và Thế giới
Sự phát triển của ứng dụng Blockchain vào kinh doanh và cuộc sống
Vai trò của trí thông minh nhân tạo AI trong các lĩnh vực IoT, Mobile và Fintech
Mobile Marketing trong tương lai kỷ nguyên AI
Ra mắt vườn ươm khởi nghiệp ứng dụng di động AppWorld
Qua 7 lần tổ chức thành công, Vietnam Mobile Day 2018 lần thứ 8 đang dần khẳng định được vị thế là diễn đàn công nghệ lớn nhất Việt Nam đặc biệt là trong lĩnh vực di động. Đây sẽ là sân chơi không thể thiếu đối với mọi cá nhân, tổ chức lớn nhỏ quan tâm đến mối tương quan giữa công nghệ, di động và website trong thời đại 4.0.
Cùng điểm qua một số hình ảnh tại họp báo ra mắt sự kiện VMD2018:
Ông Nguyễn Hữu Bình – CEO TopDev đại diện BTC đã trình bày “Xu hướng và các điểm mới của phát triển Mobile tại Việt Nam và Thế Giới”Ông Nguyễn Ngọc Dũng – Phó Chủ tịch VECOM (Hiệp hội TMĐT Việt Nam) tđã chia sẻ “Ra mắt vườn ươm khới nghiệp ứng dụng di động AppWorld”Anh Nguyễn Minh Đức – CEO IMGroup đã mang đến cho khán giả một chủ đề thú vị về AI – “Triển khai Marketing trên Mobile trong kỷ nguyên AI”Anh Lê Mai Tùng – CEO EyeQ Tech đã phát biểu về “Vai trò của trí thông minh nhân tạo AI trong các lĩnh vực IoT, Mobile & Fintech”Anh Giáp Văn Đại – CEO Nami Labs chia sẻ về “Sự phát triển của ứng dụng Blockchain vào kinh doanh và cuộc sống”Họp báo có sự tham gia của đại diện các nhà tài trợ, đối tác, đơn vị hỗ trợ, đơn vị đồng hành, diễn giả và các đơn vị Báo chí & Truyền thông.Họp báo có sự tham gia của đại diện các nhà tài trợ, đối tác, đơn vị hỗ trợ, đơn vị đồng hành, diễn giả và các đơn vị Báo chí & Truyền thông.
THỜI GIAN & ĐỊA ĐIỂM DIỄN RA SỰ KIỆN
TP. Hồ Chí Minh: 08/06/2018 tại Grand Palace, 142/18 Cộng Hòa, P.4, Q. Tân Bình, Tp.HCM
TP. Hà Nội: 15/06/2018 tại Trung tâm Hội nghị Forevermark, 614 Lạc Long Quân, Q. Tây Hồ, Hà Nội
Node.js là một công nghệ trending mà nhiều doanh nghiệp quyết định đưa vào vận hành. Nó rất phổ biến trong các app real-time hoặc khi chúng ta tìm kiếm môt giải pháp nhanh chóng và linh hoạt. Nó có rất nhiều ưu điểm so với các công nghệ khác và có lẽ vì thế mà ngày càng nhiều người lấn sân sử dụng Node.js trên app của mình như vậy. Họ kì vọng gì khi sử dụng Node.js khi tạo app như vậy? Chúng ta có một vài ví dụ công ty Nodejs điển hình như sau.
Netflix
Netflix là nhà cung cấp streaming media và video theo yêu cầu hàng đầu thế giới. Hệ thống data-driven của họ thường xuyên chạy những bài toán A/B testing khổng lồ để build nên trải nghiệm phong phú cho hơn 93 triệu subcriber toàn cầu. Một lượng lớn các unique package mỗi cycle dẫn đến một vấn đề về các dependency có điều kiện và khả năng mở rộng của ứng dụng. Đó à lí do tại sao công ty quyết định tận dụng sự nhanh và nhẹ của Node.js. Một trong những kết quả quan trọng của việc này là giảm gần 70% thời gian khởi động.
Bạn có thể tìm hiểu thêm về công trình của họ bằng Node.js trong bài trình bày sau.
Trello
Trello là một app quản lý project mà chúng ta thường dùng để theo sát công việc hằng ngày. Phần server của Trello được build bằng Node.js. Một server chạy theo dữ kiện, không blocking là một giải pháp tuyệt vời để thông báo update tức thì, đòi hỏi giữ rất nhiều liên kết. Node.js cũng giúp ích rất nhiều khi công ty đang thử nghiệm lần đầu một tool cho app single-page. Đây là một cách khởi đầu nhanh chóng và đảm bảo rằng mọi thứ vẫn đang đi đúng hướng.
Xem đầy đủ về tech stack của Trello trên Frog Creek blog.
PayPal
Hệ thống thanh toán điện tử toàn cầu PayPal cũng đã chuyển backend development của mình từ Java sang JavaScript và Node.js. Ban đầu, các team kĩ sư được chia thành nhóm code cho browser và nhóm cho các tầng ứng dụng, và nó không hoạt động hiệu quả. Sau đó các kĩ sư full stack tiến vào cuộc chơi, nhưng mô hình này cũng không lí tưởng. Cuối cùng thì chọn giải pháp dùng Node.js lại giải quyết được vấn đề của họ, vì nó cho phép viết browser và server app trên cùng một ngôn ngữ lập trình – JavaScript. Kết quả là, vấn đề ở cả hai phần được giải quyết và phản ứng với nhu cầu khách hàng hiệu quả hơn.
Nếu bạn tò mò về cách mà PayPal chuyển sang Node.js, xem bài blog post dưới đây.
LinkedIn
LinkedIn, doanh nghiệp và dịch vụ networking nghề nghiệp lớn nhất thế giới, cũng dựa trên Node.js, và mới năm ngoái họ đã chuyển app backend mobile của mình từ Ruby on Rails sang Node.js. Mặc dù vào thời điểm đó có vẻ không được thích hợp lắm, cuối cùng thực tế cũng cho thấy đây là một bước đi thông minh của công ty. App mới nhanh hơn từ 2 đến 10 lần so với các bản tiền thân của nó, và nó cũng cực kì nhẹ. Nhờ đó mà quá trình development cũng khá nhanh.
Walmart là nhà bán lẻ lớn nhất trên thế giới, và họ cũng đang tiến vào thị trường bán lẻ trực tuyến. Ông lớn này cũng đang tham gia vào đoàn tàu sử dụng Node.js – một công nghệ rất trendy mặc dù dính phải nhiều nguy cơ tiềm tàng trong đó. Công ty đã tái thiết mobile app để cung cấp nhiều feature phức tạp ở phía client. Walmart đặc biệt tận dụng I/O bất đồng bộ nổi tiếng của của Node.js và các mô hình event loop single-threaded mà có thể xử lý các request concurrent hiệu quả.
Uber, một platform kết nối tài xế với khách hàng cần dịch vụ di chuyển (kể cả chuyển phát đồ ăn), cũng tận dụng rất nhiều tool và ngôn ngữ lập trình trong app của mình. Tech stack của Uber không ngừng cải tiến, và họ cũng đã cho ra mắt các công nghệ mới rất hiệu quả trên nhiều lĩnh vực. Có thể nói, Node.js là một trong những bước chuyển mình không thể thiếu của công ty, vì nó giúp mở rộng nhanh chóng để đáp ứng nhu cầu tăng cao đối với dịch vụ mà họ cung cấp.
Medium là một platform publish online sử dụng Node.js cho web servers. Mặc dù mới nhìn qua thì web app trong như một trang HTML đơn giản, thực chất có rất nhiều công nghệ liên quan đằng sau nó. Medium là một data-driven platform, phát triển không ngừng theo user và hành vi của họ. Node.js đăc biệt hữu ích khi liên quan đến A/B testing để hiểu được những thay đổi của product và thử nghiệm những ý tưởng mới.
Công ty thương mại điện tử đa quốc gia nổi tiếng cũng mở ra một cánh cửa công nghệ mới. Công ty đã chuyển sang Node.js vì 2 lý do chính: họ cần một app real-time để duy trì liên kết live với server và một giải pháp để bố trí một số lượng dịch vụ e-Bay lớn hiển thị thông tin trên page. Node.js dường như là một sự lựa chọn hoàn hảo.
Vâng, NASA cũng sử dụng Node.js. Công nghệ này nắm giữ vai trò quan trọng hơn những app còn lại vì nó cứu rất nhiều mạng người, đảm bảo các phi hành gia an toàn trong những thời điểm va chạm không gian nguy hiểm. Sau các sự cố mất phi hành gia do data sai sót host ở nhiều địa điểm, NASA đối mặt với thách thức chuyển data về trang phục phi hành gia EVA sang một cloud database khác để giảm thời gian truy cập lại. Hệ thống mới của họ theo Node.js đã giảm thiểu số bước quy trình từ 28 xuống chỉ còn 7.
Các ví dụ trên chỉ là một vài tip sơ bộ của các công ty đã vận dụng Node.js vào sản phẩm của mình. Ngoài ra còn có rất nhiều ông lớn sử dụng Node.js như Microsoft, Google, Yahoo, Mozilla hoặc Github. Công nghệ có thể tạo ra vô vàng cơ hội trong qúa trình phát triển, và chúng ta có thể trông chờ vào nhiều app dựa trên Node.js hơn nữa trên thị trường trong tương lai không xa. Tại Việt Nam thì các công ty công nghệ cũng sử dụng Nodejs rất nhiều, nhìn vào danh sách này thì ta cũng biết ngôn ngữ này đang nóng hơn bao giờ hết.
Bài viết này TopDev sẽ tổng hợp một loạt các câu hỏi phỏng vấn React Native, phù hợp với mọi cấp độ lập trình viên React Native. Dưới đây là danh sách 30 câu hỏi phỏng vấn về React Native kèm theo câu trả lời ngắn gọn.
Câu hỏi phỏng vấn React Native cơ bản
React Native khác gì so với ReactJS?
React Native là một framework cho phép phát triển ứng dụng di động đa nền tảng bằng cách sử dụng cùng một mã nguồn, trong khi ReactJS là một thư viện JavaScript chủ yếu dùng để xây dựng giao diện người dùng cho các ứng dụng web. React Native sử dụng các thành phần UI native, trong khi ReactJS sử dụng DOM ảo để tối ưu hóa việc cập nhật giao diện người dùng trên web.
Liệt kê các điểm chính để tích hợp React Native vào ứng dụng Android hiện có.
Các điểm chính bao gồm: thêm các dependencies cần thiết vào dự án Android, thiết lập môi trường React Native CLI, tạo và liên kết một gói mới từ React Native vào dự án, và cuối cùng là tích hợp mã React Native với mã Android gốc.
Mô tả mạng trong React Native và cách thực hiện các cuộc gọi mạng AJAX trong React Native?
Mạng trong React Native được quản lý bằng cách sử dụng các phương thức AJAX tiêu chuẩn như fetch hoặc thư viện Axios. Các cuộc gọi mạng có thể được thực hiện bằng cách sử dụng fetch để lấy dữ liệu từ một API, xử lý nó và cập nhật state của ứng dụng.
Props Drilling là gì và làm thế nào để tránh nó?
Props Drilling là hiện tượng truyền props qua nhiều cấp của component, có thể gây rối và khó quản lý. Để tránh nó, bạn có thể sử dụng Context API hoặc Redux để quản lý state toàn cục, tránh việc phải truyền props qua nhiều lớp component.
Làm thế nào để debug các ứng dụng React Native và nêu tên các công cụ được sử dụng?
Bạn có thể debug ứng dụng React Native bằng cách sử dụng công cụ React Developer Tools, Chrome Developer Tools, hoặc Flipper. Debugger trong React Native cũng hỗ trợ việc kiểm tra và sửa lỗi qua việc sử dụng lệnh console, breakpoints và xem cấu trúc component.
Mô tả các Timer trong ứng dụng React Native.
React Native hỗ trợ các hàm timer như setTimeout, setInterval, clearTimeout, và clearInterval để quản lý thời gian và tạo các hành động lặp lại hoặc trì hoãn trong ứng dụng.
Redux trong React Native là gì và các thành phần quan trọng của Redux được sử dụng trong ứng dụng React Native?
Redux là một thư viện quản lý state toàn cục cho các ứng dụng JavaScript, bao gồm React Native. Các thành phần quan trọng của Redux bao gồm Actions, Reducers và Store. Actions là các sự kiện mô tả điều gì đó đã xảy ra, Reducers xác định cách state ứng dụng thay đổi để phản hồi lại Actions, và Store là nơi lưu trữ toàn bộ state của ứng dụng.
State là gì và nó được sử dụng như thế nào trong React Native?
State là một đối tượng trong một component React quản lý các dữ liệu thay đổi theo thời gian và quyết định giao diện hiển thị của component. Trong React Native, state được sử dụng để theo dõi và quản lý các thay đổi trong giao diện người dùng.
Làm thế nào để xử lý đầu vào của người dùng trong React Native?
Đầu vào của người dùng trong React Native được xử lý bằng cách sử dụng các thành phần như TextInput, Button, và các sự kiện như onChangeText hoặc onPress. Các sự kiện này sẽ cập nhật state của component và từ đó cập nhật giao diện người dùng.
Props mặc định có sẵn trong React Native không và nếu có, chúng được sử dụng như thế nào?
Có, props mặc định (defaultProps) có sẵn trong React Native và được sử dụng để định nghĩa giá trị mặc định cho các props nếu không được truyền vào từ component cha.
Threads là gì và giải thích các loại thread khác nhau trong React Native với mỗi loại được sử dụng như thế nào?
Threads là các chuỗi thực thi độc lập có thể chạy đồng thời. Trong React Native, có ba loại thread chính: Main Thread (xử lý giao diện người dùng), Shadow Thread (xử lý bố cục và giao diện) và JavaScript Thread (thực hiện mã JavaScript).
Mô tả những lợi ích khi sử dụng React Native?
React Native cho phép phát triển ứng dụng di động đa nền tảng với một cơ sở mã duy nhất, tiết kiệm thời gian và chi phí phát triển. Nó cung cấp hiệu suất gần như native, cho phép tái sử dụng mã giữa các nền tảng và có cộng đồng hỗ trợ lớn.
Flexbox là gì và mô tả các thuộc tính được sử dụng nhiều nhất của nó?
Flexbox là một hệ thống bố cục được sử dụng trong React Native để tổ chức các thành phần trên giao diện người dùng. Các thuộc tính thường dùng bao gồm flexDirection, justifyContent, alignItems, và flexWrap.
Nêu tên các thành phần cốt lõi trong React Native và sự tương đồng của chúng với web?
Các thành phần cốt lõi trong React Native bao gồm View (tương tự div trên web), Text (tương tự p), và Image (tương tự img). Chúng cung cấp các khối xây dựng cơ bản để tạo giao diện người dùng trên di động.
Giải thích Async Storage trong React Native và định nghĩa khi nào nên sử dụng nó và khi nào không nên?
Async Storage là một hệ thống lưu trữ dữ liệu đơn giản cho phép lưu trữ các cặp key-value trên thiết bị di động. Nó nên được sử dụng để lưu trữ dữ liệu mà không yêu cầu bảo mật cao, như cài đặt ứng dụng, và không nên sử dụng cho dữ liệu nhạy cảm hoặc dung lượng lớn.
Các cách khác nhau để định kiểu ứng dụng React Native là gì?
Có thể định kiểu ứng dụng React Native bằng cách sử dụng StyleSheet, inline styles, hoặc các thư viện bên thứ ba như Styled Components hay Emotion.
Làm thế nào để sử dụng Routing với React Navigation trong React Native?
React Navigation là một thư viện phổ biến để quản lý điều hướng trong React Native. Nó cung cấp các navigator như Stack Navigator, Tab Navigator, và Drawer Navigator để quản lý các màn hình và điều hướng giữa chúng.
Giải thích các thành phần FlatList, các tính năng chính của nó cùng với một ví dụ mã? FlatList là một thành phần hiệu quả để render danh sách cuộn dài trong React Native. Nó cung cấp các tính năng như lazy loading, pagination và custom item rendering. Một ví dụ cơ bản:
Các thành phần Touchable trong React Native là gì và khi nào nên sử dụng chúng?
Touchable components là các thành phần tương tác như TouchableOpacity, TouchableHighlight, TouchableNativeFeedback, và TouchableWithoutFeedback. Chúng nên được sử dụng khi bạn cần thực hiện các hành động khi người dùng chạm vào một thành phần.
Làm thế nào để viết mã khác nhau cho iOS và Android trong cùng một codebase? Có module nào hỗ trợ việc này không?
Có thể viết mã khác nhau cho iOS và Android bằng cách sử dụng các phần mở rộng .ios.js và .android.js. React Native CLI tự động xác định hệ điều hành và chạy file tương ứng. Ngoài ra, có thể sử dụng module Platform để phân biệt mã.
Module platform sẽ phát hiện từng nền tảng khi ứng dụng được chạy.
ListView là gì và mô tả cách sử dụng nó trong React Native? ListView là một thành phần cũ để render danh sách trong React Native. Nó đã được thay thế bằng FlatList và SectionList nhưng vẫn có thể được sử dụng cho các ứng dụng cũ hoặc với các danh sách không quá dài.
Bridge là gì và tại sao nó được sử dụng trong React Native? Giải thích cho cả Android và iOS.
Bridge là một cơ chế cho phép giao tiếp giữa mã JavaScript và mã native (Java, Swift) trong React Native. Nó giúp React Native tương tác với các API native và sử dụng các tính năng không có sẵn trong thư viện mặc định.
Toàn bộ mã React Native được xử lý như thế nào để hiển thị kết quả cuối cùng trên màn hình di động?
Mã React Native được dịch thành các lệnh giao diện người dùng native bằng cách sử dụng Bridge. JavaScript thực thi trên một JavaScript thread và giao tiếp với mã native thông qua Bridge để cập nhật giao diện người dùng.
Làm thế nào để làm cho ứng dụng React Native của bạn chạy mượt mà với các animation?
Có thể tối ưu hóa animation trong React Native bằng cách sử dụng Animated API, LayoutAnimation, hoặc thư viện bên thứ ba như Reanimated. Các kỹ thuật như batching updates và giảm số lượng renders cũng giúp cải thiện hiệu suất.
Giải thích setNativeProps. Nó có gây ra vấn đề hiệu suất không và được sử dụng như thế nào? setNativeProps cho phép thay đổi thuộc tính của một component native mà không cần render lại toàn bộ component, giúp cải thiện hiệu suất. Tuy nhiên, nó có thể gây ra các vấn đề về hiệu suất nếu lạm dụng hoặc sử dụng không đúng cách.
Network Security và SSL Pinning là gì?
Network Security là các biện pháp bảo mật để bảo vệ dữ liệu truyền tải qua mạng. SSL Pinning là một kỹ thuật giúp bảo vệ chống lại các cuộc tấn công man-in-the-middle bằng cách chỉ chấp nhận chứng chỉ SSL cụ thể đã được pin trên ứng dụng.
Có phương pháp nào lưu trữ dữ liệu nhạy cảm trong React Native không? Nếu có, hãy nêu phương pháp đó, nếu không có thì làm thế nào để đạt được điều này?
React Native không cung cấp phương pháp tích hợp sẵn để lưu trữ dữ liệu nhạy cảm. Tuy nhiên, có thể sử dụng các thư viện như react-native-keychain hoặc react-native-sensitive-info để lưu trữ dữ liệu nhạy cảm một cách an toàn.
Mô tả vấn đề rò rỉ bộ nhớ trong React Native, làm thế nào để phát hiện và giải quyết nó?
Rò rỉ bộ nhớ xảy ra khi ứng dụng không giải phóng bộ nhớ sau khi sử dụng, dẫn đến việc sử dụng bộ nhớ không cần thiết. Để phát hiện rò rỉ bộ nhớ, có thể sử dụng công cụ Profiler trong React Native Debugger hoặc Android Studio. Giải quyết bằng cách kiểm tra và đảm bảo giải phóng các references không cần thiết và hủy đăng ký các sự kiện khi component bị hủy.
Liệt kê một số bước để tối ưu hóa ứng dụng.
Một số bước tối ưu hóa bao gồm: sử dụng PureComponent hoặc shouldComponentUpdate để tránh render lại không cần thiết, tối ưu hóa hình ảnh, sử dụng FlatList hoặc SectionList thay vì ListView, và giảm kích thước bundle bằng cách chỉ import các module cần thiết.
Nguyên nhân thực sự gây ra vấn đề hiệu suất trong React Native là gì?
Vấn đề hiệu suất trong React Native thường đến từ việc render lại quá nhiều lần, sử dụng bộ nhớ không hiệu quả, quản lý state không tốt, và giao tiếp không hiệu quả giữa JavaScript và mã native thông qua Bridge.
Các câu trả lời ngắn gọn này cung cấp một cái nhìn tổng quan về những kiến thức cơ bản, trung cấp, và nâng cao cần thiết khi chuẩn bị phỏng vấn cho một vị trí liên quan đến React Native.
Những kiến thức cơ bản cần trang bị trước khi phỏng vấn React Native
Phải nắm vững các cú pháp ES6/7, các thao tác với mảng và object phải biết map, filter, find, reduce. Biết await/async là lợi thế.
Hiểu rõ bản chất props và state, life cycle, phân biệt được stateless và stateful component (hoặc smart và dump component).
Tổ chức component phải rõ ràng, tách bạch khai báo styles, hình ảnh. Cách phân tích 1 component: có thể đưa bạn 1 hình ảnh màn hình bạn có thể nói được các thành phần bên trong và cách tổ chức chúng.
Biết cách thao tác với Rest API: đây là bắt buộc. Hiểu được POST/GET/PUT, body data và header (token user).
Biết xài Redux là 1 lợi thế: xin đừng nói bạn chỉ làm app nhỏ nên ko cần Redux, vì như thế chứng tỏ bạn chưa sẵn sàng để học cái mới. Thậm chí công ty mình dùng MobX nên sẽ hỏi bạn có sẵn sàng đổi qua MobX không.
Đã biết sử dụng 1 số lib như React Navigation, React Native Maps, chụp ảnh và chọn ảnh, location, …
Biết làm animation là lợi thế lớn.
Bạn biết lập trình native là lợi thế rất lớn dù là iOS hoặc Android.
QUAN TRỌNG nếu bạn vẫn chưa biết gì, hãy cứ thành thật nói chưa biết gì. Lúc đó mình chỉ quan tâm đến thái độ và mức độ mưu cầu kiến thức của bạn. Trường hợp này mình đánh giá rất cao, thực tế là trên tất cả những kỹ năng ở trên. Tránh cố nói những điều mình không biết và để lại ấn tượng “chém gió” trong đầu nhà tuyển dụng. Nhiều công ty đang tuyển React Native lương khá ngon ở đây nhé TopDev – Việc làm IT.
Và những thứ bạn không muốn share công khai trên Facebook
Nếu bạn cần store thông tin nhạy cảm, đây là cách bạn nên làm:
Khi một user log vào website của bạn, tạo một session identifier và lưu trữ nó lên một cookie. Nếu bạn đang dùng web framework, hãy tìm “cách tạo user session dùng cookies” và làm theo hướng dẫn.
Đảm bảo rằng bất kì thư viện cookie của web framework của bạn dùng đều có httpOnlycookie flag. Flag này làm cho browser không thể đọc cookies, để dùng server-side sessions an toàn bằng cookies.
Đảm bảo rằng cookie library cũng có cài SameSite=strict cookie flag (để tránh bị tân công CSRF), cũng như secure=true flag (đảm bảo cookies chỉ được cài qua kết nối được mã hóa).
Cứ mỗi lần user gửi request đến site của bạn, dùng session ID của họ (extract từ cookie họ gửi) để lấy account detail hoặc từ database hoặc từ cache (phụ thuộc vào độ lớn của website).
Một khi bạn lấy được thông tin account của user, bạn có thể lấy bất kì data nào bằng nó.
Pattern này rất đơn giản, trực tiếp, và quan trọng nhất là: secure. Và bạn còn có thể scale up trang web sử dụng pattern này. Đừng nói tôi rằng các JWTs “nhanh” và “độc lập” và bạn phải dùng local storage để store chúng: bạn sai rồi!
Non-String Data
Nếu bạn cần store data trong browser mà không nhạy cảm và không thuần string, sự lựa chọn tốt nhất cho bạn là IndexedDB. Đây là một API để bạn làm việc với object thuộc database lưu trữ trong browser.
Điều tuyệt vời về IndexedDB đó là có thể dùng nó để lưu trữ thông tin loại: số nguyên, float, etc. Bạn có thể xác định các key chính, xử lý indexing, và tạo giao dịch để ngăn chặn vấn đề hợp nhất dataa.
Bạn có thể xem nhiều tutorial về IndexedDB trên Google tutorial này.
Offline Data
Nếu bạn cần app chạy offline, option tốt nhất đó là dùng combination của IndexedDB và Cache API (một phần của Service Workers).
Cache API cho phép bạn cache network resources mà app cần load.
Bạn có thể xem nhiều tutorial về Cache API trên Google tutorial này.
Lời cuối
Bây giờ sau khi đã nói về local storage, tôi hi vọng bạn đã hiểu tại sao bạn không nên sử dụng đó nữa.
Bạn vẫn có thể sử dụng nó để lưu trữ thông tin công khai đảm bảo:
Và bất kể bạn làm gì, đừng lưu trữ session info (như JSON Web Tokens) trong local storage. Đây là một ý rất tồi và sẽ đưa bạn đến hàng loạt cuộc tấn công có thể ảnh hưởng nặng đến user.
Sáng ngày 12/04/2018, KMS Technology khai trương văn phòng làm việc thứ 4 tại địa chỉ số 02 đường Tản Viên, quân Tân Bình, Tp. Hồ Chí Minh.
KMS Technology được thành lập năm 2009, là công ty hàng đầu vê lĩnh vực gia công phần mềm có trụ sở hoạt động tại California, Georgia và Việt Nam. KMS Technology hiện có hơn 800 nhân viên sau 9 năm hoạt động trên thị trường với nhiều năm liên tiếp góp mặt vào Top 10 Sao Khuê. Công ty này cũng từng có mặt trong danh sách Vietnam Best Places to Work trong 3 năm 2016, 2017 và 2018 (do Anphabe và Intage công bố).Tại buổi khai trường văn phòng thứ 4 tại Việt Nam, KMS công bố kế hoạch gia tăng nhân sự lên đến 1200 người trong năm 2018. Phát biểu tại buổi ra mắt ông Trần Trọng Đại, Tổng Giám Đốc công ty KMS Technology cho biết: “Khai trương văn phòng mới, công bố kế hoạch gia tăng nhân sự lên đến 1200 người là một tín hiệu đáng khích lệ, không chỉ riêng KMS Technology, mà cả thị trường nhân lực ngành công nghệ thông tin nói chung tại Việt Nam. Trong năm nay, công ty sẽ chú trọng đẩy mạnh hơn nữa về mặt con người, thường xuyên tham gia các họat động đào tạo nguồn nhân lực ngành CNTT trong nước, liên kết hợp tác với các trường đại học, các sự kiện chuyên ngành, chương trình học bổng khuyến học và hỗ trợ các tổ chức phi lợi nhuận hướng nghiệp cho sinh viên vùng cao Việt Nam.
Ông Trần Trọng Đại, Tổng Giám Đốc công ty KMS Technology phát biểu tại buổi ra mắt văn phòng
Cũng trong dịp này, KMS Technology tài trợ 200 triệu đồng cho tổ chức phi lợi nhuận, passerelles numériques, với mục đích đào tạo Công Nghệ Thông Tin cho sinh viên miền Trung Việt Nam.
Đại diện KMS Technology trao gói tài trợ 200 triệu đồng cho tổ chức phi lợi nhuận, passerelles numériques
Theo đó, KMS Technology sẽ tài trợ học bổng – tham gia giảng dạy và nâng cấp trang thiêt bị phòng mát cho sinh viên, ngoài ra công ty cũng sẽ tạo điều kiện để sinh viên có cơ hội tham gia thực tập tại văn phòng công ty, trải nghiệm kiến thức thực tế và trang bị những kỹ năng theo nhu cầu của thị trường nhân lực ngành.
Cùng điểm qua một số hình ảnh về văn phòng làm việc của KMS văn phòng Tản Viên.
Văn phòng KMS – Tản Viên có tổng diện tích 3000m2 Sức chứa của văn phòng KMS Technology – số 2 Tản Viên lên đến 650 chỗ ngồiKhông gian làm việc mở, khuyến khích sự sáng tạo của nhân viênKhông gian làm việc mở, khuyến khích sự sáng tạo của nhân viên
Vườn ươm AppWorld là dự án được liên kết thực hiện giữa Yeah1 Group, Hiệp Hội Thương Mại Điện Tử Việt Nam (Vecom) và Trung ương hội Liên hiệp Thanh niên Việt Nam.
Ra đời nhằm tìm kiếm những ý tưởng, ứng dụng di động độc đáo, và hỗ trợ những ý tưởng thành hiện thực, mang chúng đến với hàng triệu người dùng. Nơi tạo ra những câu chuyện thần kỳ như flappy bird của Nguyễn Hà Đông vừa qua…Thúc đẩy ngành công nghiệp nội dung số cho Việt Nam.
Dự án đặc biệt hỗ trợ các cá nhân hoặc doanh nghiệp:
+ Có ý tưởng sáng tạo App nhưng không biết lập trình để hiện thực hóa ý tưởng
+ Hoặc đã có App nhưng không biết cách quảng bá đến nhiều người
+ Đam mê công nghệ và muốn khởi nghiệp Online với các ứng dụng di động
Tham gia cộng đồng AppWorld sẽ được:
+ Được định hướng và sáng tạo ứng dụng của riêng mình, tư vấn phát triển nội dung từ các mentor có kinh nghiệm .
+ Đưa ứng dụng tiếp cận đến hàng triệu người dùng toàn cầu bằng hệ thống media từ Yeah1 Network với lượng cộng đồng trẻ & Influencer có khả năng viral cao trong nước và quốc tế.
+ Tích hợp hệ thống tracking để cải tiến ứng dụng liên tục nhằm đảm bảo theo kịp thị hiếu thị trường.
+ Được hỗ trợ phát triển và hiện thực hóa ý tưởng bởi đội ngũ lập trình chuyên môn cao.
+ Doanh thu cực kỳ cạnh tranh từ hệ thống quảng cáo trực tuyến có thể cạnh tranh với Google hoặc Ad Exchange, Ad Network khác.
+ Team Growth Hacking phân tích các chỉ số ứng dụng để phát triển sâu các ứng dụng tiềm năng.
+ ĐẶC BIỆT CÁC Ý TƯỞNG KHẢ CÓ KHẢ NĂNG ĐƯỢC TIẾP CẬN NGUỒN VỐN TỪ APPWORLD FUND (1M USD).
Thân mời anh/chị quan tâm đến nội dung số, sáng tạo App, đến dự sự kiện ra mắt AppWorld vào sáng thứ 7 tuần này tại HCM.
Bài viết được TopDev tổng hợp ghi chép từ lời khuyên của những expert trong công đồng lập trình tại Việt Nam, hy vọng sẽ góp một phần thêm động lực cho việc học hỏi thêm cái mới.
Như bạn biết đó, trong ngành lập trình này chúng ta luôn phải học hỏi và vận động, chỉ cần bạn dừng lại một chút thì đã tụt lại sau khá nhanh. Ngoài ra, càng lớn tuổi, càng nhiều năm kinh nghiệm thì bạn lại càng mất đi động lực để học vì nhiều lý do khác nhau, đây cũng là vấn đề gây nên lên các tranh luận sôi nổi trong cộng động lập trình.
Nhưng dù sao đi nữa, thì tôi biết chắc một điều rằng: Nếu bạn gắn bó với cái gì đó và luôn sẵn sàng tò mò tìm hiểu, thì bạn sẽ luôn học được điều mới mẻ từ chúng. Tôi không giải thích được tại sao. Nó chỉ hiệu quả như thế thôi. Lý do duy nhất để không hiệu quả đó là không còn hứng thú, đam mê và động lực nữa, điều này là rất dễ xảy ra. Đối với nhiều người họ có những thứ có thể thúc đẩy họ và giúp họ giữ lửa, thì cũng sẽ có những thứ làm họ thụt lùi. Nó có thể xuất phát từ những sự bất an hoặc từ bỏ, nhưng quy cho cùng thì nó vẫn tồn tại.
Để vượt qua những trở ngại này, bạn phải biết cách học những cái bạn cần học. Lập trình là những chuỗi ngày bất ngờ không hồi kết cho đến khi bạn nhìn lại và nhận ra mình là một dev có kinh nghiệm. Quá trình code cần một người cứng rắn mỗi khi bạn gặp trở ngại, nên bạn phải học cách xử lý và sống với nó. Những chỗ khó khăn nguy hiểm nhất trên chặng đường của bạn cũng là những thứ có thể đưa bạn lên level mới, nếu bạn đủ chín chắn và vững vàng. Những cơ hội rất dễ tuột mất nếu như bạn rơi vào hố đen lười biếng và trì trệ.
Bạn không cần phải lo lắng nếu như đi tìm hiểu quá chuyên sâu về một chủ đề riêng, vì càng đi sâu thì bạn càng học được về nhiều thứ khác nữa. Ví dụ, nếu bạn chỉ được đào tạo để trở thành một front-end developer, có lẽ bạn sẽ lo lắng vì không hiểu chuyện gì đang xảy ra. “Tôi không hiểu những cái này là gì. Bao giờ tôi mới trở thành một dev chuyên nghiệp đây…”. Rồi bạn sẽ nản chí, nhưng vấn đề là bạn không cần phải theo đuổi cả tỷ thứ bạn không cần đến, vì mọi thứ tự nhiên sẽ đến khi bạn không ngừng tự thúc đẩy và tìm tòi. Rồi sẽ đến thời điểm, đừng hấp tấp. Những người đi trước đều khuyên thế cả.
Vì thế hãy cứ tập trung vào các task hiện tại, tiếp tục tìm tòi và làm bất cứ thứ gì bạn muốn để tự thúc đẩy bản thân phát triển. Quá trình này tiêu tốn nhiều năm tháng nên bạn không thể vội vã được đâu. Nếu như bạn nghĩ rằng cần một môi trường để có động lực thúc đẩy, để có cơ hội trải nghiệm và thực hiện những cái mới, TopDev – Việc làm IT cho Top Developer luôn mong chờ bạn accept challenge. Cám ơn bạn đã đọc bài viết và hẹn gặp lại bạn ở những Advice khác.
Laravel router có một bộ API rất hữu dụng và hoàn thiện dành cho bạn khi mới bước chân vào Laravel. Những tip dưới đây không phải là quá mới hay bí ẩn, nhưng sẽ giúp ích rất nhiều khi bạn học Laravel 5.
Custom Namespaces
Như đã nói, nếu bạn muốn một nhóm routes sử dụng một namespace như App\Http\Controllers\Admin, bạn có thể xác định namespace bằng cách dùng fluent routing API có trong Laravel 5.4:
Route::namespace('Admin')->group(function () {
// Controllers Within The "App\Http\Controllers\Admin" Namespace
});
Đây chính là cách sử dụng trong RouteServiceProvider tìm thấy trong mỗi Laravel project:
protected function mapWebRoutes()
{
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
}
Do file routes/web.php có namespace, Admin namespace cũng chỉ là tương đối.
Bạn có thể chạy console command sau để tạo các controller trên App\Http\Controllers\Admin:
Router là macroable (Giải thích sơ qua: nó cho phép chúng ta thêm một phương thức hay có thể gọi là một macro, vào một class có sẵn. ), nghĩa là nếu bạn có một nhóm routes mà bạn muốn cung cấp thông qua một package hoặc các nhóm route được cấu hình sẵn có thể tái sử dụng, bạn có thể define một macro trên một service provider.
Ví dụ, bạn có các shopping route cho một shop thương mại điện tử mà bạn đóng nó thành một package, và cho phép user override hoặc customize vài thành phần của routes:
// Inside a service provider boot()
public function boot()
{
Route::macro('shopRoutes', function ($prefix) {
Route::group([
'prefix' => $prefix,
'middleware' => ['shopping'],
], function () {
Route::get('products/{product}', 'ProductsController@show');
// ...
});
});
}
Sau đó khách hàng có thể call macro trong app Laravel mới bên trong routes/web.php:
Các ví dụ về macro rất đa dạng, nhưng bạn chỉ cần nắm cái ý tưởng là được. Tôi đề xuất rằng bạn chỉ nên sử dụng route macro nếu bạn gặp trường hợp như trên. Bạn sẽ biết khi nào là cần thiết!
Debug Routes
Nếu bạn đang tìm mọi cách để find route hoặc debug tất cả các route, command artisan route:list rất hữu ích:
Command route:list giúp ích trong việc đọc tên route và các middleware đi kèm. Ngay sau đây là tip để đặt tên routes.
Đặt tên các Group Routes
Một quy tắc phổ biến trong Laravel đó là đặt tên route, cho phép bạn dễ dàng tham khảo tên route và tránh phức tạp hóa việc code các URI liên quan đến root trong các template của bạn. Trong một số app thì các URI khó code vẫn chấp nhận được, còn một số trường hợp khác, các route được đặt tên sẽ cho phép những cái như sau:
Trong khi có vô vàng cơ hội việc làm rộng mở cho những các ứng viên có background khủng đang được săn đón, đây lại là nỗi khổ của các công ty đang tìm nhân lực. Các tổ chức của mọi ngành nghề đang chìm trong sự khan hiếm người tài, và phải liên tục cạnh tranh trong cùng một talent pool. Thậm chí chỉ để lọt vào tầm ngắm của ứng viên, bạn phải thực hiện cả một quá trình. Trên thực tế thì, nếu một ứng viên từ chối offer của bạn, thì bạn có làm gì để tiếp cận họ đi chăng nữa cũng quy về số 0.
Bạn có thể áp dụng các phương pháp sau để cải thiện mối quan hệ với ứng viên, thương hiệu của công ty bạn, và quan trọng là cải thiện tỉ lệ chập nhận offer.
1. Xem ứng viên như khách hàng của mình.
Có thể bạn đã đọc nhiều về nó, nhưng hãy xem xem nó trông như thế nào trên thực tế. Bắt đầu quá trình thật nhẹ nhàng và tìm xem các yếu tố ưu tiên với họ (chế độ lương thưởng, thăng tiến sự nghiệp, nhiệm vụ). Nếu cuộc gọi phỏng vấn đầu tiên ổn thỏa, hãy mời họ đi cafe hoặc đi ăn trưa và làm quen với họ trước khi tìm hiểu sâu về họ. Tôn trọng thời gian của họ bằng cách rõ ràng về thời gian và buổi phỏng vấn. Hãy nhắn nhủ giám đốc tuyển dụng của công ty bạn làm điều tương tự. Giám đốc sale chắc chắn sẽ không đi tham dự một cuộc họp 15 phút trễ. Nó cũng tương tự như buổi phỏng vấn.
2. Đơn giản hóa process.
Các ứng viên không chủ động có rất ít thời gian để tìm hiểu các cơ hội mới và cũng sẽ có ít động lực để tham gia vào hẳn một process tuyển dụng, đặc biệt là khi so với một ứng viên chủ động hơn. Vượt qua các rào cản và những bước không cần thiết sẽ làm tăng khả năng tuyển được người tài cho công ty bạn.
3. Training cho hội đồng interviewer.
Việc tối thiểu cần làm đó là mở một cuộc họp kickoff phổ biến vai trò để đảm bảo rằng tất cả mọi người trong dàn phỏng vấn hiểu được vai trò của mình trên tổng thể và quan trọng nhất là, vai trò của họ cụ thể trong quá trình tuyển dụng. Buổi họp kickoff này sẽ giúp loại bỏ các câu hỏi trùng lặp – cách nhanh nhất để làm ứng viên từ chối offer.
4. Tập trung vào các giá trị cốt lõi chung cũng như những phẩm chất riêng.
Một nền văn hóa chia sẻ là một trong những ưu tiên hàng đầu của người tìm việc (thường là chỉ đứng sau tiêu chí thăng tiến trong sự nghiệp). Hãy trở thành một option hàng đầu và lí tưởng cho ứng viên bằng cách thể hiện văn hóa công ty từ sớm, để đảm bảo cả hai đều đang song song với nhau.
5. Làm cho buổi phỏng vấn như một cuộc trò chuyện.
Thay vì chỉ là một buổi phỏng vấn toàn các câu hỏi về hành vi, hãy phá cách một chút và biến nó giống như 1 cuộc hội thoại. Các câu hỏi như “Bạn nghĩ thế nào về project ‘X’ mới đây của chúng tôi?” có thể làm câu chuyện trở nên hứng thú hơn. Việc thay đổi này tạo cho ứng viên một khoảng nghỉ giữa các câu hỏi chính chuyên và cho họ một cơ hội để chia sẻ ý kiến của mình về các project, process và những thứ hiện tại của công ty đang thực hiện.
6. Làm cho vị trí xứng với giá trị của họ.
Offer của bạn sẽ trở nên quyền lực hơn nếu nó có offer cơ hội phát triển xa hơn và những nhiệm vụ mới. Khi bạn gặp nhà tuyển dụng lần đầu để bàn về profile ứng viên, hãy cân nhắc tìm hiểu những talent nổi trội trước.
Ấn tượng đầu tiên về công ty của ứng viên thì không còn chỉ về một người hay một cuộc gọi, mà nó nằm ở trang web của họ. Hãy xem đây như một cơ hội để tạo một ấn tượng thật sáng tạo và nổi trội trong mắt ứng viên. Hãy vượt qua khuôn khổ một trang web thông thường và cho một video phác họa “một ngày tại công việc”. Nó làm cho ứng viên cảm thấy gắn kết nhanh hơn và được chuẩn bị tinh thần.
8. Sử dụng đúng lúc các test/ bài tập với ứng viên.
Đừng làm ứng viên choáng ngợp quá sớm với các project, thử thách code, hoặc bài tập về nhà. Quan trọng là thời điểm, và thời gian thích hợp nhất là đến khi giai đoạn sau của quá trình tuyển dụng, vì lúc đấy cả hai đều đã khá hiểu nhau. Nếu ngay từ đầu đã có coding challenge thì đây là con đường ngắn nhất để ứng viên từ chối offer.
9. Tạm rời email và dùng điện thoại.
Đây là điểm để tạo sự khác biệt trong mắt ứng viên, đặc biệt là khi bạn cung cấp các thông tin không hay, ví dụ như team bạn sẽ cân nhắc ứng viên khác cho vị trí đó. Tác phong đưa feedback ngay không phải qua email lại là thứ vị bỏ qua trong thời đại số.
10. Đo lường thất bại và thành công của mình.
Bạn không thể cải thiện những cái bạn không đo đạc. Hãy bắt đầu áp dụng cá khảo sát trải nghiệm ứng viên và track điểm NPS để có một cái nhìn thực tế về những gì bạn đang làm. Thời điểm tốt nhất để thực hiện là sau buổi phỏng vấn onsite đầu tiên trước bất kì thông tin nào về bước tiếp theo để tránh các kết quả sai lệch.
Sau những năm tháng làm việc từ một fresher dev đã đưa tôi trở thành cổ đông của một công ty phần mềm, tôi đang làm việc và dẫn dắt rất nhiều kĩ sư trẻ tuổi. Câu hỏi tôi nhận được rất nhiều đó là làm sao để trở thành senior developer? Câu hỏi này không đơn giản, mỗi nơi có một định nghĩa về senior khác nhau. Tuy nhiên từ kinh nghiệm cá nhân làm việc tại nhiều công ty, tôi phát hiện ra rằng việc trở thành senior dev không chỉ ngừng ở việc thành thạo các tool nhất định. Thật ra, bạn phải có khả năng đưa ra quyết định, đưa ra những ước tính chính xác, và nhiều thứ khác nữa. Dưới đây là những điều mà các dev trẻ tuổi cần để phát triển sự nghiệp của mình, có thể các dev đã từng trải sẽ thấy nó quá bình thường, list này sẽ tóm tắt những gì tôi tìm và nghe được.
Project
1) Biết đâu là ưu tiên và theo nó đến cùng:
Đơn giản hơn là: Tưởng tượng bạn đang xây một căn nhà, theo to-do list thì bạn cần phải lắp toilet và sơn khung cửa sổ. Dĩ nhiên, mọi thứ trong list này đều cần được hoàn thành. Nhưng một căn nhà có thể ở được thì không thể thiếu toilet được, còn khung cửa sổ thì có thể không. Đây có thể là một ví dụ nhảm nhí và tranh cãi rằng đã sẵn có project plan và budget rõ ràng, nhưng trên thực tế plan có thể thay đổi và budget có thể bị cắt giảm. Ý tưởng ở đây là phải biết rõ cái gì quan trọng nhất vào thời gian nhất định và đảm bảo phải hoàn thành nó.
2) Tránh giả định và đặt các câu hỏi hợp lý:
Giả định là nguồn gốc của nhiều vấn đề và cái đáng ghét nhất đó là nó hoàn toàn có thể tránh được. Bạn cần phải tìm hiểu kĩ những thứ mình không biết và hỏi rõ ràng để tránh mơ màng. Ví dụ, tưởng tưởng ai đó hẹn gặp bạn tại Starbucks lúc 8 giờ, thì bạn phải hỏi những câu hỏi rõ ràng như chi nhánh Starbucks nào và hẹn lúc 8 giờ sáng hay 8 giờ tối. Tóm lại, bạn sẽ không rơi vào tình huống tự khiển trách bản thân đã không hỏi rõ.
3) Phân tích trước khi code:
Khi còn trẻ, chúng ta thường muốn thể hiện và viết code nhanh nhất có thể. Tuy nhiên, thật ra nghĩ kĩ trước khi build cái gì đó sẽ nhanh hơn, kể cả khi phải vẽ một vài biểu đồ ra trước, nhưng chúng đều giúp chúng ta có cái nhìn rõ hơn về nó và trả lời các câu hỏi cần thiết. Từ đó bạn có thể viết code an toàn hơn.
4) Đưa ra những quyết định đúng đắn:
Ý tôi nói đến trong những tình huống làm việc chuyên nghiệp. Đầu tiên, liệt kê hết các yếu tố ảnh hưởng đến quyết định của bạn, ví dụ như: implementation như thế nào, trải nghiệm với technology, performance, cost, etc. Một khi đã liệt kê hết các yếu tố, hãy làm tương tự với các option khác. Bây giờ bạn cần phải phân tích các option ra, có thể dùng các technique đơn giản như Pugh Matrix để so sánh giữa các option và support các quyết định bạn đã chọn.
5) Hiểu khách hàng:
Tôi quen nhiều người làm việc với codebase mà không có cả kiến thức lẫn quan tâm đến vấn đề cần giải quyết. Theo tôi, chúng ta gọi đó là những code monkeys và trong tương lai không xa sẽ bị thay thế bởi robot. Khi bạn quan tâm, và mọi người lắng nghe bạn, và hỏi ý kiến từ bạn và trân trọng nó. Và từ đó dần dà, trách nhiệm tăng, và kể cả các cơ hội và giá trị của bạn, và đương nhiên cả ví cũng dày lên.
Tôi hiểu rằng bạn sẽ không muốn trở thành một người vô tâm trong mặt bạn bè hoặc tech lead, nhưng có một sự thật là một team tốt rất cần phần mềm được hoàn thiện đúng dead, và ghét tất cả những trì hoãn và nguyên nhân của nó. Vì thế họ có thể còn thất vọng về bạn hơn nhiều nếu bạn không chịu hỏi, và project sẽ bị trì hoãn, hơn là hỏi cái gì đó kì quặc nhưng hiểu chuyện và học được bài học.
7) Đừng ngại nộp task:
Giao nộp task có thể như một trải nghiệm kinh hoàng nếu bạn là người học việc, nhưng hãy nhớ rằng, chúng ta được trả lương để hoàn thiện product, đơn giản và nhanh chóng. Vì thế, thay vì cố kiếm cớ trì hoãn task: nộp, thương lượng về hậu quả, học từ thất bại và thành công, cải thiện và lặp lại đến khi bạn không còn sợ nữa.
8) Tôn trọng những đồng đội nhiều kinh nghiệm hơn mình:
Đôi khi bạn sẽ bất đồng với những quyết định của tech lead đưa ra, điều đó không sao cả, nhưng trước khi bạn nổi đóa lên tại sao người đó lại sai, tôi đề xuất một cách giải quyết khác: Hỏi xem tại sao họ lại quyết định như vậy, xem và hiểu được bức tranh toàn cảnh, có lẽ có những khuất mắt mà bạn chưa biết. Nói chung việc bạn hiểu cả quá trình ra quyết định của họ vẫn là tốt hơn.
Để làm rõ tôi sẽ kể một câu chuyện nhỏ. Tôi đang làm một project với tư cách Business Analyst và một trong những nhiệm vụ của tôi là viết một số quy trình lưu trữ. Acceptance test của khách hàng được thực hiện tại Trung Quốc và tech lead của chúng tôi phải đến đó để thực hiện bài test. Khoảng một tuần trước khi ra mắt thị trường của test user, tech lead bảo tôi business rule đã sai và cách fix nó. Cái anh ấy nói khiến tôi thấy không hợp lí và tôi đã đã phản hồi anh ấy một cách đầy tôn trọng, và anh ấy vẫn nhấn mạnh rằng tôi nên thay đổi quy trình thì tôi nói anh ấy muốn điều gì thì hãy email. Tất nhiên tôi buộc phải làm theo nhưng không quên tạo backup cho code cũ để có thể lấy ngay khi cần. Một tuần sau, khi test tại Trung Quốc thì nó không pass được bài test và tôi nhận được cuộc gọi từ team lead hỏi tại sao nó lại như vậy và ai phụ trách. Tôi đã rất lịch sự rep lại rằng là anh ấy và forward lại mail cho anh ấy. Khoảng 30 giây sau anh ấy hỏi tôi xem thay đổi nó có tốn nhiều thời gian không. Và ngay lúc đó tôi lấy bản backup ra. Mục đích của câu chuyện đó là đôi khi boss của bạn có thể sai, và trong những tình huống như vậy bạn nên hỏi xác nhận qua email hoặc bất kì phương tiên theo dõi được và có thể suggest luôn giải pháp. Vì thế, trong trường hợp có vấn đề phát sinh bạn sẽ an toàn. Bạn có thể nghĩ nó không cần thiết nhưng đôi khi các sếp có thể nổi đóa lên, nên tôi đề nghị nên suy nghĩ cẩn thận về nó.
10) Trả lời email:
Làm ơn nhớ việc này, đôi khi không nhất thiết phải trang trọng nghiêm túc mà chỉ cần Thank you! hoặc xác nhận bạn đã nhận mail là đủ, và nó sẽ khác xa rất xa so với việc không rep mail.
Mới đây tôi mới đổi code editor chính của mình sang Sublime Text. Một năm vừa qua tôi sử dụng Visual Studio Code để viết code. Cả hai editor rất giống nhau nhưng cũng có những điểm khác biệt quan trọng làm tôi chuyển sang sử dụng Sublime. Note: bài viết này hòa toàn không chê bai phần mềm nào hơn cả. Tôi chỉ đưa ra những quan điểm thật lòng từ những trải nghiệm cá nhân, còn việc chọn code editor là một quá trình rất chủ quan, nên mỗi người sẽ có mỗi quan điểm khác nhau về nó.
Điều gì làm tôi thay đổi
Phân tích các Symbol chính
Khi bạn mở một project trong Sublime Text, nó sẽ tự động mở một trình gọi là trình “phân tích symbol” một từ mỹ miều để nói về việc tìm keywords trong code của bạn. Điều hay về nó là khi tôi type Cmd + Shift + R để mở menu tìm symbol và nhanh chóng tìm ra các class names và methods trong code của mình. Hầu hết thì tôi là việc với PHP nên ví dụ, nếu như tôi đã biết class name mà tôi đang làm là PostController, tôi có thể search và nó trong symbol search và file chứa class PHP sẽ lập tức mở trong editor.
VS Code cũng có hỗ trợ symbol searches, tuy nhiên, nó chỉ hỗ trợ vài ngôn ngữ nhất định. Nó là một third-party PHP symbol analyzer trong VSCode, nhưng với codebase to to một chút là sẽ có vấn đề, trong khi Sublime thì không.
Tốc độ cực nhanh
Sublime Text là text editor nhanh nhất tôi từng sử dụng. Nó mở gần như ngay tức thì và search rất nhanh. Microsoft đã rất cố gắng làm VS Code vận hành hiệu quả, tuy nhiên, VS Code dựa trên Electron. Electron là một JS framework và code bạn được viết trên JavaScript/Node.js, nói trắng ra đây là một cross platform framework. Nó làm cho editor dễ dãng mở rộng, nhưng bạn biết rồi đó, cross-platform framework khi khởi động cần chạy nhiều lib hay extension gắn liền với nó làm cho app khởi động rất chậm và sử dụng nhiều bộ nhớ hơn. Sublime Text là một app được viết native trên C++ hoàn toàn, nên footprint cũng thấp hơn nhiều.
Các Vim Binding tốt hơn
Tôi rất thích các Vim key bindings khi viết code. Dù tôi rất thích các Vim keyboard shortcuts, tôi vẫn muốn dùng text editor tiêu chuẩn hơn để dùng các features mới như sidebar file lists và file tabs. Tôi phát hiện ra rằng Vim support của Sublime chính xác hơn VS Code, giúp tôi viết code nhanh hơn một chút. Sublime hỗ trợ Vim bindings bên ngoài, nhưng bạn còn có thể sử dụng nhiều features hơn nữa nếu bạn dùng Vintageous plugin.
VS Code có phần sidebar rất tốt giúp ta tạo và chuyển file linh hoạt hơn. Sublime cũng có một plugin làm sidebar tốt hơn và các keyboard shortcut plugins khác như AdvancedNewFile giúp việc di chuyển mượt mà hơn, nhưng thật lòng thì tôi vẫn bõ lỡ nhiều feature của VS Code sidebar.
Debugger có sẵn
VS Code có một debugger cài sẵn sử dụng được cho rất nhiều ngôn ngữ. Nó giúp ta sử dụng xdebug của PHP rất đơn giản. Mặc dù Sublime cũng có debugging plugins, nó không được ok như những gì VS Code cung cấp. Trong trường hợp này, tôi vẫn hay mở VS Code nếu như phải debug cái gì đó phức tạp.
Tóm lại, text editor là phạm trù thuộc về chủ quan mỗi người và tính chất công việc. Nếu bạn có phát hiện gì hay của cả 2 editor thì chia sẻ với tôi nhé.
Có thể bạn đã biết đến D3.js và Google Charts. Tuy nhiên còn rất nhiều thứ khác bạn chưa biết đến. Tôi sẽ list ra một vài JavaScript charting libraries mà tôi tìm được trên Github và nhiều nguồn khác trên web :
Mặc dù vị trí kĩ sư phần mềm là một vị trí đáng mơ ước với nhiều người, nhưng trên thực tế thì đây là một công việc rất vất vả đòi hỏi hàng tiếng đồng hồ dưới đèn led, máy lạnh “âm độ” và bị “cách ly” với ánh nắng mặt trời. Nói cách khác, viết được một dòng code đơn giản cũng là cả một nghệ thuật và chính vì thế mà nó đòi hỏi nhiều cảm hứng, sự tập trung và nhiều năng lượng bỏ ra đó. Trong bài viết này tôi sẽ cố gắng giải thích cho bạn một cách dễ hiểu nhất cách để cân bằng giữa duy trì năng lượng tích cực trong môi trường làm việc căng thẳng.
1. Tìm cách giải quyết tiêu hao năng lượng
Tôi vừa mới quay lại làm việc sau 3 tháng có đứa con đầu tiên. Đứa bé vẫn thường thức giấc vài ba lần vào giữa đêm còn tôi thì gần như kiệt sức. Nó gần như đạt đến đỉnh điểm nên tôi không tự chạy xe nữa để tránh xảy ra tai nạn. Cứ nghĩ về chuyện quay lại chốn công sở với những hoạt động bình thường giống như đi đóng phim “Mision Impossible” . Vì thế tôi quyết định tìm hiểu thói quen hàng ngày của mình và tìm cách tránh tiêu tốn năng lượng quá mức.
Tôi đã nắm được khung giờ năng suất nhất trong ngày của mình đó là vào buổi sáng. Chính vì thế tôi phải đảm bảo rằng buổi sáng phải tràn trề năng lượng và phải sử dụng chúng hợp lý.
Khi tôi list ra lịch trình buổi sáng của mình, tôi phát hiện ra rằng tôi đã dùng rất nhiều năng lượng kể cả trước khi đến văn phòng. Mọi ngày tôi dậy lúc 5h để cho con ăn, thay đồ cho con, tự chuẩn bị, rồi đưa bé đến nhà trẻ rồi đến công ty. Khi tôi đến nơi là 8h, thì năng lượng lúc đó đã cạn.
Đây là những kinh nghiệm đối với những người có gia đình như tôi, nếu bạn còn độc thân thì không cần xem qua đoạn này cũng được. Tôi đang cân nhắc về việc bắt xe bus (hoặc bắt Grab) đi đến công ty thay vì tự chạy xe, việc đưa đón con tôi đành phải nhờ ông nội đưa đi, thay vì hối hả trong dòng xe kẹt cứng, tôi lại ngồi thong dong nghe nhạc hoặc đọc sách để tranh thủ nghỉ ngơi. Giá cả sẽ cao hơn rất nhiều – khoảng 5.000 VND (Grab thì nhiều tiền hơn) mỗi lượt, tính ra nó mắc hơn tự đi xe. Nhưng khi tôi nhận ra rằng chi phí này để đổi lấy một ngày làm việc hiệu quả hơn, là khá hợp lý. Nhìn vào tổng giá trị nhận được sau cùng thay vì chỉ nhìn vào giá tiền của mỗi chuyến đi, tôi cũng đã bắt đầu bắt Grab nếu cần đi đâu đó – meetup, khóa học và hội nghị mà trước đây tôi không thể đi.
Tóm lại: check xem thời gian năng suất nhất trong ngày của mình, phân tích xem năng lượng tiêu tốn vào những việc gì và tìm cách giải quyết những phần dư thừa bằng cách tập trung vào bức tranh toàn cảnh chứ không phải là hành động nhỏ lẻ.
2. Hãy cho bản thân nghỉ ngơi
Một trong những đồng nghiệp của tôi không bao giờ nghỉ. Hoàn toàn không. Anh ấy đến sớm và ra về vào 7h. Đôi khi còn tiếp tục làm việc tại nhà. Thậm chí có những ngày anh ấy không nghỉ trưa nữa. Ảnh chỉ vớ đại bất cứ cái gì rồi ăn tại bàn trong khi đang làm việc hoặc chạy đến quán ăn gần nhất, mua đại cái gì rồi về công ty ngay. Có rất nhiều manager cũng có thói quen tương tự.
Một trong những mặt tối nhất của nghề này đó là năng lực nhân viên vẫn được đánh giá dựa trên lượng thời gian làm việc chứ không phải theo hiệu suất. Nghiên cứu gần đây cho thấy nghỉ ngơi rất có lợi cho não: nó tăng tính sáng tạo, cải thiện sự tập trung và giữ mình khỏe mạnh vì cơ thể chúng ta không được “lập trình” để ngồi cả ngày.
Vì thế để giữ cho mức năng lượng luôn cao, lần tới nếu như bạn mệt mỏi, không thể tập trung hoặc ngập trong bug quá lâu, tiếp tục làm việc chỉ làm bạn thêm chán nản thôi. Hãy cố gắng nghỉ ngơi và bug có thể chạy đi đâu mất trước khi bạn kịp để ý.
Thư giãn không có nghĩa là ngừng làm việc. Thực chất nó nghĩa là để cho não nghỉ ngơi. Trong thời gian nghỉ ngơi hãy làm gì đó giúp não bình tĩnh ví dụ như hít thở đều, nghe nhạc, uống một ít trà xanh, tập một vài động tác giãn cơ, thậm chí có thể tắm hoặc ngủ một giấc ngắn nếu có thể.
3. Luân chuyển giữa các task khác nhau
Nghề kĩ sư phần mềm phụ trách rất nhiều task đòi hỏi rất nhiều skill khác nhau: check mail, viết code, testing, nói chuyện với cổ đông, học topic mới, review code, gỡ bug, viết tài liệu, thiết kế feature,…
Nếu bạn đang làm một task chỉ yêu cầu một skill nhất định và bạn cảm thấy như bị cạn dần năng lượng, hãy chuyển sang một task khác đòi hỏi skill khác, nó giống như việc cho một phần của não được nghỉ ngơi vậy. Vì thế bạn có thể linh hoạt chuyển task để cho phần não đã hoạt động từ đầu nghỉ ngơi và có thể quay lại task đó.
Ví dụ như nếu bạn đã code ròng rã 2 tiếng và bắt đầu cạn lực, hãy chuyển sang nói chuyện với đồng nghiệp hoặc check mail. Nếu bạn đang học một topic mới và cần nghỉ ngơi, bạn có thể chuyển sang review code hoặc debug lỗi. Một hồi sau bạn có thể quay lại task ban đầu bạn sẽ thấy năng lượng tràn trề khác hẳn.
Tóm lại, để duy trì năng lượng tích cực trong một công việc căng thẳng cao như nghề kĩ sư phần mềm, hãy làm theo 3 bước: Tìm giải pháp tránh tiêu tốn nhiều năng lượng bằng cách tập trung vào bức tranh lớn, nghỉ ngơi và làm gì đó để giảm căng thẳng cho đầu óc, và luân chuyển nhiều task để cho một phần não bộ được nghỉ ngơi.
Khi bạn đã thử hết các cách mà mọi chuyển vẫn dẫm chân tại chỗ, hay quá chán nản công việc hiện tại mặc dù đã đổi mới các cách làm việc, thì tôi nghĩ đã đến lúc bạn hãy tìm cho mình một thử thách mới để có động lực hơn. Tại TopDev – Việc làm IT cho top developers luôn có hàng ngàn thử thách chờ bạn accept.