Home Blog Page 223

Chia sẻ cơ bản sử dụng machine learning để giải quyết bài toán.

Chia sẻ cơ bản sử dụng machine learning để giải quyết bài toán.

– Bước 1: bạn cần định nghĩa được model, bao gồm đầu vào, đầu ra, và hàm dự đoán, ở đây ví dụ là linear function y = ax + b, với deep learning là non-linear.


– Bước 2: bạn cần tính được sai lệch giữa đầu vào và đầu ra, ở đây gọi là loss, và cần optimize loss, ví dụ sử dụng đạo hàm [gradient descent optimizer], về cơ bản gọi là lim(y) = delta(y)/delta(x), sẽ tiến đến giới hạn.


– Bước 3: bắt đầu quá trình train, về cơ bản là bạn có 1 không gian gồm số mẫu, và size của mẫu, là bộ số input_size + num_epchos, thực hiện việc tính giá trị loss và optimize nó tính lại được trọng số a,b của hàm prediction, quá trình này là estimator của learn phrase, khi đó giá trị loss này thường là rất nhỏ.

 

– Bước 4: thực hiện việc nhận dạng là đưa vào 1 input khác với số lặp ví dụ là 1, xét ví dụ là nhận dạng số, mảng loss của ta là mảng 10 phần tử, thì sẽ lấy giá trị loss nhỏ nhất tại vị trí của số tương ứng, đầu vào sẽ coi như là mảng 10 phần tử, số 1 tương ứng với [0,1,0,0,0,0,0,0,0,0,0]. Mạng có hidden layer đặt tên là bias.

Tham khảo thêm: Việc làm cho lập trình machine learning tại Topdev

Nguồn: Techtalk via thanhtupham

Cách Mạng Công Nghệ Lần 4: Các Ông Trùm Công Nghệ Đang Hướng Đến Thị Trường Di Động Việt Nam

Cuộc cách mạng công nghệ lần 4, không ai muốn bỏ lỡ!

Xu hướng kết hợp giữa các hệ thống ảo và thực thể, vạn vật kết nối Internet (IoT) và các hệ thống kết nối Internet (IoS) hay còn gọi là Cuộc cách mạng công nghiệp lần thứ tư đang làm thay đổi diện mạo thế giới, Việt Nam không nằm ngoài cơn sóng đó.

Nói một cách ngắn gọn thì viễn cảnh các máy móc được kết nối Internet và liên kết với nhau qua một hệ thống có thể tự hình dung toàn bộ quy trình sản xuất rồi đưa ra quyết định sẽ không còn xa xôi nữa.

Trung tâm của cuộc cách mạng trên chính là sự xuất hiện của thế hệ các thiết bị di động cùng các ứng dụng “theo chân” người sử dụng mọi lúc mơi nơi.

vietnam mobile day

Không cạnh tranh trực diện về phần cứng và phần mềm di động như Apple và Samsung nhưng những tập đoàn công nghệ lớn hàng đầu thế giới gồm Microsoft lại có những cải tiến đáng kể về hệ sinh thái của mình để phù hợp với Cách mạng công nghiệp thế hệ 4.0 nói chung và tư duy “Mobile First” nói riêng.

Vùng đất màu mỡ của thị trường Việt Nam

Đầu năm 2017, đại diện của Facebook tại Việt Nam từng nhận định Việt Nam đang gặp “thiên thời, địa lợi” với dân số vàng hơn 32 triệu người ở độ tuổi lao động, chỉ kém sau Trung Quốc, Ấn Độ: “Mặt bằng chung, Việt Nam không thể tham gia được vào các nước G7, nhưng nếu là Internet và Online thì chúng ta có thể đi tắt đón đầu và nhảy cóc. Nước ngoài họ cũng nhận xét là như vậy, nhưng hiện tại Việt Nam vẫn chưa tận dụng được cơ hội đó”

Trong năm 2015, theo các báo cáo số liệu gần đây cho biết, độ tăng trưởng người dùng Facebook tại Việt Nam đang ở mức cao nhất châu Á, điều này giúp Facebook chiếm vị trí lợi thế trên kênh quảng cáo mạng xã hội. Vượt trội về dữ liệu khách hàng và người dùng trên Mobile đã giúp Facebook thu hút hơn 50% chi phí marketing của các nhãn hàng và 85% từ doanh nghiệp Trò chơi trực tuyến (PC & Mobile)

Còn theo Nielsen, thị trường thương mại điện tử Việt Nam đang phát triển vô cùng sôi động trong những năm gần đây cùng với mức độ sở hữu các thiết bị truy cập Internet (smart phone, laptop, tablet) ngày càng tăng của người tiêu dùng Việt đã khai sinh ra một xu hướng người mua sắm mới: xu hướng mua sắm đa kênh (omni channel shopping). Sự khác biệt giữa người mua hàng truyền thống và người mua hàng đa kênh mở ra nhiều cơ hội cho cả nhà sản xuất lẫn nhà bán lẻ.

Không nằm ngoài cuộc chơi, tập đoàn công nghệ Microsoft, trong 4 năm, từ 2012 đến 2016, Microsoft Việt Nam đã để lại những dấu ấn đáng kể với nền công nghệ Việt Nam, tiêu biểu có thể kể đến:

  • Thỏa thuận đối tác chiến lược với nhà bán lẻ Thế giới Di động về kế hoạch và định hướng toàn cầu về công nghệ ‘Cloud First, Mobile First”
  • Hợp tác với tập đoàn Viettel tháng 9/2014 nhằm nâng cao hạ tầng và dịch vụ CNTT trên nền tảng đám mây cho các cơ quan Chính phủ Việt Nam

Đặc biệt, với số lượng lập trình viên Xamarin nằm trong top đầu của Châu Á – Thái Bình Dương, Việt Nam trở thành điểm đến để Microsoft tập trung rất nhiều hoạt động nhằm giới thiệu hệ sinh thái Microsoft Azure như hội thảo Cross-platform Dev Summit diễn ra vào cuối tháng 2/2017.

Không những vậy, thị trường di động Việt Nam còn đang sôi động hơn với làn sóng FinTech đang lên, tính đến năm 2016 cho đến nay đã có đến hơn 30 doanh nghiệp FinTech được thành lập tại Việt Nam, hai phần ba trong số đó đang cung cấp các dịch phụ cho di động. Đây cũng là một dấu hiệu chứng tỏ sự trưởng thành của thị trường di động Việt Nam trong thời gian qua.

Điểm hội tụ của các kỳ lân công nghệ

Vietnam Mobile Day năm nay với đơn vị tổ chức là TopDev hứa hẹn sẽ đem đến cho cộng đồng lập trình và doanh nghiệp tại Việt Nam những số liệu, kiến thức, kĩ năng bổ ích thông qua hàng chục nhóm chủ đề phủ sóng đầy đủ và bao quát tất cả vấn đề nóng nhất trong ngành Mobile như Mobile Marketing, ASO, SEO, Mobile Analytic, Social Media, Cross Platform, Native, Hybrid, Webapp, UX/UI Design, Product Development, QA & Testing, Mobile Game và tối ưu ứng dụng trên các hệ điều hành Android và iOS. Ngoài ra còn có các nhóm chủ đề cực kỳ đặc trưng thuộc phân khúc Architechture, Infrastructure và Mobile Security.

vietnam mobile day

Đặc biệt, Vietnam Mobile Day còn được ví như một cơ hội để các cá nhân, tổ chức, các công ty khởi nghiệp gặp gỡ và mở rộng quan hệ hợp tác, cùng nhau xây dựng hệ sinh thái lớn mạnh, góp phần cho những bước tiến mạnh mẽ về sau. Phía đại diện Microsoft cho biết: “Chúng tôi rất hào hứng với chuỗi sự kiện Vietnam Mobile Day lần này, đây cũng là dịp giúp chúng tôi hiểu rõ và hỗ trợ cho thị trường mobile Việt Nam một cách hiệu quả hơn trong thời gian tới.”

Có thể nói, sự tham gia của hơn 100 chủ đề, 450 doanh nghiệp lớn nhỏ hoạt động trong ngành công nghệ thông tin, hơn 100 đơn vị truyền thông trên khắp cả nước sẽ là một dấu ấn cho các sự kiện công nghệ tại Việt Nam năm nay. Với lần thứ 7 diễn ra Vietnam Mobile Day, sự kiện được giới chuyên môn đánh giá cao và ngày càng chứng tỏ sức ảnh hưởng tích cực đến cộng đồng công nghệ Việt Nam bằng việc số lượng tham dự năm sau luôn tăng vượt bậc hơn năm trước. Chắc chắn đây sẽ là một bữa đại tiệc công nghệ mà không ai muốn bỏ lỡ.

vietnam mobile day

THÔNG TIN CHI TIẾT VỀ SỰ KIỆN

Website: http://mobileday.vn

Fanpage chính thức: https://www.facebook.com/mobiledayevent/

Để biết thêm thông tin xin vui lòng liên hệ:

Ms. Ngọc Đỗ
Điện thoại: 08 6273 3497
Mobile: 0944 685 243
Email: ngoc.do@applancer.net

9 thói quen sống bạn cần phải thay đổi để làm giàu

Nhắc đến việc làm sao để kiếm càng nhiều tiền cũng như để giàu hơn, đôi khi điều cần làm chỉ là bắt đầu cho mình những thói quen thông minh cũng như thay đổi cách sống.

“Thành công là một kĩ năng có thể học được” – T. Harv Eker đề cập trong cuốn sách của ông rằng “Nếu bạn muốn đánh golf giỏi thì bạn phải học nó, nếu bạn muốn đánh đàn piano giỏi thì bạn phải học nó. Thành công cũng vậy, bạn sẽ phải học nó”

Nếu bạn đọc có ước muốn trở nên thành công và giàu có thì hãy đọc ngay 9 điều sau:

Đi chơi với những người bạn ngưỡng mộ

Andrew Carnegie, bắt đầu từ hai bàn tay trắng trước khi trở thành người giàu nhất nước, nói rằng tất cả đều nhờ vào nguyên tắc the Master Mind.

Mục đích của nguyên tắc này là bạn để mình được bao quanh những người giỏi và tài nằng có cùng lí tưởng với bản thân nhằm trao dồi cho mình kiến thức và tầm nhìn từ họ.

Hơn nữa ta cũng sẽ trở nên giống họ, chính vì thế mà mới có câu người giàu luôn chơi với người giàu.

“Đa phần, sự giàu có của bạn và những người bạn thân nhất của bạn không có nhiều khác biệt” – Steve Siebold, nhà văn và cũng là một triệu phú nhận định – “Bạn quen với người thành công thì đầu óc của bạn sẽ càng mở mang. Bởi cách suy nghĩ về tiền của người giàu hoàn toàn khác với lớp trung lưu và lao động bình dân”

Đầu tư tiền để tiền tự sinh lời

Một trong những cách hiệu quả nhất chính là dùng tiền của bạn để đầu tư, càng sớm càng tốt.

“Bạn càng đầu tư nhiều và sớm bao nhiều thì lợi nhuận trả về càng lớn bấy nhiêu” – Michael Solari, nhà quản lí tài chính nổi tiếng, chia sẽ.

Bạn có thể bất đầu bằng cách đầu tư vào cho kế hoạch 401(k) của nhân viên mình. Tiếp theo thì bạn hãy đóng góp vào Roth IRA không thì vào IRA kiểu truyền thống cũng tốt.

Một cách khá hay khác là đầu tư vào các quĩ ngắn hạn. Bạn có thể dùng tiền để dành của mình để mua đất, stock hoặc bond. Mặc dù những thị trường nay thay đổi liên tục nhưng ít ra thì tiền lời vẫn khá là hấp dẫn nếu so với những đồng lương ít ỏi từ các tài khoảng để dành hoặc là lương hưu của bạn.

Kiếm một công việc part-time job

Nếu bạn muốn kiếm thêm thì cách đơn giản nhất là đi làm thêm – và đôi khi nó còn đem về cho bạn nhiều lợi ích khác nữa

Các kĩ năng của bạn sẽ phát triển nhanh hơn khi bạn phải làm việc ở nhiều môi trường khác nhau. Khiến bạn phải suy nghĩ nhanh nhẹn cũng như là cải thiện network của bạn. Hơn nữa, đi làm thêm còn mở ra cơ hội để kiếm tiền nhờ vào những sở thích của bạn như chụp ảnh, dạy học, coaching hoặc là biến niềm đam mê của bạn thành cỗ máy kiếm tiền.

Hãy thử những part time job có mức lương trả cao cũng như đọc về cách trở thành một cỗ máy kiếm tiền từ người phụ nữ từng kiếm được hơn $4,000 mỗi tháng từ side-hustle.

Đọc sách nhiều vào!

Người giàu họ thích được giáo dục hơn là chơi bời – nếu bạn muốn giàu có, trước hết hãy đọc và tìm hiểu về người giàu có và thành công.

“Đi vào nhà của người thành công, bạn sẽ thấy ngay một tủ sách to mà người giàu dùng để tự dạy mình cách thành công” – Siebold nói.

Tỉ phú Warren Buffett dành tới khoảng 80% thời gian làm việc hàng ngày của ông chỉ vào việc đọc sách mà thôi.

Người giàu thì họ luôn học để mở mang kiến thức chứ không chỉ ngừng ở lớp học thôi.

Dùng tài khoản tiết kiệm với lãi suất cao

Đúng rồi đấy! Đôi khi bạn có quá nhiều tiền để tiết kiệm. Điều đó thật lãng phí khi bạn có thể dùng chúng để đầu tư để tiếp tục sinh lời. Vì thế nếu các bạn đang có những tài khoản tiền tiết kiệm nhiều hơn 6 tháng lương thì hãy dùng nó để đầu tư, ít nhất cũng nên gửi vào loại tài khoản tiết kiệm dài hạn với lãi suất cao.

Suy nghĩ “mình sẽ có được nguồn tài chính vững chắc nếu cứ có càng nhiều tiền để dành” – Nhận định bởi Katie Brewer, nhà quản lí tài chính – “Sẽ chỉ khiến bạn mất đi những cơ hơi quí giá để kiếm thêm khi những đồng tiền chỉ đứng im hoặc là do lãi suất thấp từ tài khoản tiết kiệm ngắn hạn”

Vì thế nếu mà bạn sợ bị risk khi đầu tư thì hãy dựa vào những tài khoản tiết kiệm dài hạn với lãi suất cao tới 1% so với những tài khoản ngắn hạn với chỉ 0,01%.

Ra khỏi comfort zone

Nếu bạn muốn thành công, giàu có và đi trước thời đại thì hãy làm quen với những thứ khó đoán hoặc khó chịu.

Người giàu cảm thấy thoải mái với những điều khó đoán “Hài lòng về mặt thể chất cũng như tinh thần là những mục tiêu chính trong suy nghĩ của giới trung lưu” – Siebold viết – “Những nhà tài phiệt hiểu rằng để thành công thì phải kiểm soát được sự ham muốn được thoải mái của mình. Và họ tập làm quen và kiếm sự hài lòng trong những vùng khó đoán”

Để giàu có, bạn phải chấp nhận lấn sân vào những điều mới mẻ, kể cả khi bạn cảm thấy không thoải mái với chúng.

Hãy bắt đầu với mind-set này ngay hôm nay với một trong những chiến lược để thành công của Siebold : Hãy lên list 5 điều bạn cần phải làm ngay hôm nay dù bạn chả thích nhưng nó sẽ giúp ích cho bạn mai sau.

Đặt mục tiêu và tìm cách khơi gợi khao khát đạt được chúng

Nếu bạn muốn kiếm được nhiều tiền thì phải có những mục tiêu thật rõ ràng và kế hoạch chi tiết làm sao để đạt được chúng. Tiền sẽ không bao giờ tự đến với bạn nếu bản thân không bỏ ra công sức cho chúng.

Người giàu thì luôn tập trung làm giàu. nó đòi hỏi sự tập trung, dũng cảm, kiến thức và rất rất nhiều nỗ lực với những kế hoạch chi tiết cho mục tiêu rõ ràng.

Hãy đưa ra những mục tiêu thiết thực những cũng thêm vào đó những mục tiêu khó nhằm thách thức bản thân.

“Lí do lớn nhất vì sao quá nhiều người than rằng họ không có được thứ mình muốn là bởi vì chính họ còn không biết mình muốn gì. Người giàu thì khác, họ muốn sự giàu có” – Eker nói.

Tiết kiệm khoản tiền tương ứng với 1 giờ làm việc mỗi ngày

Theo David Bach, chủ nhân của the best selling book: “The Automatic Millionaire”, bước đầu tiên để tạo nên cơ ngơi cho bản thân là hãy tự động hóa tài chính của bạn.

David chỉ ra rằng chúng ta sẽ phải tự nuôi kế hoạch mình ở giai đoạn đầu tiên. Và số tiền ấy thường là đến từ khoản tiết kiệm của bạn. Vì thế hãy trích ra một phần tiền tương ứng với 1 giờ làm việc mỗi ngày cho vào khoản tiết kiệm của mình. Và chẳng mấy chốc bạn sẽ có tài khoản tiết kiệm với con số cao đến bất ngờ.

Tạo ra những khoản lợi nhuận “bị động”

Lợi nhuận “bị động” ám chỉ việc bạn kiếm tiền khi đang ngủ. Nói cách khác dòng lợi nhuận bắt nguồn từ những khoản đầu tư của bạn.

Một trong số lợi nhuận “bị động” thường gặp là bất động sản hoặc là hợp tác đầu tư trong kinh doanh cho đến online marketing từ các trang web như youtube hoặc là blog của bạn.

Nguôn: blog.topdev.vn via businessinsider

Nhân lực lập trình viên của Việt Nam là số một Đông Nam Á

Đó là khẳng định về chất lượng lập trình viên Việt Nam của ông Nguyễn Hữu Bình, Trưởng Ban tổ chức Vietnam Mobile Day.

Sự kiện Vietnam Mobile Day là sự kiện công nghệ về mobile lớn nhất Việt Nam dành cho cộng đồng công nghệ chuyên về mobile được tổ chức thường niên từ năm 2011 tới nay.

Theo ban tổ chức chương trình, năm 2022 sẽ là năm đánh dấu sự bùng nổ của hàng loạt các ứng dụng công nghệ đa lĩnh vực để bắt kịp cuộc cách mạng công nghệ 4.0 – một trong những chủ đề đang được quan tâm nhất hiện nay. Chương trình sẽ diễn ra ở 3 thành phố lớn gồm: TP HCM, Hà Nội và Đà Nẵng với sự tham gia của hơn 300 công ty công nghệ có tầm ảnh hưởng trong ngành.

Đại diện Facebook tại Việt Nam nhận định, Việt Nam gặp “thiên thời địa lợi” với dân số hơn 32 triệu người đang ở độ tuổi lao động, chỉ kém sau Trung Quốc và Ấn Độ. Việt Nam có thể “đi tắt đón đầu”, “nhảy cóc” với sự phát triện mạnh mẽ của internet và online, tuy nhiên Việt Nam vẫn chưa lợi dụng được thế mạnh đó. Độ tăng trưởng người dùng facebook tại Việt Nam đang ở mức cao nhất Châu Á. Sự vượt trội về dữ liệu khách hàng và người dùng trên mobile đã giúp facebook thu hút hơn 50% chi phí marketing của các nhãn hàng và 85% từ doanh nghiệp trò chơi trực tuyến.

