Tìm kiếm Blog nà


Breaking News
Showing posts with label Kinh nghiệm lập trình. Show all posts
Showing posts with label Kinh nghiệm lập trình. Show all posts

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 ...

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 stack, lexical 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 ...

Wednesday, September 21, 2016

Xu Hướng Công Nghệ Lập Trình Năm 2016

Xu hướng công nghệ lập trình năm 2016
(Bài viết lấy bối cảnh thị trường phần mềm TP Đà Nẵng)

Nhằm mục đích cung cấp cái nhìn cụ thể về nhu cầu nguồn nhân lực ngành phần mềm, từ đó giúp sinh viên chọn đúng công nghệ để có được những định hướng học tập và nghiên cứu. Trong bài viết này chúng tôi muốn gửi tới bạn đọc những thông tin hữu ích về thực trạng và xu thế phát triển của công nghệ lập trình nói riêng và công nghệ phần mềm nói chung.





Bài viết “Xu hướng công nghệ lập trình năm 2016” sẽ phân tích dữ liệu đó và đưa ra nhận định về xu hướng phát triển của các công nghệ lập trình trong năm 2016 để giúp các bạn trẻ có lựa chọn tốt nhất cho việc xây dựng và phát triển nghề nghiệp của mình.


Thế giới

Trước tiên, chúng ta tham khảo xu thế phát triển của thế giới để có cái nhìn rộng hơn. Theo TIOBE Programing community Index, một trang chuyên thống kê nhu cầu tuyển dụng lập trình viên dựa trên kết quả tìm kiếm của 25 công cụ tìm kiểm nổi tiếng thế giới như Google, Bing, Yahoo… để thống kê, so sánh và đưa ra xu hướng phát triển cảu các ngôn ngữ lập trình. Kết quả công bố tháng 1 năm 2016 như sau:

Xu hướng công nghệ lập trình 2016



TIOBE Programing community Index – Tháng 1 2016

Theo công bố của TIOBE thì Java đang là ngôn ngữ lập trình đứng số 1 và vẫn tăng trưởng tốt với gần 6%. Thống lĩnh trong các ngôn ngữ lập trình ứng dụng enterprise.

Về mảng lập trình Web thì PHP có phần chửng lại nhưng vẫn ở mức rất cao, các ngôn ngữ mới như Python, Ruby có xu hướng tăng nhưng chưa đe dọa vị trí của PHP.

Riêng về di động thì Objective –C đã giảm và đang xếp thứ 18, nó đang được Swift dần thay thế. Tuy nhiên, theo TIOBE tốc độ thay thế này chậm hơn sơ với dự kiến vì theo nhận định của TIOBE từ tháng 6/2015 thì đến cuối năm 2015 Objective-C sẽ rời khỏi Top 20. Điều này được lý giải là do các công ty vẫn còn khó khăn khi chuyển đổi hệ thống đã tồn tại sang Swift. Nhưng điều này sẽ diễn ra mạnh vào năm 2016.

Lý giải việc Java vẫn luôn đứng ở top đầu và liên tục tăng trưởng trong 10 năm trở lại đây. TIOBE cho rằng Java đã cải tiến mạnh và thích nghi tốt với yêu cầu. Hiện nay Java chiếm phần lớn trong các ứng dụng Enterprise, ngoài ra nó cũng đáp ứng tốt nhu cầu WebService và có vai trò lớn trong việc phát triển ứng dụng trên di động (Android). Do vậy năm 2016 Java vẫn chiếm thế thượng phong.

Tại Việt Nam

iViettech (Đà Nẵng) đã thống kê nhu cầu tuyển dụng của các công ty phần mềm tại thị trường Việt Nam từ năm 2014 và kết quả được thể hiện qua bảng dưới đây.



Thống kê của iViettech về nhu cầu nguồn nhân lực phần mềm Đà Nẵng

Nhận định xu hướng của các ngôn ngữ phổ biến

Dựa vào các kết quả trên và những nghiên cứu độc lập, chúng tôi đưa ra nhận định xu hướng cho các ngôn ngữ phổ biến như sau:

Java

