On becoming a professional software developer from (almost) scratch
Imgur: "It's older code, sir. But it checks out."

On becoming a professional software developer from (almost) scratch

It is a well known fact that during their careers, most people end up in an industry that has little or nothing to with their college or university degrees. For me it hasn't been any different.

Although I have always been fond of working with computers, I never pursued any studies in IT. From around age 7 onward, I was constantly thinking about computers and making them do what I wanted. First I had a Commodore Amiga500, then a PC. I got into linux and dabbled with various programming languages. After deciding not to continue my scientific career in cognitive psychology with a PhD, I decided I would give this innate compulsion a chance and set out to become a software developer.

Jobhunting

I looked and asked around for IT jobs, anything that could get me jump-started. I was a bit naive - I had no credentials whatsoever as a developer. Needless to say, the job searching endeavour proved fruitless. Nobody was looking for a developer with zero training coming from a completely different background. But a lot of people tried to offer jobs that weren't what I was looking for or never contacted me after initially seeming enthusiastic. I did receive some emails. Not the rainbows and fireworks kind.

For instance, I was once told "Okay, you're good at writing python - but you have no experience in an actual IT company". Correct, I stated I was switching careers, what part did they not get?

Another company told me "We don't have developer positions open right now, but we are looking for people to man the helpdesk". Really? A callcenter? Thanks but no thanks. Been there, it sucks, and you'll probably never be promoted from callcenter guy to developer.

A reply I got a few times was "We don't have work for you right now but we'll definitely contact you when we do". Never happens.

But the weirdest rejection by far was "We are very impressed with your skills and think you have what it takes, but we believe your personality is too activistic." -- I guess there's corporate and corporate. Wow. Sure, I had a wild haircut. But Wow.

The training agency

By the end of it my cash was running out fast and I almost started looking for a filler job. The sort of work I did while studying. Some mindless job in a warehouse somewhere. Minimum wage and being around people with whom I can't level. But then one day a friend of mine told me about a training agency (YoungCapital Professionals) that had a program to jump-start non-developers into a developer career.

The idea was that you'd spend one year as a trainee at the company that hired you. During that year part of your salary (which was pretty good for a noob) would be used to pay off the training fee. Once the year has passed, you have paid off the training and are free from the contract. By extension, you are free to negotiate your own terms of employment with your bosses.

This sounded like it might be my golden ticket, so I contacted the agency. I told them what kind of job I was looking for, which languages I had experience in and what I was hoping to learn. The training agency was quick to offer me a spot in a class aimed at PHP backend-development.

At first I was hesitant, because I hadn't heard the best stories about the general state of the PHP language, and mistakenly thought it was a dying language. But I reasoned that once I had a foot in the door in the software industry I could determine the truth about PHP. If necessary I could always switch languages at some later point. I signed up, completed the training and was now propelled into the job market, backed by the training institute.

The Job!

The next thing I remember is that I was having the funniest job interview I've ever had. Two guys (my future bosses) from an e-commerce development startup in Utrecht called Itonomy wanted to interview me. I had expected to meet them at some cafe in Amsterdam. It turned out the cafe no longer existed - so we settled for the McDonalds instead! The mood had been set and the conversation was quite pleasant. That same afternoon I got a call that I had just landed a job as trainee back-end developer.

The first months were easy - getting to know the company, setting up your tools, gaining access to all the repositories and services, working on tiny tickets, and generally settling in. There was not much expected of me, and I spent time reading up on the platform I would be working on and examining the project structure and source code.

The rest of the first year was very hard. I did not yet understand how to deal with clients. I had trouble structuring my work. I was always having trouble meeting deadlines, because somehow I always ended up implementing a super-complex solution where a few classes and a few hundred lines of code would have sufficed.

My PHP skills were lacking at that time, so I created many bugs and many performance bottlenecks, causing rework and unhappy customers. I started to feel lost, drowning in a sea of budgetary pressure, questions from the boss. My colleagues did their best to help me with my code but I still felt like I was the worst developer ever. I didn't sleep well at night and didn't eat well anymore. I was close to the point of saying "I'm in over my head here".