Ông Nguyễn Hữu Bình cho biết, giới lập trình viên của Việt Nam đang có chất lượng, năng lực làm việc đứng số một Đông Nam Á và đứng thứ 23 thế giới. Tốc độ phát triển IT ở Việt Nam đạt mức tăng 135%/năm. Điểm nổi bật nhất của Vietnam Mobile Day năm nay đó chính là được tổ chức với quy mô lớn hơn và số lượng chủ đề nhiều hơn năm 2016.

Dự kiến, Vietnam Mobile Day sẽ thu hút trên 15.000 lượt người tham dự với sự góp mặt của hơn 300 công ty công nghệ có ảnh hưởng trong ngành. Các bạn quan tâm tới Vietnam Mobile Day có thể tham khảo các thông tin giới thiệu chi tiết hơn tại trang chủ chính thức mobileday.vn. Một sự kiện không thể bỏ lỡ cho những ai đang quan tâm đến lĩnh vực công nghệ

Nguồn: topdev.vn via vietnammoi

Tham khảo việc làm GIT lương cao tại TopDev

Chiến Lược Thu Hút 2.3 Triệu Lượt App Download Mà Không Tốn Một Xu Cho Marketing

Câu chuyện dưới đây được dịch lại từ chia sẻ của Stuart Hall, nhà sáng lập của 7 Minute Workout, một ứng dụng điện thoại về sức khoẻ đã có được 2.3 triệu lượt download trong 18 tháng dù được xây dựng chỉ trong vỏn vẹn 6 giờ.

Xây dựng câu chuyện

Hãy cùng quay trở lại về khoảng tháng 5/2013, khi tôi còn là người đồng sáng lập cho một start-up chế tạo và phát triển Discovr – một ứng dụng điện thoại về âm nhạc. Ở ngay tại quê hương Úc của mình, chúng tôi đã kiếm được hơn 1 triệu đô từ 4 triệu lượt app download. Bạn có thể cho rằng chúng tôi đã là những người ‘thành đạt’.

Một câu hỏi rất nhiều người luôn đặt ra cho tôi là: Có bí mật kì diệu nào đằng sau việc sáng tạo nên một ứng dụng thành công? Bằng một cách nào đó, chúng tôi đã làm nên một sản phẩm mà mọi người muốn sử dụng, nhưng liệu tôi có thể thực sự chế tạo ra nó không?

May mắn thay, có một cuốn sách tuyệt vời đã giúp tôi học được nhiều điều mới mẻ về những sản phẩm và cách kể một câu chuyện lôi cuốn mang tên “The Fortune Cookie Principle”. Tôi cũng đã được truyền nhiều cảm hứng từ một lời khuyên về phương thức viết thông cáo báo chí từ hội nghị One More Thing.

Thai nén ý tưởng

Tôi đã từng muốn được xây dựng một ứng dụng chỉ trong một đêm, không thông báo cho một ai, và chạy thử vài thí nghiệm lên nó với hi vọng đạt được một số thành công nhất định. Tôi đã nghĩ mình có thể kiếm được vài trăm đô từ vài nghìn lượt download đó.

Tôi muốn một ý tưởng không có lợi thế về miền, vậy nên còn gì tuyệt hơn là một ứng dụng về thể dục và sức khoẻ? Cùng trong khoảng thời gian đó, bài viết “The 7 Minute Workout” đang thu hút được rất nhiều sự chú ý trên những trang báo mạng tầm cỡ nhưng New York Times hay Hacker News, càng củng cố thêm sự tự tin của tôi về ý tưởng này.

Tôi đã đề ra những mục tiêu chính cho ứng dụng của mình:

  • Đưa ra giải thích chi tiết cho 12 bài tập (tôi đã phải đào bới trên Google rất nhiều, thậm chí tôi còn không biết plank là gì).
  • Thiết lập chuông báo giờ kèm giọng nói để thông báo cho người dùng thời điểm thay đổi bài tập và những bước tiếp theo.

Rất nhiều ý tưởng về đặc tính của ứng dụng cũng đã thoáng qua trí óc tôi, giả dụ như:

  • Hỗ trợ trên iPad
  • Tuỳ chỉnh thời gian tập, các bài tập, số lần lặp lại/sets
  • Log book
  • Chia sẻ trên mạng xã hội

Tuy nhiên, do quỹ thời gian ngắn nên tôi đã phải cắt bỏ những công cụ này (ít nhất là trong thời điểm hiện tại).

Quá trình xây dựng

Trong 5 tiếng đồng hồ, tôi đã thiết kế được vài giao diện màn hình cùng văn bản chữ. Vì không phải một designer chuyên nghiệp nên đồ hoạ 3-D là điều còn thiếu sót trong thiết kế của tôi.

 Phiên Bản 1.0

1 giờ sau đó, tôi đã dành thời gian nhào nặn nên một cái icon, chụp lại màn hình vài tấm và viết một lời miêu tả đơn giản. Thật ngạc nhiên là tôi vẫn sử dụng được cái tên “7 Minute Workout” cho ứng dụng của mình, bởi khi đó cũng có rất nhiều ứng dụng đang xếp hàng chờ đánh giá.

Được chế tạo, xây dựng, và phát triển trong 6 giờ. Cuộc chờ đợi bắt đầu.

Khi phiên bản 1.0 được chấp nhận

Sau khoảng thời gian 6 ngày, phiên bản 1.0 của tôi đã được thông qua. Không một ai biết tôi là chủ nhân sáng tạo nên ứng dụng này, kể cả người vợ yêu quý của tôi.

Như tôi đã lường trước, cùng trong khoảng thời gian này có một vài sản phẩm cùng tên khác trên kho ứng dụng. Đó là lý do khiến tôi quyết định sẽ để đứa con của mình chạy thử trong tuần đầu tiên mà không thông báo cho bất kì ai, cũng như sẽ không đánh tiếng cho báo chí.

Phải nói thật rằng tôi không có nhiều kì vọng vào thử nghiệm này, nên đã khá ngạc nhiên khi thấy sản phẩm của mình đã bán được một số lượng bản với tần suất ổn định.

Không có gì quá nổi bật, nhưng cũng không tệ nếu xem xét rằng 100% lượng download này sinh ra từ những lượt tìm kiếm thông thường trên App Store.

Phiên bản 1.1 – Marketing

Phiên bản 1.1 sẽ dựa hoàn toàn vào marketing. Tôi đã cái thêm tính năng chia sẻ trên mạng xã hội (Twitter, Facebook và email) mỗi khi một bài tập được hoàn thành, và một lượt phê bình sau bài tập thứ ba. Tôi cũng đã gửi email tới 10 trang web đánh giá ứng dụng lớn nhất dựa theo hướng dẫn nói trên về cách sản xuất một thông cáo báo chí hoàn hảo. Tuy nhiên, tôi đã đính kèm theo 4 promo code cho mỗi bản thông cáo.

Và bạn hãy đoán xem điều gì đã xảy ra? Không một điều gì. Không một lời hồi đáp, một website còn cho đi 4 promo code của họ, 4 cái mã duy nhất được sử dụng. Vậy là không một người dùng nào sử dụng promo code của tôi khi họ tải ứng dụng về máy.

Dĩ nhiên, doanh số bán hàng trong một tuần tới đã hạ khá thấp so với tuần đầu.

Vậy là 3 giờ đồng hồ của tôi đã bị bỏ phí! Bài học thấm thía tôi nhận ra được từ trải nghiệm này là: bạn cần kể một câu chuyện hay thông qua ứng dụng của mình, tốt hơn hết là với những người mà bạn đã xây dựng mối quan hệ trước đó để gây được sự chú ý.

Phiên bản 2.0 – Vạn năng

Giai đoạn tiếp theo trong cuộc thử nghiệm của tôi là mở rộng thị trường bằng cách thêm tính năng hỗ trợ trên iPad.

Chỉ mất 2 tiếng rưỡi đồng hồ, tôi đã có được vài tấm screenshot và nhấn nút submit cho điều chỉnh của mình. Nhưng một lần nữa, vẫn không có gì đổi thay với doanh số bán hàng, và thậm chí nó còn đi xuống hơn nữa.

Ứng dụng miễn phí

Đã đến thời điểm tôi phải cắt bỏ mọi chi phí thanh toán cho sản phẩm của mình. Với kinh nghiệm trước đây trong việc thay đổi giá cả mặt hàng, tôi biết quyết định này sẽ có tác dụng hiệu quả thế nào.

Và quả thực tôi đã không lầm! Tôi nghĩ đồ thị dưới đây sẽ nói lên tất cả.

 

Tôi đã ngã ngửa hoàn toàn trước những con số này. 216,718 lượt download miễn phí chỉ trong 3 ngày, trung bình 72,000 lượt mỗi ngày, gấp 2,500 lần so với con số 28 trước đây.

Ứng dụng của tôi đã chiếm vị trí số 1 trong lĩnh vực thể thao-sức khoẻ tại 68 nước. Ứng dụng iPhone số 1 tại 49 đất nước. Và top 10 tại hơn 12 nước khác. Thậm chí, nó còn nằm trong top 5 tại Hà Lan. Ở tại Mỹ, nơi sở hữu phần lớn doanh số bán hàng của tôi, “7 Minute Workout” cũng nằm trong top 25 ứng dụng dụng trên iPad.

Tôi cũng đã thu thập được một số lượt phê bình và đánh giá tuyệt vời qua công cụ Appbot của mình.

Thành công này đã dẫn tới vô số email tới từ những trang web ‘ứng dụng miễn phí của ngày’ cũng như từ những công ty reo bán cài đặt tính phí.

Phải thú thực rằng tới thời điểm này, tôi không thể giữ im lặng được nữa. Tôi nhìn vào những con số và vẫn không hiểu tại sao sản phẩm miễn phí của mình lại thành công vượt sức mong đợi như vậy. Chắc chắn rằng không phải do công sức quảng bá của tôi hay bất kì đài báo truyền hình nào.

Blog Post

Bước tiếp theo của cuộc thử nghiệm là bài blog post giải thích cặn kẽ những điều đã xảy ra trong suốt thời gian vừa qua, và chúng cũng đã đạt những thành tựu nhất định: 20,000 lượt view, hơn 220 tweets, 50 lượt share trên Facebook và vị trí thứ 2 trên trang chủ của website Hacker News. Và ai cũng biết rằng một vị trí trên trang chủ của Hacker News là chìa khoá thành công cho mọi sản phẩm công nghệ, phải không?

Tuy nhiên, những con số đi lên rồi cũng phải xuống.

Thanh toán trong app

Tôi nhận thấy rằng mình có mối quan hệ yêu-ghét không rõ ràng với những thanh toán in-app. Đó là cách tốt nhất để cho người dùng thử nghiệm một công cụ hay tính năng nào đó, những lại bị lạm dụng bởi quá nhiều nhà sáng chế, điển hình trong những game cho trẻ em.

Tôi đã nhận được khá nhiều những lời đề nghị nới lỏng thời gian và sets của những bài tập trong ứng dụng, và thấy rằng đây là cơ hội hoàn hảo để cài đặt thêm pro-upgrade. Khái niệm này cũng khá đơn giản thôi, một vài đồng tiền cho một vài chức năng bổ sung.

Vậy những thanh toán in-app (IAP) có hiệu quả thế nào so với những lượt download mất phí? Đối với ứng dụng cuả tôi, doanh thu đã tăng gấp 3 lần từ $22 tới $65/ngày. IAP chiếm khoảng 2-3% lượng download mỗi ngày.

Phiên dịch lời miêu tả trên App Store

Hơn 50% số lượt download ứng dụng tới từ thị trường nước Mỹ, trong khi một vài nước khác như Canada, Hà Lan, Philippines và Anh chỉ chiếm 1/10 con số của Mỹ.

Một việc tôi thấy đã từng có hiệu quả với những sản phẩm trước đây là phiên dịch lời miêu tả trên App Store sang tiếng địa phương. Dựa trên những lời khuyên, tôi đã phiên dịch văn bản kèm theo ứng dụng sang tiếng Bồ Đào Nha, Ý, Đức, Pháp, và Trung Quốc.

Tuy vậy, tôi nhận thấy yếu tố này không có chút ảnh hưởng nào tới doanh số bán hàng tới từ những nước này. Vậy nên tôi coi như đây là một trải nghiệm thất bại hoàn toàn.

Lắng nghe người tiêu dùng

Thể theo lời đề nghị của nhiều lời phê bình trên Appbot và từ email, tôi đã thêm chức năng theo dõi lịch tập vào IAP của ứng dụng. Điều này đã giúp doanh số IAP tăng lên $75/ngày.

Thiết kếphẳng

Có hai vấn đề chính liên quan tới việc nhấn nút trong thiết kế của ứng dụng. Người sử dụng nhận thấy rằng nút nhấn của những dòng chỉ tên bài tập và workout log còn khó xác định, và tôi đã phải giải quyết điều này bằng cách thêm những kí hiệu đánh dấu.

Lượng download doanh số bán hàng

Xuyên suốt thời gian còn lại của năm 2013 (từ tháng 7 trở đi), số lượt download của ứng dụng không còn đạt được tới mức độ của những ngày đầu. Nhưng nếu chúng ta bỏ qua quãng thời gian đỉnh điểm đó, lượng download vẫn luôn duy trì ổn định, trung bình khoảng 2,500 lượt mỗi ngày. Đáng chú ý hơn rằng, tôi không hề chi trả cho bất kì hình thức hay phương tiện truyền thông nào để đạt được con số đáng nể này.

Dĩ nhiên, doanh số bán hàng cũng theo xu hướng giảm dần đều xuyên suốt năm 2013, với gần 70% lợi nhuận tới từ thị trường nước Mỹ.

Giáng Sinh, Năm Mới, thêm IAPs

Vào Giáng Sinh của năm 2013, đứa con của tôi chào đón lượt tải thứ 1 triệu và những tín hiệu nổi bật trong cả lượng download và doanh số bán hàng. Nhưng tới tháng 1 của năm 2014, những con số này đã tăng lên gấp bội, giúp cho lợi nhuận tăng lên 4 lần từ $50 tới $200 mỗi ngày. Những ứng dụng về thể thao-sức khoẻ quả thực là ‘người bạn’ đáng tin cậy cho những mục tiêu năm mới.

Để đáp ứng nhu cầu theo đuổi mục tiêu năm mới của người sử dụng, tôi đã cài đặt hai công cụ mới vào IAPs, đó là một bài tập 7 phút thay thế và bài tập Pilates. Tuy việc này không có tác dụng rõ rệt gì lên lợi nhuận, nhưng nó đã khiến doanh thu tăng lên 40% so với khoảng thời gian cuối của năm 2013.

Một công cụ khác tôi cũng đã thêm vào đó là lựa chọn mua trọn bộ gói bài tập cùng tính năng Pro ở một mức giá phải chăng (tôi đặt tên nó là “All The Things”). All The Things đã giúp tổng doanh thu tăng lên đáng kể, và đã trở thành nguồn thu chính từ các chức năng của ứng dụng. Cũng không tệ chút nào nhỉ?

Đánh giá phản hồi

Một mục tiêu tôi đã đề ra từ những ngày đầu xây dựng ứng dụng này là luôn cải thiện mục đánh giá cho người sử dụng.

Trong AppbotX – một sản phẩm công nghệ của bản thân chuyên để đánh giá các ứng dụng – tôi đã thêm các mục FAQs, phản hồi, thông báo, và đánh giá để giúp khách hàng của tôi có thể giao tiếp dễ dành hơn với người cung cấp dịch vụ. Nếu người dùng thích ứng dụng này, họ có thể đánh giá sản phẩm; nếu không, họ có thể để lại phản hồi.

Kết quả thu lại được từ tính năng này hết sức tuyệt vời.

HealthKit

HealthKit là một chuyên mục dành riêng cho những ứng dụng về thể dục-thể thao-sức khoẻ trên App Store. Để đảm bảo ứng dụng của mình sẽ có mặt trên HealthKit, tôi đã cài đặt hỗ trợ cho iOS 8, HealthKit và iPhone 6/6 Plus một thời gian dài trước khi Apple tung sản phẩm của họ ra thị trường.

Đáng tiếc thay, Apple đã phải trì hoãn việc này ở ngay những phút cuối cùng do một số vấn đề kỹ thuật với HealthKit, và tất nhiên điều này đã ảnh hưởng tới nhiều khách hàng của tôi khi họ không sử dụng được dịch vụ trên ứng dụng. Thật may mắn, AppbotX đã giúp tôi trả lời và đáp ứng mọi nhu cầu cho họ!

Khi HealthKit chính thức ra mắt thị trường cùng với Ios 8.0.2, 7 Minute Workout đã được feature trong danh sách “Những ứng dụng dành cho Sức khoẻ” trên trang chủ của App Store tại Mỹ. Điều này đã giúp doanh số bán hàng tăng lên một cách chóng mặt (phải vậy, còn hơn cả Năm mới!), và thu hút được sự quan tâm không nhỏ từ báo chí.

ĐượcFeatured

Một bài học vô cùng bổ ích tôi có được từ trải nghiệm này, đó là bạn phải tạo mọi cơ hội để Apple có thể feature ứng dụng của bạn. Còn cách nào hiệu quả hơn cho thu nhập bằng việc đưa tên mình vào danh sách những ứng dụng đầu tiên hỗ trợ một tính năng/sản phẩm của ông lớn Apple?

Được mua lại bởi Wahoo Fitness

Wahoo Fitness là công ty chuyên tạo những cảm biến kết nối ứng dụng tuyệt vời và đã được giới thiệu tại WWDC Keynote 2014. Cảm biến TICKR X mới của họ là một công cụ giám sát nhịp tim và theo dõi các chuyển động lặp lại khi tập thể dục.

Khi Mike tới từ Wahoo đề xuất sáp nhập ứng dụng của tôi với chuỗi sản phẩm của họ vào tháng 5, phải nói rằng tôi đã rất tò mò và hào hứng. Trong những tháng tiếp theo chúng tôi đã thảo luận kỹ càng, và cho tới tháng 11 khi Wahoo có đề nghị mua lại 7 Minute Workout, trong khi tôi đang bận bịu phát triển Appbot, tôi đã đồng ý.

Tôi tin rằng tôi đã trao lại ứng dụng của mình cho đúng người, bởi những con người tôi cùng tiếp xúc ở Wahoo thực sự rất tuyệt vời. Họ cũng có những dự định lớn cho sản phẩm: vô số bài tập tự thiết kế, video mới, và kết nối với TICKR X để đếm số lần lặp lại của các bài tập.

Những thông số cuối cùng

  • 2.3 triệu lượt download
  • 7.7 triệu lượt update
  • $72,000 lợi nhuận
  • Hàng tá những email, tweets và tin nhắn tới từ độc giả của những bài blog của tôi. Cảm ơn các bạn rất nhiều.

Vài lời kết

