I will probably leave programming as a career.
This is fucking crazy.
Many people enter university not knowing the person they are, and take a huge chance on a program, for a degree, hoping that the degree and program and career lines up with who they are.
That was me.
I’m in University of Waterloo’s Software Engineering, graduating class of 2016. I entered university in 2011. In high school, we had to choose the universities we would be applying to. I enjoyed the Business and Communications? class that I took in Grade 10, which introduced Word and HTML. I took the next step up from that class, Computer Science, in Grade 11. There were ~15 people in the class, and most people played Counter-Strike after finishing their work, usually by copying code from me or my friend. I enjoyed the class as well, but there was no Grade 12 Computer Science class due to lack of interest. Still, I decided that Computer Science was a career that could potentially be interesting, and sent applications to Toronto Computer Science, Waterloo Software Engineering, and Toronto Engineering Science.
BEEP. Done. That is the last 5 years of my life decided like that.
I got into Waterloo Software Engineering, and with suggestions from my sister to move away from home and my parents, I took it. Waterloo for the next 5 years. Blink of an eye.
I entered 1st year riding on my high school wave. 1st year, 1st term consisted of 2 physics, 2 math and 2 programming courses. Math and physics were my favourite courses, so I still did well in those. Programming was my weak spot, and I almost failed the first programming midterm I had. It was really eye-opening. The same thing happened in my 1st year, 2nd term, where I did well in my physics courses, and pretty badly in my programming courses.
During my first co-op term, a lot of things in my life snapped. One of the things I did to stay focused was work on programming. I figured that I was in this program already, I couldn’t live with myself if I remained useless. So I worked on it.
I researched a little bit, and added a bunch of technology blogs to my daily reading list. I did a lot of research into what to learn and how to study. I went through programming resources r/programming, Project Euler, blogs and followed guides on how to get better. I dual-booted Ubuntu and elementaryOS so that I could have a real programming environment.
After a bunch of hardship over the next 2 years, lots of learning about the other skills you need to acquire to be a good programmer, communication, review, feedback, direction, I’ve reached the point where I really enjoyed programming.
I managed to get a dream internship at Microsoft that I royally messed up, and then had a second chance internship at Microsoft working on Windows that I didn’t hit out of the park, but let me feeling really satisfied with my progress. I spent my last internship exploring what options were available to me, and took a great job at a different company, on a different product, with different technology, at a different location than I’ve ever been before. And I spent the time trying to find out what really made sense for me.
I took a trip to Nepal before my last school term where I hiked up one of the Himalayan mountains and explored the city and tried to figure out my life.
The answer is, I don’t know.
I love software engineering.
I love what I have learned in the last 5 years. There’s been so much technical growth, and so much personal growth. I really highly recommend that students choose a degree that will challenge them technically, socially, personally. If that’s the one admissions advice I could give to high school students, it’s that. Making the harder, the scarier, the riskier choice sounds hard and scary and risky, but it will reveal so much more about yourself than if you had taken the easy, safe path.
My high school is currently on a school board evaluation list to decide whether it should be closed down due to lack of attendance. During my high school time, there were large brawls constantly underneath one of the staircases or in the football field. Sometimes there were stabbings and gun shootings. My school ranked bottom 100 in Toronto in terms of academic performance, but we did pretty well in sports to balance it out. I tried to ignore all the drama in the school, but living in that kind of neighbourhood and culture can really affect the person you become.
I visited my high school during a break, and while kids today are much more computer inclined, the idea that I was a huge nerd due to working at Microsoft was still too much. There is a huge dissonance between me and the average person at that school.
I went to software engineering at Waterloo primarily because I saw the word software, and I liked computers, and I saw the word engineering, and I liked math and physics. My sister told me to get out of the house, so Waterloo was far enough away that I’d need to move out.
5 years of my life, decided with an argument as strong as, “that sounds cool”.
Maybe that’s enough to live a life with.
That one decision spawned years of learning about software. Learning proper software development practices. Finding about all the ways software impacted our lives. Expanding my skills by applying the things I’ve learned to different problems. Looking for different opportunities to diversify my knowledge and grow my toolset. Taking challenging courses and opportunities to make sure that I force myself to invest in my skills.
That one decision turned the word software into a life of software.
At some point along the way, programming became fun for me.
Maybe it’s not so crazy a reason to make a living with?
At some other point, I realized I lost all satisfaction in life.
I used to be smart. I derived a lot of satisfaction with doing well in school and competing and fighting against others for my marks and to be the best. I lost that satisfaction some time in second year while I was re-evaluating my life. I stopped feeling smart, and I stopped caring about doing well.
I replaced that void with programming. I tried to replace the void with my other hobbies. I tried to put people in that void. I tried to put thinking in that void. I tried to put this blog in that void.
That void keeps me up at night while I think about what could have been.
My solutions generally involve risk. Risk, risk, and more risk. Taking chances and seizing opportunities. Flipping my life upside down and starting anew. Flipping my world upside down and looking at it again.
Living the rest of my life with this empty void sounds like the worst way to live my life.
Risks are scary. It’s hard to know where it will take you. But if you knew where the risk would take you, then it’s hardly a risk at all, isn’t it?
I’m taking time off. Maybe I’ll leave software. Maybe I’ll come crying back. Maybe I’ll move around in Africa, Asia for 6 months re-discovering my identity. Maybe I’ll join an NGO. Maybe I’ll join the army. Maybe I’ll work for an orphanage.
Maybe, I won’t know what to do for a while, and maybe that’s alright.
If it doesn’t go well, at least I’ll have a cool story.