Trong nhiều năm nay Java luôn dẫn đầu với nhu cầu vượt trội tuyệt đối so với các ngôn ngữ khác bởi việc liên tục được cải tiến và có độ thích nghi cao cũng như phổ ứng dụng rộng. Java đáp ứng được từ ứng dụng Enterprise, Mobile, Web.. nên gần như chắc chắn Java sẽ tiếp tục tăng trưởng trong năm 2016. Sở hữu kỹ năng về Java sẽ là một lợi thế cho bạn trong tìm việc cũng như khẳng định nghề nghiệp lâu dài.

PHP

PHP cũng là ngôn ngữ tăng trưởng ấn tượng trong năm 2015 nhờ vào một loạt các công ty mới mở tại Đà Nẵng chuyên làm về 02 lĩnh vực là Web và Mobile. Ngoài ra, với sự ra đời của PHP 7 hứa hẹn sẽ tăng mạnh sức cạnh tranh cho PHP. Mặc dù có sự cạnh tranh từ Python và Ruby nhưng chưa lớn nên 2016 sẽ là một năm tăng trưởng tốt của PHP. Do vậy nếu bạn quan tâm đến lập trình Web thì PHP là lựa chọn an toàn cho bạn.

Swift (iOS)

Mặc dù năm 2015, Swift chưa có vai trò tại Đà Nẵng nói riêng và Việt Nam nói chung với số lượng tuyển dụng không đáng kể. Lý do là hầu hết các công ty lấy Lập trình viên Objective C chuyển sang và việc nâng cấp liên tục cũng làm cho Swift mất tính ổn định. Tuy nhiên, với Swift 2.0 nền tảng này đã ổn định và nhu cầu thế giới tăng mạnh về Swift nên năm 2016 hứa hẹn nhu cầu về Lập trình Swift trên iOS sẽ tăng mạnh. Do vậy, đây là lựa chọn thú vị cho các bạn yêu thích lập trình di động bên cạnh nền tảng phổ biến Android.

JavaScripts


Năm 2015 là năm tăng trưởng khá tốt của JavaScript với sự mạnh lên đáng kể các Front End framworks như Angular JS, BootStrap… Trong đó, đặc biệt sự phát triển mạnh của Node JS đã đưa nhu cầu lập trình viên JavaScript tăng mạnh. Năm 2016 dự kiến sẽ là năm tiếp tục tăng trưởng của JavaScript.

C# (.Net)

2015 chứng kiến sự tăng trưởng vượt bật của .net sau năm 2014 tương đối trầm lắng. Với nền tảng ổn định, dễ tiếp cận và cũng có phổ ứng dụng rộng .Net là một lựa chọn không tồi cho các Lập trình viên. Do vậy nếu có kỹ năng về .Net cũng là một lợi thế đáng kể cho bạn trong quá trình tìm việc năm 2016

C++

C++ luôn nằm trong nhóm khó tìm Lập trình viên giỏi của các công ty, nên nếu sở hữu kỹ năng tốt về C++ bạn luôn có cơ hội tìm được việc làm tốt. Nhiều công ty ở Đà Nẵng luôn săn đón lập trình C++ như Sioux, Gameloft, Global Cyber Soft …

Tester

Sau năm 2014 tăng trưởng nóng, Tester đã chửng lại trong năm 2015. Lý do là các công ty tuyển dụng Tester hàng đầu có dấu hiệu chững lại để sắp xếp và cơ cấu lại khách hàng. Hy vọng 2016, tester sẽ tăng trưởng trở lại.

Kết luận


Nhu cầu nhân lực ngành phần mềm ở Đà Nẵng nói riêng và Việt Nam nói chung đang tăng trưởng nóng, đây là cơ hội cho các bạn trẻ yêu thích công nghệ thông tin tìm việc trong ngành phần mềm. Ngoài những kỹ năng cơ bản của ngành các bạn cần trang bị cho mình kiến thức, kỹ năng về công nghệ để có thể tiếp cận việc làm ở các công ty.

Các nhận định trên chỉ mang tính tham khảo, việc thành công phụ thuộc vào nhiều yếu tố như sự chuẩn bị, cơ hội và khả năng nắm bắt cơ hội của bạn. Tuy nhiên, lựa chọn đúng ngôn ngữ, công nghệ để học, nghiên cứu sẽ giúp cho con đường thành công của bạn sáng hơn và thuận lợi hơn.

