Tìm kiếm Blog nà


Breaking News

Thursday, October 20, 2016

Nếu bạn đuổi theo 2 con thỏ, cả 2 sẽ cùng chạy thoát!

Lần cuối cùng bạn đọc xong một quyển sách trong một ngày hoặc xem một bộ phim mà không kiểm tra điện thoại hoặc thậm chí tham gia một cuộc họp mà không thỉnh thoảng lướt web là khi nào? Sự tôn trọng có một ý nghĩa mới. Nếu một ai đó dành cho bạn sự chú ý trong 5 phút bạn thật may mắn. Giao tiếp bằng mắt mà không kiểm tra điện thoại hoặc thông báo (notification). Vâng, đó là định nghĩa mới về sự tôn trọng.
Ngày nay, chúng ta sống và nuôi dạy con cái trong một thế giới quá tải về thông tin nhưng thiếu hụt sự chú ý. Nơi mà sự tập trung là ngoại lệ và thiếu tập trung lại là chuẩn mực. Những câu chuyện chúng ta kể cho bọn trẻ ngắn hơn những trò chơi chúng ta chơi. Mọi thứ là ngay lập tức và trong một viên con nhộng. Bởi vì chúng ta "nghĩ" mình không có thời gian. Bởi vì chúng ta đang vội. Và có quá nhiều thứ và con người ở ngoài kia, đang lấy đi một phần của chúng ta, sự chú ý, tập trung, và thời gian. Và hầu hết họ, đang làm điều đó mà không được hoặc sẽ được sự cho phép của chúng ta!!
Có bao nhiêu người cho phép điều này xảy ra với của cải của mình? Để người khác lấy điện thoại/ ví/ xe hơi mà không có sự cho phép của chúng ta? Tại sao chúng ta lại cho phép điều đó xảy ra với sự chú ý, tập trung và thời gian của chúng ta?
Hãy làm một bài test: Trong khi đọc bài viết này, có bao nhiêu cửa sổ trình duyệt đang mở lúc này? Có bao nhiêu email đang viết dở? Có bao nhiêu cửa sổ chat đang mở? Có bao nhiêu bài thuyết trình đang làm dở dang?
Bởi vì sự chậm chạp, không hiệu quả đang bò vào cuộc sống của chúng ta. Sự chú ý trở nên ngắn hơn, việc nhớ lại khó hơn và mắc nhiều lỗi hơn. Chúng ta làm ảnh hưởng tới chất lượng. Chất lượng của công việc, chất lượng của các mối quan hệ và chất lượng của cuộc sống.
Đây là một bài thuyết trình về những căn bệnh của internet? Hoàn toàn không. Mạng toàn cầu (World Wide Web), là một công cụ rất mạnh mẽ, giống như bất kỳ công cụ mạnh mẽ nào khác, nó cần được quản lý để làm việc cho chúng ta. Hôm nay, nó là nô lệ của chúng ta.
Có cách để làm điều đó? Luôn luôn có.
Làm một nhiệm vụ duy nhất: điều này không có nghĩa là bạn không thể tung hứng hay làm nhiều thứ trong một ngày. Bạn vẫn có thể làm nhiều nhiệm vụ. Nhưng khi bạn làm một nhiệm vụ, hãy dành cho nó tất cả sự tập trung bạn có. Cho thấy sự quan tâm tuyệt đối, với người mà bạn đang nói chuyện, trong dự án mà bạn đang làm. Kết thúc nhiệm vụ bạn có thể di chuyển tới nhiệm vụ tiếp theo. (Và xem tỉ lệ lỗi phát sinh!)
Loại bỏ cảm giác khẩn trương giả tạo: Bắt internet làm việc cho bạn. Tắt tất cả các thông báo (notifications).  Chỉ online khi bạn muốn chứ không phải vì các thông báo. Đừng chìm sâu vào các thông tin từ mạng. Các thông báo làm gì cho bạn? Để biết nhanh hơn đồng nghiệp của bạn một giây, ai giành giải Oscars năm nay hay ông trùm của một công ty qua đời hoặc trở thành tỉ phú? Ngày nay, tất cả mọi người đều có và sẽ truy cập thông tin. Nó miễn phí. Các thông báo (notifications) tạo ra cảm giác khẩn cấp giả tạo. Rằng chỉ mình bạn có bởi thông báo tin tức mới có một vài phút trước đó. Đây là một cuộc thi lớn? Không trừ khi bạn làm việc trong nghành truyền thông hoặc là một nhà báo.
Dành thời gian cho các mạng xã hội: Ngoại trừ việc đừng kiểm tra nó đầu tiên trong buổi sáng. Chọn người bạn muốn gặp và cái bạn muốn đọc. Nó không chỉ loại bỏ những thứ lộn xộn. Lãnh đạo cuộc sống của mình và xóa bỏ sự thái quá của thông tin, những thứ, những con người không có giá trị với cuộc sống của bạn. Và tập trung vào những thứ có giá trị. Sự lựa chọn là của bạn. Hãy chọn chất lượng.
Và hãy tạo ra những khoảng trống trong cuộc sống của bạn cho những điều quan trọng. 
Bài viết được dịch từ:
Nguồn: techmaster
Read more ...

AI của Google đã vượt qua giới hạn của trí tuệ nhân tạo, tự học mà không cần tới con người

DeepMind, hệ trí tuệ nhân tạo của Google, nay đã có khả năng tự dạy cho nó bằng chính những thông tin nó đã biết.

AI của Google đã làm được điều chưa từng có trước đây.
AI của Google đã làm được điều chưa từng có trước đây.

