Bài viết
Kho tài liệu và bài viết được chia sẻ, đánh giá bởi cộng đồng
Con đường để trở thành lập trình viên
Nội dung bài viết
HỌC NHỮNG THỨ CƠ BẢN
Kỹ thuật lập trình:
Ít nhất phải biết phân biệt những thuật toán cơ bản về sắp xếp,tìm kiếm,hiểu rõ mảng một chiều và hai chiều làm việc như thế nào,tại sao người ta dùng Struct để thay vì phải dùng cả trăm mảng cho một bài toán có nhiều thành phần phức tạp,đóng mở và thao tác trên file như thế nào..v..v...
Không nhất thiết phải học ở trường.Bạn có thể tự học nó theo một lộ trình mà bạn lên kế hoạch rõ ràng. Những người không học Đaị học không có nghĩa là họ không học,mà thậm chí chính họ mới là những người học tập nghiêm túc nhất! Tất nhiên là: tự học.
Ngành CNTT luôn thay đổi về mặt công nghệ,bạn am hiểu công nghệ nào đó không quan trọng bằng tư duy logic và khả năng tự học.Ở các công ty IT nói chung,phần mềm nói riêng,luôn có khoảng 30% nhân sự là những người không có bằng cấp gì.
Cơ sở dữ liệu:
Đây là môn học chuyên ngành quan trọng bậc nhất (bên cạnh tư duy lập trình-tư duy logic).
Phải nắm rõ và vận dụng thành thạo những thao tác tối thiểu: Tạo Database,tạo Table,chèn dữ liệu vào Table,tạo ra các "bẫy lỗi" trigger, viết các function, store procedure, nâng cao hơn thì có thể ứng dụng deadlock vào việc giải quyết "tranh chấp khóa" …
Có một tầm nhìn đủ để tự thiết kế ra một cái Database ở mức vừa phải.
Lập trình hướng đối tượng:
Hiểu rõ và vận dụng được đặc điểm của OOP là: Tính trừu tượng,Tính đóng gói,Tính đa hình,Tính kế thừa.
Hiểu rõ và thiết kế được một chương trình cơ bản sử dụng OOP(có thể viết trên Java,C++,C# tùy ý).
Đối tượng khác với Class thế nào? Khai báo các thuộc tính và phương thức cho đối tượng làm sao?
Tại sao người ta lại dùng OOP? v..v…
>>>Tóm lại là:
Phải vận dụng thật thành thạo những kiến thức cơ bản mà bạn được học ở trường hoặc tự học.
Mọi bài toán lớn đều chỉ là tập hợp các module nhỏ mà thôi.
Những môn học khác(chẳng hạn Toán,Trí tuệ nhân tạo,Phân tích thiết kế hệ thống...cũng đều quan trọng nhưng nó không phải là thứ mà bạn sẽ ứng dụng thiết thực như 3 môn trên,nó chỉ là những môn hỗ trợ thôi).
HỌC MỘT CÔNG NGHỆ MÌNH CHỌN THEO
Ngay từ khi còn đi học,hãy định hướng một thứ mình theo để sau này đi làm nó. Nhưng nhớ đừng "hi sinh" tất cả các môn khác vì nó. Bởi các môn khác đều có tác dụng nhật định giúp bạn làm tốt chuyên môn bạn theo.
Hãy đặt mục tiêu giỏi nhất môn mình theo ở lớp. Nếu kết thúc khóa học bạn không phải là người cao điểm nhất lớp môn đó thì bạn cũng đủ khả năng đi phỏng vấn,làm việc môn đó. Không ai trả tiền cho điểm số,mà người ta trả tiền cho năng lực và những thứ bạn làm cho người ta. Trừ khi bạn định sau này học xong sẽ trở thành Giảng viên dạy CNTT, thì nhất định bạn phải lấy bằng từ loại khá trở lên.
ĐẶT CÂU HỎI:
Tất cả các công trình,dự án dù lớn đến đâu,nó đều ra đời bắt nguồn từ những câu hỏi trong đầu ai đó: WHAT? HOW ?...
Họ tự đặt ra câu hỏi trong đầu và tự tìm cách trả lời. Ví dụ: Tại sao chỗ này mình nên dùng Struct thay vì dùng 100 mảng để làm nó?... Khi bạn trả lời dc những câu hỏi bạn đặt ra cho chính mình thì bạn hoàn toàn làm chủ nó.
Đây là thói quen mà mọi người làm CNTT nói chung và phần mềm nói riêng phải ứng dụng tốt.
Có một câu danh ngôn thế này:
"Một người mà bắt đầu với khẳng định thì ắt sau đó sẽ nghi vấn. Nhưng một người bắt đầu bằng nghi vấn thì có thể sau đó sẽ là khẳng định".
Mỗi dòng code viết ra phải tự hỏi mình "tại sao viết thế này mà ko viết thế khác..?". Thái độ nghi vấn và tự hỏi,tự trả lời là quan trọng nhất với ai làm công việc liên quan sáng tạo.
HÃY BẮT ĐẦU "TỰ SƯỚNG" BẰNG CHƯƠNG TRÌNH ĐƠN GIẢN NHẤT:
Đó có thể là chương trình kinh điển "Hello World!" ,hoặc có thể là chương trình mà bạn tự nghĩ ra để "tư vấn tình yêu" hay gì đó mà nó chỉ ứng dụng vài dòng lệnh đơn giản như If,Else,Printf,Cout>>....nhưng nhất định nó phải là thứ mà tự tay bạn làm ra từ đầu tới cuối!
Good code is its own best documentation. As you're about to add a comment, ask yourself, "How can I improve the code so that this comment isn't needed?
Steve McConnell
Tạm dịch: Code tốt thì bản thân nó là một tài liệu tốt nhất. Khi bạn đặt ra lời bình luận cho code ấy,hãy hỏi chính bạn,"Làm sao để mình có thể cải tiến code để lời bình này được coi là không cần thiết?".
Hãy luôn dự trữ sẵn cho mình một code thật đơn giản nhưng rõ ràng,logic và bạn sẽ thấy rằng nó là bước đà để bạn làm những bài toàn lớn!
Đó là một trong những lý do mà các nhà tuyển dụng rất hào hứng với các ứng viên có Project đã được demo(chẳng hạn project môn học ở lớp,báo cáo thực tập...). Chẳng hạn Vĩnh,ngày trước Vĩnh cũng luôn "ôm" một Project báo cáo thực tập tốt nghiệp theo ....dù nó khá "chuối" nhưng nó khiến Vĩnh tự tin và có được tư duy nhất định…
DÀNH THỜI GIAN ĐỂ PHÂN TÍCH VẤN ĐỀ/BÀI TOÁN NHIỀU HƠN,KẾT QUẢ SẼ LÀ PHẢI SỬA LỖI ÍT HƠN
Những người có thói quen "gõ phím" khi trong đầu nảy sinh vấn đề cần giải quyết,họ sẽ giải quyết vấn đề/bài toánh nhanh hơn.
Nếu không phân tích kỹ thì có thể code đã đời xong rồi...hoặc là ngồi gỡ rối hoặc là "đập đi làm lại từ đầu".
Nếu bạn không phân tích và hình dung được tổng quan của cái chương trình hay cái module mà bạn đang làm,thì rất khó để code nó.
XEM LẠI THỨ BẠN LÀM
Hãy coi việc xem lại code của bạn là vấn đề vô cùng quan trọng. Nếu có vấn đề nào mà khiến bạn không thể sửa nó,thì hãy tham khảo những người có kinh nghiệm để bạn không mất quá nhiều thời gian cho một thứ mà có thể nó vô cùng "củ chuối" mà bạn không nhận ra.
Ai đó nói "việc tham khảo người khác là điều tồi tệ với coder",về mặt nổi nó đúng,nhưng thực sự trên thực tế thì không có ai mà biết hết tất cả. Thay vì phải ngồi mò mẫm cả ngày để tìm hiểu một cái gì đó mà mình đã quên...thì tham khảo người khác không phải là tồi,bởi vậy người ta mới cần làm việc nhóm...
Bạn nên nhớ ở bài này đang nói về cách bạn tự học để trở thành coder .
ĐỪNG QUÁ LO LẮNG TỚI VẤN ĐỀ THAY ĐỔI CÔNG NGHỆ
Các tool, API, Frameworks và vài thứ khác có thể thay đổi hàng ngày để làm cho việc lập trình trở lên đơn giản hơn,nhanh hơn,đáp ứng tải tốt hơn,tốn ít bộ nhớ hơn…
Ví dụ: Bạn làm lập trình Java cho một công ty,có thể có nhiều Frameworks mà họ sử dụng và thay đổi Frameworks...có khi là hàng tuần!
Nhưng các khái niệm quan trọng như:Giao tiếp Client-server,MVC,Servlets/JSP,Chuyển đổi cú pháp XML...thì vẫn giữ nguyên không đổi!
Vì vậy thay vì lo lắng sự thay đổi những thứ kể trên,thì hay tập trung vào việc nắm chắc kiến thức nền tảng để bạn có thể tự học những thứ như Frameworks,API…
ĐỌC TÀI LIỆU CHUYÊN MÔN
Cái này thì trên group "facebook.com/groups/tienganhit" Vĩnh đã có rất nhiều bài viết về nó, nên ở đây chỉ nói gọn thế này
Đọc tài liệu chuyên môn tốt là có 50% khả năng thành công trong nghề IT (dù là lập trình,mạng hay bất cứ công nghệ gì). Đương nhiên,Đọc tài liệu bằng Tiếng Anh!
Nếu chỉ vừa bắt đầu, bạn cũng có thể vừa trau dồi khả năng tiếng anh, vừa tìm hiểu lập trình thông qua các cộng đồng, website học lập trình tiếng việt như Howkteam.com, khoapham.vn,…
TỰ TIN LÀ YẾU TỐ QUAN TRỌNG NHẤT ĐỂ THÀNH CÔNG
Nếu không tự tin thì bạn có thể rớt ngay từ những bài báo cáo môn học ở lớp của bạn,chứ nói gì tới việc "bước ra biển lớn" là môi trường làm việc ở các công ty đầy thử thách khó khăn...
Khiêm tốn nhưng phải biết thể hiện bản thân mình đúng lúc đúng nơi,đó là phong cách làm việc của những người nước ngoài,nếu bạn muốn hòa nhập với họ trên chính "sân nhà" của mình thì bạn cần phải là người tự tin.
Với những người nước ngoài,việc một cô gái không dám nhận lời của ai đó khen cô ấy "You are so beautiful !" mà nói "I'm not beautiful" thì cô gái ấy còn đủ tự tin làm gì trong môi trường "toàn cầu hóa" hay không?
LƯỜI THÔNG MINH
Vấn đề này Vĩnh đã viết một bài trên group "facebook.com/groups/tienganhit",nên ở đây cũng chỉ nói vắn tắt:
Ngành CNTT là ngành mà suốt mấy năm học Đại học của chúng ta đều có mục đích chính: rèn luyện tư duy logic và khả năng tự học suốt đời.
Việc bạn có mảnh bằng kỹ sư chỉ có ý nghĩa chứng minh bạn là người có thể tự học về lĩnh vực này và đủ tư duy logic để tự học,tự giải quyết vấn đề khi làm việc thôi,chứ bằng cấp không phải là thứ nhà tuyển dụng cần và tuyệt đối bằng cấp không có gía trị chứng minh bạn biết làm hay không.
Thực tế có vô số kỹ sư/cử nhân chẳng biết làm cái quái gì dù họ có bằng đại học loại khá..Thậm chí nhà tuyển dụng họ còn cho rằng những người có bằng cấp cao là những người "Suy nghĩ của họ bị đặt trong giới hạn của một cái hộp"...
Nhất định phải có độ đam mê, sẵn sàng theo đuổi và vượt mọi khó khăn.Nhưng đừng "Siêng như trâu".Đôi khi hãy thả lỏng giả bộ "Lười thông minh" một chút...tức "làm ít hơn,nghĩ nhiều hơn".
Bởi chẳng ngẫu nhiên Bill Gates nói:
"Tôi luôn chọn người lười cho những công việc khó khăn bởi họ luôn biết cách hoàn thành nó một cách dễ dàng".
>>>Trên đây là 10 yếu tố mà Vĩnh cho là quan trọng nhất với một người muốn làm nghề Lập trình.
Ngoài 10 yếu tố đó,thì còn một số kỹ năng như: làm việc nhóm,khả năng chịu đựng Deadline,thích ứng môi trường làm việc,khả năng lên kế hoạch.Nhưng những kỹ năng này bạn có thể rèn luyện khi bước vào môi trường làm việc thực tế.
Nguyễn Nho Vĩnh
Nội dung bài viết
Cám ơn tác giả. Bài viết tuy ngắn gọn nhưng rất ý nghĩa. xúc tích. :)