Chúc các bạn thành công !

Nguồn dnict
Read more ...

Monday, August 29, 2016

Chọn lập trình di động hay lập trình web?

Tôi thường xuyên phải trả lời "theo anh, em nên chọn học lập trình di động hay lập trình web?". Cách trực quan là tôi đưa học viên đi tham quan phòng lab thực tập của đội di động và web, để họ tự trải nghiệm, hỏi đáp với học viên đang thực tập chuyên ngành web - di động. Học viên mới có thể đóng một khoản phí 700,000 VND để thực tập thử 1 tuần, tự mình rút kết luận. Rẻ hơn cực nhiều nếu bạn phải mất 4-5 năm học đại học để nhận ra một điều cay đắng, bạn không thích và không thể làm nghề mà bạn đã học trong trường đại học.
Tuy nhiên vẫn còn có nhiều sinh viên chỉ có thể học trực tuyến, thực sự bối rối giữa web và di động, tôi xin tóm tắt tư vấn của tôi như sau:

Tập trung xuất sắc cho 1 kỹ năng

  • Trong khoảng thời gian 2 năm, chỉ nên tập trung học, rèn luyện xuất sắc 1 công nghệ: hoặc lập trình web, hoặc lập trình di động. Đối với lập trình web tập trung dùng thành thạo 1 framework, lập trình ra ứng dụng cụ thể. Đối với di động chỉ cần xuất sắc 1 nền tảng: iOS hoặc Android là đủ sống.
Hãy chọn 1! và làm xuất sắc

Nếu bạn lập trình web

  • Lập trình web rất rộng. Nó bao gồm: lập trình front end (HTML, CSS, JavaScript), thiết kế UI/UX, lập trình back end, triển khai hệ thống web. HTML, CSS, JavaScript là ngôn ngữ dễ học lúc đầu, gõ sai cú pháp thì trình duyệt cố gắng giảm thiểu độ nghiêm trọng của lỗi. Trên Internet có rất nhiều những thư viện, mã nguồn mở giúp lập trình front end rất dễ dàng. Lập trình viên khôn ngoan giảm được 60% sức lực bằng cách dùng lại thư viện. Nhiều người lẫn lộn việc dễ dàng tiếp cận HTML, CSS, JavaScript, dùng lại mã với năng lực thực sự về 3 ngôn ngữ này của bản thân. Tạo ra thư viện front end JavaScript tốt tương thích nhiều trình duyệt mất nhiều thời gian và kinh nghiệm. Lập trình viên front end chỉ máy móc dùng lại theme, thư viện có sẵn, 5-10 năm lập trình cũng chỉ tương đương lập trình viên 1 năm kinh nghiệm.
  • Công nghệ lập trình giao diện ngày một cải tiến: mô hình đồng bộ dữ liệu 2 chiều, kiến trúc MVVM, công nghệ web socket giúp giao diện tự động cập nhật thay vì yêu cầu rồi trả về trang. Vai trò của lập trình viên giao diện ngày càng lớn nếu anh ta tận dụng công nghệ mới để giúp trang web thân thiện hơn còn không vị trí của anh ta sẽ rất mờ nhạt với bởi công ty có thể mua những giao diện chuyên nghiệp bán sẵn với giá rất rẻ
  • Lập trình viên web cần phải làm việc theo nhóm 2 - 7 người. Trường hợp đặc biệt, dự án nhỏ, dùng CMS sẵn có thể làm việc đơn lẻ.
  • Công việc của chuyên gia thiết kế UI/UX khác so với lập trình viên front end. Cả ứng dụng di động và ứng dụng web đều cần UI/UX. Hiện Techmaster chỉ có một khóa học buổi tối, ngắn để chia sẻ kinh nghiệm thiết kế UI/UX.
  • Lập trình viên web back end cần phải nắm vững 1 ngôn ngữ lập trình và 1 framework. (PHP - Laravel, Phalcon), (Ruby - Rails), (Python-Django, Tornado), (Node.js-Express, Hapi.js, Mean, Sails, Arrowjs.io). Ngoài ra lập trình viên back end còn phải nắm rõ truy xuất dữ liệu xuống các cơ sở dữ liệu: MySQL, Postgresql, MongoDB. Kỹ nghiệm bảo mật, triển khai web site lên Internet cũng là yêu cầu. Nhìn chung công việc của lập trình viên web back end nặng nhọc, đòi hỏi thời gian học - thực hành - tích lũy kinh nghiệm tối thiểu 24 tháng. Ở nhiều công ty gia công phần mềm vì không thể kiếm được lập trình viên back end nhiều kinh nghiệm, họ sẽ chia nhỏ công việc cho vài lập trình viên tập trung làm đi làm lại 1 kỹ năng chuyên môn. Khi này công việc của lập trình viên back end 1 kỹ năng nhỏ khá đơn điệu, khó hình dung ra tổng thể ứng dụng được xây dựng như thế nào. Tuy nhiên đây là cơ hội cho học viên thực tập 6 tháng tại Techmaster xin được việc làm.
  • Mức lương khởi điểm tại Hà nội cho lập trình viên web rất đa dạng. Với một lập trình viên non tay nghề < 6 tháng, chưa từng có việc làm, có một chỗ ngồi, một máy tính và được tham gia dự án và nhận thù lao 500k/tháng không tệ chút nào. Nhưng với lập trình viên web đã làm ứng dụng cụ thể, tích lũy được nhiều kỹ năng, tiếng Anh tốt, nắm vững quy trình làm dự án, thì mức lương 8 triệu/tháng thực ra là thấp. Nhà tuyển dụng thường trả ép đối với những lập trình viên lần đầu đi xin việc.
  • Để nắm vững nhiều kỹ thuật khó trong lập trình web sẽ mất nhiều năm, và không phải ai cũng kiên trì làm được. Việc học lập trình web đòi hỏi phải học nhiều ngôn ngữ hơn. Nhưng tôi vẫn mạnh dạn khuyên các bạn không quá giỏi, không background CNTT học lập trình web bởi đây là một thị trường rất rộng, màu mỡ, thượng vàng hạ cám. Giỏi thì kiếm, còn kém, đứng đúng chỗ vẫn sống tạm được. Với lập trình di động không có chỗ cho lập trình viên trung bình.