Trong một diễn biến trọng đại của ngành trí tuệ nhân tạo, Google giới thiệu hệ thống lai của họ - được gọi là Máy tính Nơron Vi phân (Diffirential Neural Computer - DNC) - sử dụng lượng dữ liệu được lưu trữ từ trước của các máy tính thông thường khi đang kết nối với AI (Artificial Intelligence) và một mạng nơron (mạng máy tính mô phỏng theo não người), đã có khả năng phân tích sử dụng cũng như học mạng nơron này.
“Các thiết bị này có khả năng học từ những ví dụ như hệ mạng nơron, nhưng chúng cũng có thể lưu trữ dữ liệu phức tạp như những chiếc máy tính”, blog của DeepMind cho biết.
Tương đồng với bộ não, mạng nơron sử dụng một loạt các nút liên kết để kích thích những điểm trọng yếu riêng biệt cần thiết để thực hiện một nhiệm vụ. Trong trường hợp này, AI đóng vai trò tối ưu các nốt để tìm giải pháp nhanh nhất giúp mang đến kết quả mong muốn. Qua thời gian, nó sẽ sử dụng những dữ liệu thu được để tăng hiệu quả tìm câu trả lời đúng.
Hai ví dụ sau đây được đưa ra bởi nhóm DeepMind sẽ làm bạn hiểu hơn về vấn đề:
- Sau khi được biết về một vài mối quan hệ trong cây gia đình, máy DNC có khả năng tự xác định những liên quan bổ sung, cũng như tối ưu bộ nhớ của nó để tìm thông tin nhanh hơn trong tương lai. Kiểu A là chồng B, B là cô của C, máy sẽ suy ra A là chú C.
- Hệ thống DNC được nhận dữ liệu cơ bản chính về hệ thống đường tàu điện ngầm công cộng London và ngay lập tức tự tìm kiếm những tuyến đường bổ sung và mối quan hệ phức tạp giữa các tuyến.
Thay vì phải học mọi khả năng có thể xảy ra để tìm giải pháp, DeepMind có thể suy ra câu trả lời từ một kinh nghiệm từng có, lục tìm câu trả lời từ bộ nhớ bên trong hơn là từ điều kiện và lập trình từ bên ngoài. Quá trình xử lí này chính là cách DeepMind có thể đánh bại một nhà vô địch cờ vây - một trò chơi với hàng triệu nước đi tiềm năng và một số vô hạn tổ hợp các thế cờ.
Tùy vào góc nhìn, đây có thể là một bước ngoặt quan trọng cho phép những AI thông mình nhất từ trước đến giờ với khả năng suy nghĩ và học hỏi giống như con người, hoặc cũng có thể, như trong phim Terminator, loài người chúng ta nên chuẩn bị kế hoạch cho giai đoạn hậu chiến tranh với Skynet đi là vừa.
Nguồn: genk
Read more ...

13 bước để trờ thành Hacker chuyên nghiệp

Nếu bạn có ý định trở thành một hacker chuyên nghiệp hoặc đơn giản chỉ là tò mò muốn biết các hacker đang học những gì, thì bài viết này dành cho bạn.
Trước tiên, bạn cần biết rằng hacking nói riêng và an toàn thông tin nói chung là những công việc cực kì khó và nặng nhọc. Chúng đòi hỏi tính kiên nhẫn cũng như kiến thức tốt. Nếu bạn không xây dựng một nền tảng vững chắc ngay từ đầu, bạn sẽ không bao giờ đặt chân vào con đường hacking thực thụ.
#1 Lập trình C

C Programming
C là một ngôn ngữ lập trình mạnh mẽ bậc nhất. Thành thạo ngôn ngữ C là rất cần thiết đối với lập trình viên nói chung và hacker nói riêng. 
C là ngôn ngữ lập trình hướng cấu trúc. Với ngôn ngữ C, các tác vụ được chia thành từng phần nhỏ hơn và các phần nhỏ này được hoàn thành bởi một số đoạn mã. Khi học lập trình C, quan trọng nhất là bạn phải sử dụng biến con trỏ một cách thành thạo cũng như hiểu được cơ chế cấp phát bộ nhớ. 
Nếu bạn muốn học C theo cách của hacker, hãy tham khảo cuốn Learn C The Hardway của Zed.A Shaw.
 #2 Học thêm các ngôn ngữ lập trình khác

java
Với Hacker, ngoài C, anh ta vẫn cần thêm các công cụ đắc lực khác. Một trong số các công cụ đó là những ngôn ngữ lập trình bậc cao như Java, Perl, và đặc biệt là Python. 
Học thêm các ngôn ngữ lập trình khác ngoài C giúp ích rất nhiều cho việc khai thác cũng như vá lỗ hổng của các ứng dụng.
Java là ngôn ngữ lập trình hướng đối tượng phổ biến nhất thế giới theo bảng xếp hạng Tiobe 2016. Nó được biết đến như là ngôn ngữ ổn định, manh mẽ, linh hoạt cùng với độ bảo mật rất cao. Tìm hiểu mô hình bảo mật áp dụng trong Java là cách nhanh nhất giúp bạn nắm được những nền tảng bảo mật áp dụng trong ngôn ngữ lập trình. 
Perl là ngôn ngữ lập trình đa dụng khá linh hoạt, một số tính năng của Perl đưjc lấy ý tưởng từ C. Python nổi tiếng với cú pháp ngắn gọn, dễ học. Tuy cú pháp đơn giản nhưng Python có thể làm được nhiều thứ hơn bạn nghĩ: lập trình web, lập trình big data, viết tool automation,... 
 #3 Hệ điều hành UNIX

unix
UNIX là hệ điều hành đa nhiệm và đa người dùng, được thiết kế để mang lại độ tin cậy và bảo mật cho bất kỳ hệ thống nào sử dụng nó. 
UNIX được phát triển bởi một nhóm nghiên cứu viên tại AT&T Bell Lab. 
Cách tốt nhất để học về UNIX là cài đặt và chạy nó trên máy tính của chính bạn. Sau đó kiếm một cuốn sách kinh điển về nó, Unix in a nutshell của Arnold Robbins là một ví dụ.
Sau khi biết cách sử dụng UNIX, bạn nên tìm hiểu sâu về kiến trúc cũng như phần lõi của UNIX. Với mảng này, chúng tôi khuyên bạn nên đọc cuốn "The Design of the UNIX OS" của Maurice J. Bach.
Hiện nay, một số lượng rất rất lớn web server đang chạy các hệ điều hành nhân UNIX. Do đó việc sử dụng thành thạo và hiểu được design của UNIX là một kỹ năng không thể thiếu của lập trình viên nói chung và hacker nói riêng.
 #4 Học thêm một hệ điều hành khác

windows
Ngoài tượng đài UNIX, các hệ điều hành Window cũng là một mục tiêu thú vị để tìm hiểu.
Có 2 lý do để bạn học Window: 
  1. Các máy tính cá nhân đều sử dụng window.
  2. Hệ điều hành này có rất rất nhiều lỗ hổng.
Việc thực hành khai thác lỗ hổng vừa mang lại cho bạn kỹ năng hacking căn bản, vừa dạy cho bạn biết sự quý giá và tầm quan trọng của việc cập nhật Windows nói riêng và các phần mềm khác nói chung.
 #5 Mạng máy tính

computer networking
Để chính thức đặt một chân vào thế giới Hacker, bạn cần thành thạo việc xây dựng, cấu hình, quản lý và khai thác mạng máy tính.
Một số kiến thức căn bản mà bạn cần nắm rõ gồm có: các mô hình mạng OSI, TCP/IP; các bộ giao thức sử dụng ở các tầng khác nhau trong mạng máy tính: TCP, UDP, Telnet, HTTP,... Quá nhiều thứ để liệt kê trong khuôn khổ của bài viết này. Vì vậy, bạn cần một cuốn sách về mạng máy tính. Chúng tôi gợi ý cuốn: Computer Networking: A Top-Down Approach By James F. Kurose and Keith W. Ross.

