Các bạn vui lòng Ctrl + F để tìm kiếm câu hỏi hoặc dùng công cụ tìm kiếm của Github nhé.
Update later
Đây là một trong những câu hỏi phải nói là rất rất nhiều người hỏi khi bước vào con đường lập trình. [@Working in process]
Các câu hỏi liên quan với câu hỏi này là: "Học ngôn ngữ nào tốt nhất?", "Ngôn ngữ nào dễ học cho người mới?", ...
Bước chân vào lập trình giống như đứng giữa con đường trăm ngả vậy. Có quá nhiều con đường để chọn, có quá nhiều ngôn ngữ để khám phá và điều đó gây nên sự bối rối cho người mới học. Vậy nên, trả lời câu hỏi trên, không có ngôn ngữ nào đáng được ưu tiên hơn ngôn ngữ nào khi mới học lập trình cả; cái các bạn cần để bắt đầu học lập trình chính là sự am hiểu được lập trình là làm gì, cách tư duy, cách suy nghĩ theo hướng lập trình. Ngôn ngữ lập trình bây giờ không còn phức tạp và khó học như xưa nữa, thế nên việc học một ngôn ngữ không còn quá khó và mất nhiều thời gian. Khi ngôn ngữ đã trở nên dễ học hơn, thì tư duy bắt đầu được trọng dụng. Đó là lí do tại so các bạn cần hiểu được lập trình làm gì và học được cách tư duy theo hướng lập trình. Vì khi các bạn nắm được cốt lõi của lập trình, thì việc học các ngôn ngữ khác sẽ dễ dàng hơn không ít thì nhiều. Và thậm chí không chỉ 1-2 ngôn ngữ, mà bạn có thể học bao nhiêu cũng được!
Tuy nhiên, dù sao thì mình khuyên các bạn nên chọn những ngôn ngữ có xu hướng được nhiều người chọn để học. Đơn giản, nhiều người học thì sẽ dễ dàng được hỗ trợ và hỏi đáp sẽ dễ dàng hơn. Và đây là những ngôn ngữ các bạn nên học nếu chưa có định hướng sẽ làm gì (xếp theo mức độ dễ học):
- Python
- Javascript
- Ruby
- Java hoặc C#
- C++
Còn nếu các bạn có định hướng muốn mình làm gì thì các bạn có thể tham khảo bảng này:
Hướng đi | Ngôn ngữ |
---|---|
Lập trình Website - Front-end | HTML5, CSS3, Javasript |
Lập trình Website - Back-end | Javascript, Python, Ruby, PHP, Java, ASP.NET Và một chút Front-end |
Lập trình Android | Java, Javascript, Kotlin |
Lập trình iOS | Swift, Javascript, Objective-C |
Viết ứng dụng PC | C#, Java, C++ (Qt Framework), Delphi |
Phát triển Game | C++, C#, Javascript + HTML5 + CSS3 |
Big Data, Phân tích dữ liệu, ... | Matlab, Python, R, Julia |
Trí tuệ nhân tạo | C++, Python, Java |
Robot, Vi mạch, Adruino | C, C++ |
Viết script tự động | Mọi ngôn ngữ. Nhưng ưu tiên: Python, AutoIT3, Bash, Ruby, Powershell, Javascript, ... |
Hack | Hacker knows everything ;) |
Nếu vận chưa xác định được mình thích gì và ngôn ngữ nào. Các bạn có thể dùng những Website sau để làm một bài Quiz nhỏ nhé:
- http://language.codeaholicguy.com/ - Tiếng việt và của Hoang Nguyen
- http://choosing-a-language.techboss.co/#/ - Tiếng Anh
- http://www.bestprogramminglanguagefor.me/ - Tiếng Anh
Bạn muốn làm Hacker? Hãy đọc bài viết này: How To Become Hacker (dịch bởi Admin HVA - Commale).
Mà khoan hãy đọc bài viết trên. Mình có một thử thách nhỏ cho các hacker tương lai đây! Hãy đọc bài gốc của bài viết trên: How To Become Hacker
;) Will you accept this challenge like a hacker? [Working in process]
Các câu hỏi liên quan: Học thế nào là hiệu quả? Làm sao để tập trung học tập?
Các bạn có thể tham khảo:
Học thế nào cho đúng? - Lê Trần Đạt
- An toàn thông tin thì học gì? - Bài viết của ThaiND
Các câu hỏi liên quan: Học trường nào tốt cho CNTT? Học trường nào dễ kiếm việc làm? Học trường nào đào tạo tốt?
Ngắn gọn: Không!
- Bạn có thể học code bên ngoài và dễ dàng làm sản phẩm mà không phải học quá nhiều.
- Nhiều start-up mới mở cần nhân lực nên có thể không cần thông qua bằng cấp mà chỉ cần năng lực
- [Working on it]
Khuyên: Có!
- Với một tấm bằng đẹp, kiến thức vững thì không lo mà thất nghiệp.
- Bằng đẹp, phong trào tốt, Tiếng Anh tốt thì du học sẽ dễ dàng hơn.
- Có bằng cấp sẽ dễ xin việc hoặc được ưu ái hơn ở một số công ty / trường hợp.
- Bằng cấp sẽ giúp các nhà tuyển dụng nhìn tổng quan hơn quá trình học tập của bạn từ đó có thể dễ dàng đánh giá năng lực hơn.
- @Working in process
- ĐH Công nghệ thông tin - Thuộc ĐH Quốc gia TP.HCM
- Học viện Mật Mã - Hà nội
- Học viện Công nghệ bưu chính viễn thông - Hà Nội
- Học viện An ninh nhân dân - Hà nội
- Đại học Công nghệ - Thuộc ĐH Quốc gia HN
- Đại học Bách Khoa Hà nội
- Đại học Bách Khoa Đà nẵng
- Học viện Kỹ thuật Quân sự - Hà nội
- Đại học FPT (Có tuyển sinh ở HN, HCM và Đà nẵng)
- Web developer roadmap 2017 - Hướng đi cho ai muốn làm Web developer
Các bạn không cần phải giỏi toán để học lập trình (tất nhiên ít ra cũng phải biết những điều cơ bản). Nhiều ngành nghề trong lập trình không còn đòi hỏi toán học quá phức tạp nữa. Các bạn có thể dễ dàng tạo ra những ứng dụng, website hay phần mềm máy tính hay mà không cần phải quá thành thạo toán học. Tuy nhiên, nếu giỏi toán thì sẽ luôn là một lợi thế cho bạn trong ngành lập trình. Bên cạnh đó, có một số lĩnh vực trong ngành lập trình sẽ đặc biệt đòi hỏi toán học như:
- Data Science / Data Engineering (Xác xuất thống kê)
- AI Nói chung (Machine Learning, Computer Vision, Natual Language Processing, ...)
- Nghiên cứu về giải thuật / khoa học máy tính
- Lập trình đồ họa - Graphics Programming (Đại số tuyến tính)
- Lập trình game (Vector, ma trận, ...)
- Mật mã học - Cryptography (Lý thuyết số, đại số trừu tượng)
- Nhúng - Embedded System (Giải tích, Fourier, đại số Bool, ...)
- Database (Đại số quan hệ, lý thuyết đồ thị, ...)
Người ta bảo, học tập là học cả đời. Thế nên cho dùng có 30t hay 90t thì không bao giờ là trễ để học lập trình.
Ngoài ra bạn có thể đọc bình luận rất hứng thú của "Lập Trình Sư" về vấn đề này nhé.
- Tham khảo link Reddit - A collection of 150+ "what are the best" dev questions with answers
- Update cho môi trường Việt Nam sau
Câu trả lời là không nên. Tuy nhiên bạn vẫn có thể xài IDE như thường và không ai bắt các bạn phải dùng Compiler cả. Nhưng lời khuyên là các bạn nên tập compile bằng compiler càng sớm càng tốt. Vì IDE giấu đi khá nhiều bước trong quá trình compile chỉ bằng một nút duy nhất. Trong khi hiểu được quá trình compile hay các tham số của compiler sẽ giúp bạn rất rất nhiều trong quá trình compile. Ngoài ra, ở một số môi trường không hề có GUI, thì việc compile bằng tay sẽ là bắt buộc. Còn nếu bạn muốn học về Reverse Engineering, thì việc học cách compile bằng tay, hiểu các tham số của Compiler có lẽ là điều bắt buộc.
Không nên học nhiều ngôn ngữ cùng lúc dù bạn đã có học qua ngôn ngữ lập trình trước rồi. Vì học cả 2 cùng lúc rất dễ bị rối, nếu 2 ngôn ngữ cú pháp tựa tựa nhau có thể giúp dễ nhớ nhưng lại gây rối rắm trong quá trình học. Với 2 ngôn ngữ có cú pháp khác nhau thì việc ghi nhớ cú pháp cả 2 sẽ phải mất không ít thời gian và dễ gây nhầm lẫn. Thế nên, tốt nhất là học một và chỉ một ngôn ngữ lập trình một lúc. Nếu có bạn nào muốn học nhiều ngôn ngữ cùng lúc để trải nghiệm và xem mình thích ngôn ngữ nào thì cũng nên đừng làm vậy. Các ngôn ngữ bây giờ rất dễ học nên thời gian học sẽ mất không quá lâu nếu có biết trước một ngôn ngữ nền tảng. Từ đó, việc trải nghiệm một ngôn ngữ sẽ nhanh hơn trước nhiều. Cuối cùng, bằng việc tập trung một ngôn ngữ một lúc vậy sẽ cho các bạn trải nghiệm tốt hơn về ngôn ngữ đó hơn là một lúc hai ngôn ngữ, giúp bạn có đánh giá khách quan hơn về các ngôn ngữ khác nhau và có lựa chọn đúng đắn hơn.
Những ngôn ngữ đang hot hoặc đang lên bao giờ cũng dễ kiếm việc cũng như kiếm tiền. Tuy nhiên cái gì cũng có thời của nó; Dễ thấy vài năm trước PHP đang rất thịnh hành, thì nay đang bị lung lay bởi Javascript, Ruby on Rail. Vậy nên tốt nhất là học chắc một ngôn ngữ mà bạn yêu thích để làm nền tảng thật vững. Sau đó bạn có thể học sâu thêm về ngôn ngữ yêu thích của mình. Đảm bảo cơ hội việc làm về ngôn ngữ đó sẽ càng cao và lương bổng cũng không phải nhỏ. Tất nhiên nếu bạn có nền tảng chắc rồi nhưng không thích đào sâu, thì việc học các ngôn ngữ theo xu hướng cũng không phải là một lựa chọn tồi. Nhờ có nền tẩng chắc, bạn sẽ tiếp thu những ngôn ngữ này cũng sẽ rất là nhanh chóng.
Phần lớn các lĩnh vực trong lập trình sẽ không đòi hỏi cấu hình quá cao. Nên với một con chip Pentium, RAM 2GB, ổ cứng 200GB là bạn đã có thể học tập được rồi. Để thoải mái hơn các bạn có thể xài các chip i-series (i3, i5, i7), RAM 4GB và HDD 500GB. Tuy nhiên nếu các bạn có xài cái IDE nặng như Visual Studio, Jetbrain thì khuyến khích nâng cấp ổ cứng lên 500GB, Chip i3 trở lên, RAM 8GB dùng sẽ mượt hơn và không bị lag hay đứng máy. Còn nếu các bạn nào học về Android hoặc có nhu cầu chạy máy ảo nhiều (như Pen-tester) thì nên nâng cấp thêm RAM, và tối thiểu 8GB để chạy vì máy ảo yêu cầu rất nhiều RAM. Với các bạn làm Game sẽ có tác vụ đồ họa, nên mua thêm một Card đồ họa rời và nâng cấp RAM sẽ hỗ trợ bạn làm game tốt hơn.
Phần trên chỉ là cấu hình, lời tư vấn cơ bản, để thêm chi tiết các bạn có thể lên DNH tạo một Topic mới với số tiền hiện có cũng như ngành nghề để được tư vấn kỹ hơn.
- Programming - Danh cho tất cả các câu hỏi liên quan tới lập trình
- Dev chat - Tán gẫu, chát chít vói các dev. Bạn muốn tán gẫu, tư vấn, trao đổi, hỏi han linh tinh mà có kèm một chút trò chuyện, hãy chọn category này
- Randomq - Câu hỏi không liên quan tới lập trình, như làm sao để cài phần mềm abc, máy bị hư, sữa lỗi IDE,...
- Fun - Share linh tinh mọi thứ giúp DNH giải trí. Bạn cũng có thể khoe Project của bạn ở category này, hay thử thách, đố vui mọi người
- Hacker News - Mục này dùng để share tin tức mà các bạn cho là thú vị chú không phải là mục để mấy anh hacker tán gẫu đâu nhé :D
- English - Hỏi đáp, chia sẽ về Tiếng Anh là vô đây hết.
- Jobs - Đăng tuyển nhân sự hoặc cho các bạn nào muốn tìm việc. Các bài viết ở category này sẽ tự động đóng sau 7 ngày.
- Meta - Muốn góp ý cho DNH? Muốn cống hiến cho DNH? Có ý tưởng hay giúp DNH phát triển thì hãy bỏ vào category này!
- Share - Category Share để share mọi thứ bạn thấy hay và giúp ích cho quá trình học lập trình, như: Tài liệu, blog hay,... Ngoài ra Share gồm 2 sub category là Videos và Writes.
- Share-Video thường dùng để chia sẽ các Video học tập, hướng dẫn về lập trình. Nếu video vui thì các bạn hãy cho vô Category Fun thay vì Share-Videos nhé.
- Share-Writes dùng để chia sẽ các bài viết các bạn đọc được, hoặc có thể là do bạn tự viết và chia sẽ.
- Secret - Category này được ẩn và tất nhiên nó ko phải tên Secret ;) Chỉ dành cho thành viên Level 3 trở lên mới vào được. Deepweb đấy! ;)
- Discourse - Open Source
- Ngôn ngữ: Ruby, Javascript