The learning curve

But I couldn't give up. I'd only just started and I knew it would be a very steep learning curve as a newbie to be jolted into the position of a real developer on a real team with real budget and real constraints. I not only had to learn a language much more thoroughly than I thought I did, I also had to learn about my own limitations.

So I didn't give up. Instead I gave it some extra elbow grease and with the help of a colleague I was able to complete the project. Don't ask me what the internals look like, because if I have to describe them I'll probably start throwing up. Somehow though, it still runs and has been running without much trouble for the past 2 years. I did many projects after that, each time improving my skills along the way and learning more and more of the intricacies of programming.

The captain hindsight cycle

Every project I did lasted about 6 weeks to two months - a time by which I already hated my earlier code for that project. I'd start a new project and sure enough, after 6 weeks I could notice that the way I coded then was way better than the way I had coded those 6 weeks ago. I guess this is familiar to any developer out there. It was about accepting that old code is old code and that I had learnt a great deal each time.

I had started to feel confident in my abilities. I had reached a level where I could handle a lot on my own. My code had improved dramatically, it took me much less time to analyse and debug code and I was much better at estimating how much work something would be. And funnily enough, I had come to really like writing code in PHP.

The rewards

It's been almost 2 years since I started this adventure at Itonomy. I am very happy here. I feel at home with my team, my managers, my bosses, my office. It took a lot of frustration, introspection and hard work to get there. But being part of a healthy, growing company is awesome. Especially having seen it grow and incorporate new team members and new methodologies and seeing the continuously improving professional standards. This experience of witnessing from the inside the transition of a company from a small startup to a serious, competitive company is an experience I wouldn't have wanted to miss.

So, for anyone out there aspiring to switch careers and become a developer - no matter your base skill level - give it a shot!

The three points

To sum it up, I think the most important things for new developers are:

  • Don't give up. Life as a software developer can be overwhelming at times. You will sometimes have to deal with angry or pushy customers. You will do stupid things with bad consequences occasionally and will have to deal with those consequences. You will sometimes want to throw your laptop through the window trying to fix hard to track down but critical bugs. You will sometimes have to do the less interesting tasks. Always remember not to be angry at yourself, but to learn from it all. Because mostly you will be learning and you'll be building really cool things with a bunch of pretty interesting people.
  • Challenge your weak points. I've seen experienced developers create bugs by writing sloppy code in a hurry due to budgetary constraints - that later had to be debugged because it had some errors. I've also seen developers write code that no-one understood apart from themselves, which sucks when you have to fix it. I myself as a junior used to deliver Frankensteinesque bags of spaghetti PHP code. 400-line functions with 6 levels of nesting and a lot of code duplication. No hint of PSR2 in sight. My weak point was that I just wrote what I thought would work. But I was used to writing algorithms and tools for personal use in python - mostly monolithic scripts with sometimes a hint of OOP. I wasn't yet comfortable with OOP PHP and I didn't know design patterns at the time. I immediately started reading about these things and my understanding of programming and the responsibilities of a developer increased dramatically.
  • Keep learning. Read about new technologies, new coding standards, new ways of doing things. See how others tackle problems. Compare their solutions. Compare the solutions to the relevant coding standards. Try to see if you can characterise the implementations - what design patterns? Try to come up with improvements. For me, refactoring older code helps me a lot. So does familiarising myself with some new deployment technology or brainstorming with my team about what we can do to improve our internal processes, code quality and time to market within the company. There's always someone who has a great idea you can learn from.

Mooi verhaal Daniel! Wil jij net als Daniel developer worden via een YoungCapital Professionals IT traineeship? 22 mei starten we weer een Java klas! Check onze site voor de vacature en meer informatie

It's great to read about your story and how you overcame obstacles! Way to go Daniel.

Like
Reply

To view or add a comment, sign in

Others also viewed

Explore content categories