12 Jan, 2021
Việc làm
Tuần trước tôi nhận được email mà người viết nói “Tôi không có bằng cấp về khoa học máy tính hay kĩ nghệ phần mềm. Làm sao tôi có thể học để kiếm việc trong lĩnh vực máy tính?”
Ban đầu tôi nghĩ “Không có cách nào cho bạn có thể tìm được việc về tính toán mà không có giáo dục chính thức và bằng cấp” nhưng sau khi đọc lại email này nhiều lần, tôi quyết định trả lời bởi vì đây có thể là câu hỏi mà một số bạn cũng muốn hỏi.
Câu trả lời đơn giản nhất là bạn có thể thể tới trường, lấy bằng cấp về khoa học máy tính hay kĩ nghệ phần mềm và rồi kiếm việc về tính toán. Tất nhiên, không phải mọi người đều muốn tới trường hay có thể đảm đương được việc tới trường cho nên có các phương án thay thế.
Giả sử rằng bạn đã có bằng cấp trong lĩnh vực khác như Toán học, Văn học, Lịch sử hay Xã hội học, nhưng muốn nghiên cứu về nghề máy tính, thì lời khuyên của tôi là xin học một trường kĩ thuật mà có thể đào tạo bạn về kĩ năng máy tính rồi bạn có thể xin việc làm máy tính. Phần lớn các trường kĩ thuật cung cấp cho bạn chứng chỉ hoàn thành việc học và tuỳ theo danh tiếng của trường và nhu cầu của thị trường việc, một số công ti có thuê người không bằng cấp đại học nếu họ có chứng chỉ tính toán nào đó.
Nếu bạn không quan tâm tới việc tới trường hay không thể đảm đương được việc trả học phí thì tự nghiên cứu là phương án khác. Điều này có thể khó hơn để kiếm việc về tính toán nhưng KHÔNG PHẢI là không thể được bởi vì một số công ti có thể thuê bạn với giả định rằng bạn có kĩ năng họ cần. Sau đây là lời khuyên của tôi:
Bạn nên bắt đầu từ các ngôn ngữ lập trình cơ sở (Java, C, C++, và C #) và có hiểu biết cơ bản về cấu trúc dữ liệu, thiết kế (theo cấu trúc và theo hướng đối tượng). Bạn nên hiểu vòng đời phát triển phần mềm (Thác đổ, đưa ra tăng dần, và Scrum của Agilev.v.). Bạn cũng cần biết cách viết các trường hợp kiểm thử đơn vị hay mô đun cho dự án cũng như hiểu cách tiến hành kiểm điểm mã, kiểm điểm thiết kế và hiểu khá niệm về giám định chính thức. Đây là những kĩ năng cơ sở của người lập trình hay kiểm thử phần mềm.
Vì bạn không có bằng cấp hay chứng chỉ, bạn có thể muốn tình nguyện làm việc trong dự án phần mềm nào đó mà không có lương hay với lương tối thiểu để thu được kinh nghiệm. Nếu bạn có thể chứng tỏ được những kĩ năng này, một số công ti có thể sẵn lòng cho bạn cơ hội trong việc thuê bạn. Thực tế, phần lớn các công ti sẽ cho phép bạn làm việc với các kĩ sư cấp cao để nhận diện chi tiết đích xác về kĩ năng và năng lực của bạn trước khi ra quyết định.
Lời khuyên của tôi chỉ cung cấp cho bạn điểm bắt đầu để cho bạn có thể tạo ra bản lộ trình nghề nghiệp dựa trên cái gì đó có ích hơn là không có chút gì. Gợi ý của tôi dựa trên kinh nghiệm của tôi và nó có thể không có tác dụng cho mọi người nhưng tôi cũng lưu ý rằng nhiều người không có hướng dẫn nghề nghiệp để xây dựng nghề phần mềm của họ cho nên tôi hi vọng đây là chỗ bắt đầu tốt. Tôi cũng tin rằng bằng việc truy nhập vào website này, bạn có thể học nhiều hơn khi tôi chia sẻ kinh nghiệm của mình với sinh viên của tôi trên khắp thế giới. Tôi tin rằng nhiều người làm phần mềm sẽ đánh giá cao bản lộ trình tốt để thăng tiến năng lực chuyên nghiệp của họ và nghề nghiệp của họ. Chúc các bạn may mắn trên con đường nghề nghiệp của mình.
—-English version—-
Last week I received an email where the writer said “I do not have a degree in computer science or software engineering. How can I study to get a job in computer field?”
At first I thought “There is no way you can find a computing job without a formal education and a degree” but after re-read the email several times, I decided to answer because this could be a question that some of you may also want to ask.
The simplest answer is you can go to school, get a degree in computer science or software engineer then get a computing job. Of course, not everybody wants to go to school or can afford to go to school so there are alternatives.
Assume that you already have degree in other field such as Mathematics, Literature, History or Sociology but want to study for a computer job then my advice is to enroll in a Technical school that can train you in computer skills then you could apply for a computer job. Most technical schools do provide you with a certificate of completion and depends on the reputation of the school and the demand in the job market; some companies do hire people without a college degree if they have certain computing certificates.
If you are not interested in go to school or can not afford the pay the school tuition fees then self-study is another alternative. This may be more difficult to get a computing job but it is NOT impossible because some companies may hire you assumes that you have the skills that they need. Following is my advice:
You should start with the basic programming languages (Java, C, C++, and C #) and have basic understanding of data structures, design (Structure and Object oriented). You should understand the software development life cycles (Waterfall, Incremental release, and Agile’s Scrum etc.). You also need to know how to write unit or module test cases for a project as well as understand how to conduct code review, design review and understand the concept of formal inspection. These are the basic skills of a software programmer or tester.
Since you do not have degree or certificate, you may want to volunteer to work in some software projects without pay or with minimum salary to gain experience. If you can demonstrate these skills, some companies may be willing to give you a chance in hiring you. In reality, most companies would allow you to work with a senior engineer to identify the exact details of your skills and capabilities before making decision.
My advice is only provide you a starting point so that you can create a career roadmap based on something helpful than nothing at all. My suggestion is based on my experiences and it may not work for everyone but I also notice that many people have no career guidance to build their software career so I hope this is a good start. I also believe that by having access to this website, you could learn more as I share my experiences with my students all over the world. I believe that many software people would appreciate a good roadmap to advance their professional capabilities and their careers. Good luck on your career.