TÌM VIỆC CŨNG NHƯ ĐI BÁN HÀNG

Thật vậy, khi đi làm ở một công ty nào đó, tức là bạn đang đi bán sức lao động cho họ và để thu lại tiền. Do vậy về nguyên tắc nó cũng tương tự như khi bạn bán bất kỳ sản phẩm nào khác.

Vậy ta cùng xem qua một số yếu tố có thể ảnh hưởng đến quá trình bán hàng của bạn nhé.

Chất lượng sản phẩm:

Nếu bạn là một sản phẩm tồi, nghĩa là chẳng biết làm gì cả, vậy thì bạn không cần đọc tiếp. Vì khách hàng của bạn, họ biết rất rõ họ cần mua gì, và họ cũng rất có kinh nghiệm trong việc mua sắm nên dù gì cũng sẽ chẳng bán được. Trong thị trường lao động, bạn không thể bán hàng xong là khóa máy, đổi địa chỉ và biến mất, nên dù có lừa được họ để được nhận việc thì sau đó bạn cũng sẽ phải ra đi thôi.

Vậy nên, khi còn đi học hãy cố gắng biến mình thành một sản phẩm tốt để có cái mà chào hàng.

Continue reading “TÌM VIỆC CŨNG NHƯ ĐI BÁN HÀNG”

NHỮNG MÔN HỌC CẦN THIẾT NẾU BẠN MUỐN TRỞ THÀNH SENIOR DEVELOPER

Cấu trúc dữ liệu và thuật toán:

Không cần nói nhiều về môn học này nhỉ? Bạn sẽ cần tìm hiểu về các cấu trúc dữ liệu thường dùng như: danh sách liên kết, cây, stack, queue… hoặc các thuật toán từ đơn giản đến phức tạp như tìm kiếm, sắp xếp, nén dữ liệu, tìm đường đi…

Các cấu trúc bạn học được dùng rất nhiều, khi học các môn khác bạn sẽ cảm thấy khó hiểu nếu không nắm chắc phần này. Ví dụ danh sách liên kết (linked list), stack được dùng trong quản lý bộ nhớ máy tính, queue rất phổ biến trong các hệ thống phân tán, hoặc xử lý dữ liệu không đồng bộ. Cấu trúc cây được dùng rất nhiều trong các hệ cơ sở dữ liệu, không hiểu nó bạn sẽ khó đi sâu vào mảng này.

Các thuật toán cũng vậy, làm quen với các thuật toán là cách hiệu quả nhất để hiểu cách máy tính làm việc, cũng như phương pháp giải quyết vấn đề dựa trên máy tính. Trong thực tế bạn sẽ không bao giờ phải làm lại các bài toán trong môn Thuật toán vì chúng luôn có sẵn trong các thư viện của ngôn ngữ lập trình. Tuy nhiên, bạn sẽ phải áp dụng kiến thức của môn học này để giải quyết những vấn đề bạn gặp trong các bài toán thực tế.

Bạn không cần phải quá đi sâu nếu không có ý định dự các cuộc thi. Đừng cố gắng học hết tất cả các thuật toán, làm tất cả các bài tập, chỉ cần hiểu cách chúng làm việc là được. Bởi sẽ còn một núi kiến thức khác bạn cần tiếp thu ngoài môn học này.

Continue reading “NHỮNG MÔN HỌC CẦN THIẾT NẾU BẠN MUỐN TRỞ THÀNH SENIOR DEVELOPER”

NAM! Code vui lắm đó!

Đó là câu nói anh bạn người Thụy Điển nói với mình.

Chuyện là mấy ngày rồi anh bạn này sang Na Uy để hỗ trợ mình tham gia vào một dự án trên mobile, hai người bằng tuổi, lại làm chung với nhau khá lâu rồi nên nói chuyện rất vui. Có lần mình nói về sở thích, anh bảo: tao cứ rảnh không làm gì là lại ngồi code. Nam à, code vui lắm đó, he he. 😂

Yes! Yes! I know! 😁

Nói một chút về dự án này. Đây là một app viết trên Xamarin, back end của nó là cả một gói bự, dùng cho các công ty vận tải hàng hoá, được triển khai trên khoảng 200 server. Mình vốn là một trong những người xây dựng lên những phiên bản đầu tiên của hệ thống, nên thực ra lạ mà quen (lúc đọc lại code phải cố gắng kìm chế để không chửi cái thằng viết, vì biết đâu đó là mình thì sao 😂). Khi đó chưa có docker, microservice ít phổ biến như bây giờ nên mô hình triển khai khá phức tạp, để triển khai trên số server phân tán lớn như vậy bên mình phải có team chuyên tooling để tạo ra các công cụ hỗ trợ.

