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.
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 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 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.
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. 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.
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.
Hackathons are great. Go if you can.
My first workspace at my first job abroad.
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.
- 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.
: Thanks to Professors Zoltan S. and Marjan Č. for inspiring me to try Linux and teaching me a lot about it
: Thanks Nadja J. P. for organising the trip/abroad internship
: Many thanks to both Gregor and Jernej of Motiviti as well as guys at Relief for taking me.