hacking network
Sau khi nắm được kiến thức mạng máy tính căn bản, hãy chuyển qua tìm hiểu các công cụ giám sát và dò quét trên mạng. Chúng tôi recommend một cuốn nữa cho bạn:  Nmap Network Scanning: The Official Nmap Project Guide to Network Discovery and Security Scanning

nmap hacking

#6 Khởi động bằng các tutorial


linux
Kali linux - một công cụ hacking khá phổ biến với nhiều tool đi kèm
Để trở thành Hacker, con đường ngắn nhất là .... bắt tay vào hack.
Tuy nhiên "động chạm" vào các hệ thống lớn không phải là chuyện dễ dàng khi có rất nhiều rào cản cả về mặt pháp lý lẫn chuyên môn  đối với newbie. Do đó, con đường tối ưu nhất là "tập hack" theo các kịch bản có sẵn. 
Lời khuyên của chúng tôi: hãy bắt đầu với Kali Linux - một hệ điều hành kinh điển của nhiều hacker, được tích hợp hàng trăm công cụ phát hiện, khai thác và tấn công các lỗ hổng bảo mật.
 #7 Mật mã học

cryptoghraphy
Nếu bạn muốn tiến thêm một bước nữa trong sự nghiệp hacking, bạn không thể thiếu kiến thức mật mã học. 
Nhu cầu che giấu thông tin đã hình thành từ hàng ngàn năm trước với mật mã Caesar. Hiện nay, khi thông tin vẫn liên tục được truyền đi trên khoảng cách xa thì mã hóa là phương pháp an toàn duy nhất để bảo vệ thông tin.
Các phương pháp mật mã bảo vệ thông tin đảm bảo mã hóa và giải mã các dữ liệu mật (tính bí mật) và cũng được dùng để khẳng định tính chân thực (xác thực) của nguồn dữ liệu và kiểm soát tính toàn vẹn của dữ liệu. 
Việc nắm bắt được đặc tính, ưu nhược điểm của các công cụ mật mã hiện đại như hệ mật đối xứng, bất đối xứng, hàm băm, chữ ký số... là yêu cầu tối thiểu đối với cả hacker mũ đen và mũ trắng. 
 #8 Thực nghiệm

hacking
Các chuyên gia của Tây lông đã thống kê rất chi tiết. Để trở thành chuyên gia của một lĩnh vực bất kỳ, bạn cần giành tối thiểu 10.000 giờ làm việc trong lĩnh vực đó.
Hacking không phải là ngoại lệ.
Việc thực hành liên tục và đều đặn là một yếu tố tiên quyết giúp bạn tiến tới cảnh giới cao hơn của một hacker. 
Để bắt tay thực hành những gì đã học được, có lẽ thứ đầu tiên các bạn cần là một "phòng lab cá nhân" với đầy đủ trang thiết bị cần thiết. Ở mức đơn giản nhất, bạn cần chuẩn bị: máy tính cá nhân - tối thiểu 2 chiếc - cấu hình tương đối, đủ để chạy song song nhiều máy ảo trên đó; đường truyền Internet; các thiết bị mạng: Router, Switch (nếu có).... 
Sau khi đã chuẩn bị đủ trang thiết bị và bắt tay vào làm việc, bạn cũng cần lưu ý 5 điều sau:
  1. Luôn backup hệ thống trước khi thử nghiệm bất kỳ thứ gì mới.
  2. Khởi đầu một cách nhẹ nhàng, cố gắng hoàn thành các mục tiêu nhỏ trước.
  3. Ghi chép lại quá trình hack một cách cẩn thận
  4. Không giới hạn bản thân nhưng phải biết điểm dừng
  5. Tự động hóa các công việc lặp đi lặp lại.
 #9 Đọc sách của chuyên gia

book
Không cứ gì hacker, kỹ năng đọc là một trong số các kỹ năng cần thiết cho tất cả mọi người 
Khi trở thành một Hacker, bạn luôn phải thu thập thông tin cũng như cập nhật kiến thức và kỹ năng của mình với tần suất nhiều gấp 4-5 lần người bình thường. Khi đó, kĩ năng đọc tốt (cụ thể là tốc độ đọc và khả năng cô đọng thông tin) sẽ mang lại cho bạn rất nhiều lợi thế trong việc dò quét và nắm bắt thông tin.
Bước đầu, bạn có thể luyện tập một số kỹ thuật đọc như Skimming hoặc chunk reading...

#10 Tham gia các cuộc thi


contest
Học đi đôi với hành. Và việc tham gia các cuộc thi hacking là cách nhanh nhất để tiếp cận và nâng cao khả năng xử lý các tình huống thực tế. Có khá nhiều công ty tổ chức các cuộc thi hacking, vừa nhằm mục đích kiểm tra lỗ hổng trong một sản phẩm nào đó, vừa nhắm tớiviệc thu hút và phát hiện nhân tài. Tại các sự kiện kiểu này, có rất nhiều hình thức thi đấu đa dạng như tấn công - phòng thủ, cướp cờ, mật mã học,... 
Bạn có thể tham khảo danh sách 13 website thường xuyên tổ chức các cuộc thi hacking tại đây 
 #11 Lên level bằng việc tự phát hiện các lỗ hổng

vunerabilities
Lỗ hổng là một điểm yếu trong hệ thống, có thể được sử dụng để gây hại cho hệ thống và người sử dụng. 
Việc dò quét, phát hiện lỗ hổng cũng là một cách tiếp cận kinh điển nếu bạn muốn tiến sâu vào thế giới bảo mật. Một số lỗ hổng nổi tiếng đến mức bạn có thể thực hành khai thác chúng ngay bây giờ: lỗ hổng MS 08-067 (dẫn tới việc máy tính bị điều khiển từ xa trái phép), lỗ hổng web server Apache (phiên bản dưới 2.0),....
Tuy nhiên việc đào bới các lỗ hổng cũ không phải là công việc của chuyên gia bảo mật thực thụ (và hacker thực thụ). Trong khi các hacker mũ đen cố gắng phát hiện và khai thác các lỗ hổng zero-day (lỗ hổng chưa được công bố) thì ở bên kia chiến tuyến, phe mũ trắng cũng tích cực dò quét và và các lỗ hổng kiểu này.
Điều tôi muốn nói ở đây là hãy cố gắng làm quen với việc phát hiện và vá các lỗ hổng mới, bởi công việc này có thể trở thành nguồn thu nhập chính cho bạn.

facebook
Lỗ hổng "bèo nhất" của facebook cũng được treo thưởng 500 USD

#12 Đóng góp cho các Open Source Security Project

Open Source
Chắc chắn bạn đã dùng ít nhất 1 sản phẩm trong danh sách này
Đóng góp cho các dự án nguồn mở sẽ đưa bạn lên một nấc thang nữa trong sự nghiệp. Không phải ai cũng đủ tâm và đủ tầm để làm được điều này. Bằng việc đóng góp chất xám của mình cho những sản phẩm nguồn mở, bạn đã góp một viên gạch để xây dựng cộng đồng Open Source ngày càng lớn mạnh. Và dĩ nhiên với một cộng đồng lớn mạnh, hoàn toàn có thể thay đổi thế giới.
 #13 Học, học nữa, học mãi

