How I became a programmer

May 01, 2019

Or all the struggle, doubts and joy that learning to program gave me

My background

My story with programming started at the University. That’s very late, compared to the best programmers I know - they usually started no later than 14. In fact I had some computer science classes at school, but I did not learn anything there, perhaps only formed the belief that programming is not for me. I remember writing some trivial programs in lower secondary school (making the turtle move ;)) and did not particularly enjoy it. In higher secondary school I focused mostly on partying, and unfortunately my teachers did not do too much to ignite the desire to learn at that time.

Obviously I had a handicap, compared to those guys who started making websites at the age of 12. Now it is fascinating to me - why did I not enjoy it? Possibly I had no one to show me the beauty of programming and telling the computer to do what you want. Although my father is keen on new technologies, he got us connected to the internet quite early (especially for polish standards), he just needed the computer for his home-office tasks. So I used the Internet only as a receiver, without a slightest thought of putting anything there. I played all those stupid games online, downloaded loads of music, then movies, spent hundreds of hours chatting with my friends - but I never thought I could put something online.

To make things even worse - I miserably failed in the programming classes at the university, and believed it was not for me. I was studying quantitative methods in economics (sounds wise, huh? Often it’s called econometrics) which forced me to program a little in statistical environments, but thats far from a programmers job. And good friends helped me a lot ;)

On the first year of my MA studies I decided to take a basic course in Java. I was already working and realized that perhaps programming could lead me to a much nicer lifestyle that working in finance. Although the teacher was a cool guy, I failed miserably. After initial excitement, the deeper we went into the course, the less I understood. Perhaps there was some programming experience required for the course. Or I am simply not that bright.

It took me a few years to change my mind and become closer friends with computers.

Motivation

It all started again when I was looking for some side gigs. I was working as as a financial analyst. I had some great coworkers and the best boss ever, but the repetitive daily job that I have been doing for almost 2 years then was making me mad. I realized that I absolutely do not want to follow that kind of career - even though it might turn profitable. Learning about accounting rules and regulations, adjusting to them and generating nice tables with numbers was not for me. To be honest - I even enjoyed learning how accountants can be really creative and make ‘money’ out of nowhere. But it was’t ‘exciting’ for long. I needed more creativity, and dreamt of a job that would not mean doing the same things over and over month after month, filling up excel tables with numbers that would be correct (and satisfy my managers).

The thing I enjoyed most in my final months of working there, was the opportunity to program a little, making my tedious tasks more automatized. At some point I realized that:

  1. I can make use of programming at work and make my life easier
  2. Writing those simple programs (macros, in Excel world) can be really satisfying!

I wanted to do something else, but I also needed to earn more. Looking for another similar job was not an option as I knew it would not make me any happier. I started looking for some gigs online on websites like freelancer.com. I had thought I could offer some financial modeling or data wrangling services. I couldn’t find precisely what I imagined, but I found quite a few jobs for simple programming tasks in Excel’s VBA. (What’s programming in Excel?) I applied to them, brushing up my story a little. Unexpectedly I quickly got two gigs. That was something new for me - getting paid for learning new skills. Fortunately I was able to complete those tasks. It was hard then, my hourly rate turned out to be miserable, but I was actually getting paid for learning to progam. How awesome! That’s one of the biggest benefits of working as a programmer. Obviously it is not always like that (well usually it’s not) but still. Being a programmer you learn a lot and that is something I truly appreciate about this job.

Learning foundations

Getting those two gigs was very motivating. Not only getting them, but rather finishing them. It made me realize that I don’t need a huge bag of experience to do that kind of work. After getting past those few jobs found online I decided to start learning for real. And I learned a lot. In fact I was learning too much - bu not in an organized way, too randomly, not having any plan of curriculum. (A plan that I actually needed then should be something like that: … ). I started with deepening my VBA skills to be able to get more gigs like the first ones quickly. I used VBA at work wherever it was possible, probably much too often. I moved back to my hometown at that time to spend more time with my girlfriend and got a new job at a hospital consultancy company. That was basically a software company that analyzed data from many hospitals and suggested various optimization techniques for them. I was hired mostly as a consultant there, but had some simple programming tasks and strived for as many as possible. Plus 90% of people working there were developers with whom I could hang around, ask them questions and absorb some knowledge by just listening to their discussions.