Hiện giờ tôi đang tập trung hết sức mình để phát triển cho Appbot. Nhưng có một điều về 7 Minute Workout mà Chip – CEO của Wahoo – đã nói với tôi và tôi vẫn luôn ghi nhớ: “Chúng tôi có lẽ đã không mua ứng dụng của ông nếu không phải vì câu chuyện thử nghiệm này.”

Nhìn lại những dòng đầu tiên trong chia sẻ của bản thân về trải nghiệm này, tôi nhận thấy một câu hỏi tôi cho là hết sức quan trọng đối với những nhà sáng chế và phát triển ứng dụng:

“Cách bạn xây dựng một câu chuyện xung quanh sản phẩm của mình quan trọng tới mức nào?”

——————–

Tác giả: Stuart Hall, nhà sáng lập 7 Minute Workout và Appbot

Tran Lan Phuong – Nguồn: ybox via medium.com

Kinh nghiệm làm việc tại Google qua phỏng vấn với kỹ sư chuyên về phát triển Node.js

Tôi đã có một buổi phấn thú vị với Matt Loring, một kĩ sư đang làm việc cho team Node.js runtime của Google. Anh ấy cũng đã từng góp công vào nhiều project khá tuyệt khác.

Sau đây là những gì Matt đã nói.

Công việc của anh tại Google là gì vậy Matt?

Tôi làm bên profiling, diagnostic tooling và tối ưu hóa hiệu suất cho Node.js runtime cũng như là V8 JavaScript engine. Chúng tôi tập trung vào việc đảm cho các client có thể yên tâm mà sử dụng Node.js cho dịch vụ backend của họ. Nói cụ thể hơn, tôi đã đóng góp vào sự phát triển của project mã nguồn Node.js cũng như tạo ra các tool giúp cho việc sử dụng và theo dõi các ứng dụng của nền tảng Node.js được chạy trên Google Cloud Platform.

Anh có thể nói thêm về Google cloud Platform cũng như Node.js đóng vai trò gì trong đó?

The Google Cloud Platform giúp các công ty tập trung vào khâu cuối của những ứng dụng phần mềm thay vì phải bỏ thời gian xây dựng và quản lí cũng như là cung cấp servers. Node.js là một trong những lựa chon tốt nhất để đưa các app đó lên Google Cloud, đó đồng thời cũng là trách nhiệm của team tôi.

Anh thích nhất điều gì của Node.js?

Chắc chắn đó là cộng đồng mạng rồi. Bởi ở Node.js, các nhà developer và maintainer sẵn sàng bỏ thời gian giúp đỡ người dùng và khuyến khích cộng đồng hoạt động tích cực. Trước khi vào làm cho Google thì tôi chả biết Node.js là gì cả nhưng may thay là công đồng đã gúp tôi rất nhiều.

Anh có bí quyết gì để học về Google Cloud hoạt động như thế nào không?

Google có một quyển e-book miễn phí cho các bạn nào muốn biết về cách SRE – Site Realiability Engineering hoạt động như thế nào! Nhớ check xem nó nhé!

Google khá nổi tiếng bởi chính sách làm việc 80/20 của họ. Matt anh làm gì với 20% khoảng thời gian rảnh của mình?

Tôi luôn có một niềm đam mê mạnh mẽ đối với an ninh mạng vì thế mà hễ được rãnh là tôi ngay lập tức phụ mảng an ninh mạng của Google – Khoảng 20% project gần đây của tôi là cryptography. Tôi rất thích được làm với nhiều người và sư đa dạng về project tại Google.   

Điều gì “cool” nhất về công việc của anh?

Làm việc cho team Node.js thì bạn sẽ được travel khá thường xuyên. Cực nhiều luôn. Tôi đã đi hội thảo khắp nơi trên thế giới và chứng kiến sự ảnh hưởng của Node.js lên thế giới công nghệ cũng như công động developer trên toàn thế giới.

Anh có tham gia club gì không khi còn học tại Cornell?

Tôi từng là một treasurer of hiệp hội khoa học máy tính khi còn ở Cornell cũng như là research mentor cho hội đồng nghiên cứu của Cornell. Sau khi thực tập cho Google trong một mùa hè thì tôi cũng làm cả đại diện học sinh cho Google luôn.

Anh có thể kể một số kinh nghiệm khi còn đang học đại học không?

Nghiên cứu là một phần rất quan trọng đối với tôi. Sau khi đăng kí khóa học về  Cấu trúc dữ liệu và Thuật toán Honors (Lớp CS 2112), tôi bắt đầu yêu thích với ngôn ngữ lập trình. Vì thế mà tôi đăng kí học một khóa lý thuyết ngôn ngữ lập trình của thầy Anderw Myers và tập trung vào việc phát triển ngôn ngữ lập trình chuyên về bảo mật. Trong khoảng thời gian học tại Cornell cũng như thực tập tại Google, tôi cũng làm việc với một vài project có liên quan tới nhiều ngôn ngữ lập trình khác nhau.

Anh có thể nói một vài project của mình không?

Jif là một ngôn ngữ lập trình bảo mật mà tôi từng phát triển khi còn đang ở Cornell. Nó cho phép bạn quyết định loại dữ liệu nào được phép chạy, tuy đôi khi có hơi rườm ra. Tôi giúp viết một vài dòng code giúp cho quá trình trên chạy nhanh hơn và đơn giản hơn để người dùng có thể sử dụng.

Anh có thể nói về một vài kinh nghiệm travel của mình trong lúc làm việc tại Google? Có cái nào mà anh thích nhất không?

Tôi travel để hợp tác với các nhóm khác trong việc phát triển của project Node.js, gặp các team của google ở chi nhánh hoặc là đi hội thảo về Node.js. Tất nhiên là đi hội thảo là vui nhất. Thật là tuyệt khi bạn chứng kiến cảnh mọi người phấn khích bởi những feature do bạn design hoặc là góp công sức vào.

Ai là người đã giúp và chỉ dạy bạn khi vào Google?

Thật may là tôi được sự chỉ dẫn từ rất nhiều người khi là việc tại Google. À mà người đã ảnh hưởng lên tôi nhất lại là một người tôi quen qua tập Gym. Qua vài lần nói chuyện thì tôi biết anh ta chuyên nghiên cứu lĩnh vực mà tôi cũng đang khá quan tâm. Những lời khuyên của anh ấy thật sự rất hữu ích và chúng tôi cũng hợp tác với nhau làm một project. Bạn sẽ chả bao giờ biết được mình sẽ gặp những người như vậy khi nào đâu? Hên xui cả thôi!

Anh có lời khuyên gì cho những bạn muốn vào làm Google không? bên mảng của anh đấy!

Hãy có gắng biết thật nhiều ngôn ngữ lập trình càng tốt. Nắm vững được điểm giống và khác nhau giữa chúng sẽ giúp bạn làm quen với thay đổi tốt hơn. Tôi biết là nó nghe có vẻ chung chung nhưng tại google thì điều đó là cực kì hữu dụng bởi cách viết code và sử dụng tools khá là “dị”.

Câu hỏi cuối cùng: Sao lại là Google?

Tôi thích làm việc cho Google vì 2 nguyên nhân. Đầu tiên là Sự đa dạng về project cũng như việc Google để bạn tự do làm bất cứ gì bạn thấy thích thú. Thứ hai, Google thật sự quan tâm đến nhân lực của họ. Không biết bao nhiều lần tôi chứng kiến những cử chỉ đẹp của Google dành cho nhân viên của họ. Thật sự khiến tôi tự hào về công ty của mình.

Nguồn: Topdev via medium

Con đường trở thành cao thủ Web Developer – Bạn chọn hướng đi nào?

Frontend hay backend luôn là một câu hỏi nóng nhất khiến các bạn lập trình viên luôn đắn đo, lo lắng liệu con đường nào là phù hợp nhất cho mình? Mới đây, một web dev tên Kamran Ahmed đã chia sẻ những hướng đi giúp cho các bạn lập trình viên mới có thể lựa chọn được con đường trở thành một web developer của riêng mình. Theo đánh giá của Techtalk, roadmap này khá tổng quan những công nghệ mới, nhanh mạnh cũng như dễ nắm bắt, dễ làm của từng hướng cụ thể. Mời các bạn xem qua, nếu các senior dev có góp ý gì hoặc thấy kiến thức còn thiếu hãy chia sẽ dưới comment để mở rộng kiến thức của bài viết hơn.

1.Giới thiệu

web developer in 2017

2.Frontend roadmap

web developer in 2017

3.Backend roadmap

web developer in 2017

4.Devops roadmap

web developer in 2017

Nguồn: Techtalk via Kamran Ahmed

Trước khi trở thành master về design, phải giỏi về cơ bản đã!

Tuần trước, một đọc giả đã hỏi tôi rằng: Làm thế nào để em có thể trở thành một visual designer giỏi?

Khi đang suy nghĩ về câu trả lời, tôi chợt nhớ về khoảng thời gian mình học tiếng phổ thông Trung Quốc. Đối với việc bạn phải học một ngôn ngữ hoàn toàn mới thì đầu tiên là ta phải có được căn bản đã. Danh từ, động từ và tính từ để có thể hiện những ý nghĩ của mình.

Ngôn ngữ là phương tiện truyền tải thông tin giữa con người. Visual design chính là ngôn ngữ hình ảnh. Để trở thành một visual designer thì cũng không khác gì việc phải học một ngôn ngữ mới cả.

Visual design đẹp không phải do chúng được sinh ra mà là tạo ra. Chìa khóa thành công của một visual designer là sự khắc khe. Bởi bạn chỉ có giỏi nếu bạn bỏ ra nỗ lực gấp đôi.

Tìm việc làm designer nhanh trong tháng tại Topdev

Sau đây là những điều cơ bản có thể giúp bạn phát triển trên con đường làm visual design:

#1 Hãy sử dụng phông chữ cơ bản

Dựa vào kiểu chữ được dùng mà ta có thể biết rất nhiều về designer. Đó là bởi phông chữ đóng vai trò nền tảng trong visual design.

Thậm chí bạn có thể tạo ra một tác phẩm design chỉ nhờ vào chữ. Không những thế, việc sự dụng chữ còn mở ra vô số cách cho các designer tạo ra những sản phẩm với hình ảnh đầy ấn tượng. Chính vì thể, để nâng cao khả năng sử dụng typography thì ta phải bắt đầu với những kiểu chữ cơ bản.

Trước hết bắt đầu từ việc phân biệt và hiểu được ý nghĩa của các phông chữ khác nhau. Ta phải biết về những thuật ngữ như tracking, kerning và leading. Bài viết “Hình minh họa tuyệt đẹp về các thuật ngữ chữ viết bạn nên biết” là một bài viết khá hay cho bạn.

Sau đó để có cái nhìn toàn diện về việc sử dụng typography trong website, bạn hãy đọc “Nghệ thuật phông chữ dùng cho web

Để biết được cách kết hợp các kiểu chữ với nhau thì bạn nên xem 2 nguồn khá hay là FontWolf FontPair. Việc dùng nhiều loại chữ khác trong sẽ khiến design của bạn có ảnh hưởng mạnh mẽ hơn lên người dùng.

#2 Sử dụng khoảng trống để tạo ra sự cân bằng

Các bạn có thể truy cập trang Behance hoặc Dribbble để tìm cảm hứng cho việc sử dụng khoảng trống trong design. Nhưng điều quan trong là cứ đi theo cảm tính của mình để tạo ra một tác phẩm hoàn mĩ trong mắt bạn.

Khi học typography, bạn cũng nhận ra tầm quan trọng của khoảng cách của các chữ. Bằng cách điều chỉnh kerning và leading cho các phông chữ khác nhau là một phương pháp tốt để quen dần với việc sử dụng khoảng trống trong design. Vì thế mà tôi khuyến khích bạn chơi trò KernType, một mini game mà bạn sẽ so sánh cách sử dụng kerning cho phông chữ của mình với các chuyên gia designer.

Một cách khác giúp mắt bạn quen dần với việc sử dụng khoảng trống bằng cách quan sát các sản phẩm design. Hãy vẽ một trục X và Y và chia các yếu tố trong tác phẩm đó thành những hình hộp đơn giản và phân tích xem chúng cân bằng như thế nào cũng như thử thay đổi vị trí của chúng xem. Nhớ chú ý những ảnh hưởng tiêu cực từ việc thay đổi khoảng trống lên sự cân bằng và hoài hòa của tác phẩm.

#3 Sử dụng nhiều kích cỡ khác nhau để tạo ảnh hưởng visual khác nhau.

Khi nhắc đến hệ thống cấp bật visual thì kích cỡ luôn đứng đầu. Nhờ vào việc sử dụng kích cỡ khác nhau, ta có thể tạo ra mối quan hệ cho visual của các yếu tố trong tác phẩm.

Kích thước cũng là nguyên nhân grid trở nên vô cùng hữu dụng. Bởi grid giúp ta chỉnh sửa kích thước một cách chính xác và đúng theo tỉ lệ.

Khi bạn đã thành thục với việc sử dụng kích thước thì hãy áp dụng nó một cách nhất quán cho toàn bộ phần còn lại của tác phẩm.

Cách tốt nhất để tiến bộ là nhờ vào feed back. Hãy làm thử một bản Sketch design rồi đưa cho người quen của bạn xem và hỏi ý kiến của họ. Nhớ kêu khoanh tròn những thứ mà stand-out trong mắt họ. Sau đó thì hãy kiểm tra xem kết quả có như bạn mong muốn không?

Khi thực hành bằng cách này, phải luôn tự hỏi bản thân mình:

  • Mục tiêu của landing-page muốn là gì? Làm sao để đạt được mục tiêu đó?
  • Mối quan hệ giữa những yếu tố bạn muốn sử dụng trong design của mình? Yếu tố nào nên được tập trung?
  • Layout của bạn có thành công trong việc dẫn dắt hướng nhỉn của user theo đúng như bạn mong muốn không?

#4 Sử dụng màu sắc để truyền tải thông điệp

Màu sắc có vai trò rất đa dạng. Nó chứa dựng thông tin, khêu gợi cảm xúc và đem tới sự thống nhất cho thiết kế.

  • Trước khi chọn màu sắc, hãy xác định được vì sao bạn lại design một tác phẩm. Màu sắc chỉ thật sự đẹp khi nó phù hợp với mục đích của sản phẩm.
  • Xác định người xem. Chúng ta nhìn nhận màu sắc một cách hoàn toàn khác nhau. Vì thế mà tùy vào độ tuổi, môi trường, văn hóa, sở thích, kinh nghiệm mà màu sắc sẽ có ảnh hưởng khác nhau lên từng người.
  • Hãy chọn bảng màu sắc đơn giản với background là màu trung tính. Sau đó hãy chọn màu chính và phụ và thử nghiệm chúng cho đến khi bạn hài lòng với kết quả cuối cùng.

Sau khi đã nhuần nhuyễn với việc sử dụng màu sắc cơ bản thì đã đến lúc bạn thật sự bước ra khỏi “comfort zone” của mình và cứ thỏa thích “nghịch” với màu sắc.

Sau đây là một cách giúp bạn cải thiện trong việc cảm nhận màu sắc.

Dành thời gian chỉnh sủa bảng màu cho những thứ xung quanh bạn như hình ảnh, video, clip. Hoặc dùng các tác phẩm design có sẵn và thử thay đổi cách phối màu của chúng. Hãy quan sát những thay đổi trong màu sắc và ảnh hưởng của chúng lên tác phẩm.

Nguồn: topdev.vn via Medium

Những thói quen xấu kìm hãm sự tiến bộ của lập trình viên

Gần đây, tôi được phân công hỗ trợ những người lập trình chưa giỏi, dưới hình thức một kèm một (pair programming). Trong khi làm công việc đó, tôi nhận thấy có một vài thói quen xấu khiến họ khó tiến bộ và thói quen tốt nữa mà tôi sẽ liệt kê ra như dưới đây.

Sức mạnh của thói quen

Hàng ngày, tôi vẫn tự hỏi mình năng lực lập trình là do thứ gì quyết định? Có người học lập trình rất nhanh nhưng có người lại học rất chậm. Thông thường, người ta hay gọi cái đó là “cảm giác tốt, cảm giác chưa tốt” và cho qua.

Nhưng tôi thấy rõ ràng có những yếu tố quyết định đến việc học nhanh hay chậm.

Vài năm trước vào một lần nọ, tôi có xem màn hình của đồng nghiệp ngồi bên cạnh và thỉnh thoảng đi quanh phòng làm việc xem màn hình của những người khác nữa. Có một điều làm tôi thực sự ngạc nhiên. Người hay “nộp bài” chậm thì màn hình lại thường có xu hướng hiển thị stack trace (dùng cho đầu ra của web application).

Đồng nghiệp ngồi cạnh tôi thường lập trình theo quy trình dưới đây. Tôi không thống kê chi tiết, nhưng đại loại là vậy.

  • Viết code
  • Lưu code
  • Switch màn hình sang browser
  • Reload
  • Màn hình lỗi hiện ra
  • Switch sang màn hình code luôn

Như thế này thì tôi nghĩ năng suất làm việc sẽ rất tồi. Phải nói thêm là cậu ta đang viết một phần thuộc model (và tất nhiên phần đó có ở bên controller nữa). Ngay lập tức, tôi chỉ cho cậu ấy cách check syntax và cách chạy thử từng module. Dựa vào đó, tôi chỉ thêm cho cậu ấy cách viết những test code nhỏ cho phần logic nữa. Nhưng hình như cậu ấy vốn đã biết cả rồi. Tuy nhiên, vì nghĩ là phiền phức nên cậu ấy đã bỏ qua. Tôi hỏi tại sao lại phiền thì cậu ấy có hơi lúng túng, giải thích khá nhiều nhưng đại ý là “Đằng nào cũng phải hiển thị, nên xem nó hiển thị thế nào là nhanh nhất”. Đây là vấn đề về thói quen. Ngày đó công ty tôi chưa có quy trình CI (continous integration) nên hầu như không ai có thói quen viết test cho code cả.

Về sau, quy trình CI được áp dụng, việc viết test cho code trở thành bắt buộc. Tuy nhiên khi đó thì sau khi hiển thị ngon hết rồi cậu ta mới viết, với một thái độ không lấy gì làm vui vẻ cho lắm. Quy trình phía trên của cậu ấy, do chạy code sau khi đã ghép nên màn hình sẽ hiện một đống lỗi rất phức tạp làm cho công việc kéo dài ra. Cậu ta dường như không quan tâm đến chuyện đó mà có khi cũng chẳng đọc lỗi nữa. Cậu ấy không quen test từng phần một, mà sau khi ghép code sẽ khó test hơn rất nhiều. Quy trình vốn sinh ra để tăng năng suất, bây giờ do thói quen của người làm việc, thành ra lại làm giảm năng suất.

Thói quen xấu

Gần đây, tôi có pair programming với vài kĩ sư trẻ. Một ngày tôi làm với họ vài tiếng, chiếm phần lớn thời gian ở công ty của tôi. Tôi sẽ giới thiệu vài thói quen xấu của họ mà trong khi làm việc tôi đã phát hiện và nhắc nhở.

Ít đọc code