Rome
Thành Rome không thể xây trong một ngày.
Chìa khóa của sự thành công chính là quá trình học hỏi KHÔNG NGỪNG.
Nguồn: techmaster
Read more ...

Saturday, October 1, 2016

4 Cấp độ tự do đối với lập trình viên

Cho đến hôm nay, sau một khoảng thời gian khá dài trong nghề phần mềm, tôi mới thử sắp xếp lại trong tâm trí mình về 4 cấp độ khác biệt mà các lập trình viên phần mềm có thể trải qua trong quá trình cố gắng tìm kiếm “tự do” cho bản thân họ.
Đối với phần lớn thời gian trong sự nghiệp phát triển phần mềm của mình, khi tôi là một nhân viên làm việc cho một công ty, tôi có một ước mơ là đến một ngày nào đó mình sẽ được tự do. Tôi muốn có khả năng làm việc cho chính bản thân mình. Đối với tôi, đó mới là tự do tối thượng.
Nhưng tôi thật là ngây thơ và đã không nhận ra rằng thực sự có các cấp độ khác nhau của cái khái niệm “làm việc cho bản thân”. Tôi cũng giả định rằng nếu bạn đã tự làm chủ, bởi vì hầu hết các lập trình viên mà tôi đã nói chuyện về chủ đề này đều có cùng cách nghĩ giống như tôi đã có – trước khi tôi biết nhiều hơn.
Trước đây tôi đã viết một bài về cách làm thế nào để bỏ công việc của bạn, nhưng bài viết này có một chút khác biệt. Bài viết này không thực sự nói về cách làm thế nào để bỏ việc, mà nói về các cấp độ khác nhau của việc tự làm chủ mà bạn có thể đạt được, sau khi bạn thôi việc.

4 Cấp độ tự do trong nghề lập trình viên

Bốn cấp độ mà tôi mô tả dựa trên mức độ tự do mà bạn trải nghiệm trong công việc của mình; chúng không có gì liên quan đến các cấp độ kỹ năng cả. Nhưng nói chung chúng ta luôn tìm cách để tiến lên những cấp độ này và hy vọng thành công trong việc đạt được nhiều tự do hơn. Vì vậy, hầu hết các lập trình viên đều bắt đầu tại cấp độ 1, và lần đầu tiên mà họ trở thành người tự làm chủ thường là cấp độ 3 – mặc dù bạn có thể bỏ qua các cấp độ trước và tiến thẳng lên cấp độ 3 này.
Dưới đây là một định nghĩa nhanh về các cấp độ này (tôi sẽ đề cập chi tiết về mỗi cấp độ trong phần tiếp theo.)
  1. Employed (làm thuê) – bạn làm việc cho một người nào đó
  2. Freelancer (làm tự do) – bạn là ông chủ của chính bạn, nhưng bạn làm việc cho rất nhiều người khác
  3. Product creator (chủ sản phẩm) – bạn là ông chủ của chính bạn, nhưng khách hàng của bạn xác định những gì bạn làm việc trên đó
  4. Financially free (tự do về tài chính) – bạn làm những việc bạn muốn và khi bạn thích; bạn không cần phải kiếm tiền
Tôi đã bắt đầu sự nghiệp của mình tại cấp độ 1 rồi bật đi bật lại giữa cấp độ 2 và cấp độ 1 một thời gian trước khi tôi có thể nhảy sang cấp độ 3. Hiện tại tôi đang làm việc để vươn lên cấp độ 4 – mặc dù, tôi thấy rằng rất dễ để ở lại cấp độ 3 thậm chí bạn có thể chuyển sang cấp độ 4.
Trên con đường đi qua, tôi đã nhận ra rằng tại mỗi cấp độ mà mình đang có, tôi thường cho rằng mình sẽ cảm thấy hoàn toàn tự do khi vươn tới cấp độ cao hơn. Nhưng cứ mỗi lần đó tôi đều nhận ra rằng mình đã sai. Trong khi mỗi cấp độ mang lại cho tôi nhiều tự do hơn, nhưng mỗi cấp độ đó cũng dường như không phải là những gì mà tôi đã tưởng tượng trước đó.
Tham gia các khóa học lập trình tại TechMaster, bạn sẽ có thể tự tin để trải qua 4 cấp độ nghề nghiệp lập trình và tiến đến mục tiêu là tự do về tài chính.

Cấp độ 1: làm thuê


Giống như tôi đã nói, hầu hết các lập trình viên đều bắt đầu ở cấp độ này. Thành thật mà nói, hầu hết các lập trình viên đều ở lại cấp độ này – và bạn đừng hiểu sai ý tôi, vì điều đó không có gì là sai cả – miễn là bạn hạnh phúc.
Ở cấp độ này, bạn không có nhiều tự do, bởi vì về cơ bản bạn phải làm những việc người ta yêu cầu bạn làm và bạn phải làm việc khi người ta yêu cầu bạn làm, và bạn thường gắn chặt với một vị trí địa lý nhất định. (Trong suốt bài này, bạn sẽ nhìn thấy 3 cấp độ của tự do.) 
Làm việc cho một người khác không có gì là xấu cả. Bạn có thể có một công việc thực sự tốt với mức lương xứng đáng, nhưng trong hầu hết các trường hợp bạn phải đánh đổi sự an toàn với một sự bó buộc trong công việc. Bạn nhận được khoản tiền lương hàng tháng một cách đều đặn, nhưng bạn phải trả giá là phần lớn sự tự do của mình.
Nhưng điều đó không có nghĩa là bạn không có những mức độ tự do khác nhau trong việc làm kiểu truyền thống. Tôi nghĩ rằng có những cấp độ nhỏ của tự do tồn tại ngay cả khi bạn đang làm thuê cho một ai đó. Ví dụ, bạn có khả năng nhận được nhiều tự do hơn về việc khi nào thì bạn bắt đầu công việc và khi nào thì ra về, bằng cách leo lên những chức vụ và trở thành một người làm việc có thâm niên. Bạn cũng có khả năng được trao quyền tự chủ nhiều hơn một chút về công việc bạn làm – mặc dù các phương pháp Agile có thể sẽ mang chúng ta quay trở lại vấn đề đó.
Thậm chí bạn có thể có được tự do về địa điểm làm việc nếu bạn có khả năng tìm một công việc cho phép bạn làm việc từ xa. Trong quá trình tìm kiếm tự do của mình, tôi thực sự phải đánh đổi một mức lương đáng kể để được chấp nhận một công việc mà tôi có thể được tự do làm việc tại nhà. Tôi đã sai lầm khi tưởng rằng làm việc ở nhà sẽ là tự do tối thượng và tôi sẽ trở thành một người làm việc về nội dung cho một ai đó suốt cả phần còn lại sự nghiệp của mình, miễn là tôi có thể làm việc đó ở nhà. (Đừng hiểu sai ý tôi, làm việc ở nhà có những đặc quyền của nó, nhưng nó cũng có những điểm bất lợi. Khi tôi làm việc ở nhà, tôi cảm thấy có nghĩa vụ nhiều hơn trong việc hoàn thành công việc để chứng tỏ rằng tôi không phải là kẻ làm biếng. Tôi cũng cảm thấy rằng công việc của mình chẳng bao giờ kết thúc.)
Giờ đây, giống như tôi đã nói từ trước, nhiều người sẽ ở lại cấp độ 1 và có lẽ sẽ di chuyển loanh quanh, để đạt được nhiều tự do hơn thông qua những thứ như quyền tự chủ và một lịch trình làm việc linh hoạt, nhưng có những giới hạn nhất định của tự do tại cấp độ này. Không ai sẽ trả tiền cho bạn để làm điều bạn thích và nói với bạn rằng bạn có thể biến mất bất cứ lúc nào bạn muốn. Bạn cũng sẽ có những giới hạn về mức thu nhập. Bạn chỉ có thể làm ra nhiều tiền khi làm việc cho một ai đó và số tiền đó thì hầu như đã cố định trước rồi.