Continue reading “NAM! Code vui lắm đó!”

Liệu từ một người không biết gì về lập trình thì có khả năng đi làm sau 1 năm không nhỉ?

Nếu lướt qua các hội nhóm lập trình thì câu trả lời có lẽ là không! Riêng tôi câu trả lời cũng là không nốt! 😅

Đùa đấy, thực ra câu trả lời là hoàn toàn được. Những người đã học vài năm có lẽ sẽ cười vào mũi tôi, vì cứ tưởng lập trình là dễ lắm ấy, chắc ông này chưa đi làm bao giờ.

Vậy tôi sẽ hỏi lại một câu khác:

“Liệu từ một người không biết gì về lập trình thì có khả năng đi làm sau 2000 giờ học không nhỉ?”

Continue reading “Liệu từ một người không biết gì về lập trình thì có khả năng đi làm sau 1 năm không nhỉ?”

PHÂN TÍCH THIẾT KẾ VÀ KIẾN TRÚC HỆ THỐNG (3 LĨNH VỰC YÊU THÍCH CỦA TÔI – phần 3)

Với 2 lĩnh vực yêu thích trước: Hệ điều hành và ngôn ngữ lập trình, tất cả chỉ dừng lại ở mức sở thích mà thôi, những gì tôi đã làm chỉ là các dự án nhỏ, hoặc là một phần nhỏ của các dự án khác. Trong tương lai tôi cũng chưa có ý tưởng gì về chúng xa hơn một đam mê cá nhân, vì thực sự cả 2 đều là những lĩnh vực khó và đòi hỏi một nguồn lực rất lớn.

Tuy nhiên, lĩnh vực thứ 3 này lại hoàn toàn khác, tôi phải làm việc với chúng hàng ngày: nhận các yêu cầu từ product manager rồi thảo luận với họ xem nên làm thế nào, đưa ra các phương án hoặc đánh giá các phương án từ đồng nghiệp khác, việc đánh giá này không chỉ đòi hỏi bạn biết về kỹ thuật, mà còn bắt buộc bạn phải nắm trong tay thông tin về nguồn lực, văn hóa doanh nghiệp hay nhiều yếu tố phi kỹ thuật khác. Chỉ sau khi chọn phương án, chúng tôi mới bắt đầu thiết kế ra ứng dụng và mới bắt tay vào code.Từ những ngày đầu tiên đi học, tôi đã luôn suy nghĩ về câu hỏi: Từ những yêu cầu đầu vào cho trước, làm thế nào để biết được ta cần tạo nên các lớp nào, đối tượng nào? Làm thế nào để từ một bài toán rất mơ hồ lại có thể tạo nên được một ứng dụng đáp ứng được yêu cầu người dùng, và còn phải:

👉 Nâng cấp và bảo trì dễ dàng: nếu bạn không biết thế nào là nâng cấp và bảo trì dễ dàng, hãy thử đặt ra tình huống toàn bộ nhân sự trong dự án nghỉ việc, và bạn chỉ có một khoảng thời gian ngắn để chuyển giao cho nhóm mới. Khả năng chuyển giao càng lớn và càng mất ít thời gian, đồng nghĩa với ứng dụng của bạn càng dễ bảo trì. Còn nếu người tiếp nhận dự án thốt lên một câu: “Cái này thà đập đi làm lại từ đầu còn dễ hơn” (câu này quen quá 😄) thì hẳn nó quá khó để chuyển giao.

Continue reading “PHÂN TÍCH THIẾT KẾ VÀ KIẾN TRÚC HỆ THỐNG (3 LĨNH VỰC YÊU THÍCH CỦA TÔI – phần 3)”

NGÔN NGỮ LẬP TRÌNH VÀ TRÌNH BIÊN DỊCH (3 LĨNH VỰC YÊU THÍCH CỦA TÔI – phần 2)