Tùy từng project mà thời gian đọc code khác nhau, nhưng nhìn chung thời gian đọc code luôn chiếm tỉ lệ lớn. Cách phân bố thời gian thường thấy là 80% đọc, 20% viết. Đọc code là bắt buộc để có thể hiểu được những phần liên quan, và hiểu framework. Đối với những kĩ sư mà công việc hay bị trục trặc, không tiến triển, tôi thấy tỉ lệ thời gian họ dành cho việc đọc code là rất thấp. Một ví dụ là có một cậu định sử dụng chức năng có trong framework thì bị lỗi. Tôi nói với cậu ấy là ở framework đang hiển thị lỗi sai đầu vào. Tuy nhiên cậu ấy sau đó không hề xem chỗ tôi bảo trên framework. Vậy thì cậu ấy làm gì?

Nhìn chăm chú vào code của mình, ngẩn ngơ tìm chỗ sai. Nghiền ngẫm một đoạn code trên mạng để xem có nên copy paste không. Nghĩa là cứ khi nào code không chạy thì cậu ấy đều ngồi xem code mình viết có gì sai.

Cách sửa

Tôi chỉ cho cậu ấy cách tìm đoạn bị sai tương ứng trên framework. Đồng thời, tôi bảo cậu ấy đọc xem đoạn ấy xử lí cụ thể như thế nào và kết luận tại sao code không chạy.

Vấn đề tâm lí

Tôi hỏi tại sao cậu ấy không đọc code của framework thì cậu ấy trả lời rằng “Nhìn phức tạp lắm, với lại em muốn làm xong sớm”. Tôi cũng công nhận là nội dung bên trong framework phức tạp thật, và đúng là rất khó để nắm được tổng thể. Tuy nhiên bằng cách nghiên cứu nó, kiến thức về ngôn ngữ và khả năng đọc hiểu thư viện sẽ tăng lên, trình độ bản thân sẽ tăng lên. Tôi đã cho cậu ấy trải nghiệm việc phá bỏ rào cản tâm lí đó, ngồi nghiên cứu code sẽ khiến vấn đề được giải quyết nhanh như thế nào.

Vì những lẽ ở trên, tôi nghĩ là người hướng dẫn cũng không nên nói những câu đại loại như “Phần này không hiểu cũng được”, “Đừng đọc nhiều làm gì, cứ cho chạy đi đã” – điều đó cũng rất quan trọng. Tôi luôn nghĩ : giới hạn trưởng thành của bạn cao đến mức nào, phụ thuộc vào việc bạn hiểu code sâu đến mức nào.

Không test riêng những đoạn xử lí phức tạp

Vệc chia nhỏ các hàm rất quan trọng. Tại sao lại phải chia? “Vì như thế thì sẽ nhàn hơn”. Tuy nhiên đối với người chưa thuần thục thì lại cảm thấy như thế là “khổ hơn”.

Ví dụ:

Ruby
function process(list){

    for(var i=0,l=list.length;i<l;i++){
        ...
        // viết cái gì cần xử lí
    }

    ...
    // xử lí thêm gì nữa thì viết vào đây`

}

Hàm có cấu trúc như thế này nghĩa là muốn thực hiện xử lí riêng từng phần một. Người chưa thuần thục thường có xu hướng cứ thế viết những gì muốn xử lí vào những chỗ comment ở trên.

Nhưng đúng ra nó phải là như thế này :

function process(list){
    var next = []:
    for(var i=0,l=list.length;i<l;i++){
        ...
        var elem = doSomethingForElement(list[i]);

        if ( elem ) {
            next.push(elem):
        }
    }

    ...

    if( next.length == 0 ){
        return doSomethingWhenNoResponse(args);
    }

    ...

}

function doSomethingForElement(){
    #viết những gì cần xử lí
}

function doSomethingWhenNoResponse(){
    #viết những gì cần xử lí
}

Những phần muốn xử lí viết tách ra ngoài, độc lập (gọi là sprout method). Làm như thế sẽ tránh cho hàm gốc bị phức tạp hóa, và giúp ta test được từng xử lý một.

Cách sửa

Tôi cho họ làm quen với quy trình là trước khi động tay vào hàm gốc thì hãy tách những gì mình cần xử lí ra thành những hàm rời, sau đó viết và test những cái rời trước. Sau đó họ đã thấy kết quả là việc giải quyết lỗi phát sinh trở nên nhanh như thế nào. Đồng thời, tôi giúp họ ý thức đầu ra đầu vào là gì, phần mình làm ảnh hưởng các phần khác như thế nào.

Vấn đề tâm lí

Nguyên nhân của chuyện cảm thấy việc chia nhiều hàm là khổ chính là từ suy nghĩ “muốn xong sớm” mà ra. Họ nghĩ “Sau này có lỗi thì chỉ cần xem lỗi ở đâu rồi sửa là xong” nên họ thấy chia nhiều hàm rất là “phức tạp hóa vấn đề”, chỉ là chuyện “nếu thừa thời gian thì làm”. Tuy nhiên, nếu gộp hết tất cả thành 1 hàm rồi chạy, thì việc hiểu code sẽ rất khó và cái vòng luẩn quẩn “chạy và lỗi” sẽ kéo dài, lỗi lại còn rất nặng. Như thế mới chính là đang làm mất thời gian. Cũng như trong Hình học để giải bài toán ta hay phải kẻ đường phụ. Việc học cách kẻ đường đó như thế nào là một điều rất quan trọng.

Không kiểm tra quy trình làm việc của bản thân

Như phần đầu tôi đã nói, thói quen chính là sức mạnh. Chúng ta cần phải có một quy trình làm việc nhanh nhất có thể, hướng đến mục tiêu là tự động hóa.

Từ hôm pair programming, tôi mới nhận ra một cậu hay ngồi nhìn code chằm chằm sau khi viết. Tôi hỏi là đang làm gì thế thì cậu ấy bảo “Em đang kiểm tra”. Cậu ấy đúng là đang kiểm tra từng dòng code một, xem mình có viết sai gì không. Tôi bảo cậu ấy trước tiên hãy check syntax đi thì cậu ấy hỏi “Check syntax nghĩa là sao ạ?”. Sau khi tôi chỉ cậu ấy cách làm thì cậu ấy sau đó cứ liên tục hỏi tôi “Câu này đúng chưa anh?”, “Thế này được chưa?”. Tôi trả lời là trước hết cứ tự mình kiểm tra đi đã, cậu ấy không hiểu ý tôi là gì.

Tôi đã nhận ra rằng ngoài quy trình check xem code của mình sau khi build và cho chạy thật đã ngon chưa, họ không có thêm một quy trình nào khi làm việc cả. Unit test vốn là thứ được sinh ra để xem từng phần có hoạt động chính xác không. Nếu trong khi làm không chuẩn bị trước, không phải là người có thói quen vừa làm vừa test (test first), thì sau này làm unit test sẽ rất mệt.

Cách sửa

Phần code dùng để check syntax hãy để riêng ra editor và dùng thường xuyên. Nếu cần thiết, cứ khi save code là tự động cho chạy luôn để test. Vì cậu ấy dùng editor là vim nên cần cài plugin như quickrun hay syntastic.

Các class và các hàm cũng vậy, ở đâu cũng được, nhưng cần phải tạo môi trường để kiểm tra từng cái một. Nếu kiểm tra thấy ngon rồi, thì hãy lưu lại vào một file test. Đó là quy trình mà tôi muốn cậu ấy thực hiện. Trước khi hỏi “Thế này được chưa” thì hãy làm tất cả những việc trên đã. Khi đã quen rồi, nên tạo một môi trường CI dựa trên cách dùng debug hoặc fswatch. Mỗi khi save code thì cho chạy luôn cái CI đó để test là tốt nhất.

Vấn đề tâm lí

Vấn đề về môi trường như bên trên có vẻ như liên quan đến kiến thức chứ không liên quan đến tâm lí. Tuy nhiên sau khi phân tích, tôi thấy nó liên quan đến nhận thức về 2 khái niệm thường gặp khi lập trình là “code chuẩn” và “code lỗi mà không biết vì sao”.

Một thực tế là, không phải chỉ có duy nhất một “code chuẩn”.

Tuy nhiên, người hay copy paste thường có xu hướng nghĩ rằng : copy paste mà cũng không chạy được thì chắc là do mình thao tác sai chỗ nào đó, copy paste bị thiếu chỗ nào đó và thường có thói quen ngồi tìm kiếm những cái đó. Vì lí do đó, code của họ sau khi viết xong chẳng khác nào mật mã ngoài hành tinh, và họ sẽ phải tìm lỗi sai trong đống mật mã đó. Phần mà họ tự viết ra cũng dựa trên những đoạn copy paste, mà sau này rồi cũng sẽ trở thành thứ mà họ không thể tự lí giải nổi. Tâm lí của họ là luôn nghĩ việc đọc hiểu và kiểm tra từng dòng một, kém năng suất hơn việc copy paste cả một đoạn rất nhiều.

Không đọc error message, không đọc log

Error message của ngôn ngữ lập trình, hay error message của thư viện đều có nhiệm vụ là chỉ ra chỗ sai bằng văn bản con người có thể hiểu được, viết bởi con người. Tuy nhiên, những lập trình viên tiến bộ chậm thường không đọc những cái đó. Họ chỉ ý thức được là có lỗi xảy ra. Nếu là code trên IDE thì có thể kích chuột để jump ngay đến câu lệnh lỗi. Nhưng nếu làm trên vim hoặc Web browser thì việc đọc hiểu log message, và jump đến câu lệnh lỗi là nhiệm vụ của người lập trình. Không đọc, cũng không jump đến câu lệnh lỗi nên màn hình error thường bị switch đi trong tích tắc. Trong khi pair programming với vài người, họ switch màn hình nhanh đến nỗi tôi còn tưởng họ đang thử độ phản ứng của mắt với vật thể chuyển động.

Kết quả là họ ngồi nhìn chằm chằm vào code họ vừa viết, tìm xem có lỗi chính tả, lỗi font nào không bằng cách ngó đi ngó lại method name. Vấn đề là error message vừa nãy đâu có nói là method name có lỗi, hoặc không tồn tại. Một khi không đọc error message thì phạm vi có thể phát sinh lỗi là vô hạn. Tuy nhiên, họ chỉ luôn nghĩ được là mình “viết sai một cái gì đó”.

Cách sửa

Tất nhiên là đọc error message và tìm hiểu ý nghĩa của từng message một. Thêm vào đó, tôi giúp họ lí giải mối liên hệ giữa error message và môi trường. Đồng thời, hướng dẫn họ tạo ra những đoạn code nhỏ để tái hiện các lỗi đó (snippet) có thể dùng cho sau này và dự trù các case tương tự có thể xảy ra.

Vấn đề tâm lí

Có thanh niên nói “Em sợ tiếng Anh lắm, nhìn cứ như mật mã”. Có điều, ngữ pháp của các error message chỉ dừng ở mức học sinh cấp Hai, mà tôi biết là cậu ta thừa sức hiểu. Cũng phải công nhận một thực tế là muốn hiểu những lỗi liên quan đến ngôn ngữ lập trình và framework thì phải hiểu cấu trúc và từ ngữ chuyên ngành của chúng. Điều này khó. Nhưng như vậy không có nghĩa là ngôn ngữ hoặc framework đó “không thân thiện” mà vì bản thân error message không phải sinh ra chỉ để hiển thị những lỗi liên quan đến code người lập trình viết.

Vì vậy ta cần theo sát cả framework, cả ngôn ngữ lập trình, và cả code. Có như vậy ta mới có thể móc nối error message và vấn đề cần giải quyết với nhau. Để có thể tự mình làm như vậy, hàng ngày cần tự tạo thói quen tìm hiểu những thứ đó cho mình. Nếu không cho dù đến bao giờ chăng nữa, error message cũng vẫn mãi chỉ là những “mật mã” mà thôi.

Không biết cách đào sâu vấn đề

Có lỗi xảy ra, nghĩa là chúng ta có thể tìm ra manh mối để giải quyết vấn đề bằng cách xem xét phần code bị báo lỗi. Ở đó có lỗi, nghĩa là ít nhất thì code đã chạy được cho đến đó. Hơn thế nữa, nguyên nhân lỗi phát sinh rất có thể là do ảnh hưởng của những gì mà chúng ta đã nhập vào. Chẳng hạn, bằng cách dùng printf để debug, chúng ta có thể biết nhập cái gì vào module, biến đổi nó ra sao thì sẽ sinh ra lỗi. Thông qua việc đó, chúng ta sẽ hiểu khái quát vấn đề, sau đó tuần tự thử các bước chạy của chương trình là có thể chỉ ra được cụ thể phần nào bị lỗi.

Tuy nhiên, người không biết cách đào sâu vấn đề thường cho chương trình chạy với tâm lí là sẽ chạy ngon và check code với tâm lí “đáng ra nó phải chạy ngon”. Họ thường không quan tâm đến thứ tự các bước chạy của chương trình, cách làm việc của họ chẳng khác nào lần mò trong đám mây. Trong một vài trường hợp, họ sẽ mãi “ngẩn ngơ” vì không hiểu sai từ đâu. Họ không có trong tay một chiến thuật để tìm ra chỗ sai nên sẽ nhanh chóng rơi vào trạng thái người ta vẫn gọi là “quay cuồng”.

Cách sửa

Sau khi xảy ra lỗi, trước khi họ làm một động tác gì tôi đều yêu cầu họ trả lời câu hỏi này trước “Bây giờ chúng ta cần làm gì?”. Cụ thể, tôi muốn họ nêu ra phương pháp tìm ra chỗ sai. Tôi giúp họ xây dựng phương pháp đó bằng cách hỏi những câu như “Code chạy ngon đến đoạn nào?”. Sau khi tìm ra một manh mối gì đó, tôi lại hỏi “Thông tin này có ý nghĩa gì?”, “Có cần thay đổi phương pháp không?”. Tôi muốn họ ý thức được là mình cần đào sâu có mục tiêu đàng hoàng, chứ không phải là lần mò trong đám mây.

Vấn đề tâm lí

Đối với một chương trình, việc xảy ra lỗi là một minh chứng cho việc “đã gần hoàn thiện”. Tại sao? Vì nó thường chỉ cho ta sáng tỏ một điều mà trước đây ta không quan tâm, chỉ cho ta biết giả thiết mà ta đã tạo ra là sai, và chỉ cho ta hành động tiếp theo mà ta phải làm là sửa nó. Ta đã có định hướng. Tuy nhiên, đối với những progammer không giỏi đào sâu vấn đề thì thường có xu hướng bị “ngây người” vì họ luôn nghĩ rằng “Đáng ra phải chạy ngon rồi chứ nhỉ?”. Và sau đó họ lại nghĩ “Toi rồi, sai hết rồi”. Có thể nói rằng họ không bao giờ test những cái mà chắc sẽ thất bại, trong khi giá trị cao nhất của việc test là sau khi thất bại, nó sẽ cho ta một thông tin hữu ích nào đó.

Tôi bảo họ chạy thử thì họ thường nói “Lỗi là cái chắc” và không làm. Còn khi miễn cưỡng làm rồi chương trình không chạy thì họ bảo “Đấy, thấy chưa?”. Thực tế là lỗi ở môi trường chạy thật thì không được phép, nhưng ở môi trường test thì sẽ chẳng có ai phàn nàn gì cả, thậm chí còn có ích. Tôi nghĩ họ cần được tự mình trải nghiệm và lí giải những điều đó.

Thói quen tốt

Dựa vào những thói quen xấu đã nói ở trên, chúng ta có thể biết được đâu là thói quen tốt.

  • Đầu tư thời gian để đọc code và hiểu code.
  • Luôn có xu hướng dùng kiến thức để đơn giản hóa vấn đề trước mắt
  • Không sợ lỗi, luôn dùng test code để tìm kiếm thông tin, manh mối
  • Luôn hành động với mục đích rõ ràng để từng bước một giải quyết vấn đề

Ngoài ra, còn vài thói quen mà tôi nghĩ là tốt như :

  • Cải tiến công cụ và tự động các hóa quy trình
  • Boy scout policy
  • Học vài ngôn ngữ
  • Học kiến thức một cách tổng thể

Cải tiến công cụ và tự động hóa các quy trình

Thói quen tốt thường được hỗ trợ bởi công cụ tốt. Chẳng hạn mỗi khi học ngôn ngữ mới, tôi đều tìm kiếm code formatter của ngôn ngữ đó. Ngoài ra, tôi có coding style của mình – không muốn ấn quá nhiều phím, nên tôi chọn IDE có chức năng tự động nhập space cho tôi.

Boy scout policy

Có một tổ chức gọi là boy scout có phương châm là : nhặt hết rác trên các đoạn đường mình đi qua. Cũng như vậy, người lập trình cần có phương châm sửa hết lỗi của những code liên quan đến phần mình làm. Dĩ nhiên không đọc cẩn thận thì sẽ không sửa được, nhưng dù không sửa thì đọc code thôi cũng là có ích rồi. Làm như vậy thì tự nhiên sẽ ngày càng hiểu sâu về code hơn, và code tổng thể sẽ đẹp hơn.

Học vài ngôn ngữ

Nhiều khi vấn đề ở ngôn ngữ này ta có thể lí giải được trong khi học ngôn ngữ khác. Và nhiều khi, một khái niệm nghe có vẻ lạ, thực ra chỉ là đem từ ngôn ngữ khác vào. Thế nên, việc học nhiều ngôn ngữ sẽ giúp ta lập trình mau thuần thục hơn.

Học kiến thức một cách tổng thể

Kiến thức về background, về lịch sử ngôn ngữ, và vài ba bài tập ta đọc ở đâu đó sẽ khiến cho chất lượng code của ta tăng lên. Nếu mỗi ngày ta không gặm nhấm một ít kiến thức, không có cách hiểu về cú pháp, về sample của riêng ta thì kiến thức sẽ không còn là kiến thức mà chỉ dừng ở mức mẹo vặt vì ta không biết ứng dụng chúng sang những trường hợp khác. Cứ thế, ta sẽ chỉ mãi mãi chạy theo những mẹo vặt để giải quyết vấn đề mà thôi.

Lời kết

Năng lực tạo ra bởi tập hợp các thói quen nên việc cải thiện các thói quen sẽ khiến cho năng lực của chúng ta tăng lên. Đó là suy nghĩ của tôi. Tiếp theo là do những rào cản tâm lí nên bản thân việc cải thiện các thói quen cũng thường không mấy dễ dàng. Cải thiện xong rồi, cũng không phải ngay lập tức đạt đến trình độ siêu nhân ngay được.

Nhưng đừng bao giờ nghĩ rằng mình vô dụng. Điều ảnh hưởng nhất đến kết quả cuối cùng của bạn là việc bạn có nghĩ được rằng : con đường học những điều mới là con đường hạnh phúc, hay không.

Nguồn: Techtalk via fsd14

Tham khảo việc làm GIT lương cao tại TopDev

Ưu đãi SHOCK cho 200 bạn đầu tiên mua vé Vietnam Mobile Day

Vietnam Mobile Day đã chính thức khởi động với dự tính lên tới 100 topic cực hot trong mọi lĩnh vực của Mobile như Mobile Marketing, ASO, SEO, Analytic Social Media. Crossplatform, Native, Hybrid, Webapp, UX/UI Design, Product Development, QA & Testing, Mobile Game và tối ưu ứng dụng trên các hệ điều hành Android và iOS. Ngoài ra còn có các nhóm chủ đề cực kỳ đặc trưng thuộc phân khúc Architechture, Infrastructure, và Security.