Cấp độ 2: freelancer (làm tự do)


Vì vậy, đây chỉ là một cấp độ khác mà tôi đã thực sự tưởng tượng tồn tại đối với một lập trình viên, trong phần lớn sự nghiệp của mình. Tôi nhớ là mình đã suy nghĩ về sự tuyệt vời khi được làm việc trên các dự án của riêng mình cùng với những khách hàng của mình. Tôi đã tưởng tượng rằng khi là một freelancer thì tôi có thể đấu thầu (bid) các hợp đồng của chính phủ và dành ra một vài năm để thực hiện hợp đồng đó trước khi chuyển sang dự án tiếp theo. Tôi cũng đã tưởng tượng ra một sự luân phiên khi tôi làm việc cho nhiều khách hàng khác nhau, làm việc trên các công việc khác nhau tại các thời điểm khác nhau – tất cả từ những thuận lợi trong các dự án của mình.
Khi hầu hết các lập trình viên nói về việc bỏ công việc của họ và trở thành một người tự làm chủ, tôi nghĩ đây chính là điều mà họ tưởng tượng. Họ nghĩ, giống như tôi đã nghĩ trước đây, rằng đây là cấp độ cuối cùng của tự do.
Tôi đã không mất quá nhiều thời gian khi làm freelancer để nhận ra rằng cấp độ này cũng không có nhiều tự do hơn, tức là làm việc với tư cách là một freelancer thì cũng không tự do hơn là làm thuê cho một người nào đó. Trước tiên, nếu bạn chỉ có một khách hàng lớn, giống như hầu hết tất cả những freelancer mới vào nghề, thì về cơ bản bạn ở vào một tình huống tương tự như là khi bạn đang đi làm thuê – sự khác biệt lớn nhất đó là bây giờ bạn không thể được trả tiền cho những giờ mà bạn làm biếng. Bạn sẽ có thể có nhiều tự do về giờ giấc làm việc của bạn, nhưng bạn sẽ bị ràng buộc vào dự án mà khách hàng đã thuê bạn làm và bạn có thể thậm chí phải đến tận văn phòng của họ để làm việc.
Điều này không có nghĩa là bạn không có nhiều tự do hơn, mặc dù nó chỉ là một hình thức khác. Nếu bạn có nhiều khách hàng, bạn có quyền kiểm soát nhiều hơn đối với cuộc sống của mình và những công việc nào mà bạn làm. Bạn có thể thiết lập tỉ lệ cho riêng mình, bạn có thể thiết lập giờ giấc của riêng bạn và có thể có khả năng từ chối công việc mà bạn không muốn làm – mặc dù, trong thực tế, bạn sẽ không bỏ dự án nào cả – đặc biệt là nếu bạn mới chỉ bắt đầu gia nhập cấp độ freelancer.
Đừng hiểu sai ý tôi, cũng rất tốt khi bạn có công ty của riêng mình và có khả năng gửi hóa đơn cho các khách hàng của bạn, thay vì vị bắt buộc làm việc cho một ông chủ mà có toàn quyền kiểm soát toàn bộ cuộc sống của bạn, nhưng freelancing là bao gồm rất nhiều công việc và các công việc hàng ngày có thể thực sự khó cảm thấy có nhiều tự do hơn là bạn đang làm việc cho một người nào đó.
Nếu được lựa chọn giữa việc làm freelancer hoặc làm việc cho một người nào đó, thì tôi chỉ muốn làm công việc có tiền lương được trả đều đặn hơn. Nếu là 5 năm về trước thì tôi đã không nói như vậy, nhưng giờ đây tôi biết rằng freelancing là công việc rất khó và căng thẳng. Tôi thực sự sẽ không đi theo con đường này trừ khi bạn biết đây là điều bạn muốn làm hoặc bạn đang sử dụng nó như là một bước đệm để tiến đến một nơi nào khác.
Từ góc độ thu nhập, một freelancer có thể kiếm nhiều tiền hơn hầu hết các nhân viên làm thuê. Hiện tại tôi đang làm freelancer và tôi không chấp nhận bất kỳ công việc nào có giá ít hơn $300 đô-la/giờ. Tôi đã không bắt đầu với mức tỉ lệ đó – khi tôi bắt đầu làm freelancer tôi tính phí $100 đô-la/giờ đã là một tỷ lệ đáng kinh ngạc – nhưng, cuối cùng tôi đã làm việc theo cách của mình để nâng lên được mức hiện nay. Một điều đáng suy nghĩ đó là mức thu nhập của bạn không có giới hạn. Bạn càng tính phí cao và số giờ bạn làm việc càng nhiều thì bạn càng kiếm được nhiều tiền. Bạn chỉ bị giới hạn bởi các giới hạn của cả hai yếu tố này kết hợp lại.

Cấp độ 3: tạo ra sản phẩm của riêng mình