Trên thế giới này có bao nhiêu ngôn ngữ lập trình? Chịu, không ai biết được. Chỉ cần kể ra những cái tên nổi tiếng đã có rất nhiều: C, C++, Fortran, Pascal, JavaScript, Java, Python, Perl, Basic, C#, F#, Dart, Go… hay các ngôn ngữ chuyên dụng như SQL, VBA, Powershell script…Vậy tại sao tôi lại thích học về ngôn ngữ lập trình? Câu trả lời rất đơn giản: Vì tôi thích! Khi còn đi học, cũng như những sinh viên hay mơ mộng khác, tôi cũng có mơ ước một ngày nào đó sẽ tự phát minh ra một ngôn ngữ mới. Và thật sự tôi cũng đã từng tạo ra một vài trình biên dịch nhỏ trong quá trình học và làm việc: một trình dịch giúp hỗ trợ syntax highlighting khi khách hàng viết các SMS template (các SMS này sẽ có thể chứa các thông tin về đơn hàng và được gửi đến cho các tài xế), một trình dịch khác cũng phục vụ highlighting cho 1 Java IDE (kiểu như VS code – IDE này là một pet project).

Tôi không khuyến khích các bạn đi sâu vào nghiên cứu nó, nhưng tìm hiểu một chút sẽ mang lại rất nhiều kiến thức bổ ích, giúp việc tự học dễ dàng hơn rất nhiều, vì:

👉 Bạn sẽ biết các bước trình biên dịch xử lý mã nguồn, đây là thứ gắn bó với bạn hàng ngày, hàng giờ cho đến nhiều năm sau 🤪.

👉 Khi xảy ra một thông báo lỗi, bạn có thể mường tượng ngay tại sao, thậm chí khi đọc qua một nền tảng hay ngôn ngữ mới, bạn sẽ dự đoán được những vấn đề mình có thể gặp phải.

👉 Tại sao ngôn ngữ này là hướng đối tượng hoàn toàn, ngôn ngữ kia chỉ hỗ trợ một phần, ngôn ngữ nọ hoàn toàn không hỗ trợ? Hay tại sao ngôn ngữ này bắt buộc khai báo kiểu rõ ràng ngôn ngữ kia lại không? Nếu có thể hiểu được vấn đề từ góc độ người thiết kế ra ngôn ngữ, bạn sẽ hiểu được lý do tại sao họ chọn như vậy, hay nói cách khác, bạn sẽ hiểu được họ đã hi sinh cái gì để đánh đổi lại được lợi ích (thế mạnh) gì. Biết được thế mạnh của mỗi ngôn ngữ là điều quan trọng.

Continue reading “NGÔN NGỮ LẬP TRÌNH VÀ TRÌNH BIÊN DỊCH (3 LĨNH VỰC YÊU THÍCH CỦA TÔI – phần 2)”

3 LĨNH VỰC YÊU THÍCH CỦA TÔI – phần 1

Công nghệ thông tin là một lĩnh vực rất rộng, không ai có thể giỏi tất cả, vì vậy việc chọn cho mình một ngôn ngữ, nền tảng hay chuyên ngành riêng nào đó rất quan trọng.

Câu hỏi thường gặp nhất sẽ là: Tôi nên học gì để sau này có việc làm? Thật sự công việc trong ngành này rất nhiều, và sẽ càng ngày càng nhiều, nhất là trong bối cảnh các xu hướng làm việc từ xa, dữ liệu lớn, AI, IoT… đang trở nên phổ biến hơn bao giờ hết. Nhưng tôi chắc chắn bạn chưa bao giờ tìm được một đáp án thỏa mãn, bởi đơn giản chỉ bạn mới có thể trả lời chính xác mà thôi.

Câu trả lời của tôi luôn là: Bạn hãy học những gì bạn thích nhất!

Continue reading “3 LĨNH VỰC YÊU THÍCH CỦA TÔI – phần 1”

LAN MAN VỀ VIỆC HỌC

https://vnexpress.net/sa-thai-mua-covid-4127122.html

Những bài viết như thế này luôn gây ra hai luồng ý kiến trái ngược, một bên bênh vực người lao động vì công ty cho nghỉ không đúng luật, một bên lại bên vực công ty khi bắt buộc phải tìm cách cho nghỉ những nhân viên kém hiệu quả nhất.

Kém hiệu quả nhất là gì? Kém hiệu quả nhất không đồng nghĩa với việc bạn là người dở nhất. Nhưng bạn không còn phù hợp với tổ chức đó nữa. Khi đã rơi vào tình thế này thì việc ra đi chỉ là sớm hay muộn, trừ khi bạn quá “mặt dày” để cố đấm ăn xôi 😃.

Tôi sẽ không bàn về việc ta phải làm gì trong hoàn cảnh này, bởi như trên đã nói, chẳng có con đường nào khác ngoài ra đi. Nhưng ta sẽ bàn về cách để không phải rơi vào hoàn cảnh ra đi nhưng không biết đi về đâu.

