January 23rd 2020

One AP degree in Computer Science later


The 22nd of January. The date I will remember for times to come. I just walked out of the examination room, exhausted, but glad it's over. It was the moment I had been waiting for ever since I started my education two and a half year ago – and during the last 3 months, it felt as if the end would never come.

Getting to the point where we felt we had an acceptable product to hand in for the exam, took all our combined effort and demanded lots of sleepless nights, especially as the deadline loomed right around the corner. But in the end, it was worth it. Now when it’s over, I want to take a look back at the long road which got me here.

Just like that, two and a half years of education - done, in a single day

Me outside the examination room, after having received my grades.

The last three months at TV 2 summed up

Writing our final exam project at TV 2 has had its ups and downs. Overall, it has been a generally enjoyable experience: we have learned so much about Docker, Gradle, Jenkins and Java just to mention a few things. The most memorable thing I will never forget is the day before the deadline, on which we stayed awake for 24 hours and didn’t go home to sleep before we had turned the project in. The video I included here is a time lapse of us, working in the late evening; of course whether to order pizza or not was not a question.

It took me a while to recover from our little stunt and get a normal sleeping schedule again. Luckily that was a one-time thing, or so I hope.

What did it take to get there?

I had to go trough some personal changes in order to prioritize my education in a way that made sense to me. I don’t want to make it sound like what I did was an impossible feat, because anyone can complete their education if they really want to.

This post is about the process that got me through it, which can differ from person to person. I want to share my thoughts and the most notable experiences I’ve had during my education to help shed some light on how I made it to the end.

Finding the correct balance between your social life and studies

I wish I had found a way to structure my time from the very start of my education. It wasn’t until the start of 3rd semester that I realized I might need start changing something about the way I spend my time. Looking back at my first semesters, I can easily tell that I spent too much time on my social life, not leaving enough time left for what also mattered: my education.

I felt I didn’t remember the things that I learned - or understood them well enough. It was just an internal feeling, but it was so intense that I figured something wasn’t quite right.

I especially remember how not knowing the design principles of SOLID, even though we had a whole week dedicated to learning it, made me feel. I was disappointed in myself, and I wanted to do something about that. It’s now I must learn these things, otherwise what’s the purpose of the education?

I had to find a better balance between my social life and studies. That meant, not being able to go for some beers a Tuesday evening and skipping movie night that one time. I really had to balance it better in favor of my studies, otherwise I would not be able to keep up.

Me at TV 2 one late evening, trying to stay focused.

I had to be harsh and strict towards myself. I told myself that, I would have all the time to socialize have fun later. The time I will be dedicating to my education is very minor compared to how much time I will have when I am done.

So I went through with it. I adapted to the idea of saying no to social activities when the temptation presented itself. Don't get me wrong - if I felt I had worked hard enough or wasn’t behind on my studies, I would still go out, it shouldn’t be a total blockade. But it did mean that, sometimes, I would stay at home, programming or practicing design patterns.

Self-discipline and personal development

I remember how I was introduced to the term self-discipline. It was a part of a quote that one of my friends put up on their Instagram stories (of all the places, I know right). I read it and I felt inspired by it, so I found that exact image of the quote on Google, printed it, and smashed it up on my wall at home.

I had been looking for something to look up to, something that justified my decisions and priorities on studies – I had to practice self-discipline. I pledged I would focus more on my career, and as the first step of doing so, I wanted to make my website more presentable.

The portfolio task - and the roots of this website

In the beginning of 3rd semester, we were tasked to make a portfolio website where we could post what we studied, a kind of timeline which proved that we were not wasting our time doing nothing. We had to hand in a URL to the teachers so that they could follow up on what we were doing, as it was self-study the whole semester.

Now this was a fun task in particular, because I already had experience with building web applications from before I even started. It was an awesome assignment. Within 1 week I had a functional portfolio, built from the ground and up - it was crude and not very pretty, but it would get the job done.

For me, the turning point was my website, that's for sure

At the beginning of 4th semester, I asked myself this; why not take my so far relatively crude portfolio website, and turn it into something a bit more professional to represent me? I got to work on upgrading the design and code base of the website, and has since then, turned it into this very website that you are seeing today.

The main priority being a fully functional blog, so I gave that the most attention.

I demonstrated self-discipline and proved to myself that I could take my career into my own hands, and started building the foundation of what is to become an adventure into the IT-world. I had never written blog posts before, but I discovered that I liked it, it helps me develop myself by allowing me to express my thoughts and write about my life. I intend to keep adding features to the website over the next couple of years, as I grow more experienced with programming.

The ability to say "this is good enough"

The next thing I want to talk about is something that is on every programmers mind.

One of the major issues I faced when programming, was when to call it enough. When it comes to writing code, there is not a single correct way of doing it, but several, often hundreds of different ways. You can write a function which performs a certain task a hundred different ways.

But when can you consider something you wrote as “good code” ? More often than we think, but that’s not always how it seems - as the world of programming is a place with a lot of different opinions and mindsets. You don't want to be stuck in a verbal fight between programmers, trust me. Yes, we attempt to keep it civilized, but sometimes the other guy just has it all wrong, am I right?

Sometimes, you got to ignore the errors for now and deal with them later.

In most cases, the code you are writing is very standardized. A problem first arises when you start writing complex algorithms or start exploring a new area. How do you assure that the code is of high quality? Surely, we have all heard that UML can help on that, but it’s not always you have that available, nor have the time to make use if it.

I have had to develop an ability where I can look at some of my code and tell myself “this is good enough”, otherwise I can keep re-writing the same function again and again, out of fear that its not living up to “the standards”, but what is that even?

Who defines if the code you wrote is good enough? You do. Otherwise you will waste so much time being stuck at this one function for too long, which doesn’t benefit anyone.

Practice, practice and practice

The last thing I want to talk about is the importance of practice. Sometimes you just need to do the same again and again to become better at something, and I think this also applies for programming and coding practices.

As mentioned earlier, it doesn’t benefit anyone that you spend too much time on the same piece of code. So, you make it work, and then leave it as it is. Then, you can come back to it two or three months later, with new knowledge - and improve the code once more.

I have had to do a lot of repetitive tasks; one example is learning the SOLID design principles. It’s something you defiantly want to be familiar with as a programmer, but, there is no way you can learn those just by studying them once. You will come back, all the time until you understand all of them (you know you’re there when you understand the Liskov Substitution Principle). It can feel very mundane to practice the same again and again, but in the end, the benefits will outweigh the time you spent on it, and over time, you will start to know coding practices like the back of your hand.

Let's wrap it all up

The entire education has been a mental journey through the cosmos of programming. It came as a surprise to me how much I had to sacrifice (the decisions I had to make) in order to make it to the end.  Social life can take too much of your time, so make sure to keep that in check. The boring stuff matters too. So does your mental health, so make sure to build up the willpower to get things done - have control of yourself - practice self-discipline, I promise it will be super rewarding in the long run.

Don't push yourself and get stuck in your code. You have to put a limit on how much time you spend programming a certain feature - and practice. Nothing big ever came from just one day of coding. It takes weeks, if not months, to build something amazing.

I think I figured it out, what it takes to be a programmer: You have to be an adaptable nomadic monster with hunger for coffee and code. We are a species of our own you know.

I can’t wait to see what the future holds. I am proud of my AP degree in Computer Science - it makes me want to keep improving and learn more to uphold my new title.