Cấp độ này là nơi mà mọi thứ trở nên thú vị. Khi tôi chủ yếu làm công việc freelancing, tôi đã nhận ra rằng sai lầm chính của mình đó là không làm việc cho một người nào đó, mà bằng cách đánh đổi những đồng đô-la cho giờ làm việc của mình. Tôi nhận ra rằng là một freelancer thì cuộc đời mình không đẹp đẽ như là tôi đã tưởng tượng trước đây. Nó không thực sự tự do, bởi vì nếu tôi không làm việc thì tôi sẽ không được trả lương.
Tôi thực sự đã chấm dứt công việc freelancer và quay trở lại làm nhân viên toàn thời gian để suy nghĩ lại chiến lược của mình. Tôi càng vắt óc suy nghĩ, thì tôi càng nhận ra rằng để thực sự đạt được sự tự do mà tôi muốn, tôi sẽ cần phải tạo ra một dạng sản phẩm mà tôi có thể bán hoặc một loại dịch vụ mà sẽ tạo ra thu nhập cho tôi trong tất cả thời gian thậm chí khi tôi không làm việc.
Có rất nhiều cách để đạt đến cấp độ này, nhưng có lẽ cách phổ biến nhất đó là xây dựng một số loại phần mềm hoặc dịch vụ phần mềm (SASS) để sinh ra thu nhập cho bạn. Sau đó bạn có thể kiếm tiền từ việc bán sản phẩm và bạn làm việc trên sản phẩm đó khi nào và theo cách bạn cảm thấy phù hợp.
Bạn cũng có thể đạt đến cấp độ này bằng cách bán các sản phẩm số theo hình thức nào đó. Tôi đã có khả năng vươn tới cấp độ này thông qua một sự kết hợp giữa blog này, các ứng dụng di động mà tôi đã xây dựng, và tạo ra các khóa học có thu phí trên Pluralsight và gói chương trìnhLàm thế nào để tiếp thị bản thân với tư cách là một lập trình viên.
Bạn có thể khá tự do ở cấp độ này. Bạn không còn có bất kỳ một ông chủ thực sự nào nữa. Không còn một ông chủ đầu hói nào luôn ra lệnh cho bạn phải làm những gì và bạn cũng không có những khách hàng nói với bạn phải làm việc trên các dự án nào nữa. Bạn hầu như có thể làm việc ở bất cứ nơi nào bạn muốn và bất cứ khi nào bạn thích. Thậm chí bạn có thể biến mất trong khoảng vài tháng trời – miễn là bạn tìm ra cách nào đó để có thể xử lý hỗ trợ cho sản phẩm của mình.
Lúc này, điều đó không có nghĩa là mọi thứ trở nên ngon lành cành đào tại cấp độ này. Có một điều là, tôi đã tưởng rằng nếu tôi tạo ra các sản phẩm, thì tôi sẽ có thể làm việc một cách chính xác những gì mà tôi muốn làm. Điều này còn lâu mới thành sự thật. Tôi có một mức độ lớn trong việc kiểm soát những gì tôi lựa chọn để làm và tạo ra, nhưng vì tôi bị ràng buộc bởi nhu cầu kiếm tiền, nên tôi phải dành ra một phần lớn sự kiểm soát đó tới thị trường. Tôi phải xây dựng những thứ mà khách hàng của tôi sẽ trả tiền để mua.
Điều này dường như có vẻ không phải là vấn đề lớn, nhưng thực ra đúng là như vậy. Tôi luôn luôn có ước mơ được viết code và làm việc trên những dự án của riêng mình. Tôi đã mơ ước rằng khi trở thành một người tạo ra sản phẩm và tiền được tạo ra từ các sản phẩm của tôi sẽ mang lại cho tôi sự tự do đó. Ở một mức độ nào đó, nhưng tôi cũng phải chú ý cẩn thận tới mong muốn của các độc giả và khách hàng của mình và tôi phải đặt trọng tâm chính của mình vào việc xây dựng những thứ đó.
Cấp độ này cũng khá là áp lực, bởi vì mọi thứ phụ thuộc vào bạn. Bạn phải thành công mới có thể thu được tiền. Khi bạn là một người làm thuê, tất cả bạn phải làm đó là làm hết công việc được giao. Khi bạn là một freelancer, bạn chỉ phải tìm kiếm khách hàng và làm công việc đã thỏa thuận – bạn nhận được thù lao cho công việc bạn làm chứ không phải là các kết quả. Khi bạn là một người tạo ra sản phẩm, bạn có thể dành ra 3 tháng trời để làm việc trên một cái gì đó mà không nhận được đồng cắc nào cả. Không ai quan tâm về bạn đã làm bao nhiêu khối lượng công việc, chỉ kết quả cuối cùng mới quan trọng.
Về thu nhập tiềm năng thì không có giới hạn ở đây. Bạn có thể phải vật lộn chỉ để kiếm đủ sống, nhưng nếu bạn thành công, thì không có giới hạn nào về số tiền mà bạn kiếm được, vì bạn không bị giới hạn bởi thời gian. Tại cấp độ này bạn không còn phải đổi chác giữa thời gian và những đồng đô-la nữa.
Đối với tôi, việc cố gắng để leo lên cấp độ 2 không quan trọng cho lắm, tốt hơn là chỉ làm việc cho một ai đó cho tới khi bạn có thể vươn tới cấp độ 3, bởi vì ở cấp độ tự do này thì nó mới thực sự tạo ra những khác biệt lớn trong cuộc sống của bạn. Bạn có thể vẫn không có khả năng làm việc trên thứ mà bạn muốn, nhưng ít ra thì tại điểm này – một khi bạn đã thành công – tất cả những mặt khác của cuộc đời bạn bắt đầu trở nên tự do nhiều hơn.

Cấp độ 4: tự do tài chính