Quy trình phát triển một web site

Nếu bạn lập trình di động

  • Trái với nhiều người nghĩ, học lập trình di động dễ hơn lập trình web ở mấy điểm:
    • Chỉ phải học 1 ngôn ngữ lập trình hoặc Swift hoặc Objective-C hoặc Java hoặc C++
    • Nền tảng iOS, Android cung cấp rất đầy đủ API, code mẫu, pattern để lập trình viên học và tạo ra app
    • Công cụ lập trình IDE chính hãng (XCode, Android Studio) vừa tốt vừa miễn phí. Đối với web, PHP Storm, WebStorm là IDE lập trình tốt nhưng phải mua.
    • Các hãng Apple, Google hỗ trợ lập trình đi theo nền tảng của họ rất nhiệt tình. Đối với web, hầu hết các framework là miễn phí và open source, hỗ trợ từ cộng đồng.
  • Ngôn ngữ lập trình di động hầu hết kiểm soát kiểu rất chặt, biên dịch ra file chạy mã nhị phân. Do đó, nếu gõ ẩu, sai logic, ứng dụng không chạy hoặc đổ vỡ.
  • Rất nhiều ứng dụng di động kết nối lưu- truy xuất dữ liệu trên Internet. Thực chất nơi lưu - trả về dữ liệu là những web service back end do đội lập trình web back end xây dựng. Công việc của lập trình viên ứng dụng di động giống với lập trình viên front end ở trên.
  • Nếu không có ý tưởng nổi trội, năng khiếu đồ họa, lập trình viên di động vẫn có kiếm việc ở công ty gia công, phát triển ứng dụng di động cho doanh nghiệp. Ở đó, di động hóa hoạt động nghiệp vụ cần hơn tạo ra một ứng dụng giải trí.
  • Áp lực, rủi ro đối với lập trình viên di động:
    • Trong dự án mobile + back end, mọi người luôn muốn xem sản phẩm di động ngay và luôn, trong khi lập trình viên di động lại phụ thuộc dữ liệu, vận hành của back end. Chỉ trích trước tiên luôn đổ lên ứng dụng di động: lượt tải thấp, giao diện khó dùng, mất kết nối
    • Quy trình duyệt app chặt chẽ của Apple và Google buộc bạn phải tuân thủ. Không phải cái gì bạn muốn là được.
    • Tỷ lệ cạnh tranh trên các chợ app rất cao. Ứng dụng di dộng clone khá dễ dàng.
    • Đối với ứng dụng giải trí, giữ chân người dùng trong một rừng app mới xuất hiện hàng ngày hoàn toàn không đơn giản
    • Lập trình viên web có thể lập trình ứng dụng di động bằng ngôn ngữ JavaScript khi dùng React Native, iOnic -> cạnh tranh trực tiếp với lập trình di động native app.
  • Trong khoảng 24 tháng đầu, lương của một lập trình viên di động có thể sẽ cao hơn đồng nghiệp web vì: số lượng lập trình viên di động chuyên nghiệp hiện còn thiếu. Tuy nhiên sau đó thì chưa chắc nếu các lập trình viên web tiếp tục nâng cấp trình độ và trở thành full stack web developer. Full stack web developer yêu cầu nhiều kỹ năng kết hợp, hiểu biết tổng quan hệ thống, rõ ràng, đãi ngộ phải tốt hơn.
