Hi, everyone, I need some suggestions for my programming learning plan and career options. Thanks in advance for you help.
About myself
Last fall, I obtained my PhD degree in Education from a university in Canada, and then have been working as a part-time quantitative researcher and sessional instructor in the small city where the university is located till now. My contract for this position will end in February or March next year. I’m not a Canadian citizen or permanent resident (PR) yet. My PR application is still under review, and it will take me about another year or longer to give a result. My status now in Canada is as an international worker with a three-year work permit.
I’m seriously thinking changing my career to software engineering area. I feel a passion in this area for a long time, but in my late 20s, I felt that it might be too late to change my career, too late to learn a bunch of new skills. But after I obtained my PhD last year when I was 32, the “too late” thoughts disappeared little by little. Now I feel, I’m running out of my time. I should hurry up to have a try in the field I feel passionate about. I want to change my career because of many reasons and passion is not the most important one. If you are interested, you can see my reply to this post.
As an international worker with a work permit, there are some barriers for me to access education in Canada. First, I cannot go back to school for part-time or full-time programs unless I give up my work permit and apply for a new study permit (you cannot take on campus courses under a work permit, and you can only work for limited hours under a study permit). I don’t want to do so because I need a job to support myself financially. Also, permit change, school application, and on-campus learning can be very time consuming. Second, the tuition fee of university and college programs for international students or workers is 3~5 times of that for PR or citizens, which is not affordable for me.
Good thing is that I can learn through fully-online programs, for which a study permit is not required and many fully-online programs does not have extra charge on international workers or students (Many universities put their course offerings online nowadays due to COVID. But these course offerings are still deemed as on-campus courses because these programs can be turn back to a on-campus status when pandemic is over). So, online programs / courses will be my first choice.
My learning plan
Although I had coding courses (some c++ and visual basics) in high school 15 years ago, they were just introductory courses and I forgot almost all of them. In the past ten years, as a quantitative researcher in education area, I’m okay with math and statistics but I don’t know whether this knowledge can contribute some to my new learning journey. Learning to be a software engineer, I think I have to learn from scratch. The following is two tentative learning plans I made for myself, on which I’d like your opinion.
Plan A
Step 1. Computer basics. As I have little knowledge in computer science, I feel I have to learn the computer basics. The materials I would like to use is the CS50 Introduction to Computer Science by Harvard University on Edx. The learning time for this course is about 220 hours. I would like to pay 242 CAD to get a certificate for this course. This course is about the basic knowledge on abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development. Link: https://www.edx.org/course/introduction-computer-science-harvardx-cs50x
Step 2. Web development. In this step, I would like to sharp my web development skills. The material I would use is the CS50’s Web Programming with Python and JavaScript by Harvard University on Edx. The learning time for this course is about 120 hours. I will also pay 242 CAD for the certificate of this course. Topics in this course are where CS50 leaves off and include database design, scalability, security, and user experience. Link:
Step 3. Learn more about python and javascript on free code camp or udemy. I’m afraid that the knowledge about the two programming languages in step 2 is not enough. I will check freecode camp and udemy to see what I leaves off on these two languages to make myself job ready.
In step 2 & 3, I will also try to do some personal projects and put them on my resume.
Step 4. Engaging more in the communities. I already have personal account on github, leetcode, and stackoverflow, and will use these websites in my learning process from the first day. After step 1, 2, and 3, I will try to engage more in the communities on the three websites. I mean, learn more from them, do more practice on them, and help more people on these websites
It will take me about half a year to reach the step 4. I will update my resume and prepare for the interview along the journey. Then I hope to land an entry level job.The following are my questions till now.
Q1: How about the 4-step learning plan?
Q2: Without a degree in computer science and with only the 4 steps learning, is it possible to land a job? I mean whether the HR will decline my application because of my degree, especially in a Canadian context?
Q3: What kind of entry level job should I seek for (front end developer, back end developer, full stack, or QC/QA (quality assurance/control)? And what else should I learn for that entry level job? I really hope that the new job is not so overwhelming so that I can have a smooth transition from academia to the new area.
I will continue to learn in my work and spare time after the job. At the same time, I will try to apply for a degree in computer science.
Step 5. I’m thinking to apply for the online master of science in CS program (OMSCS) of Georgia Tech next year (the application deadline for fall 2022 is March 10, 2022). I need a degree because I find many jobs asks for a BS in CS. I hope to have more opportunities with the online master degree. Also, I think I need more knowledge in computer science and software development. I choose OMSCS because it is affordable (7000 USD for the program), flexible (fully-online and one can finish the program in up to 6 years), time saving (I only need to finish about 10 courses to get the degree), and prestigious (although it is an online master program, Georgia Tech is prestigious, especially in majors like computer science). They accept students with a bachelor degree from other area as long as they can provide proof that they are academically ready for the program. After step 4, I think I can meet their requirements.
Q5: I like your opinions on my step 5. Do you feel a bachelor degree in computer science or software engineering is better than OMSCS program? If so, another possible choice for me is to apply for some online bachelor degree. But there are not many online bachelor degree and it takes longer to finish the BS program.
Plan B
Another possible choice for me to apply for a competency-based online bachelor program. In a competency based program, I can pass the course as long as I prove that I master the competency, and I can finish the program in shorter time, like the program in Western Governer University. My university experience can exempt me from some general education courses and I can finish the program within about 1 or 1.5 years.
Q6: Do you feel plan B is better?
Thanks very much for your help!!!