Với đơn vị tổ chức chính là TOPDEV cùng sự hỗ trợ nội dung của Hiệp hội Thương mại điện tử Việt Nam (VECOM), Vietnam Mobile Day năm nay tiếp tục có sự góp mặt của các tên tuổi lớn như Google, Facebook, Microsoft… và ước tính sẽ có 10.000 lượt khách tham dự, hơn 200 doanh nghiệp lớn nhỏ hoạt động trong ngành công nghệ thông tin, hơn 100 đơn vị truyền thông trên khắp cả nước tham gia. Có thể nói, đây chính là cơ hội có một không hai khi bạn vừa có thể học tập, chia sẻ kinh nghiệm lại có không gian giao lưu và networking với anh em trong nghề.

Đại tiệc thịnh soạn cho những ai quan tâm đến lĩnh vực công nghệ nói chung và mobile nói riêng!

Đặc biệt hơn, từ ngày 01/04 đến ngày 15/04/2017, khi đặt mua vé với mã code FIRSTFLIGHT, bạn sẽ được giảm tới 100.000 VND, chỉ còn 150.000 VND/vé (giá gốc 250.000VNĐ)

Kết quả hình ảnh cho đăng ký ngayCơ hội tiếp cận những xu hướng mới nhất, những diễn giả nổi tiếng nhất trong lĩnh vực mobile đang chờ đón các bạn tại sự kiện Vietnam Mobile Day 2017. Tham dự sự kiện cực khủng chỉ với giá vé tí hon, nhanh tay trở thành 1 trong 200 người đầu tiên sở hữu chiếc vé Early Bird đặc biệt này.

Thời gian & địa điểm:
– 20/05/2017 tại Hồ Chí Minh
– 27/05/2017 tại Hà Nội
– 03/06/2017 tại Đà Nẵng

Website thông tin chi tiết: http://mobileday.vn

Fanpage chính thức: https://www.facebook.com/events/1368837373173750/Hotline:

  • Các hạng mục hợp tác

Ms. Ngọc Đỗ
Điện thoại: 08 6273 3497 | 0944 685 243
Email: ngoc.do@applancer.net

  • Tổng quát về sự kiện

Ms. Thảo Nguyên
Điện thoại: 08 6681 3236 | 08 6273 3497 | 0963 651 587
Email: nguyen.nguyen@applancer.net

Lời khuyên quí giá của tỉ phú công nghệ

Khi đó chúng tôi đang ngồi quanh lửa trại và ngắm bầu trời đầy sao trong cái lạnh của California.

Nhóm chúng tôi bắt đầu trò chuyện với một thành viên của group. Tôi không biết anh ta là ai nhưng ngay từ lần gặp đầu tiên tôi liền nghĩ ngay “Người này khá là thú vị”.

Anh ta luôn là tâm điểm của cuộc nói chuyện bất kể là về giáo dục, design hay là innovation. Chỉ mãi đến sau này thì tôi mới biết anh ta là một nhà sáng tạo về công nghệ và là một tỉ phú.

Điều mà tôi không bao giờ nghĩ đến bởi anh ta quá khiêm tốn, tốt bụng và hài hước nữa.

Với sự hiểu biết về lịch sử cũng như tầm nhìn xa, anh cho rằng công nghệ luôn đóng vai trò quan trọng trong xã hội. Và cuộc nói chuyện giữa chúng tôi cứ như là buổi TEDtalk vậy.

Câu chuyện và những lời khuyên của anh ta trong đêm cắm trại ấy thật sự gây ấn tượng mạnh đối với tôi. Và giờ đây tôi muốn chia sẻ những lời khuyên quí giá ấy với các bạn.

Giá trị #1: Hãy chào đón sự thay đổi

Anh ấy nói với tôi rằng có quá nhiều người lo sợ về sự nghiệp của mình. Đặc biệt là những người trẻ, khi họ kiếm được tiền và có dư dả thì lại sợ sự thay đổi của ngành, công ty, vai trò cũng như con đường sự nghiệp và thăng tiến của họ.

Vì sự sợ hãi thất bại mà họ lại tự che mắt mình khỏi những cơ hội thật sự.

Khi nghe đến đây tôi liền nhớ tới những người đồng nghiệp khi tôi còn làm ở Google, họ vốn có những ý tưởng kinh doanh vô cùng thú vị nhưng không bao giờ dám thực hiện chúng.

Thế nhưng với anh ta thì khác “Hãy chấp nhận sự thay đổi một cách vui vẻ bởi công nghệ của chúng ta sẽ thành lạc hậu trong tương lai thôi!” – Đó là lời khuyên đầu tiên cho tôi từ anh ấy.

“Hãy chính là sự thay đổi mà bạn muốn nó xảy ra cho thế giới” – Mahatma Gandhi

Giá trị #2: Tạo ra thị trường mới chứ không chỉ là sản phẩm mới

Đa phần mọi người chỉ tập trung vào việc tạo ra một sản phẩm mới thay vì một thị trường mới đầy tiềm năng.

Hãy tự nghĩ xem một thị trường mới hoàn toàn trong tương lai sẽ như thế nào và tự hỏi tại sao nó không diễn ra ở hiện tại. Sử dụng công nghệ hiện tại để tạo ra trending cho sự ra đời của thị trường đó.

Trong quá trình làm việc, anh ta rút ra được rằng “Những công ty và ý tưởng đắt giá nhất luôn tạo ra thị trường mới”

“Hiện tại là của họ nhưng tương lai là của tôi” – Nikola Tesla

Học là mãi mãi

Khi nói về giáo dục, anh ta cho rằng bất kể là việc gì, bạn vẫn luôn có thể làm tốt hơn nữa.

Anh khuyến khích tôi đọc sách, du lịch, học ngoại ngữ, chấp nhận thất bại và tiếp tục rèn luyện kĩ năng – “Cứ tự thử thách bản thân mình, học hỏi nhiều kĩ năng khác nhau mà anh có hứng thú”

“Học một ngôn ngữ lập trình và trở thành một chuyên gia về nó” – anh nói thêm – “ hãy học để làm chủ kĩ năng đó”

“Sự tăng trưởng trí tuệ nên bắt đầu ngay từ khi ta sinh ra và chỉ dừng lại khi ta chết” –  Albert Einstein

Giá trị #4: Hãy tập trung cho những kĩ năng mà trong tương lai sẽ được trọng dụng

Theo anh ta, để thành công thì con người cần hai thứ : tiền và thời gian. Khi đó ta mới có thể đầu tư vào các kĩ năng và công nghệ quan trọng mà tương lai sẽ cần đến. Hãy nuôi dưỡng nhân lực, ý tưởng và những ngành công nghiệp có giá trị tăng lên theo thập kỉ.

Anh ấy cho rằng “ Phải suy nghĩ về tương lai và các ý tưởng lớn, thiết thực, có ảnh hưởng đến nhân loại”

“Không ai nhận ra việc đã hoàn thành, chỉ có việc cần phải làm. Và quá trình đó không bao giờ dễ cả” – Marie Curie

Sau khi trở về, tôi ngay lập tức nghĩ về những gì mình có thể làm để lãnh đạo công ty của mình, Pennybox, được tốt hơn.

Mặc dù cách nhìn của anh ta thường là chỉ đúng từ những gì anh đã trải qua nhưng tôi vẫn nghĩ là mình có thể dựa vào đó mà áp dụng cho team cũng như user của mình.

Hãy thử tưởng tượng xem một thế giới mà bất cứ ai cũng muốn thay đổi, luôn tìm kiếm và tạo ra một thị trường mới, luôn học hỏi và đầu tư vào tương lai xa. Đó chính là thế giới mà tôi luôn ao ước.

Tôi hi vọng những lời khuyên từ buổi cắm trại giữa đêm sao này sẽ chuyền lửa và kinh nghiệm quí giá cho các bạn đọc trong việc bắt đầu một start up.

Nguồn: blog.topdev.vn via Medium

Học ReactJS trong 15 phút

Trong bài React dành cho AngularJS developer tôi đã có một số so sánh cũng như hướng dẫn sơ lược về ReactJS dành cho những bạn đã có background về AngularJS. Vậy còn với những bạn chỉ có căn bản về Javascript? Hôm nay tôi sẽ giới thiệu với các bạn những kiến thức cơ bản về ReactJS mà các bạn đã có căn bản về Javascript có thể hiểu được và làm quen dần với ReactJS.

Tôi sẽ chia loạt bài này làm ba phần, như vậy có nghĩa là các bạn sẽ phải đọc hết mỗi bài viết và hiểu nó trong vòng 5 phút, cố gắng nhé. Hehehe.

Hy vọng sau khi đọc xong ba bài viết, mất khoảng 15 phút, chỉ tính thời gian đọc không tính thời gian load page nhé), bạn đã có thể bắt đầu code application với ReactJS một cách thoải mái.

ReactJS là gì?

React.JS là một thư viện Javascript dùng để xây dựng giao diện người dùng. Với cá nhân tôi cũng như nhận xét chung của cộng đồng về ReactJS thì nó nhanh, dễ học và vui.

Tiếp theo chúng ta sẽ bắt đầu đến với những khái niệm.

Component

React được xây dựng xung quanh các component, chứ không dùng template như các framework khác. Bạn có thể tạo ra một component bằng các gọi phương thức createClass của đối tượng React, điểm bắt đầu khi tiếp cận với thư viện này.

Ví dụ.

var Button = React.createClass({
    render: function(){
        return (
            <input type="submit" />
        );
    }
});

Phương thức createClass nhận vào một tham số, là đối tượng mô tả đặc tính của component. Đối tượng này bao gồm tất cả các phương thức để hình thành nên component. Phương thức quan trọng nhất là render, phương thức này được trigger khi component đã sẵn sàng để được render lên trên page.

Trong hàm đó, bạn ẽ trả về một mô tả cho việc bạn muốn React render cái gì lên trên page. Như trong ví dụ ở trên, đơn giản tôi muốn render một button.

Chú ý: Hàm render chính là mô tả cụ thể của UI tại bất cứ thời điểm nào. Vì thế nếu dữ liệu thay đổi, React sẽ take care việc update UI với dữ liệu tương ứng. Các bạn có thể hiểu đơn giản là, khi dữ liệu thay đổi, React sẽ tự động gọi hàm render để update lại UI.

JSX — Javascript Syntax Extension

Đây đơn giản là một syntax extension của Javascript. Với nó bạn có thể viết Javascript với những tag giống như XML (XML-like). Về bản chất, các tag thực sự là những lời gọi hàm, sẽ được chuyển đổi trong React code và end up dưới dạng HTML và Javascript trong cây DOM.

Nhưng với những gì bạn biết ở hiện tại, chỉ cần hiểu đơn giản nó giống như là HTML/XML với một số khả năng khác.

Multiple components

Nếu bạn muốn lồng nhiều component vào nhau, bạn sẽ làm điều này trong lệnh return của phương thức render.

Ví dụ.

var Form = React.createClass({
    render: function(){
        return (
            <div>
                <input type="submit" onClick={this.props.onUserClick} />
                <h3>You have pressed the button {this.props.counter} times!</h3>
            </div>
        );
    }
});

var App = React.createClass({
    getInitialState: function(){
        return {
            counter: 0
        }
    },
    onUserClick: function(){
        var newCount = this.state.counter += 1;
        this.setState({
            counter: newCount
        });
    },
    render: function(){
        return (
            <div>
                <h1> Welcome to the counter app!</h1>
                <Form counter={this.state.counter} onUserClick={this.onUserClick} />
            </div>
        );
    }
});

React.render(<App />,  document.getElementById("app"));

Phía trên, tôi đang lồng Form component vào trong App component. Đây là một dạng quan hệ cha con (parent-child) mà bạn có thể dễ dàng nhận thấy trong HTML.

Phương thức React.render() như các bạn thấy ở trên nhằm mục đích kickstart việc render, và render thừ root component, trong trường hợp trên là App vào trong DOM với container cụ thể là element có id là app

Hết 5 phút, mời các bạn nghỉ ngơi và chờ 5 phút tiếp theo về Prop và State.

Props & State là gì?

Có hai kiểu của data trong React đó là props và state. Sự khác biệt giữa hai kiểu thì hơi khó khăn để hiểu ngay từ ban đầu, ít nhất là về mặt khái niêm. Nhưng một khi bạn bắt đầu code, bạn sẽ nhanh chóng tách biệt được hai loại.

Điểm mấu chốt của sự khác nhau là state thì private và chỉ có thể được thay đổi bên trong bản thân component. Props thì mang tính external, và không bị kiểm soát bởi bản thân component. Nó được truyền từ component cao hơn theo phân cấp, hay có thể hiểu đơn giản là truyền từ component cha xuống component con, cái mà điều khiển dữ liệu trước khi truyền xuống.

Vì thế trong khi một component không thể thay đổi props của nó một cách trức tiếp (điều này có thể làm một cách gián tiếp nhưng hãy để nó vào những phần sau), thì nó có thể tự thay đổi state của bản thân.

Props

Chúng ta sẽ bắt đầu xem xét kỹ hơn về props, cũng như hiểu về data flow một chiều trong React, điều này vô cùng quan trọng.

Nào cùng cài đặt app của chúng ta đã làm trong bài trước với một ít dữ liệu, sử dụng props nhé. Đầu tiên chúng ta cần lấy dữ liệu từ một nơi nào đó. Đó có thể là Ajax call để lấy một số dữ liệu từ API, tuy nhiên chúng ta sẽ hard code nó như một variable.

var text = "Click the button";

Cách để đưa props vào một component nhìn rất giống cách mà chúng ta khai báo attribute cho một HTML element.

<App text={text} />

Lý do chúng ta sử dụng cặp ngoặc nhọn là vì chúng ta cần nói cho JSX biết rằng đó là một Javascript expression.

Một khi App component được cài đặt như thế này, nó có thể truy xuất vào biến text mà ta đã khai báo ở trên thông qua lời gọi this.props.text. Tuy nhiên, nó không thể trực tiếp thay đổi dữ liệu. Từ góc nhìn của component, props của nó là bất biến (immutable). Nó chỉ là thông tin được cài đặt cho component.

Đây là ví dụ.

var text = "Click the button";

var Form = React.createClass({
    render: function(){
        return (
            <div>
                <h3>{this.props.text}</h3>
                <input type="submit" />
            </div>
        );
    }
});
var App = React.createClass({
    render: function(){
        return (
            <div>
                <h1> Welcome to my app!</h1>
                <Form text={this.props.text}/>
            </div>
        );
    }
});
React.render(<App text={text}/>,  document.getElementById("app"));

Như các bạn thấy, props được truyền vào trong App component trong phương thức React.render(). Sau đó App component có thể truy xuất biến text thông qua lời gọi this.props.text. Nó cũng có thể truyền dữ liệu xuống component con của nó như chúng ta thấy cách mà Form component được App component cài đặt props trong ví dụ.

Khi dữ liệu đến được Form component, chúng ta thấy đây là điểm kết thúc, dữ liệu sẽ được render ra thẻ h3 như trên.

Đây là cách mà dữ liệu được luân chuyển trong React thông qua props.

State

Một cách khác để storing dữ liệu trong React là state. Không giống như props, bất biến dưỡi góc nhìn của component thì state có thể thay đổi (mutable).

Vì thế nếu bạn muốn dữ liệu trong ứng dụng thay đổi, ví dụ như dựa trên tương tác người dùng, thì dữ liệu phải được lưu trữ trong component state.

State là private và được quản lý bởi chỉ duy nhất một component, nó không thể truyền xuống cho component con. Nếu bạn muốn truyền xuống cho component con thì bạn phải truyền nó như là một props.

Cài đặt state

Để cài đặt state, đơn giản chúng ta cài đặt hàm getInitialState() vào component, và trả về bất cứ gì bạn muốn cài đặt trong state của component đó.

Thay đổi state

Để thay đổi state, đơn giản ta gọi hàm this.setState(), và truyền vào state mới như là một tham số.

Ví dụ.

var App = React.createClass({
    getInitialState: function(){
        return {
            active: true
        }
    },
    handleClick: function(){
        this.setState({
            active: !this.state.active
        });
    },
    render: function(){
        var buttonSwitch = this.state.active ? "On" : "Off";
        return (
            <div>
                <p>Click the button!</p>
                <input type="submit" onClick={this.handleClick} />
                <p>{buttonSwitch}</p>
            </div>
        );
    }
});

React.render(<App />,  document.getElementById("app"));

Đoạn code trên cũng cho bạn làm quen với hệ thống event trong React, rất đơn giản. Chúng ta hook một event listener vào trong button, ở trên là onClick. Khi nó được trigger, chúng ta gọi hàm handleClick, cái mà đã được cài đặt trước đó, và luôn sẵn sàng được gọi thông qua từ khóa this.

Trong hàm handleClick, chúng ta gọi this.setState(), cái mà sẽ thay đổi trạng thái của component.

Chú ý: React event được wrap để chạy trên tất cả các browser, có nghĩa là React giúp bạn đảm bảo event của bạn chạy được trên tất cả các trình duyện.

Chúng ta nên giữ state ở đâu?

Bạn nên cố gắng giữ số lượng các stateful component ít nhất có thể, và thậm chí giữ tối thiểu lượng dữ liệu trong state. Nếu component cấp dưới cần truy xuất dữ liệu từ state, thì hãy truyền nó thông qua props.

Lưu ý: Stateful component thì luôn luôn là higher level, trong khi Stateless component thường là lower level trong hệ thống phân cấp.

Để hình dung việc state được giữ ở đâu, bạn hãy hỏi bản thân một vài câu hỏi, những câu hỏi này được lấy từ React docs:

  • Xác định mỗi component mà render thông tin gì đó dựa trên state.
  • Tìm một component mà nó chủ sở hữu chung của các component khác (một component nằm bên trên tất cả các component khác trong hệ thống phân cấp thì cần có state)
  • Hoặc là những component là chủ sở hữu chung hoặc là những component nằm trên hệ thống phân cấp sẽ nên giữ state.
  • Nếu bạn không thể tìm ra component nào phù hợp, hãy tạo một component mới đơn giản giữ nhiệm vụ lưu trữ state và đặt nó đâu đó nằm bên trên các component là chủ sở hữu chung trong hệ thống phân cấp.

Inverse data flow

Chúng ta đã nói rất nhiều về việc làm thế nào luồng dữ liệu chỉ có một chiều trong React, từ cha đến con. Điều này thật ra không hoàn toàn đúng, vẫn có cách để thêm một dòng dữ liệu theo hướng ngược lại (Inverse data flow).

Bạn sẽ cần điều này khi mà một component nằm sâu bên trong cây phân cấp cần phải thay đổi trạng thái của cha nó.

Dưới đây là một ví dụ về việc làm thế nào để khi click vào button trong Form component mà nó sẽ trigger việc thay đổi trạng thái (state change) trong App component, cái nằm bên trên nó, cũng như việc có thể truy xuất vào phương thức onUserClick.

var Form = React.createClass({
    render: function(){
        return (
            <div>
                <input type="submit" onClick={this.props.onUserClick} />
                <h3>You have pressed the button {this.props.counter} times!</h3>
            </div>
        );
    }
});

