Những lời khuyên dành cho Junior Developer
Bài viết này sẽ tổng hợp một số lời khuyên từ các Senior Developer, được rút ra từ những lần họ mentor các bạn Junior mới chập chững bước chân khỏi giảng đường đại học và tìm kiếm công việc trong lĩnh vực phát triển phần mềm.
1. Hãy nắm vững căn bản
Làm thế nào để bạn quyết định nên học cái gì khi bạn mới chỉ là freshman? Chúng ta không thiếu các lập trình ngôn ngữ và frameworks (frameworks: các đoạn code đã được viết sẵn, cấu thành nên một bộ khung và các thư viện lập trình được đóng gói). Ngành công nghiệp phần mềm đang mở ra rất nhiều hướng đi cho các bạn với một vài cái tên nổi bật như data science, machine learning, mirco-services, cloud computing, NoSQL, DevOps, Blockchain. Ngoài ra, chúng ta còn có vô số các từ viết tắt mới xuất hiện gần đây như UI, UX, API, OOP, IoT, CMS, CDN, PaaS, SaaS. Câu hỏi đặt ra là chúng ta nên bắt đầu từ đâu?
Nếu bạn từng đọc qua về hệ sinh thái JavaScript hay front end thì hẳn là bạn đã từng bị choáng ngợp bởi số lượng hùng hậu các JavaScript frameworks, và tất cả chúng đều có vẻ giống hệt nhau. Việc này hoàn toàn bình thường, vì khi một ngôn ngữ lập trình trở nên phổ biến và thông dụng thì sẽ càng có nhiều frameworks của ngôn ngữ đó được sinh ra.
Vậy thì làm thế nào để bạn chọn ra được cho mình một ngôn ngữ lập trình để bắt đầu hoặc để giúp CV của bạn trở nên ấn tượng hơn?
Đầu tiên, bạn nên hiểu rằng không một ngôn ngữ lập trình nào có tuổi đời ngắn. Phải có lý do thì chúng mới trở nên phổ biến, và chúng phải có các đặc tính phù hợp để giải quyết một vấn đề cụ thể vượt trội hơn so với các ngôn ngữ khác thì mới được sử dụng rộng rãi như vậy.
Thứ hai, tất cả các ngôn ngữ lập trình đều giống nhau ở một điều đó là chúng điều phối được bộ nhớ máy tính. Vì vậy, chúng ta có thể dễ dàng "dịch" từ ngôn ngữ này sang ngôn ngữ khác.
Điều duy nhất bạn nên tập trung vào khi học ngôn ngữ đó là các kiến thức căn bản. Hơn hẳn việc học variables, conditionals và loops work trong ngôn ngữ bạn chọn, cái quan trọng là bạn phải biết cách để type system hoạt động. Ngoài ra, hãy hiểu cách bộ nhớ máy tính hoạt động để kết hợp nó với kiến thức của loại data type phù hợp với ngôn ngữ bạn đang dùng. Nhớ rằng, biết cách khai thác và vận dụng các data structures và các thuật toán phổ biến chính là yếu tố giúp bạn trở thành một "problem solver" thực thụ, và cũng là thứ giúp bạn vượt qua các buổi technical interviews.
Thêm vào đó, hãy cố gắng thực hành để có thể code một vài vấn đề cơ bản một cách nhanh chóng. Nếu đã nắm vững các kỹ năng cơ bản, hãy tiếp tục luyện tập pointers và recursion problems. Sẽ có vài ý kiến cho rằng bạn sẽ không dùng nhiều tới nó trong thực tế; tuy nhiên, giải quyết pointer and recursion problems sẽ là một bài tập hiệu quả giúp kích thích các suy nghĩ lập luận khi viết code.
2. Nếu bạn không có bằng CS, đừng lo lắng
Việc này không có nghĩa là bằng cấp về Computer Science trở nên vô ích. Vấn đề là, nếu bạn không có bằng CS, thì hãy nhận thức rằng bạn sẽ phải cạnh tranh với những người có bằng CS và đó sẽ là động lực để bạn quyết tâm thu hẹp khoảng cách về bằng cấp giữa bạn và họ.
Chúng ta đang rất may mắn khi tham gia vào một lĩnh vực mà nhu cầu về kiến thức hay bằng cấp về nó có thể được khỏa lấp bằng các khóa học miễn phí trên mạng. Coursera cung cấp rất nhiều khóa học bổ ích miễn phí mà bạn có thể thử. Ngoài ra, chúng ta còn có các nguồn khác như MIT open courseware, edX,.... Không giống các ngành khoa học khác, bạn chỉ cần chiếc laptop của mình để đăng ký các khóa học online về Computer Science là đã đủ thay thế cho phòng thí nghiệm.
3. Nếu như bạn có bằng CS, đừng vì nó mà trở nên tự đại
Nếu như bạn có tấm bằng CS, bạn đã có xuất phát điểm tuyệt vời. Nhưng, hãy đừng biến nó thành lý do để bạn tự cao và khinh thường những ai không có. Cơ hội trong ngành này sẽ đến với những ai biết học hỏi và có niềm đam mê mãnh liệt, và điều đó sẽ giúp họ trở thành những lập trình viên thành công. Có rất nhiều lập trình viên giỏi mà xuất phát điểm của họ là từ những ngành kinh tế hay kiến trúc.
Hãy tận dụng thời gian của mình để học hỏi về các kiến thức mà bạn đã lỡ bỏ qua khi còn học đại học hay chọn lọc những thứ mà bạn đã từng dự định làm nhưng chưa có cơ hội.
4. Và đây là các kiến thức mà bạn cần học lại
Sau đây là danh sách các kiến thức hữu ích cho tất cả những ai đang làm lập trình viên, được sắp xếp theo thứ tự về mức độ quan trọng. Bạn không cần phải thành thục tất cả các kỹ năng này trước khi bắt đầu đi làm; chỉ cần bạn đặt mục tiêu cho mình là sẽ tiếp tục học hỏi để trở nên tài giỏi hơn trong tương lai.
Data structures and algorithms
Object oriented programming
Programming languages (một khóa học bao gồm type systems, functional programming, comparison of functional and object oriented programming, interpreters,...)
Operating Systems
Hardware or systems programming(C/C++)
Computer organization/architecture
Compilers
Nếu như bạn không học CS một cách chính thống trên giảng đường, thì đây là các môn học sẽ giúp bạn xóa bỏ khoảng cách nhanh nhất. Có rất nhiều nguồn tài liệu online giúp cung cấp cho bạn một background hoàn chỉnh cho tất cả các chủ đề này. Còn nếu như bạn đang học CS tại trường đại học hay có dự định sẽ học trong tương lai, hãy tập trung đào sâu vào những kiến thức này nhiều nhất có thể.
Nếu bạn có hứng thú với lĩnh vực AI hay Data Science, thì nên tham khảo các môn học dưới đây:
Linear algebra
Multivariate calculus
Undergraduate level statistics
Machine learning
Computer vision
Deep learning
Natural language processing
5. Khi học một công nghệ mới, nên biết điều gì là có thể và nguồn tài liệu để nghiên cứu
Một phần quan trọng của công việc là đọc tư liệu. Sẽ không có cách để ghi nhớ các features và functions được đặt trong các library hay framework cụ thể nào. Bạn sẽ ghi nhớ về một framework cụ thể nào đó nhiều hơn khi kinh nghiệm làm việc với nó tăng lên. Vì vậy, ở giai đoạn đầu, bạn chỉ cần hiểu một cách khái quát và quan trọng là bạn phải biết nơi nào để tìm kiếm tài liệu về nó.
6. Đừng tốn quá nhiều thời gian để "master" các framework và library
Như đã nhắc đến ở phần trước, nghiên cứu chuyên sâu nên diễn ra khi bạn đã có một số kinh nghiệm làm việc nhất định và đã chọn được cho mình một "stack" để đi. Còn khi bạn đang ở các bước đầu trong sự nghiệp, bạn nên chú trọng việc học tập các kiến thức nền tảng.
Thấu hiểu ngôn ngữ ở mức độ bên dưới những frameworks và libraries sẽ giúp bạn học những điều mới liên tục. Hãy hiểu rằng, nếu tất cả mọi người phụ thuộc vào frameworks và libraries, thì sẽ không bao giờ có cái mới được tạo ra. Lời khuyên đưa ra là hãy học các thứ căn bản để khi thời điểm xuất hiện, bạn đã sẵn sàng để tự mình viết code. Đó là những trải nghiệm đáng nhớ khi làm Programmer.
7. Kiên trì và tận hưởng khoảng thời gian này
Khi bạn có thêm kinh nghiệm và hiểu rõ những việc bạn đang làm, trang Linkedln của bạn sẽ sớm tràn ngập tin nhắn của nhà tuyển dụng. Nhà tuyển dụng sẽ trao bạn những công việc danh giá, mức lương hậu hĩnh, các dự án thú vị và cơ hội tiếp xúc với các loại công nghệ mới mẻ, hiện đại hơn.
Nếu bạn luôn theo đuổi những thứ to lớn, bạn sẽ không bao giờ cảm thấy vui vẻ với những thứ bạn đang có. Hãy dành thời gian để trân trọng và tận hưởng công việc, các dự án hiện tại, và cơ hội học tập tuyệt vời nhất sẽ đến với bạn.
Theo tác giả: Sameed H. Khan