Quy trình phát triển ứng dụng di động

Chuyển từ di động sang web và ngược lại

Trong 18-24 tháng đầu tiên học lập trình web hay di động, tôi chân thành khuyên các bạn hãy tập trung làm tốt một công nghệ, một framework, tham gia dự án không cần nhiều nhưng đủ một vòng đời sản phẩm từ thiết kế đến lúc phát hành chạy thật. Tuyệt đối không nên học để biết mỗi thứ một tý. Chỉ có những chuyên gia giỏi mới kiếm được tiền tốt, những anh chàng học việc thường sẽ không có lương hoặc lương thấp. Câu nói "Nhất nghệ tinh" chưa bao giờ sai cả. Kinh nghiệm 10,000 giờ bay liên tục trong khoảng 6 năm bạn mới là chuyên gia trong lĩnh vực hẹp bạn đang làm. Nếu buộc phải chuyển từ di động sang web và ngược lại, thì đây là một số kinh nghiệm:
  • Bạn lập trình iOS Objective-C, hãy chuyển sang Swift. Swift có nhiều lựa chọn mở hơn để lập trình web: 
  • Bạn lập trình iOS Swift, hãy chú ý đến Swift 3, XCode 8 sẽ được Apple giới thiệu tháng 9/2016. Hiện đã có một số web framework viết bằng Swift như Vapor Web Framework, IBM Kitura, Perfect.org, SwiftExpress.io . Khi Swift 3 ra mắt số lượng web framework cho Swift sẽ phát triển rất nhanh, sẽ vượt cả Golang, bởi số lượng lập trình viên Swift gia tăng nhanh hơn Golang, Elixir, Ruby, PHP.
  • Bạn lập trình Android. Java vốn là ngôn ngữ lập trình phổ biến số 1 hiện nay, bạn có thể chọn học Spring, Spark. Spark sẽ dễ học hơn. Nhưng Spring có nhiều việc làm và dự án thật hơn ở VN.
  • Bạn lập trình web, hãy thử React Native hoặc ionic để tạo ứng dụng di động cross platform bằng ngôn ngữ JavaScript.
Tranh cãi Native App hay Web App luôn dai dằng

Còn lời khuyên nào nữa?

Thực ra còn có nhiều lời khuyên hay gợi ý nữa. Thị trường việc làm CNTT hết sức sôi động thay đổi theo từng ngày, nếu bạn muốn trở thành lập trình viên di động hay web chuyên nghiệp. Đã có những khóa học trực tuyến 6 tuần nhưng luôn nhớ quy luật 10,000 giờ bay. 6 tháng thực hành tập trung không quá dài, không quá ngắn, đủ để bạn bắt đầu một hành trình 10,000 giờ trở thành chuyên gia, có mức lương tốt và sự công nhận từ đồng nghiệp.
Nguồn: Techmaster


Read more ...
Designed By hoclaptrinhcanban