Tôi không thể tìm ra một cái tên tốt hơn cho cấp độ này, nhưng đây là cấp độ mà bạn không còn phải lo lắng về việc kiếm tiền nữa. Có một điều mà tôi nhận thấy khi tôi cuối cùng cũng đã đạt đến cấp độ 3 đó là phần lớn những yếu tố khiến tôi không thể làm chính xác cái mà tôi muốn đó là sự cần thiết phải tạo ra thu nhập.
Có một sự thật rằng bạn có thể làm việc trên thứ mà bạn muốn, nhưng việc cần phải tạo ra thu nhập có xu hướng ảnh hưởng đến cái bạn làm và cách bạn làm công việc đó như thế nào. Ví dụ, tôi đã thực sự muốn tạo ra một trò video game. Tôi đã luôn luôn mơ ước làm một dự án phát triển game lớn. Nhưng tôi biết rằng nó có thể không có khả năng tạo ra lợi nhuận. Miễn là tôi đang lo lắng về thu nhập, thì sự tự do của tôi sẽ bị giới hạn ở một mức độ nào đó. Nếu tôi không có một khoản thu nhập thụ động đủ để cầm cự, thì tôi không thể bỏ làm các dự án tạo cho tôi thu nhập để bắt đầu viết code cho trò video game đó được – vâng, tôi có thể, nhưng đó không phải là cách thông mình và tôi cảm thấy khá tội lỗi về điều đó.
Vì vậy, theo quan điểm của tôi, hình thức cao nhất của tự do mà một nhà phát triển phần mềm có thể đạt được đó là khi họ được tự do về tài chính. Ý của tôi về tự do tài chính là như thế nào? Về cơ bản nghĩa là bạn không phải lo lắng về tiền bạc nữa. Có lẽ bạn đã bán startup của mình với giá vài triệu đô-la hoặc bạn có một nguồn thu nhập thụ động từ bất động sản hoặc những khoản đầu tư khác mà có thể cung cấp nhiều hơn cho nhu cầu sinh hoạt hàng ngày của bạn. (Để có thông tin tốt về làm thế nào để đạt được điều đó thì tôi đề xuất bạn nên đọc cuốn sách “Cha giàu, Cha nghèo”.)  
Ở cấp độ tự do này, về cơ bản bạn có thể làm những gì bạn muốn. Bạn có thể tạo ra các phần mềm gây hứng thú cho bạn, bởi vì bạn thích như vậy – bạn không phải lo lắng về khả năng sinh lời. Nếu muốn tạo ra một ứng dụng Android thì bạn bắt tay vào làm ngay. Muốn học một ngôn ngữ lập trình mới chỉ vì bạn nghĩ nó sẽ mang lại niềm vui, bạn lao vào học ngay.
Đây luôn luôn là cấp độ tự do mà tôi đã thầm ao ước. Tôi chẳng bao giờ muốn ngồi yên mà không làm bất cứ điều gì, tôi luôn luôn muốn làm việc mà tôi cảm thấy thú vị và chỉ những thứ mà tôi quan tâm. Mọi cấp độ khác mà tôi đã nghĩ sẽ mang lại sự tự do này, thì tôi đều nhận ra là chúng không thể đáp ứng được. Tôi đã nhận ra rằng luôn luôn có một cái gì đó sẽ kiểm soát cái mà tôi làm việc trên đó, có thể là ông chủ của tôi, các đối tác hoặc các khách hàng của tôi.
Điều này không có nghĩa rằng bạn không thể kiếm được tiền từ các dự án của mình. Trong thực tế, có một nghịch lý mà tôi luôn tin tưởng, nếu bạn có thể tiến tới giai đoạn này, bạn có tiềm năng kiếm được rất nhiều tiền. Một khi bạn đã bắt đầu làm việc trên thứ mà bạn muốn, bạn sẽ làm công việc đó với một sự đam mê và nó sẽ mang lại một giá trị rất cao. Đây là lúc lập trình giống như một nghệ thuật vậy. Dĩ nhiên tôi không có bất kỳ bằng chứng nào về điều này, nhưng tôi ngờ rằng khi tôi không quan tâm về việc kiếm tiền, bởi vì bạn đang làm công việc mà bạn yêu thích, thì đó là khi bạn làm được nhiều nhất.
Đừng hiểu sai ý tôi, bạn có thể có khả năng tập trung làm những gì bạn yêu thích, thậm chí nếu bạn không tạo ra bất cứ chút tiền bạc nào. Tôi biết rất nhiều nghệ sĩ sống đói kém mà vẫn theo đuổi nghệ thuật – hoặc ít ra là họ cho phép bản thân làm như vậy – nhưng, tôi không thể làm điều đó. Tôi đã cố thử, nhưng tôi luôn luôn cảm thấy tội lỗi và bị áp lực về một thực tế rằng tôi đang làm một công việc mà không sinh ra lợi nhuận. Theo quan điểm của tôi, bạn thực sự có tự do tài chính thì mới có thể trải nghiệm được tự do sáng tạo đích thực.
Tôi thực sự đang làm việc để tiến tới cấp độ này. Về mặt kỹ thuật, tôi có thể nói rằng mình đã ở cấp độ này, nhưng tôi vẫn bị ảnh hưởng lớn bởi lợi nhuận. Mặc dù, giờ đây tôi không lựa chọn các dự án của mình chỉ dựa trên các tiêu chí sẽ tạo ra nhiều tiền nhất. Tôi đang từ chối khá nhiều dự án và cơ hội mà không cảm thấy thích hợp với cái tôi muốn làm, và tôi đang cố gắng chuyển dịch để làm việc chỉ trên những thứ mà tôi quan tâm khi mà mức thu nhập thụ động của mình tăng lên.
Bạn có thể thu được gì từ tất cả những điều này?
Vâng, điều lớn nhất đó là tự do có nhiều cấp độ khác nhau và có lẽ dù gì thì bạn sẽ không muốn trở thành một freelancer. Tôi nghĩ có nhiều lập trình viên cho rằng làm việc cho chính họ bằng cách freelancing sẽ mang lại cho họ sự tự do tối thượng. Họ không nhận ra rằng họ sẽ chỉ có khả năng làm việc chính xác về những gì họ muốn làm chỉ khi họ thực sự tự do về tài chính.
Vì vậy, lời khuyên của tôi dành cho bạn đó là nếu bạn muốn kiểm soát hoàn toàn sự sáng tạo trong cuộc sống của mình và cái mà bạn làm việc, thì bạn phải trở nên tự do về tài chính. Nếu bạn muốn một cấp độ tự trị cao hơn trong hầu hết các lĩnh vực của cuộc sống thì bạn nên cố gắng phát triển và bán các sản phẩm. Nếu bạn hạnh phúc khi trở thành ông chủ của chính mình, thậm chí nếu bạn phải làm theo đơn đặt hàng của khách, thì freelancing có thể là con đường dành cho bạn. Và, nếu tất cả những điều trên dường như là một cái giá quá đắt mà bạn phải trả, bạn có thể chỉ muốn ở lại nơi bạn đang ở và tiếp tục nhận được những khoản lương đều đặn hàng tháng – không có gì là sai trái với điều đó cả.
Nguồn: techtalk
Read more ...

Nên học một hay nhiều ngôn ngữ

Gần đây mình nhận được một số câu hỏi về chuyện “Nên tập trung vào 1 ngôn ngữ hay là học nhiều ngôn ngữ”. Đây là một vấn đề gây khá nhiều tranh cãi trong cộng đồng lập trình viên.
Thật ra, không có câu trả lời đúng cho câu hỏi này! Trong nội dung bài viết, mình sẽ phân tích những điểm lợi/hại của mỗi lựa chọn. Tuy nhiên, lựa chọn cuối cùng vẫn là do bản thân các bạn nhé.
Thật ra, ngay từ đầu các bạn đã đặt sai câu hỏi! Thay vì hỏi “nên học một hay nhiều ngôn ngữ”, các bạn nên hỏi là “nên phát triển bản thân theo chiều rộng (generalist) hay chiều sâu (specialist)?”.

