So I thought in this post I’d do something a bit different and I’ll go through my journey as a professional software engineer.
The way that I got into programming was I started when I was 12 years old. I got my first computer and I was just fascinated with making applications and I was really curious about how to make your own programs on the computer.
I think it was a Windows 98 or Windows ME machine, so very old from modern standards.
I looked up how to program and I asked my parents and they didn’t know because, I mean, it’s not something you know — especially back then — unless you’re a professional working with computers.
I started looking on the internet for how to program. This was the time of MSN Messenger, so I had quite a few contacts that I had accrued somehow and there were some technical people on there, so I chatted to them a bit and I started to write these batch scripts — Windows bash scripts. Which was basically a command line script or a shell script for Windows. You write a list of commands and it does various things.
I made a website using Geocities I think. I don’t remember what the hosting platform was but it was one of those build your own websites with a WYSIWYG editor. You could draw on what you wanted and it would create the website for you. It would have ads all over the website if you had the free version.
I created a website and started uploading my apps that I made. Things like the JPEG>PNG converter. It would rename the file extension from jpg to png. Even though it wasn’t really converting the image — it’s was just changing the filename extension — as a twelve-year-old kid these are the kind of things I was uploading to the the Internet.
Early on I realized batch scripts were quite limited and you couldn’t do very much with them. It’s basically all command line, so there’s no user interface and I really wanted to build an application with a user interface, something you could click on, something that you could, you know, actually use.
So I found a language called Visual Basic 6 or VB6 and that’s when I really started getting into programming.
It’s fairly easy to learn, at least thinking back if I could learn it as a 12 year old then it must have been fairly simple. I spent hours and hours and hours online looking at other people’s source code. There were various different websites available where you could download free source code. Other people would upload their source code and you could download it and look at that code — a bit like Github today.
I would download these applications and I would just study them all. I didn’t read any of the VB documentation, I just went straight into the source code and started creating things. With VB6 you can actually draw the user interface on, drag buttons onto the screen and you could choose what size you wanted it and it’s quite easy to make it a GUI. When you double click the button from the IDE it takes you to where you enter the code of what that button does when you when you click it. I used to spend hours and hours — basically all of my free time doing this.
After a few years I started to get fairly good at it and I became obsessed with making remote TCP connected applications. I would just make a client-server application and I’d do some things like open the CD drive or display messages on the remote computer.
I would install this on my brother’s computer, which was connected to the same network, and I would have a client tool that I made that you could use to control another computer and make it do things, just for a laugh. I was obsessed with this kind of client-server remote technology.
I then started making chat applications with a kind of chat server IRC, where you would have a chat server and various clients. At first I got one client working with one server and would build up to have multiple clients working with one server. I figured all that out and it was those lessons that I learned that were so important for what I do today.
Just the figuring out how to do things and being passionate about it and enjoying the result, actually making things that I enjoyed making. I really enjoyed spending my free time doing this stuff.
I started to put them on the web, so I used Geocities and made a website using their editor, which was very basic. It didn’t have much control and I wanted to be able to do things like accept messages and have a properly functioning website with a back-end language.
So then I discovered PHP. I found the W3Schools website — W3Schools.com — it was just the best website for learning these things. I just blasted through the PHP tutorials and the HTML tutorials. All for free. I didn’t take any paid courses or anything at this time, I was just looking things up online.
I continued doing that for a year and school had some lessons on computers but it was very basic stuff like word editing. At this point I’m way beyond all of that because I’m writing VB6 applications and actual working apps that even the teachers in the school wouldn’t be able to do that at that point.
I didn’t get much out of school, but then when it came to choosing college I had the option to choose a BTec national or computer IT practitioners diploma or something like that. It was a very hands-on course, there were no exams whatsoever, and some of that involved programming.
I did some programming there but at that point the things that they taught, like basic PHP, I had been doing for years. I had been learning PHP myself so I was already way ahead of the curve.
I didn’t really feel like I got that much value out of the course at college in terms of my career. But I graduated, and I got just under the the highest marks and then I went to Nottingham-Trent University to study computer systems.
At this point I knew that I loved programming but I never looked at it as a career path. My idea was that I was just going to learn it all myself and then build some kind of app or website or something that’s wildly successful and brings in millions and millions of pounds.
For the degree I chose computer systems, which is kind of like an array of different computer related things: a lot of architecture, server and infrastructure, and how to set up an office network and all things like that.
There was a bit of programming which I liked. They taught us a very tiny bit of C++ and Java which was interesting. I learned a bit of theory behind the programming which was especially good because when teaching it to yourself you don’t learn a lot of the theory and methodologies behind things.
So I did learn a bit of that but I didn’t think it was as beneficial for my career today as basically picking it up and learning it myself.
However, what was great about that program was doing a year placement.
One year placement / Internship
I did my placement at a very reputable company in London and I really lucked out because I persisted and carried on trying when everyone else had given up. My friends said “Ah I’m probably not going to find a placement so I’m just going to have to continue with the final year.”
Right at the end of the summer, just before it was time to go back to uni I got a call from a company. It was a big company, they do news, financial platforms and all these thing.
I started my year placement there and again I think I was quite lucky with the placement I got because it was an amazing opportunity. It wasn’t like I was just making tea for everyone and stuff I was actually in the trenches doing the work.
I was learning so much from them. A lot of it was server administration. They had these big IBM blade chassis which are servers that you slot into this big chassis. I was doing a lot of maintenance on them so I’d have to come in on the weekend, come into London and basically replace memory and replace CPUs and deal with the the IBM support and deal with vendors.
I was working on a lot of virtualization projects and these quite technical things. There was VMware, setting up VMware ESX servers which are virtualization servers. If you ever buy a virtual server online then it’s going to be running on an application similar to ESX.
That was an amazing experience and during that time I really made a huge effort to really impress everyone. I didn’t ever want to let anyone down and I just worked really really hard. I was working 12 hour days and commuting about 4 hours a day as well. So just ridiculously long days and getting up at 5:00 in the morning to get the train every day because I was still living with my parents and I had to commute into London.
I did that for a year and at the end they didn’t really want me to go back to uni. They asked me if I would stay on for another year and delay university longer. I really didn’t want to do that, I was really ready to go back. After working so hard for a whole year I was ready to go back and have the kind of easy life that it seemed to be as a student.
I went back to university and I did the final year. At the end I had a bit of money left over so I decided that I wasn’t going to rush into finding a job, I was just going to take it easy for a few weeks maybe do some travelling or something.
But I did I upload my CV to a couple of websites. I actually started to get some calls. I got a call from a recruiter on the last day of university — I was still in student halls or I think university had finished. I got a call from a recruiter and they were like “We have your CV, there’s a company that is really interested and are looking for someone just like you, so we’d love for you to come for an interview.”
I thought, well you know this kind of came to me, I didn’t actively look for this. This was also the first time I was dealing with recruiters as well.
There was another company in London and just after that recruiter called another one called me up and asked me if I was available for an interview with that company. So I was going for an interview at the two companies at the same time.
The first company offered me the role after two interviews, one interview with the manager and one interview with the CTO. They offered me the role and it was great money, at least compared to the internship that I had, and it seemed like a really great company and it was a really amazing company in the end.
I worked there for two years. At that point it was an IT coordinator role, so there was no programming. But even though there was no programming in the role, I still found some programming work to do while I was there.
Part of the role was to manage these video conference units that we had in all the offices. It was a global company that had offices in many countries around the world and we had video conference units that were connected together. We had an issue where they would crash and there would be these random problems that would occur. We needed to restart them frequently so I made a script using VB script that ran on the server and would periodically run checks.
It would connect to these servers using SSH and do some checks and restart the unit if it found issues with it. And then we built this up so it was even more advanced and it would call the units together. It would take a random unit on one side of the world and a random unit on the other side of the world and it would make a call between them and it would answer the call during non-office hours and it would record the stats of that call to an SQL database. We could see if the stats were high enough.
If the stats weren’t high above the threshold — so the kilobits per second — then it would email us a notification to say there’s a problem here and we would look into it.
That was great but it wasn’t the primary role. The primary role was basically vendor management, project management, things like that.
It was a great experience but at the time I still did not want to do programming as a profession. I was still doing it in my spare time and enjoying it, but for some reason I just really didn’t want to do it for other companies.
I don’t really know what the reason was, I felt like maybe there was no future in that career. I’d been told some things along the way, something like all programmers are being offshored to different countries outside the UK and I believed that stuff.
As I worked there for a year and a half, the CTO and my boss asked me if I would be interested in doing some programming.
I actually turned it down initially, but then I went home and I thought about it and I was like, “Why do I not want to do it as a career?” Like why would I not want to do what I basically loved to do? I thought about it a bit and then I decided, you know I’ll give it a shot.
They gave me some programming tasks on top of the video conferencing stuff. One of them was to design a pre-boot environment for Windows using VB script and HTML. I created an app that allows you to configure your machine. You could type in your details and it would figure out what needed to be installed. It would configure a remote server to send the correct set of applications for that particular user so that when their system was reinstalled it had all the applications that they needed to use. So I worked on that and I really enjoyed it.
At this point I’m doing programming part-time, so like 35% programming and 65% vendor management, license management and things like that. But I was enjoying the programming, so I asked to do more. This particular project had a deadline, so I said if we’re going to meet this deadline I’m going to need to focus on this entirely for two to three weeks and then we’ll be able to release it.
After that finished and I went back to the other stuff I got a taste for the programming and I really felt like this was what I wanted to do now.
Full-time software developer
I could see that there was a lot of demand for programmers in the industry. I started looking for other roles and I started applying but at first they tell told me, “Oh that’s great that you’ve been programming since age 12, but do you have any commercial experience?”
These companies and recruiters didn’t seem to care about that, all they cared about was the number of years of professional experience.
This was a bit frustrating for me because I was like, you know maybe I don’t have this commercial experience but I have personal experience and I have projects and things that I’ve done. I was at least qualified for a junior programming position.
But I just kept on trying and I did interview after interview and all these tests and coding challenges. I would do these over and over again and I would just keep trying and I’d have so many phone interviews, I didn’t get many face to face interviews.
But then there was a startup that was hiring, and my then-girlfriend / now wife actually knew someone who worked there. They were looking for a developer and I met them in person and they offered me a role. It was more money than I was earning at the the previous job so I thought it was amazing, and it was just purely programming.
They needed someone to build the application and work on building the platform. It was going to be backend with an API, a website and two apps — Android and iOS.
I was really happy to get this role and it was really a turning point for me. They appreciated my history of experience and my passion for programming as opposed to just xx number of years programming professionally.
I took that role and I started working as soon as my notice period was up. I worked there for two years and for the whole two years I just focused on programming and building my skills, learning new things and really getting involved in making this app which we turned from a simple PHP website to a professional Python backend website with a REST API. We built a REST API using Django REST Framework and I was learning all these new things.
I hadn’t touched Python or anything before I start this role. I spent all my free time during my notice period learning Python and picking it up so that when I started I would be ready.
I used Python as the backend programming language there. That was really great, I still really appreciate that experience. It really helped to grow my career.
After a while I started to feel like it was time to move on and do something else and do something a bit different. I decided that I wanted to be more free and do contracting and freelance work.
Freelance and contracting is a lot more high-pressure, you’re expected to perform a lot better and be very skilled and there’s not much time for training and things like that. Which is what I wanted because that’s how you grow. That’s how you grow and learn.
I left the startup and started contracting and since then I’ve been contracting for almost two years now. I’ve only worked at two companies because I keep going back and forth, because they keep asking me to go back, but I’m really enjoying it I’m finding it really rewarding work.
And that’s basically how I got to where I am today.
I know that my career is still young and there are people that have worked in the industry for 20-30 years, but from what I’ve learned so far, the number one most important thing to have is a positive attitude.
Whatever you’re working on, whatever you’re doing, whoever you’re working for…You’ve got to have a good attitude towards the work. Impress people. Don’t just do the bare minimum that you can.
It’s very easy now when programming skills are in high demand, especially in cities like London and I’d imagine around the world, to be like “Oh, you know I don’t need to try as hard now because I’m in demand so I could just work anywhere” and that’s not a good attitude to have.
The attitude that you want to have is you want to continue to grow your skills and continue to be better. Continue to really work hard and really try to impress people.
Even if you’re starting from very little experience and you’re just getting into it now, you don’t need to have learned it from 12 years old to to be a professional developer.
If you really dive into it and you work hard and you’re willing to sacrifice and put the effort in and the hours in then you can learn anything and you can learn it really quickly.
You could work for any company. You could work for anywhere that you want, any type of role. You just have to work hard at it and keep trying.
Like in my last contract, they wanted someone to work on Angular JS projects. I didn’t really know Angular super well at the time. They were like, “Do you have experience with this?” and I said, “You know, I don’t have tons of experience with it but I played around with it a bit and I’m sure I could pick it up.” And in the end they were like, you know that’s fine.
So I joined that company as a contractor and I was learning on the fly and using my skills to learn new things quickly, and I applied that to learning Angular. I delivered what they wanted and they were very happy with it and I got good feedback.
The point I’m making is that it’s not about how many years of experience you have working on something — it’s about the attitude you have when it comes to working on it.
When I was working on this Angular project, I was aware that I was not as skilled on Angular as I probably needed to be at a time. So in my spare time I just started constantly reading the documentation, listening to Angular podcasts when I was on the way to work, just really immersing myself in the technology so I could impress and I could do a good job there.
You’ve got to have a good attitude, you’ve got to work hard and you’ve got to keep learning new things. The most important thing in this industry is to learn new things. You have to keep learning and keep expanding your skills.
That’s my experience, sorry it’s been quite a long post. But I hope you found it useful and if you are looking to get into the industry then hopefully it can give you some encouragement.
If you have any questions or you want any advice or you want to share your story then please feel free to leave a comment below and I would love to read it.