Hi, chào các anh chị
Em đang hướng đến công việc lt phần mềm cho windows, linux (không phải dạng embedd) nhưng lại không biết mình nên học những gì để có thể kiếm được việc làm sau khi ra trường ?
Hiện tại em làm việc với C# và OOP cũng được vài tháng rồi.
Yêu cầu của một Software Engineer?
Câu hỏi này cần một câu trả lời thật dài vì đây là câu hỏi khá rộng. Nhưng Đạt xin trả lời theo dạng góp từng ý nhỏ, ai có ý nào khác thì đóng góp vào sau nhé.
Đạt nghĩ một trong những yêu cầu của một Software Engineer (viết tắt SE) là bạn phải có khả năng tự học và có tinh thần tự học. Ngành công nghiệp phần mềm thay đổi liên tục, một SE giỏi là người có khả năng học thêm cái mới.
Sau nhiều năm làm việc, một SE sẽ có kiến thức rộng về nhiều lĩnh vực trong ngành CNTT. Sự khác biệt giữa một SE lâu năm và một sinh viên mới ra trường là ở kiến thức. Sinh viên ra trường có sức khỏe, năng động, sáng tạo nhưng thiếu kiến thức. SE lâu năm có thể chậm hơn, nhưng nếu họ chịu học, chịu mở rộng mảng kiến thức mà họ nắm thì họ sẽ mất ít thời gian hơn để giải quyết một vấn đề mặc dù họ chậm hơn.
Đây là thống kê trên StackOverflow (viết tắt SO), ta có thể thấy lập trình viên càng lớn tuổi, họ lại càng có được nhiều câu trả lời hay và số điểm trên SO cao hơn.
Nhưng ta phải hiểu rõ một điều, trong ngành CNTT câu nói “Sống lâu lên lão làng” không đúng. Nó chỉ đúng đối với người sống lâu, nhưng muốn học và biết tự học.
Bạn biết C# và OOP thì đây là bước đầu, rất tốt. Để lên được lão làng, hay đơn giản là có việc khi ra trường, thì bạn cần phải biết thêm nhiều ngôn ngữ lập trình, nhiều kỹ thuật lập trình, đọc nhiều sách, trả lời nhiều câu hỏi và code nhiều hơn.
Đọc thêm:
Nếu trước mắt xác định xin việc trước, thì mình xin đưa ra 1 số thông tin như sau cho bạn tham khảo :
- Hiện tại, nhu cầu tuyển dụng và mức độ phổ biến của PHP có lẽ là số 1 ở VN.
- Đứng thứ 2 theo mình nghĩ là JAVA
- Đứng thứ 3 or thứ …(mình cũng ko rõ nữa nhưng chắc chắn là xếp sau 2 cái kia) là công nghệ .NET
Hơn nữa, lĩnh vực web và mobile ngày càng phát triển rộng hơn so với desktop ( ko biết ý bạn ở đây có phải là phần mềm desktop hay ko? ). Việc tuyển dụng cho desktop sẽ hơi ít, tuy nhiên nếu biết C# thì chuyển từ desktop sang webapp cũng ko đến nỗi vất vả lắm ( còn trên linux thì mình ko biết, tham khảo Mono .NET )
Quay lại vấn đề của bạn, bạn biết suy nghĩ sớm về vấn đề nhu cầu việc làm là rất tốt. Nhưng có lẽ là vẫn hơi sớm quá. Nếu đã học C#, thì bạn nên tiếp tục trau dồi thêm kiến thức về C#, rất rộng (chắc cả đời cũng ko hết ) : Winform - WPF, ASP.NET : Form - MVC, Web Api, WCF … ( ngoài ra đừng bỏ mất OOP & design pattern nhé, nếu mới học vài tháng thì mình cam đoan bạn chưa thể hiểu đc hết OPP đâu ). Khi bạn expert 1 lĩnh vực nào đó, thì luôn luôn có việc làm với benefit tốt cho bạn, cho dù là C#, JAVA, PHP, C++ or …v…v.
Công việc thực tế sẽ bắt buộc bạn phải biết nhiều ngôn ngữ là điều k tránh khỏi, nhưng đừng lo, nếu bạn đã thành thạo với C#,OOP thì chuyển qua ngôn ngữ khác ko đến nỗi quá khó khăn.
Loằng ngoằng hơi nhiều nhưng tóm lại lời khuyên mình dành cho bạn bây giờ là, tiếp tục học C#, OOP, code càng nhiều càng tốt, càng thực hành nhiều project càng tốt và đừng quên nâng cao trình độ ngoại ngữ nữa nhé. Thay đổi về lượng sẽ dẫn đến biến đổi về chất