TLDR: Worked for 10+ different companies, attended lots of hackathons, attempted to build 30+ different side projects, became a competent developer and increased my salary by more than 5x. Jump to lessons learned or continue reading for the chronological order of most important events.

Year by year.

This year I will write my closing thoughts as I think I hit a significant milestone in my life and I think it’s a time to look back and see what I went through on my web development journey since I started doing web dev at the age of 13. 1 paragraph per year.

10 years ago I was just experimenting with web technologies - PHP, HTML, CSS. I modified content management systems (CMS), watched videos of people code and played copy/paste warrior with StackOverflow. My first webpage was based on a modified CMS for a gaming clan, and I was dreaming of building my own matchmaking service (we used IRC to find CoD2 matches) - 10 years later I am working on this kind of service, but more about that later…

9 years ago I released my first project to the public, with that I mean it wasn’t just something I shared with friends but something I posted to thousands of people to see. It was a web-based game a mix of Travian and other similar games we were playing in 2009. It’s what really hooked me up with development. Seeing people react.

You can probably see where I am going with this… 8 years ago I took game development to another level, I learned the basics of OpenGL and SDL and distributed my simple game to a couple of friends. I realised the accessibility of the web is what makes it really special and that’s where I wanted to continue.

In 2011, 7 years ago, I was in my second year of computer science oriented high school. I think it’s the first time I actually used Linux[1] as my desktop and played a ton with servers and networking. With my classmates, we also had an amazing opportunity to work in Ireland for a few weeks thanks to our fantastic teacher[2] who arranged all of it. I got familiar with English-speaking working culture and saw it wasn’t that different from Slovenian so I got lots of confidence I can in the future work in UK/US.

First server

My workstation and my first server

6 years ago it was an intense year and probably deserves a blog post on its own. I worked for 2 different companies, part as necessary schoolwork practice and part my personal incentive to work for a local startup[3]. 2012 was spiced by winning some CS competitions and by participation in local hackathons. With my friend, we also managed to get selected for Slovenian startup incubator. We didn’t manage to release a product or make a successful company due to lack of experience (we were 17 and 16 at the time!), but I learned a ton about project management, company ops and general startup thinking… I’m really thankful for all the experiences that year.

First hackathon

Rudi on the left who I met that day and Luka, a classmate after hacking for 24hrs with much-needed beers. I’m still in contact with both.

5 years ago I worked on a project for a company I previously worked for, and I started to work for a local startup on a SaaS product. Learned a lot on how to work with teams and saw the proper process of delivering a product. I started a BSc of Information Technology but dropped out next year after successfully finishing the first year.

Startup weekend

Hackathons are great. Go if you can.

After dropping out of College 4 years ago, I didn’t see myself continuing it, so I decided to look for opportunities abroad. Quite soon I found myself a job in London as a web developer working with my usual web stack PHP, CSS, HTML and Javascript.

First workspace in London

My first workspace at my first job abroad.

I stayed with that company for a few of months until I found myself a job that worked with technologies I was more interested in (Javascript instead of PHP). I was optimising for learning, not for salary, name or position. I think it was the first time I was properly introduced to testing (I wrote some in the past but didn’t fully grasp their usefulness as testing wasn’t integrated with CI/CD process). This was 3 years ago.

After finishing a few projects for that company (2 web-based projects, 1 react native), it was time for another challenge. I started with contracting. Initially for the same company (so I figured out how everything worked) and then I proceeded to look for something different. I figured it was time to be part of a bigger development team and learn from there, as I mostly worked for startups with small teams before. I also started learning Elixir 2 years ago.

Last year as I continued to contract and work with most senior people so far, I also worked on a side project which I later tried to turn into my own company with a proper team, but this time I think it failed due to miscommunication with me and my co-founder. Lots of lessons learned there and certainly deserves a chapter on its own. Note: this is just one of many experiments that failed, but this one was the first one where I decided to turn it into a proper company.

This year, 2018 marks 10 years since I started web development. I work for a company that makes a product I initially thought of 10 years ago but couldn’t execute it, meaning I work on something I consider a product of my dreams. It’s dope, and I love it.
I’m looking forward to 2019 and the challenges it brings.

Lessons learned:

  • Optimise for learning. In the beginning, I completely ignored the money aspect and focused on opportunities that had pair programming, work in teams with more experienced people than myself and good working practices such as having tests and QA teams. This proved to be great to develop a T shaped skill set - wide by knowing many things, and tall as knowing 1 thing really well in my case JavaScript.
  • Developers are in demand. Use that. Ask for what you think you deserve and likely you will get it. From better work times to salary. It’s hard to ask because it’s not in Slovenian culture to do so, but employers definitely need incentive sometimes. At the end company will hire/keep you if your value - your cost > 0. Developers are in demand, use this to your advantage.
  • Invest in people skills. Programming is just a part of the job, it’s not unusual to work in a company where it amounts to less than 30% of your daytime (reviews, meetings and planning can take a significant chunk of your time). It can make your job much easier if people are happy to help you, sometimes smile is enough. Nobody likes to work with a grumpy developer who is “right” all the time.
  • Try contracting. According to my research, most devs are afraid to do contracting due to administration overhead, but to be honest, it’s not that hard. Pay £120/month for an accountant and earn (sometimes) double of what you did before. See this on how to switch
  • Code is written to be maintained. More often than not the most important part of the good codebase is the clarity and readability of the codebase. Is it fast? Is it clever? Is it small? These are the last questions you should ask yourself. First one should be: Is the next developer in a couple of weeks gonna know what I meant here?
  • Networking is important. I got at least 3 jobs from recommendations of friends.
  • Networking is not about collecting contacts. When I read that you have to network when I was younger I thought of going to conferences and gathering emails/contacts is what networking means. It felt forced, and I didn’t want to be part of that. Now 10 years later I see that actual usefulness came from my small network of good friends and almost none from the people I took contact cards of at the conferences.
  • Overestimate Overestimate the projects but clearly explain it to the client why that is - software is incredibly hard to estimate correctly.
  • Don’t charge per project. Considering how hard is it to make a mistake estimating you increase the chance of screwing the project by charging for a project. It’s to protect clients and yourself, clients need expected costs, and you don’t want to work for free.
  • Businesses will hustle you. Techniques such as telling you money is running low and you should switch from contracting to perm positions are common, holding you at internship level as long as possible is common (haven’t happened to me, but I’ve seen it happen multiple times), breaking verbal promises is common, boss avoiding you for the time of the rise? Nothing new. Companies benefit from you, and they will try to squeeze out as much as possible. It’s normal and nothing personal.

Find me on twitter @meznaricnet if you are interested in my content or if you have anything to say.

[1]: Thanks to Professors Zoltan S. and Marjan Č. for inspiring me to try Linux and teaching me a lot about it
[2]: Thanks Nadja J. P. for organising the trip/abroad internship
[3]: Many thanks to both Gregor and Jernej of Motiviti as well as guys at Relief for taking me.