By then I knew I’d much prefer to be a frontend developer than a VBA guru - simply because working on front-end gives you the nice visible effects of your work. A good old friend of mine, the nerdiest of the nerds I know advised me to learn javascript then, arguing it is becoming ubiquitous and will run even in my fridge in a couple of years.
I recall one of the first courses I took was some beginner JS from www.codeacademy.com. It was cool - I remember how excited I was to make the browser create an alert! This is so trivial now, but really made me amused then. This basic JS course was fun, but after finishing I had absolutely no idea how I could put this knowledge in practice. After finishing what they had available then I still did not know how to put a website online. That was just the beginning of my learning journey.

The good old friend helped me again here - suggesting to take up some courses on teamtreehouse.com. I did all the front-end courses I could do there. I spent hours every day listening to those guys talking at doubled speed to absorb more knowledge, and following all the exercises. I had learning failures again - I started a rails course and did not understand what was going on there. Well, backend stuff - I had no context for that. Perhaps not knowing many terms that were used there was a blocker. ‘Rake routes’, ‘database migration’, specs - I had a very vague idea of what it all could mean. And it was all not working on my computer like on the lecturers’ one. I was very bad at reading error messages then. I was afraid of them. But I did not give up. Well, I gave up the Rails course, and focused on learning meteor.js, as the good old friend advised. With JavaScript on the backend, it was easier to comprehend at that time.

Working on enjoyable private projects

I had two projects in mind I wanted to work on. The first one was the ‘better TODO app’. I built it on top of meteor.js introductory tutorial. It was awesome! I was really making things that were working online. Of course I did not show it to anyone, because I wanted to make it perfect. So I worked on learning a bit by bit, and in fact I used this app for quite a long time. I did not show it to anyone. The other project was recreating Rapper’s Vocabulary Rating by Matt Daniels for Polish artists. That was a bigger project that took me ages to finish, but I learned a lot working on it. I had to learn web scraping, data processing, data visualization, and python for data analysis. It was extremely satisfying and got quite popular here. even though I had published it a couple of years ago I still get an email from time to time asking me to add another rapper there.

My first web-dev gig

By that time I have already announced all the people around me I want to be a programmer. I wanted to convince my boss to let me recreate the company’s website. It looked like from the nineties, and I felt then it was unacceptable for a software company. Now I understand businesses a little better and understand why he did not want me to do that. But he must have told our accountant that’s something I want to be doing. One day the accountant asked me if I could recreate his wife’s art gallery website. Wow! Someone wants me to work on web development! Even though I had finished some courses by then, even I was delving into meteor these days I decided to create this website on wordpress. I have created a couple of them before - in the end to make a simple website there it’s just a few clicks. I did not have to program too much working on that project, it was mainly styling the theme and understanding the plugins and their interactions. Still - I was delighted to earn by doing web development. Even though my hourly rate was also miserable here - surely not more than $3 per hour, probably closer to one buck.

My first real job as a programmer

It was much less expected than the art-gallery job I got. I was not actively looking for a job like that for two reasons. Firstly, I felt I still don’t know enough to work as a dev. Now I think it was only partially true, having interviewed some developers and knowing how little some people know when they apply to work as a junior. Secondly, I did not want to reduce my income, and believed that a junior developer role would force me to do so. So here comes the good old friend again. One of the most hard working people I know. Probably the best programmer I know personally. He calls me saying that most probably he will be coming back to Poland from the US to open a software house. And wants to hire me and a bunch of other friends. Roughly half of them were professional programmers, the rest was like me - just a bet. He hoped that we would learn hard and become good developers. The first month working together was awesome - we were actually doing mob programming, when he showed us how to do the job. I felt I learned more during those first two months than ever before. By then I was sure that’s the kind of work I want to be doing. It was 3 years ago and I did not regret even for a second the decision to change my career.