var App = React.createClass({
    getInitialState: function(){
        return {
            counter: 0
        }
    },
    onUserClick: function(){
        var newCount = this.state.counter += 1;
        this.setState({
            counter: newCount
        });
    },
    render: function(){
        return (
            <div>
                <h1> Welcome to the counter app!</h1>
                <Form counter={this.state.counter} onUserClick={this.onUserClick} />
            </div>
        );
    }
});

React.render(<App />,  document.getElementById("app"));

Như bạn có thể thấy, chúng ta chỉ đơn giản truyền xuống phương thức onUserClick như là một props, đã có thể kích hoạt việc tương tác ngược từ Form component lên App component, và trigger một trong số những method của nó.

refs và findDOMNode

Thỉnh thoảng, bạn có thể sẽ muốn tiếp cận cây DOM, và làm một số thay đổi, nhưng không cần thiết phải sử dụng state hay là props. Trong những tình huống như thế này, bạn sẽ cần lấy các node như mong muốn.

Thật may mắn, React cung cấp cho bạn một cách thủ công để có thể lấy DOM node. Đơn giản bạn gọi phương thức React.findDOMCode(component), và truyền vào component mà bạn mong muốn.

Để lấy được tham chiếu của component đã chọn bạn có thể sử dụng thuộc tính refs. Đơn giản thêm một ref vào trong phần tử như thế này.

<input ref="textField" ... />

Từ đó bạn có thể tham chiếu thành phần input khai báo như trên thông qua this.refs.textField.

Ví dụ.

var Form = React.createClass({
  focusOnField: function(){
      React.findDOMNode(this.refs.textField).focus();
  },
  render: function(){
      return (
          <div>
              <input 
                  type="text"
                  ref="textField" />
              <input 
                  type="submit"
                  value="Focus on the input!" 
                  onClick={this.focusOnField} />
          </div>
      );
  }
});
var App = React.createClass({
  render: function(){
      return (
          <div>
              <h1> Welcome to the focus app!</h1>
              <Form />
          </div>
      );
  }
});
React.render(<App />,  document.getElementById("app"));

Kết quả của đoạn code trên là thành phần input sẽ được focus khi bạn click button.

Thuộc tính key

Khi bạn tạo các component một cách dynamically, mỗi thành phần đều cần thuộc tính key, và thuộc tính này là duy nhất (unique). Trong suốt quá trình rendering, các component sẽ bị xáo trộn, chúng cũng có thể bị destroy hay recreate tùy vào sự khác nhau của mỗi giải thuật, việc gán cho nó một key để định danh và đảm bảo rằng các component đều ở đúng vị trí của nó, tối ưu hóa việc rendering.

Như thế này.

var App = React.createClass({
    getInitialState: function(){
        return {
            todos: ["eat","code","sleep"] 
        }
    },
    render: function(){
        var todos = this.state.todos.map(function(todo,index){
            return <li key={index}>{todo}</li>
        });             
        return (
            <div>
                <h1> Welcome to the ToDo list!</h1>
                <ul>
                    {todos}     
                </ul>
            </div>
        );
    }
});

Tóm lại

Thật ra nói về React thì có khá nhiều thứ đề học, tuy nhiên nếu hiểu được hết các khai niệm tôi đã đưa ra thì bạn đã biết đủ để có thể viết được một ứng dụng từ React. Bạn cũng nên tìm hiểu Redux là gì vì nó rất là qua trọng.

Việc làm Reactjs giờ lương toàn nghìn đô không. Anh em vào tham khảo thêm.

TopDev via Kipalog

Code thế nào mới gọi là chuẩn