Thế nào là biết rộng? Biết rộng thì được gì?
Nhiều bạn lầm tưởng rằng chỉ biết sử dụng nhiều ngôn ngữ/công nghệ, mình sẽ thành người biết rộng. Điều này chỉ đúng một phần thôi.
Học rộng có nghĩa là: ngoài việc biết sử dụng nhiều ngôn ngữ/công nghệ, bạn còn phải biết một số thứ ngoài lề khác (lấy requirement, thiết kế giao diện, cài đặt server). Nói cho oách là siêu nhân ôm đủ việc, nói mỉa mai tức thì là ku-li gì cũng làm.
Các cụ có câu “một nghề cho chín còn hơn chín nghề”, nhưng câu này có vẻ không đúng lắm với ngành IT. Khi xây dựng một hệ thống phần mềm, nếu có kiến thức rộng, ta sẽ dễ nắm được cách toàn bộ hệ thống vận hành, giú dễ bảo trì, sửa chữa khi có lỗi xảy ra hơn. Ngoài ra, nếu biết rộng, bạn sẽ có nhiều cơ hội việc làm hơn.
Hiện tại, biết rộng đang dần trở thành xu hướng. Bên cạnh Front-end developer, Back-end developer, nay ta có thêm Full-stack developer. Trước kia Dev (phát triển phần mềm) và Operation (vận hành, bảo trì sản phẩm) được tách riêng ra. Gần đây thì lại gộp luôn là DevOps, developer ngoàiviệc code còn phải biết thêm về setup hệ thống.

Thế nào là biết sâu? Biết sâu thì được gì?
Nhiều bạn biết sâu tức là tập trung thời gian vào 1 ngôn ngữ, không học những thứ khác. Thật ra, biết sâu yêu cầu cao hơn nhiều! Biết sâu tức là biết tường tận tường tận mọi ngóc ngách của ngôn ngữ/công nghệ/lĩnh vực nào đó.
Lấy ví dụ JavaScript, biết rộng tức là bạn có thể sử dụng nhiều framework như AngularJS, VueJS, React, … Biết sâu thì đòi hỏi cao hơn. Ngoài việc học/sử dụng framework, bạn còn phải biết về các khái niệm execution stacklexical scope, closure,… trong Javascript, cách tổ chức code cho 1 project JS lớn, cách optimize khi code chạy chậm.
Nếu thật sự chuyên sâu một ngôn ngữ/công nghệ nào thì bạn sẽ được nhiều công ty săn đón, với lương khá cao. Cứ hỏi mấy bác senior C++ 5-10 năm trở lên xem lương bao nhiêu là biết.
Tại sao lại vậy? Hãy tưởng tượng bạn đang thèm ăn bò bít tết, bạn sẽ chọn nhà hàng A “Phục vụ đầy đủ các món Á Âu”, hay nhà hàng B “Chỉ chuyên bò bít tết”. Dĩ nhiên là nhà hàng B phải không. Nếu cần tuyển chuyên gia cho 1 mảng nào đó, các công ty sẽ ưu tiên người biết sâu hơn.

Tất nhiên bạn cũng sẽ có gặp một số rủi ro. Do chỉ chuyên sâu một ít ngôn ngữ nên có thể bạn sẽ khó tìm được công việc như ý hơn. Ngoài ra, nếu ngôn ngữ/công nghệ của bạn… tử ẹo thì bạn phải bỏ thời gian ra học và chuyên sâu thứ khác.
Ví dụ, các bác chuyên gia Flash và Silverlight (2 công nghệ đã tử ẹo) sẽ rất khó tìm việc, nhưng nếu tìm được thì lương khá cao vì bây giờ ít người rành 2 cái đấy.
Vậy người coder phải làm sao?
Như mình đã nói, bài viết chỉ phân tích và định hướng chứ không thể trả lời cho bạn được. Lời khuyên hữu ích nhất mà mình có thể đưa ra là:
Hãy phát triển kiến thức theo hình chữ T. Học rộng trước, sau đó mới chuyên sâu vào một lĩnh vực.
Kiến thức dạng chữ T tức là bạn sẽ tập trung phát triển kiến thức nền tảng trên nhiều lĩnh vực, sau đó tập trung chuyên sâu vào một ít lĩnh vực mà mình thấy hứng thú.
Ảnh minh họa về phát triển kĩ năng
Với các bạn sinh viên, ở giai đoạn đầu, bạn sẽ không biết mình giỏi cái gì, yếu cái gì, cần tập trung vào thứ gì. Vậy thì cứ học rộng trước đi đã. Khi đã có chút kinh nghiệm với nhiều ngôn ngữ/công nghệ, bạn sẽ dễ lựa chọn hướng phát triển cho bản thân hơn.
Một điều cần lưu ý nữa là nếu bạn đam mê startup thì nên ưu tiên “biết rộng”. Ở giai đoạn đầu khởi nghiệp, nhân sự ít, lập trình viên phải có khả năng đa nhiệm, làm đủ việc. Phát triển sản phẩm startup đòi hỏi bạn phải thông tuệ nhiều thứ để vận hành hệ thống trơn trụ. Ngược lại, nếu đầu quân cho các công ty lớn, họ sẽ ưu tiên người có kiến thức tập trung, hiểu sâu vấn đề.

Kết luận

Điều quan trọng nhất là bạn phải liên tục học tập, biết rộng cũng được, biết sâu cũng được. Nhiều bạn phân vân không biết nên học rộng hay sâu do sợ phí thời gian, kết quả là họ … đứng im một chỗ, không tiến bộ gì cả.
Nếu bạn vẫn chưa rõ mình muốn gì, cứ học đi, đừng ngại tốn thời gian. Cứ tiến về phía trước, rồi sẽ có một con đường mở ra cho bạn.
Bonus – Về việc chọn ngôn ngữ
Hãy xem ngôn ngữ như con gái. Một developer giỏi phải biết nhiều ngôn ngữ. Một thanh niên tốt phải có nhiều bạn gái!
Bạn sẽ cần một em gái đảm đang làm vợ, một em dễ thương làm bồ nhí, một số em dễ chăn để chịch khi cần.
Ngôn ngữ cũng thế:
  • Chọn một em mạnh mẽ, nhiều người dùng  (C#, Java) làm ngôn ngữ chính, tập trung đối tốt với em này như vợ.
  • Chọn một em khác nổi tiếng để làm bồ nhí (JavaScript), dành nhiều thời gian tán tỉnh chiều chuộng.
  • Chọn một số em nhanh gọn dễ dãi làm rau (PHP, JavaScript), dùng để code mấy dự án nho nhỏ, lặt vặt.
Anh giai trong hình biết 4 ngôn ngữ, em tóc vàng ngu ngu chắc là PHP
À, mấy cái ví dụ về rau, vợ và bồ nhí là theo góc nhìn của mình thôi nhé. Tùy theo sở thích mà bạn có thể chọn PHP, JavaScript làm vợ và C++ làm rau. Các bạn nên chung thủy, dành nhiều thời gian cho vợ nhà, nhưng nhớ ngó nghiêng các em hàng xóm và tình hình thế giới ra sao nhé.
Một số góc nhìn của các developer khác:
Tác giả Nguyễn Huy Hoàng
Nguồn: toidicodedao
Read more ...
Designed By hoclaptrinhcanban