Trước tiên, ta phải nhìn nhận rằng tự nhiên luôn công bằng, nó có những quy luật của nó và các quy luật này là bất biến. Một cậu trai mới ra trường đã được làm sếp chỉ vì cha cậu ấy là chủ tịch – Điều này có công bằng không? Nếu là không, và cậu ấy cũng phải bắt đầu như mọi người, vậy điều đó có công bằng với cha cậu ấy – người ta phấn đấu cả đời để xây dựng nên công ty hay không? Để đến được đích trước, bạn phải có ít nhất một trong hai lợi thế: hoặc bạn phải chạy nhanh hơn, hoặc phải ở gần đích hơn! Mà việc lựa chọn điểm xuất phát lại không nằm trong tay chúng ta, nên chỉ có một cách duy nhất là phải chạy cho thật nhanh, và chạy cho đúng hướng.

Trong ngành công nghiệp phần mềm, vũ khí cạnh tranh lớn nhất là tri thức, và chỉ có duy nhất một cách để mài dũa vũ khí đó là học. Vậy phải học thế nào?

Continue reading “LAN MAN VỀ VIỆC HỌC”

KINH NGHIỆM BẠN CÓ TỪ ĐÂU?

Bạn đã học xong đại học chưa? Rồi ư, giờ là lúc bước ra đường và nhận lấy cái tát đầu tiên từ cuộc đời!

PHẢI CÓ KINH NGHIỆM MỚI KIẾM ĐƯỢC VIỆC 😱

Phải đi làm mới có kinh nghiệm, phải có kinh nghiệm mới tìm được việc làm. Bạn không cô đơn đâu, chỉ cần lướt nhẹ qua các diễn đàn, sẽ thấy ngay có rất nhiều người giống bạn. Vậy phải làm gì?

Trước tiên, ta phải thống nhất 1 với nhau một điều: bạn chỉ là một người mới bước chân vào một trò chơi có hàng triệu người tham gia, bạn đang đứng đâu đó ở cuối dãy, và quan trọng nhất sẽ chẳng có ai lắng nghe “tâm tư, nguyện vọng” đó cả. Đó là quy tắc của cuộc chơi và bạn sẽ phải theo, dù muốn hay không.Nếu với tư cách nhà tuyển dụng, tôi có thể chia sẻ với bạn vài điều:

👉 Trong ngành phần mềm, kinh nghiệm rất quan trọng, vì bạn luôn phải làm việc trên những thứ không hoàn hảo, thậm chí đôi khi không tốt cho lắm: Windows, Linux, Apache, Mysql, PHP, NodeJS, React Native… tất cả đều không hoàn hảo, vậy nên nhận vào một người đã biết bệnh các thứ trên sẽ giúp tiết kiệm thời gian rất nhiều.

Continue reading “KINH NGHIỆM BẠN CÓ TỪ ĐÂU?”

NÊN DẠY PASCAL HAY C TRONG NHÀ TRƯỜNG?

Đọc được một bài viết của một bạn nào đó nói về việc thay thế Pascal trong nhà trường bằng một ngôn ngữ khác, mình cũng muốn viết vài ý về điều này.

👉 Thứ nhất, phải khẳng định một điều là kiến thức về giáo dục và công nghệ phần mềm của chúng ta còn kém rất xa so với những chuyên gia trong ngành. Khi các bạn tranh cãi OOP hay functional programing hay hơn, thì họ đang thiết kế ra các ngôn ngữ và viết các trình biên dịch, khi ta đọc được một bài viết về cấu trúc đĩa cứng (và cảm thấy mình thật giỏi) thì cách đó mười năm họ đã kiếm tiền bằng cách viết các driver cho hệ điều hành, và khi ta chợt “phát hiện” ra học lập trình với Python hay hơn Pascal thì họ đã đào tạo hàng trăm hàng trăm hàng ngàn kỹ sư phần mềm rồi.

Bạn không tưởng tượng được nó xa đến mức nào đâu!

Cách đây rất lâu, khi tôi có cơ hội làm việc chung với một chuyên gia đầu ngành về nhận dạng ảnh/video, thầy ấy đã giới thiệu một số đề tài tiến sĩ mà thầy hướng dẫn, là những bài toán như nhận dạng chữ viết tay, nhận dạng khuôn mặt, đọc ảnh thiên văn và tính toán khoảng cách các thiên thể… và họ đã nghiên cứu những thứ như vậy từ hơn 20 năm trước.

Continue reading “NÊN DẠY PASCAL HAY C TRONG NHÀ TRƯỜNG?”