Dùng Tabs hay spaces?  Để “{“ ngay tại chỗ hay là nên xuống dòng, nên xài 80 chracter width hay 12o?

Các coder luôn cãi nhau về những vấn đề như thế này. Thậm chí vụ tabs vs spaces còn hot tới mức được HBO đưa vào show truyền hình của họ.

Trong bài viết này tôi sẽ đưa ra câu trả lời chính xác nhất cho những vấn đề trên.

Lúc còn trẻ, tôi vẫn hay tham gia bình luận gây war. Tôi cũng xem qua nhiều bài viết về việc tại sao phải làm theo cách này mới đúng trong khi những cách còn lại bị cho là sai hoàn toàn. Và tất nhiên khi xem comment mà nếu có ai nói không đúng theo ý mình là tôi ngay lập tức lao vào gây war.

Phải cho đến khi tôi trải nghiệm việc đời và có sự trưởng thành thật sự thì lúc đó tôi mới tìm được câu trả lời cho những vấn đề như vậy.

Những vấn đề đó chẳng đáng quan tâm

Tính nhất quán mới quan trọng. Phải dễ đọc dễ hiểu. Tranh cãi về cách nào tốt nhất chỉ làm mất thời gian và chả được kết quả gì.

Hơn 20 năm qua, tôi đã trải qua biết bao nhiều trending khác nhau. Điều đó có nghĩa là tôi được tiếp xúc với vô số style code của các ngôn ngữ lập trình. Và điều đáng ngạc nhiên là có dùng style nào thì vẫn chẳng ảnh hưởng đến số bug mà cũng chẳng giúp tôi code nhanh lên tí nào.

Đừng có hiểu nhầm là tôi chê việc code “đẹp”, code gọn. Việc viết code có trật tự, hệ thống và dễ theo dõi luôn là điều đáng mơ ước của các coder. Thế nhưng lí do chọn style để code chỉ vì do nhìn nó đẹp mới là vấn đề bởi nó phụ thuộc vào quan điểm cá nhân.

Một phần khác nữa là việc code luôn cực kì khó nhằn và tốn thời gian. Vì thế đối với những người mới nhập môn với lập trình thì họ luôn cảm thấy “choáng” và cảm thấy tự ti về khả năng code của mình. Do vậy mà họ bỏ nhiều thời gian cho việc tranh cãi những cái vô bổ, chỉ được hình thức mà không có chất lượng.

Và như vậy thay vì tìm kiếm giải pháp, việc tranh cãi lại được sinh ra để ta có thể tránh né những vấn đề khó khăn và to lớn hơn vốn rất cần được xử lý.

Theo “Luật của những thứ không tưởng” của Parkinson, người tranh cãi đôi khi lại không phải là người gặp phải vấn đề đó và họ dùng sự tranh cãi để tránh gặp những vấn đề rất rối hơn. Ông đưa ra môt ví dụ như sau: các kĩ sư là người chịu trách nhiệm cho việc phát triển một quả bom nguyên tử nhưng họ chỉ toàn tranh cãi về việc nên dùng chất liệu gì thay vì tập trung vào vấn đề thiết kế, vốn quan trọng nhất và cũng là khó giải quyết nhất.   

Một ví dụ điển hình nữa là về việc xây nhà che nắng cho …..xe đạp vốn vô cùng vô nghĩa và lãng phí tiền bạc, thời gian.  Poul-Henning Kamp, một developer người Đan Mạch, đã gọi đó là hiện tượng “bike shedding” để ám chỉ việc trên.

Và nếu bạn làm trong ngành lập trình cũng như là thường xem tinh tức online và các trang mạng xã hội thì bạn sẽ thấy cái “bike shedding” ở khắp nơi. Mọi coder cứ tranh luận, bàn cãi thậm chí là chửi nhau chỉ vì những vấn đề rất cỏn con như ngôn ngữ lập trình là tốt nhất, dùng space hay tab.

Hãy luôn nhớ bất cứ cuộc tranh cãi nào mà càng nóng thì giá trị và kết quả của chúng càng ít đi.

Là một chuyên gia tư vấn, Tôi luôn phải gặp hết khách hàng này đến khách hàng khác, và từng người một đều có những vấn đề và tính cách khác nhau. Vì thế nên cách duy nhất để tôi có thể thành công là phải bơ đi những chuyện nhỏ nhặt, không đáng kể. Và khi liên quan đến việc lập trình thì cứ làm theo cách mình giỏi nhất và chấp nhận kết quả mình đạt được.

Nếu như bạn đang trong quá trình thắc mắc chưa biết phải chọn style code nào thì hãy tự hỏi mình:

  • Có tool nào giúp mình viết theo style đó một cách dễ dàng và tiết kiệm thời gian không?
  • Những cái tool và style đó có được update thường xuyên không?

Nếu cả 2 câu trả lời đều là có thì bạn cứ làm theo style đó, không phải lo lắng lăng tăng chi nữa.  

Sau đây là những nơi để bạn tìm hiểu thêm để đưa ra quyết định của mình:

Tác giả: Bill Sourour

Đại tiệc Mobile lớn nhất toàn quốc đã khởi động

Sau những thành công lớn từ những năm trước, chuỗi sự kiện Vietnam Mobile Day đang có những bước rục rịch đầu tiên chuẩn bị sự trở lại của mình tại các sân chơi công nghệ lớn trên toàn quốc.

Được biết, sự kiện năm nay dự đoán sẽ quy tụ hơn 10.000 lượt khách tham dự, hơn 200 doanh nghiệp lớn nhỏ hoạt động trong ngành công nghệ thông tin, hơn 100 đơn vị truyền thông trên khắp cả nước tham gia. 120 chủ đề năm nay chắc chắn sẽ là một bữa đại tiệc thịnh soạn cho những ai quan tâm đến lĩnh vực công nghệ nói chung và công nghệ nói riêng.

Chờ đợi gì cho Vietnam Mobile Day

Trong những năm vừa qua, các chuyên gia đã nhận định rằng các startup không chỉ cần kiến thức nền tảng về kỹ thuật chuyên môn, mà sự liên kết giữa các mạng lưới cộng đồng với nhau mới thật sự là một đầu mối tốt nhất đảm bảo cho sự phát triển của các startup trong nhiều lĩnh vực khác nhau. Sự kiện Vietnam Mobile Day hàng năm, đã quy tụ và kết nối được rất nhiều công ty công nghệ và đối tác với nhau, từ đó phát triển thêm nhiều mối quan hệ cần thiết cho những bước tiến mạnh mẽ về sau.
Sau những thành công lớn của các năm về trước, sự kiện năm nay vẫn sẽ giữ nguyên những giá trị cốt lõi phục vụ cộng đồng. Bên cạnh đó phía ban tổ chức sẽ bổ sung thêm nhiều hoạt động cũng như nội dung mới hấp dẫn hơn và phù hợp hơn với sự thay đổi của những công nghệ đang có mặt trên thị trường. 

 

Ông Nguyễn Hữu Bình, CEO – TopDev, trưởng ban tổ chức sự kiện Vietnam Mobile Day cho biết:

“Như mọi năm, đến thời điểm này thì công tác chuẩn bị của chúng tôi đã gần như hoàn thành, những nội dung và diễn giả cũng như các chương trình hỗ trợ cho cộng đồng cũng đã được khởi động nhằm thúc đẩy sự đi lên của toàn hệ sinh thái startup nói chung và của cộng đồng công nghệ nói riêng. Hy vọng ở chương trình lần này, chúng tôi sẽ đưa ra nhiều chương trình đột phá hơn dành cho khán giả đang nóng lòng chờ đợi sự trở lại của Vietnam Mobile Day.”

Đặc biệt, các nhóm chủ đề năm nay vẫn phủ sóng đầy đủ và bao quát tất cả những nhóm chủ đề nóng nhất trong ngành công nghệ như Mobile Marketing, ASO, SEO, Analytic Social Media. Crossplatform, Native, Hybrid, Webapp, UX/UI Design, Product Development, QA & Testing, Mobile Game và tối ưu ứng dụng trên các hệ điều hành Android và iOS. Ngoài ra còn có các nhóm chủ đề cực kỳ đặc trưng thuộc phân khúc Architechture, Infrastructure, và Security. Đương nhiên, không thể thiếu sự có mặt của các nhóm chủ đề cũng như các chương trình hỗ trợ đặc biệt dành riêng cho cộng đồng Khởi Nghiệp luôn được các doanh nghiệp cực kỳ quan tâm. Danh sách vẫn còn đang được tiếp tục cập nhật liên tục cho đến ngày diễn ra sự kiện. Những bí mật sẽ được dần hé mở để tạo sự bất ngờ đến phút cuối cho khán giả tham dự sự kiện năm nay.

Tất cả chúng ta hãy cũng chờ đợi những bất ngờ sẽ diễn ra trong sự kiện Vietnam Mobile Day, điều gì sẽ là chìa khoá giúp các lập trình viên cũng như những chuyên gia marketing có thể đón đầu xu hướng, từ đó có được những bước tiến xa hơn trong chuyên môn cũng như sự nghiệp của mình? Câu trả lời sẽ không còn là một ẩn số nữa. Thời gian đã bắt đầu được đếm lùi, tất cả sẽ được giải đáp tại chuỗi sự kiện Vietnam Mobile Day.

Đặc biệt hơn, từ ngày 01/04 đến ngày 15/04/2017, khi đặt mua vé với mã code FIRSTFLIGHT, bạn sẽ được giảm tới 100.000 VND, chỉ còn 150.000 VND/vé (giá gốc 250.000VNĐ)!
Kết quả hình ảnh cho đăng ký ngayCơ hội tiếp cận những xu hướng mới nhất, những diễn giả nổi tiếng nhất trong lĩnh vực mobile đang chờ đón các bạn tại sự kiện Vietnam Mobile Day 2017. Tham dự sự kiện cực khủng chỉ với giá vé tí hon, nhanh tay trở thành 1 trong 200 người đầu tiên sở hữu chiếc vé Early Bird đặc biệt này.

THỜI GIAN DỰ KIẾN DIỄN RA SỰ KIỆN

* TP. Hồ Chí Minh:

Thời gian: 20/05/2017

* TP. Hà Nội:

Thời gian: 27/05/2017

* TP. Đà Nẵng:

Thời gian: 03/06/2017

Vietnam Mobile Day được TopDev tổ chức hàng năm và cũng được biết đến với vai trò nhà tổ chức chuỗi sự kiện lớn nhất trong ngành web – Vietnam Web Summit. Năm nay, với sự bảo trợ của Hiệp hội Thương mại điện tử Việt Nam (VECOM), hứa hẹn sẽ đem đến cho cộng đồng lập trình, doanh nghiệp và khởi nghiệp tại Việt Nam những số liệu, kiến thức, kĩ năng bổ ích và mở rộng quan hệ hợp tác cho các cá nhân, tổ chức và doanh nghiệp lớn nhỏ đang hoạt động trong lĩnh vực web và di động tại Việt Nam.

***Thông tin chi tiết về chương trình, BTC sẽ cập nhật đầy đủ tại địa chỉ:***

Website: http://mobileday.vn

Fanpage chính thức: https://www.facebook.com/mobiledayevent/

Để biết thêm thông tin xin vui lòng liên hệ:

Tổng quát về sự kiện:

Ms. Thảo Nguyên

Điện thoại: 08 6681 3236 | 08 6273 3497

Mobile: 0963 651 587

Email: nguyen.nguyen@applancer.net

Về các hạng mục hợp tác tại sự kiện:

Ms. Ngọc Đỗ

Điện thoại: 08 6273 3497

Mobile: 0944 685 243

Email: ngoc.do@applancer.net

 

THÔNG TIN THAM KHẢO VỀ CHỦ ĐỀ DỰ KIẾN TẠI CHƯƠNG TRÌNH MOBILE DAY

1. Nhóm chủ đề về Mobile Business

Nhóm các chủ đề được chia sẻ bởi đại diện các quỹ đầu tư, nhà đầu tư thiên thần và chính các nhà sáng lập, cung cấp nhiều thông tin thú vị đặc biệt là bài học thành công, bài học thất bại, cũng như những thông tin thị trường đáng giá cho người tham dự có ý định khởi nghiệp liên quan đến mobile. Có thể kể đến các chủ đề như: “Các cách kiểm nghiệm một ý tưởng trước khi bắt tay làm một ứng dụng/game.”, “Nhìn lại năm 2016- đầu 2017 để dự đoán các xu hướng của thị trường, xu hướng tìm doanh thu và tiêu tiền hiệu quả.”, “Kinh nghiệm làm mobile và những bài học thất bại nên tránh”, “Chiến lược phỏng vấn lập trình mobile khi bạn không biết code”…

2. Nhóm chủ đề về Mobile Marketing

Tối ưu quảng cáo, tăng lượng người dùng, tăng download/install, giảm remove, giảm chi phí, thu hút người dùng là các vấn đề muôn thuở, vì thế, sự kiện có sự tham gia chia sẻ của các chuyên gia đầu ngành về mobile marketing, ASO, SEO, social media và quảng cáo. Một vài chủ đề như: “Tại sao quảng cáo của bạn không hiệu quả?”, “Tối ưu hiệu quả chiến dịch marketing/quảng cáo trên di động”, “Growth Hacking với Indie Apps trong môi trường quốc tế“, “Các chiến dịch mà các apps Media và Entertainment cần thử”, “Cách đưa quảng cáo vào game hợp lý”…

3. Nhóm chủ đề về Mobile Game

Mobile game có cách xây dựng và quy trình khác hẳn Mobile App và đem lại hơn 60% doanh thu trên các chợ ứng dụng, nên nhóm chủ đề này rất hữu ích cho khán giả quan tâm đến lĩnh vực mobile game, một số chủ đề trong nhóm: “Adventure of Game Designers – How to make a game?”, “Tối ưu hoá game trong unity”, “Làm thế nào để tạo ra một Puzzle games gây nghiện?”, “Thuật toán AI trong Game”.

Tham khảo thêm: Tuyển dụng lập trình Mobile lương cao

4. Nhóm chủ đề về UX/UI Design

Đây là đề tài muôn thuở với rất nhiều kiến thức mới lạ nhưng hầu như tất cả mọi đối tượng trong lĩnh vực mobile cần học hỏi, một số chủ đề thú vị như: “Làm thế nào để đo lường thành công (hoặc thất bại) trong thiết kế UX của bạn”, “Mobile UX Design: Những điều không nên làm”, ” Những kiến thức UX hữu ích mà lập trình viên cần phải biết”…

Tham khảo thêm: Tuyển dụng UX UI Design lương cao

5. Nhóm chủ đề liên quan đến hệ điều hành iOS      

Đúng như tên gọi của nó, các chủ đề trong nhóm này đậm chất kỹ thuật trên nền tảng iOS như “Saving Data in iOS”, “Vừa làm app vừa làm API/webservice bằng Swift”, “Quản lý bộ nhớ trong lập trình iOS ”…

Tham khảo thêm: Tuyển dụng IOS lương cao

6. Nhóm chủ đề liên quan đến hệ điều hành Android

Cũng đúng như tên gọi của nó, các chủ đề trong nhóm này đậm chất kỹ thuật trên nền tảng Android như “Kiến trúc thực sự của hệ điều hành Android”, “Thủ thuật và công cụ tối ưu ứng dụng Android”, “Android TV. Xây dựng app cho TV”, “Xác thực bằng vân tay trong Android”, “Firebase Realtime Database in Android”…

Tham khảo thêm: Việc làm Android lương cao

7. Nhóm chủ đề về Crossplatform/Native/Hybrid/Webapp

Ngày nay, ngoài lập trình native, rất nhiều công nghệ mới ra đời hỗ trợ cho việc làm ứng dụng nhanh chóng và dễ dàng, lập trình một lần, build app đa nền tảng như Xamarin, React Native, Ionic, Cordova…đổi lại chúng cũng đem đến nhiều thách thức và khó khăn cho việc lựa chọn công nghệ để triển khai cho dự án. Nhóm chủ đề này bao gồm nhiều chủ đề nhỏ, vài trong số đó là “Crossplatform/Native/Hybrid/Web app, lựa chọn nào cho dự án?”, “React Native for iOS Development”, “Lập trình iOS app với Xamarin và Visual Studio”…

8. Nhóm chủ đề về Appstore, Playstore, Gamification, General problem

Nhóm chủ đề hết sức hữu ích cho công đoạn phát hành ứng dụng, tuy nhiên, lại rất cần chuẩn bị kỹ ngay trước cả giai đoạn coding, đặc biệt là Gamification, vài trong số đó là các chủ đề như: “Gamification cho game+app, kích thích user trả tiền, kéo dài thời gian ở lại app, quay lại app”, “Chiến lược đối phó với sự phân mảnh của kích thước màn hình di động, “Vì sao app của bạn bị reject, bị ban, bị xóa trên store”…

9. Nhóm chủ đề về Product Development

Nhóm chủ đề mang tính hàn lâm, nhưng bất kỳ developer nào cũng cần học hỏi để trang bị cho mình những kiến thức và hành trang vững chắc trên con đường tiến xa hơn trong sự nghiệp của mình. Tuy nhiên, BTC đã thú vị hóa nó thông qua các chủ đề hấp dẫn như: “Đo lường hiệu quả làm việc của developer.”, “Câu chuyện về một dự án thất bại”, “Vì sao developer nên có product mindset?”. 

10. Nhóm chủ đề về QA & Testing

Kiểm thử và đảm bảo chất lượng sản phẩm là một trong những khâu quan trọng nhất, có cả một ngành công nghiệp cho khâu này nhưng dường như tại Việt Nam, nó vẫn chưa được các doanh nghiệp quan tâm đúng mức, vì vậy, nhóm chủ đề này sẽ đem lại một cái nhìn đúng mực hơn, với các chủ đề nóng hổi như: ” Những điều khác biệt giữa kiểm thử ứng dụng trên thiết bị di động và kiểm thử trên Desktop và Website”, “Mobile Testing – Emulator và Simulator”, “Automated Testing: Process, Planning, Tool Selection”…

11. Nhóm chủ đề liên quan đến hệ điều hành iOS 

Đúng như tên gọi của nó, các chủ đề trong nhóm này đậm chất kỹ thuật trên nền tảng iOS như “Saving Data in iOS”, “Vừa làm app vừa làm API/webservice bằng Swift”, “Quản lý bộ nhớ trong lập trình iOS ”…

12. Nhóm chủ đề liên quan đến hệ điều hành Android

Cũng đúng như tên gọi của nó, các chủ đề trong nhóm này đậm chất kỹ thuật trên nền tảng Android như “Kiến trúc thực sự của hệ điều hành Android”, “Thủ thuật và công cụ tối ưu ứng dụng Android”, “Android TV. Xây dựng app cho TV”, “Xác thực bằng vân tay trong Android”, “Firebase Realtime Database in Android”…

13. Nhóm chủ đề về Architechture, Infrastructure, Security

Có thể kể một vài chủ đề như: “Kiến trúc đa tầng trong xây dựng ứng dụng”, “Làm thế nào để bảo mật một ứng dụng iOS? Android?”, “Tích hợp các dịch vụ thanh toán trên di động”, “Những lỗ hổng bảo mật trên di động và kiểm thử bảo mật di động”…

Những diễn giả có mặt trong năm nay cũng chính là những chuyên gia hàng đầu trong ngành, những người đã dấn thân thực hiện các sản phẩm lớn thành công trên thị trường. Vì vậy, những chia sẻ của họ được giới chuyên môn đánh giá cao vì chúng đi rất sát với thực tế, kết hợp hài hoà giữa kiến thức và thực hành. Với bề rộng các chủ đề được dàn trải một cách toàn diện cho lĩnh vực web, sự bùng nổ của Vietnam Mobile Day 2017 chắc chắn sẽ là một đòn bẩy cần thiết cho toàn ngành startup công nghệ nói riêng và ngành di động nói chung.

Không phải tiền, đây mới lý do khiến nhân viên “sống chết” vì công việc

Là nhân viên, ai cũng mong muốn có được điều này tại môi trường làm việc nhưng không phải sếp nào cũng biết.

Đã bao giờ bạn tự hỏi các công ty thành công như Google, Zappos, Pandora, Glassdoor, và Menlo Innovations có điểm gì chung? Câu trả lời là: Những công ty này đã tạo ra môi trường làm việc cởi mở, nơi họ cảm thấy mình được đóng góp và công nhận.

Môi trường lý tưởng là nơi mang lại cho nhân viên thứ họ muốn – Tự do

Từ thời xa xưa, con người đã làm việc theo sự phân chia giai cấp và nhân viên “chỉ làm những việc sếp yêu cầu” đã trở thành một nguyên tắc. Các bộ phận thực hiện các nhiệm vụ đơn giản và lặp đi lặp lại trong dây chuyền sản xuất, sự ra lệnh và điều chỉnh từ cấp cao nhất luôn được tuân thủ nghiêm ngặt.

Trong môi trường công sở hiện đại ngày nay, nhân tài cần cấu trúc làm việc cân bằng cho phép họ được tự do để làm những gì mình thích, tham gia đóng góp, đổi mới và sáng tạo.

Theo kết quả nghiên cứu của công ty tư vấn nhân sự Worldblu, các tổ chức đề cao mô hình lãnh đạo tập trung vào sự tự do thường tạo ra nền văn hóa mà ở đó tất cả mọi người đều có quyền lựa chọn và thực hành kỹ năng lãnh đạo, bất kể giới tính, năng lực và vị trí.

Bên cạnh đó, nghiên cứu cũng cho thấy, trong giai đoạn 3 năm, những công ty khuyến khích nhân viên tự do, dân chủ đạt mức tăng trưởng doanh thu hàng năm lớn gấp 6,7 lần các công ty khác nằm trong nhóm S&P 500.

Môi trường kỷ luật tạo căng thẳng và khiến năng suất lao động giảm sút

Khi bạn đang làm việc trong một công ty được gọi là “kỷ luật”, nội quy không cho phép bạn lướt Facebook trong giờ làm việc. Sếp bạn hứa hẹn rằng làm việc tập trung trong suốt 6-8 tiếng sẽ giúp bạn không phải đem công việc về nhà. Và như vậy, bạn sẽ có thời gian cho cuộc sống riêng tư của mình nhiều hơn.

Một công ty như vậy chắc hẳn đang theo đuổi chiến lược “cân bằng giữa công việc và cuộc sống”. Chiến lược này mới nghe thì có vẻ hướng đến lợi ích của người lao động nhiều hơn, nhưng mục đích chính của bất kể công ty nào áp dụng nó đều nhắm tăng năng suất lao động.

Tuy nhiên, các nghiên cứu gần đây đã chỉ ra một thực tế rằng: Môi trường càng kỷ luật, nhân viên càng cảm thấy khó gắn bó và không thể làm việc hiệu quả dẫn đến năng suất lao động giảm sút.

Hãy lấy ví dụ trường hợp của Google – một công ty tạo cho nhân viên môi trường làm việc tự do nhất và nhân viên luôn cống hiến hết mình để đạt kết quả cao nhất.

Giám đốc nhân sự toàn cầu của Google Laszlo Bock đã làm cho việc lan tỏa yêu thương trở nên dễ dàng bằng cách để nhân viên tham gia vào việc khen thưởng lẫn nhau. Google phát hành một công cụ nội bộ “gThanks” cho phép mọi người ghi nhận những đóng góp của người khác.

Nhân viên có thể gửi lời cảm ơn thông qua sự khen tặng hoặc chúc mừng nhau. Những ghi nhận này được đăng tải công khai để các nhân viên khác có thể đọc được và được chia sẻ (việc lan tỏa lời khen làm cho cả người cho và người nhận hạnh phúc hơn).

Bock cũng xây dựng một “Bức tường hạnh phúc” bên ngoài văn phòng, nơi những lời chúc mừng, khen thưởng và cảm ơn nhau được in ra và dán lên. Bất kỳ nhân viên nào cũng có thể thưởng cho nhân viên khác một phần thưởng tiền mặt 175$ mà không cần bất kỳ sự giám sát hay hay theo quy định nào từ công ty. Đó là lý do mọi nhân viên Google luôn cảm thấy hạnh phúc tại nơi làm việc và cố gắng phấn đấu hết mình vì công việc.

Nguồn: blog.topdev.vn via cafef.vn

Tìm hiểu lập trình Javascript trong năm 2024

Bạn là một lập trình viên có kinh nghiệm 5 năm làm việc với các REST API? Bạn đã tối ưu tìm kiếm cho hệ cơ sở dữ liệu khổng lồ ở công ty bạn? Bạn đã viết các chương trình nhúng cho cái lò vi sóng? Hẳn là cũng lâu rồi kể từ lúc bạn đánh vật với mấy cái Prototype.js để viết OOP phía trình duyệt sao cho chuẩn. Và bây giờ bạn quyết định rằng đã đến lúc để nâng cấp các kĩ năng front-end của bạn. Tuy nhiên khi bạn bắt đầu tìm hiểu thì bạn ngay lập tức cảm thấy như thế này.

Cái cảm giác vô định, bối rối này thực ra lại là một chuyện thường ngày ở huyện trong cộng đồng Javascript. Nếu vẫn chưa đủ khiến các bạn bối rối, thì đây là 1 cuộc nói chuyện giữa 2 người bạn, phản ánh chính xác tình trạng trên.

Nhưng bạn lại không có thời gian để mà lo lắng về 1 đống công nghệ trôi nổi xung quanh ấy. Bạn hiện giờ đang ở trong một cái mê cung, và bạn cần 1 cái bản đồ. Được thôi, tôi sẽ làm cho bạn 1 cái.

Tuy nhiên có 1 chút lưu ý nho nhỏ: đây là 1 tài liệu tham khảo giúp bạn nhanh chóng sử dụng các công nghệ hiện thời mà không phải suy nghĩ quá nhiều. Về cơ bản tôi sẽ phác ra 1 bản danh sách các công cụ kết hợp tốt với nhau cho nhu cầu thường thấy của các lập trình viên front-end. Điều này sẽ giúp bạn thoải mái, tránh đi những cơn đau đầu không cần thiết. Một khi bạn đã hoàn thành các topic này, bạn có thể tự tin tiếp tục với stack mà bạn thấy thích thú.

Cấu trúc “bản đồ”

Tôi sẽ chia thành các vấn đề nhỏ để bạn có thể tập trung xử lý từng cái một. Với mỗi vấn đề đó, tôi sẽ:

  • Mô tả nhu cầu sử dụng công cụ.
  • Quyết định sử dụng công cụ nào đối với vấn đề đó.
  • Giải thích tại sao tôi lại chọn nó.
  • Đưa ra một số giải pháp thay thế.

Quản lý package

  • Vấn đề: cần thiết trong việc tổ chức project và các dependency.
  • Giải pháp: NPM và Yarn.
  • Lý do chọn: hẳn bạn chẳng lạ gì NPM, trình quản lý package thông dụng nhất hiện nay. Yarn, hướng đến giải quyết các vấn đề về tối ưu các dependency, kiểm soát phiên bản của các thư viện bạn sử dụng trong 1 file lock (sử dụng song song với phiên bản ngữ nghĩa – semantic version của NPM, theo cách bổ sung cho nhau).
  • Một số phương án thay thế: trong giới hạn kiến thức của tôi thì là không có.

Javascript

  • Vấn đề: ECMAScript 5 (hay còn được gọi là anh già Javascript) tồi quá.
  • Giải pháp: ES6.
  • Lý do chọn: Kết hợp rất nhiều tính năng có sẵn trên các ngôn ngữ lập trình khác. Vài tính năng thú vị như: arrow function, module import – export, de-structuring, template string, let và const, generator, promise. Nếu là một lập trình viên Python thì bạn sẽ thoải mái thôi.
  • Một số phương án thay thế: TypeScript, CoffeeScript, PureScript, Elm.

Biên dịch

  • Vấn đề: Nhiều trình duyệt đang được sử dụng vẫn chưa hỗ trợ ES6. Bạn sẽ cần 1 trình để biên dịch ES6 sang các chuẩn thấp hơn để tương thích với các trình duyệt, như là ES5.
  • Giải pháp: babel.
  • Lý do chọn: làm việc rất hoàn hảo. Biên dịch phía server.
  • Một số phương án thay thế: Traceur.
  • Lưu ý: sử dụng babel-loader, 1 loader Webpack.

Linting (tìm lỗi code trong nguồn mà không cần phải chạy code)

  • Vấn đề: có rất nhiều cách viết mã Javascript và điều đó dẫn đến việc rất khó đảm bảo consistency (tính chắc chắn). Các linter có thể ngăn chặn được một số bug.
  • Giải pháp: ESLint.
  • Lý do chọn: code rất tuyệt, dễ config. Airbnb preset là mọi thứ bạn cần có để thiết lập và chạy. Giúp bạn làm quen với cú pháp mới.
  • Một số phương án thay thế: JSLint.

Bundling (đóng gói code)

  • Vấn đề: số lượng file trong project ngày càng nhiều. Các dependency cần được xử lý và gọi một cách đúng đắn.
  • Giải pháp: Webpack
  • Lý do chọn: dễ cấu hình. Có thể load tất cả các loại dependency và asset. Tính tương thích cao. Là bundler được ưa thích cho các project React.
  • Một số phương án thay thế: Browserify.
  • Nhược điểm: cấu hình lần đầu có 1 chút khó khăn.
  • Lưu ý: nếu bạn muốn dành thời gian để hiểu thêm về bundler này, bạn cần học về babel-loader, style-loader, css-loader, file-loader, url-loader.

Test

  • Vấn đề: ứng dụng của bạn không hoàn hảo. Với rất nhiều bug (chắc chắn ) thì nó sẽ dễ dàng xảy ra vấn đề, hỏng hóc. Bạn cần test để tránh tối đa lỗi có thể xảy ra.
  • Giải pháp: mocha (test runner), chai (thư viện assertion), và chai-spies (cho các spy, fake object mà bạn có thể truy xuất với bất cứ sự kiện nào – mong muốn hay không mong muốn xảy ra).
  • Lý do chọn: sử dụng rất đơn giản, rất mạnh mẽ.
  • Một số phương án thay thế: Jasmine, Jest, Sinon, Tape.

Framework UI/ quản lý trạng thái

  • Vấn đề: Các SPA (Single Page Application) đang ngày càng nhiều, càng phức tạp. Do đó các state (trạng thái) hay thay đổi trở thành rắc rối lớn.
  • Giải pháp: React và Redux.
  • Lý do chọn React: Tạo sự thay đổi lớn trong cách tư duy, xóa bỏ nhiều ràng buộc cũ kĩ của các website, làm cho các website trở nên tuyệt vời hơn. Không còn sử dụng phương pháp truyền thống nữa, thay vào đó là chia nhỏ các mối quan tâm: bỏ đi cách chia các thành phần theo công nghệ (HTML, CSS, JS), chuyển sang cách chia tách chúng theo chức năng (các component). UI lúc này hoàn toàn là các function thuần của state.
  • Lý do chọn Redux: Nếu bạn có ý định xây dựng 1 ứng dụng lớn, bạn cần 1 công cụ để quản lý state (mặt khác bạn sẽ cần các component tương tác với nhau, hãy học Vanilla inter-component communication trước để trải nghiệm). Redux sẽ thực thi pattern theo 1 cách đơn giản. Facebook cũng sử dụng Redux. Thêm vào đó là rất nhiều điều tuyệt vời: reload và vẫn giữ nguyên các state, luồng dữ liệu, các test.
  • Một số phương án thay thế: Angular2, Vue.js.
  • Cảnh báo: Lần đầu tiên nhìn thấy JSX hẳn là bạn đã rất bực mình. Chắc hẳn bạn đã phải kháng cự lại mong muốn tìm ngay một forum và gào thét lên với các đồng đạo. Nó chỉ là do sự mâu thuẫn trong nhận thức. Sau khi học 1 thời gian, bạn mới nhận ra rằng trộn lẫn HTML, Javascript, CSS trong 1 file đơn lẻ hóa ra cũng không phải là 1 ý tưởng tồi tệ.

Thao tác, animate DOM

  • Vấn đề: Bạn thỉnh thoảng vẫn cần quick fix mỗi khi bạn chọn lựa các selector và thực hiện các hoạt động trực tiếp trên các nút DOM.
  • Giải pháp: ES6 hay jQuery.
  • Lý do chọn: Hiển nhiên là jQuery vẫn đang sống mạnh và khỏe. React và jQuery chả đụng chạm gì đến nhau cả. Tuy nhiên, có khả năng là phần lớn bạn sẽ làm việc với vanilla React (và querySelector). Và khi đó, việc thêm jQuery sẽ làm tăng thêm rắc rối cho bundle. Sử dụng jQuery ở tầng trên React thực sự không ổn tí nào, bạn cần lưu ý tránh điều đó. Nếu bạn đang đụng phải 1 vấn đề mà bạn không biết xử lý thế nào với React và ES6, hay như các vấn đề về cross browser, thì có thể jQuery sẽ hữu dụng.
  • Một số phương án thay thế: Dojo (tôi không biết là nó có còn tồn tại hay không nữa?).

Styling

  • Vấn đề: Bạn đang có các module thích hợp, bạn muốn chúng là những mảnh hoạt động độc lập, có thể tái sử dụng. Khi đó style của component cần phải linh động như chính component đó.
  • Giải pháp: CSS module.
  • Lý do chọn: Mặc dù tôi thích dùng inline-style (và sử dụng chúng rất nhiều), tôi vẫn phải thừa nhận rằng chúng khá là giới hạn. Đúng là hoàn toàn được khi sử dụng inline-style trong React, tuy nhiên bạn sẽ không thể sử dụng được các giả-selector (như là :hover) với chúng. Điều đó sẽ phá tan tành ứng dụng của bạn.
  • Một số phương án thay thế: Inline style. Điều tôi thực sự khoái inline-style trong React là nó cho phép bạn làm việc với các style như là các object Javascript thông thường. Inline-style cũng ở trong cùng file với component, điều này rất tốt cho quá trình maintain. Một vài người vẫn đang ủng hộ cho SASS, SCSS hay LESS. Tuy nhiên chúng yêu cầu phải thông 1 bước để build, cũng như không linh hoạt như CSS module hay là inline-style.

Vậy là đủ!

Đến giờ thì bạn đã có đống thứ linh tinh để học, nhưng ít nhất thì bạn không cần mò mẫm nghiên cứu nữa. Tôi có quên cái gì không nhỉ? Hay là tôi có sai gì không?

Nguồn: Techtalk via Techmaster

Tìm việc làm lập trình viên trên TopDev

9 điều người thông minh sẽ làm trong ngày nghỉ để công việc thuận lợi hơn

Bạn có biết khi làm việc nhiều hơn 55 giờ một tuần, hiệu quả công việc không còn tăng? Chính vì lý do đó, khoảng thời gian nghỉ ngơi hay những ngày nghỉ phải được dành cho những hoạt động ngoài công việc.

Có những người mang trong mình khả năng làm mọi thứ chớp nhoáng, họ thậm chí còn chẳng dùng tới ngày cuối tuần để làm việc nhưng vẫn vượt trội người khác từ 10 tới 20 giờ làm việc mỗi tuần. Nhóm người này là những người thông minh trong công việc, một thứ mà các nhà tuyển dụng rất ưa thích.

Thế nhưng, không nhất thiết phải sinh ra với một bộ óc hoàn thiện mới có thể đạt được khả năng này, một nghiên cứu mới đây tại Đại học Stanford cho thấy những người lao động bình thường giảm hiệu quả công việc đáng kể khi mà họ làm nhiều hơn 50 giờ mỗi tuần. Khi đạt mức 55 giờ, toàn bộ những gì họ làm không còn gía trị và họ chẳng thể làm được nhiều hơn.

Chính vì lý do đó có những người làm việc tới 70 tiếng/tuần chẳng có hiệu quả khá khẩm hơn những người làm 55 giờ, đó là mức giới hạn của chúng ta.

Những người thông minh, làm việc hiệu quả biết cách sử dụng ngày nghỉ, thời gian rảnh rỗi để tái tạo khả năng lao động, tăng sức lao động làm việc trong tuần. Ngoài ra họ còn thực hiện 10 điều dưới đây.

1. Ngắt kết nối

Ngắt kết nối là một trong những yếu tố quan trọng nhất chúng ta cần thực hiện vào ngày cuối tuần. Lý do vì sao ư? Những thiết bị điện tử giống như sợi dây xích níu kéo con người với công việc, những email, cuộc điện thoại hay lịch nhắc việc luôn xen lẫn vào cuộc sống chúng ta.

Để điện thoại, tiếp cận với kết nối khiến con người luôn bị dính chặt lấy công việc và không có thời gian nghỉ ngơi, tái nạp năng lượng. Nếu đang làm việc trong một môi trường mà bạn không nhất thiết phải làm cả tuần, hãy tự cho mình những khoảng thời gian nghỉ, cuối tuần là khoảng thời gian nên tắt điện thoại, thoát email.

Ngoài ra, việc ngắt kết nối cũng phải được thực hiện cả ở trong suy nghĩ, hãy dừng nghĩ tới công việc và tập trung tận hưởng những phút giây bên gia đình, bạn bè vào ngày cuối tuần.

2. Tối giản những công việc nhà

Cuối tuần, chúng ta thường dành thời gian để dọn dẹp nhà cửa, chăm sóc cây hay những thói quen khác. Thế nhưng, những hành động tưởng chừng thư giãn này lại mang tính chất của công việc. Nó chiếm mất khoảng thời gian thư giãn, nghỉ ngơi của bản thân hơn thế nữa nó cũng mang lại những áp lực không cần thiết mỗi khi bạn không thực hiện theo đúng lộ trình đặt ra ban đầu.

Để tối giản hoá những công việc này, có nhiều thời gian hơn, hãy thực hiện chúng trong ngày. Giả sử nếu cả tuần bạn không dọn nhà, dành ra cuối tuần để làm nó, hãy bỏ ra 15 phút mỗi ngày cho việc dọn dẹp. Vào cuối tuần có lẽ nhà đã đủ sạch nên bạn không cần dọn lại nữa.

3. Tập luyện, tập thể dục

Theo thống kê, mỗi tuần chúng ta có tới 48 giờ để tập thể dục nếu biết sắp xếp hợp lý. Thêm vào đó, tập thể dục chỉ 10 phút thôi sẽ giúp cơ thể sản sinh ra GABA, một hợp chất thần kinh giúp làm giảm stress. Tập thể dục cũng giúp mang tới cho con người thêm nhiều ý tưởng mới trong công việc.

Hãy cứ xem những người làm sáng tạo hay những người thành công , họ luôn tham gia những hoạt động ngoại khoá và luôn có nhiều ý tưởng mới từ những chuyến đi này.

4. Đối chiếu những gì đã thực hiện được

Tự đối chiếu bản thân vào dịp cuối tuần là cơ hội tuyệt vời để cải thiện chính mình. Sử dụng ngày cuối tuần để sắp xếp công việc, tham chiếu lại những thành tựu trong tuần là thứ tuyệt vời và nên được áp dụng rộng rãi.

Nếu như bạn làm nó vào những ngày trong tuần, những xao nhãng sẽ xuất hiện và bản thống kê của bạn chẳng thể nào chính xác.

5. Theo đuổi những thú vui, đam mê

Bạn sẽ bất ngờ về lợi ích của thú vui đem lại cho bản thân vào ngày nghỉ. Bạn thích đạp xe, đi câu cá hay đơn giản là ngồi nghe nhạc trong một căn phòng yên tĩnh? Đừng ngần ngại làm điều đó vào ngày nghỉ vì nó sẽ mang lại cho bạn trí óc minh mẫn hơn, góc nhìn vấn đề mới hơn.

6. Dành thời gian quý giá cho gia đình

Bỏ ra 2 ngày cuối tuần hay vài ngày nghỉ với gia đình chưa bao giờ là điều phí phạm. Hãy nhìn xem, bạn dành ra cả tuần trời cho công việc nhưng thời gian cho gia đình, những người quan trọng với bạn nhất lại chẳng là bao.

Đưa con cái đi chơi, xem phim cùng vợ hoặc đơn giản là đưa cha mẹ đi ăn một bữa ăn tử tế là những thứ hãy thử làm. Có thể họ không mang lại doanh số khủng hay hiệu quả công việc bạn vẫn ao ước, thế nhưng họ chính là liều thuốc tinh thần giúp cho tuần làm việc của bạn thêm phần khởi sắc.

7. Lên kế hoạch cho những chuyến du hành nhỏ

Thử nghiệm một chương trình ca nhạc mới, đi ăn ở một nhà hàng vừa khai trương hay đơn giản là đi bộ tới những vùng chưa từng nghĩ tới… những chuyến du hành mini này rất phù hợp để thư giãn, thử thách bản thân.

8. Cố gắng thức dậy đúng giờ

Mặc dù việc ngủ nướng cuối tuần thật là một điều tuyệt vời, thế nhưng nó lại không mấy tốt cho chúng ta. Không những lãng phí thời gian cho việc ngủ mà nó còn phá hỏng đồng hồ sinh học, nhịp ngủ của mỗi người và khiến ta khó thức dậy hơn trong tuần làm việc mới.

Hãy duy trì mọi thứ điều độ, đúng giờ và bạn sẽ có khả năng kiểm soát những thứ đến với mình. Nếu bạn muốn ngủ nhiều hơn vào dịp cuối tuần? Đơn giản thôi, hãy ngủ thêm vào buổi trưa hoặc ngủ sớm hơn vào tối trước đó.

9. Chuẩn bị cho những điều sắp tới

Ngày nghỉ là khoảng thời gian thống kê lại những gì đã làm, chuẩn bị cho hững gì sắp tới ở tương lai. Chỉ cần 30 phút lên kế hoạch sắp tới cho bản thân, bạn sẽ thấy mình làm việc hiệu quả hơn rất nhiều. Thực hiện theo bản kế hoạch này sẽ giúp bạn kiểm soát thời gian đơn giản ở tuần kế tiếp.

Nguồn: blog.topdev.vn via cafef.vn

Top 10 GitHub repos mà các lập trình viên phải biết

Cộng đồng FreeCodeCamp là một trong những online forum lớn nhất về lập trình, trung bình có hàng gigabytes data được tạo ra mỗi tuần. Một trong những hệ thống hoạt động tích cực nhất của FreeCodeCamp là phòng chat. Có tới hàng nghìn thành viên chat với nhau về công nghệ , đưa ra lời khuyên cũng như giúp đỡ nhau trong việc coding.

Vốn thường xuyên theo dõi chat room, tôi luôn tự hỏi là GitHub repositories nào mọi người hay hỏi hoặc nói về nhất. Thế nên hôm nay, tôi tự phân tích lại bản chat lịch sử nặng tới mấy gigabyte của phòng chat chính của freeCodeCamp

freeCodeCamp/freeCodeCamp

Không có gì ngạc nhiên với vị trí đứng đầu. Tại freeCodeCamp thì topic được nói nhiều nhất cũng chính là platform của nó. Có tới gần 250k sao, 10k người trả lời cũng như là cả trăm vấn đề, pull request hàng tuần. Vì vậy mà cũng không có gì lạ khi rất nhiều người dùng nói đến nó.

getify/You-Dont-Know-JS

Kyle Simpson’s You Don’t Know JavaScript có thể xem là một cuốn sách tham khảo về JavaScript “không chính thức” cho các thành viên trong cộng đồng freeCodeCamp. Kyle hiện tại đang làm trong một dự án tương tự là YDKJS “Functional Light JS”, cũng được nhiều người biết đến.

vhf/free-programming-books

Một trong những list cập nhật thường xuyên free resources. Không những thế bài viết được sắp xếp có trật tự theo thứ tự bao gồm books, podcast, websites, developer tools, và tất cả những nguồn khác đến từ khắp nơi của thế giới. Là một những nơi mà người học lập trình phải “kinh” qua.

twbs/bootstrap

Github account của Bootstrap, một web deisgn framework khá nổi tiếng. Bài viết chứa đựng nhiều thông tin về kĩ thuật và nhiều link dẫn đến các site hữu ích khác. Nếu bạn có hứng thú và muốn xem thêm thì có thể vào trang chủ của getbootstrap.com.

jwasham/coding-interview-university

Googley as Heck tạo ra repository này nhằm viết lại quá trình 8 tháng chuẩn bị cho buổi phỏng vấn với Google. Bài viết bao gồm một list chi tiết những điều bạn cần biết về google như whiteboard test, các concept về khoa học máy tính (Ấy thế mà sau ngần ấy công sức chuẩn bị, anh lại về Amazon làm).

ericelliott/essential-javascript-links

Trong một thời gian dài, Eric Elliott’s JavaScript Links repository được xem là resource được biết đến nhiều nhất trong cộng đồng freeCodeCamp. (Gần đây thì bị soái ngôi bởi vhf/free-programming-books.)

Tham khảo việc làm GIT lương cao tại TopDev

d3/d3

Nếu muốn học về d3.js, thì đây là là một trong những nơi tốt nhất để bắt đầu. Thành viên của freeCodeCamp cũng thường xuyên nhắc đến 2 khu vực khi nói về repo này:

Chúng đều chứa những thông tin rất hữu ích cũng như là list hướng dẫn để bạn có thể tự học d3.js.

vinta/awesome-python

Được gọi là “list về sự tuyệt diệu của Python framwork, libraries, sofware và resource”, đây là một nơi tuyệt vời để bắt đầu học và cải thiện trình Python của bạn.  

oneuijs/You-Dont-Need-jQuery

Một kho tài nguyên khá nổi tiếng về các giải pháp cho những lỗi thường gặp trong lập trình với Javascript.

toddmotto/public-apis

Một list collection công khai về APL. Được cập nhật thường xuyên cũng như sắp xếp, phân chia thành nhiều mục khác nhau giúp người dùng dễ dàng trong việc tìm hiểu.

Tất cả data ở trên được thu thập từ lịch sử phòng chat chính của freeCodeCamp từ tháng 6 năm 2016 đến tháng 3 2017. Tôi chạy một script của Python để đánh giá thông tin, rồi xếp hạng các link dựa theo số lần được nhắc tới bởi người dùng. Sau đó tôi lọc và chọn lại lần cuối. Tất nhiên, bản list này chỉ là một phần nhỏ bề nổi thôi. cộng đồng freeCodeCamp có tới hàng trăm repo mỗi ngày.

Nguồn: blog.topdev.vn via medium

Truy cập ngay việc làm IT đãi ngộ tốt trên TopDev

Cuộc chiến giữa 1 triệu Reddit user để vẽ bức tranh 16 triệu pixels

Thứ năm vừa rồi, trang mạng Reddit vừa tung ra Place, một sự kiện trải nghiệm hiệu ứng mạng xã hội nhân ngày cá tháng tư, April Fool. Place vừa mới chấm dứt vào buối sáng thứ 2 và kết quả

Nói đơn giản, Reddit place là một lễ hội canvas cực lớn để các redditor tham gia. Có thể nói đó là một sự kiện vẽ ra bức tranh khổng lồ với sự góp mặt của tất cả người dùng từ destop, iOS và cả Android. Các Reddit đều được phép tô màu 1 pixel của canvas trong vòng 5 phút. Do vậy nên các người dùng phải hợp tác với nhau để có thể vẽ nên những bức hình có ý nghĩa.

Tất nhiên là các redditor hưởng ứng nhiệt tình. Tại thời điểm sự kiện gần kết thúc, Reddit thông báo gần họ có hơn một triệu người dùng đang vẽ hơn với hơn 16 triệu pixel màu. Ngay trước khi hết giờ, có tới 90,000 redditor đồng loạt xem và thêm tile.

Những gì mà các người dùng đưa ra phải gọi là không tưởng. Sau đây là kết quả cuối cùng của sự kiện Place canvas:

reddit place resizedMột người dùng còn ghi lại một time-lapse video toàn bộ quá trình diễn ra của trải nghiệm Reddit Place

Cũng như những thí nghiệm về social trước của Reddit, The ButtonRobin, Place cũng tạo ra cuộc chiến nảy lửa giữa các người dùng. Nhiều trang cộng đồng “subreddit’ tuyên bố quyền sở hữu của họ trên bức vẽ khiến cho nhiều nhóm người dùng tranh cãi, phá nhau để có thể tăng kích thước cho phần vẽ của mình.

Bạn có thể thấy cuộc đụng độ bàn phím nảy lửa giữa nhóm vẽ lá cờ Mỹ và những người dùng khác.

Đỉnh điểm của cuộc chiến là khi những người chơi của game online nổi tiếng “osu!’ chiếm được một phần lớn “lãnh thổ” ở khu vực bên dưới của màn hình, và trong một khoảng thời gian ngắn đã biến bức tranh thành một bảng tuyên chiến “Osu! cân cả thế giới”. Cuộc chiến được thể hiện bởi một Reddit user với 3D map của những tiles được đặt bởi người chơi:

Sau cùng, có vẻ Reddit lại tiếp tục thành công cho sự kiện trải nghiệm ngày April Fool.

Và lần này, sản phẩm được tạo ra thật đáng để ngưỡng mộ.

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

Top 10 công ty công nghệ chi đậm để “trộm” nhân tài

Cuộc chiến tranh dành nhân tài trong ngành IT diễn ra vô cùng khốc liệt, theo cuộc khảo sát lương IT của Paysa.

Và luôn có những công ty quyết tâm sẵn sàng chi đậm để có được họ, trong số đó Netflix đứng đầu.

Vừa mới đây, Paysa đã tiến hành cuộc khảo sát về vấn đề thuê tuyển cũng như “trộm” nhân viên để tìm ra top những công ty chi mạnh mẽ nhất và thật bất ngờ khi Netflix chiếm vị trí thứ nhất khi họ sẵn sàng trả gấp 10 lần so với những đối thủ khác để có được những tài năng tới từ LinkedIn, Facebook, and PayPal.

Dựa vào kết quả số liệu thu thập được từ hơn 31,000 thương vụ tuyển dụng, Paysa còn cho biết rằng trong khi Netflix là công ty trả nhiều nhất, vẫn có rất nhiều hãng sẵn sàng chi đậm. Sau đây là top 10 công ty công nghệ trả lương đâm để “trộm” nhân viên từ hãng khác về làm cho mình:

No. 1:

Netflix sẵn sàng trả lương cao gấp 167% so với vị trí hiện tại nếu nhân viên chấp nhận qua làm cho bên họ. Theo lương trung bình của một nhân viên IT là $130,814 thì khi chuyển qua làm cho Netfilx thì họ sẽ được trả tới $329,174.

Tất nhiên là với mức lương tăng khủng như vậy thì promotion phải lớn cũng như stock và các lợi ích khác sẽ ít đi. Các vị trí Senior software engineers ở Netflix có mức lương trung bình $210,244, cao hơn khá nhiều so với $166,403 cho cùng vị trí tại Facebook. Tuy nhiên nếu tính kèm stock và những lợi ích khác thì Facebook lại trả nhiều hơn.

No. 2:

Wikia, trang chuyên Host các fan websites, sẵn sàng trả cao hơn đối thủ đến 72% để nhân viên về làm cho họ.

Điều đó có nghĩa là nếu nhân viên với mức lương trung bình $121,061 sẽ được trả tới $204,077 nếu họ bỏ công ty hiện tại và qua đầu quân cho Wikia.

No. 3:

Một trong những site cung cấp dịch vụ lending nổi tiếng nhất, sẵn sàng tăng thêm 48% lương để trộm nhân viên từ đối thủ. Những vị trí với mức lương trung bình $128,457 sẽ được tăng lên thành $183,469 nếu họ qua làm cho Lending Club.

No. 4:

Microsoft, trả trung bình cao hơn đối thủ 48% để trộm nhân sự. Một vị trí với mức lương trung bình $119,983 sẽ được tăng lên $165,348 khi chuyển qua làm tại Mircosoft.

No. 5:

Tại Groupon, một nhân viên được trả $175,233 so với chỉ $137,390 nếu làm ở công ty cũ. Mức lương tăng là 38%.

No. 6:

Công ty Akamai Technologies trả cao hơn 37% so với mức lương đối thủ để thu hút nhân viên chuyển qua bên họ. Nhờ đó mà lương tăng lên $163,893 so với mức cũ chỉ $126,516

No. 7:

Để trộm nhân tài từ các công ty khác, Palantir sẵn sàng chi hơn cao hơn 37%. Nhân viên khi chuyển qua làm tại Palantir sẽ được trả $169,251 so với $128,040 nếu vẫn tại công ty cũ.

No. 8:

37% là mức tăng lương Salesforce áp dụng cho những nhân sự đầu quân qua bên họ. Nhân viên, với mức lương trung bình $131,758 khi làm tại công ty cũ, sẽ được hưởng mức lương mới là $172,891

No. 9:

Ông lớn Twitter trộm “nhân lực” từ các công ty khác với mức lương cao hơn 37%. Nhờ vậy mà một vị trí nhân viên với mức lương $140,750 sẽ được tăng thành $174,996.

No. 10:

35% là mức lương tăng khi đầu quân về cho Docusign. Như vậy, mức lương mới cho nhân viên sẽ là $173,629. Cao hơn hẳn so với làm ở công ty cũ với mức lương $138,538.

Ngoài ra, Paysa cũng tìm ra được những công ty mà ông lớn công nghệ Microsoft rất thích “trộm” nhân tài từ họ – Trong đó có Amazon, vỗn cũng là chuyên gia…… “trộm” nhân lực. Theo Paysa, Microsoft có vẻ gặp nhiều may mắn hơn khi thành công trong việc khiến nhiều nhân viên của Amazon qua đầu quân cho họ.

Nguồn: topdev via Businessinsider