Programming
Before you read this, be warned it's long, I have a lot of history, but it is interesting...
I began programming computers a long time ago, I believe I was about 7 years old initially. My parents bought us a Commodore +4 for Christmas as they could not afford a Commodore 64.
The +4 had an office suite on it, a word processor, spreadsheet, database and graphing, but you could also get to the memory mapper which fascinated me.
I learned to play with it, not that I had the slightest clue what I was doing at the time, all I remember is thinking that these letters and numbers allowed what I saw to happen, the database especially as that's what drew me in.
Yeah, but beyond that I was popping in the tapes and loading the games like everyone else!
The Sinclair Spectrum
When I was a little older, maybe 10, not quite sure, my eldest brother got a Sinclair Spectrum zx81 and he used to buy magazines for it, and one day I started reading these magazines (ZX Computing Magazine) and found code in them - BASIC (Beginners' All-purpose Symbolic Instruction Code) and it was telling you how to program 'routines' which meant anything from echos to games.
That was the moment I became hooked.
Now I had great fun doing this, and I wrote some nice and pretty complex 'routines' but the one thing I could not conceptualise was the 'game loop' and it kind of killed it for me in all honesty.
Secondary School
Now I was quite fortunate in the secondary school I went to was the Royal Liberty School in Gidea Park, Essex (It was Essex in them days).
The blessing in this was it was the first school in Britain to have a computer (state or private) thanks to the efforts of the late Bill Broderick.
The proudness of this history ensured that the local authority always ensured we had the latest and most up-to-date computer equipment and software.
The first computer in the school, (if you're interested) was the Elliott 903, the same computer NASA used to launch spacecraft.
In my time at the school, we used computers for the School Newspaper, whatever Adobe was producing for this sort of thing at the time, and Microsoft Publisher I think it was.
We also obviously used them for computer studies, from Logo to BASIC to DBML (Database Management Language) programming languages.
My family could not afford a computer that could run those kinds of things so I had to settle for computer magazines and writing code by hand, then using my free time at school to program my code into the computer.
I didn't mind this and it meant I got quite good at writing code that didn't fail as it would then be a pain in the bottom when programming it in, and I had been using BASIC for 4/5 years before I got to secondary school anyway.
But for my GCSE we were using Superbase4 I believe it was and DBML to program as you could create programs with menus and all that kind of jazz, it was really useful. The project was to create a ticket desk for an airline, and while my memory is unclear nowadays, If I remember correctly I made mine simulate flights which realistically probably meant that flights would come and go in availability for tickets.
All told, I don't know how many hours of prep it took me, but it did take 52 hours to program it all in, I remember that much, and I had the thought that if I worked with computers I would end up hating them, looking back a really stupid thought.
I never handed in the paperwork despite being asked for it a multitude of times, but that was ok, I came out of it with a B+ anyway.
.. I went to college, did electronic servicing due to my stupid thought above, and had to leave as it looked like my Dad was getting made redundant and we had a mortgage (he never did get made redundant).
Then began a slew of jobs, I got my first 'decent' job at age 20 working for a company Smith's Anglo Movement (where I would still be today if Dupont hadn't screwed us) where I started working with computers, setting up, repairing hardware and running networking for them.
We installed machinery all over the UK, as in all over, every nook and cranny, so we had the associated warehousing etc, I covered for the general manager for 6 months at one point and realised how crap managing the stock was, especially keeping up with parts for breakdowns etc.
...I had always played with computers and this job afforded me the ability to purchase my first decent PC, it was a Seimens Nixdorf 233mhz with a maths co-processor, it was £1099 in 1997 and it took me an hour of walking up and down, drinking cups of coffee the sales people were giving me in Comet before I calmed the anxiousness about spending a grand and coughed up the cash.
I was in business and started learning HTML, CSS and Javascript, making really useful things like a Pig Farm birth, and death simulator as I remember.
It was ok but something was missing, I liked I could do plenty but I was fascinated by websites that had login.
A little research and I found PHP the Personal Home Page as it was then, now it's PHP: Hypertext Processor due to its leaps and bounds forward in capability, but basically, it was what allowed working with databases (storage) and sessions (lets the web browser remember) and enhanced website capabilities.
I found a tool for using it, I believe it was Macromedia Dreamweaver at the time and I started playing with the concepts of sessions and databases and thus the ability for a website to remember people and credentials so those people could log in.
I created a website for the company to replace a holding page, much better than what we had, it detailed services etc as you can imagine, anyway, so our stock management was bad and I realised that I could create a stock management system for the company.
I did my research, stock warnings, lead times, storage bays, you name it I looked at it all and figured out how to approach it, it took me 3 months to build also every minute of my spare time but I loved it and by the time the General Manager came back I had it settled and working flawlessly and the General Manager loved it too.
Roll on to 2008 and Dupont had pulled our contracts out from under us, sad but it was what it was, but when the company shut down I went into quite a deep shock. I was the 3rd man in and we took it to 33 staff covering the entire UK and with a turnover of over £16m. It took its mental toll on me, I didn't have any qualifications in anything I had done, and I spent most of my 12 years in the company working 17-hour days, building and building the business, and my confidence took a hard hit.
When the company closed I was never given an advanced warning because of a situation that had developed in our northern unit where I had come to work to roll out our computer services to the north, Scotland, Hebrides etc. So for me after all those years it came to an end in a day. I pulled up to the unit and there was a 40-foot lorry outside there to clear the place out.
Fortunately, my daughter was born in 2007 and I had 4 kids and a good woman, so they helped me get back on my feet mentally (I don't think they have a clue though lol).
While my confidence was lacking, my woman picked up the baton and became the breadwinner while I recuperated and spent time with my very young daughter due to the hours I worked I hadn't seen a great deal of her.
Now during her morning naps (about an hour and a half), I got bored, and I had found a game after the company closed called Starpeace (Legacy Online originally).
Great game, MMORTS, Real-Time Sim City type City Builder but with commerce.
One thing that was lacking was the ability to manage your commerce in bulk, which is kind of a requirement when you have hundreds of the same sort of store etc, I asked around and there was a tool that helped set advertising amounts for all of your stores at once, I got sent the source code and it was Visual Basic, so I started reading it, while a great tool, it sometimes didn't work and I wanted to know why, plus I wanted to try and extend it to do wages and that sort of thing, make it like an all-rounder.
So, I wanted to learn how data was sent to and from the server, so I learnt more about HTTP and TCP and data packets etc and came across a tool called Wireshark that would allow me to read the packets of data sent to and from the server to the game client, so I started recreating things like a QA tester would from end to end and recording all the packets sent each way.
I was able to build up a library of how the client did a certain thing like setting the advertising rate, which then allowed me to see the issue with the app I had been sent, so I was able to fix it. I didn't like Visual Basic that much so I decided to rewrite the app. I settled on using c# to do so.
So each day my daughter had her nap I would do a little more then a little more, I ended up building a nice tool that did everything I wanted with a little help from a French friend I had made playing the game.
We called it Starpeace Player Operations Checker, but we all knew it as SPOC, we stopped at V5 in the end but it rekindled my love of programming overall.
When I returned to work, as I mentioned my confidence was shattered, so I didn't look for jobs in computing as I felt I had no chance, being unqualified and all.
I entered the world of Home Care, it fitted as we were looking after my partner's mum who had Altsiemers and we knew nothing about it, so care made sense, I could earn and learn.
I was good at caring for people, and it came naturally, so over the next few years I rose through the ranks to Senior and then Team Leader, cut a long story short I moved to another Home Care Company.
During the 3 years to that point, I had been learning more and more PHP, I used to download scripts from 'hot scripts' I think it was called then, and reverse-engineered them so I could see how they worked and I stumbled upon a PHP framework called Yii, an MVC (Model View Controller) framework for PHP, Yii was great as it dealt with a lot of time-consuming stuff like session handling, database abstraction and it had a generator too for generating skeleton models and things to help speed up development.
Over the years I had become experienced working with Vanilla PHP so using a framework was bliss, so much quicker.
Anyway, in the new Home Care Company I walked past a member of staff one day who was frustrated at filling in their time sheet for the week. She had dyspraxia and was having real trouble converting the time to a decimal.
I asked the company directors (I had entered as a Care Team Leader) if I could assist her with her timesheets, they thought about it and the answer was no as everyone had to do them and it would have appeared as favouritism. I didn't agree with the argument, but I understood where they were coming from.
I went back to them and said ok, what about if I build a website that the staff could use to record their hours, and help them by automatically calculating the mileage for them for their expense claims, as the reconciliation of mileage was off anyway, it would also reduce stress as they would no longer need to come to the office to submit their timesheets and also reduce their costs.
Management agreed so I set about creating a timesheet portal, took probably about 6 months from start to finish as I worked a lot of hours again, wages being low in care, but I got there.
We rolled it out and the staff loved it, they trusted the mileage after comparing it with their notes, so stopped tracking it, and it saved them time, it took a whole year for people to be so used to it that they stopped thanking me for it!
Around the end of creating the portal I was asked by a friend to create an addon for Kodi, what was originally the Xbox Media Center application. It was written in Python so I wasn't too sure, but I loved coding so I said yeah.
I should have said actually, but I have been doing code on the side since about 2007 PHP-wise. Now I was doing Python too, I did the same as before and reverse-engineered a good few addons so I knew how they were made. I noticed straight away how inefficient the addons were, and I came up with a way to speed up addon development by removing a lot of boilerplate code easily.
My friend liked the addon I produced and told his friends, and soon I was earning a good supplemental income on the side, I had got that much practice at it that I could build an addon for say £300 in roughly an hour (obviously I told them a week each time).
Roll on another couple of years and I was struggling to support the family on my full-time wages, the wages were just not high enough for me to be able to earn enough so I started doing Chinese food deliveries outside of my hours, and I was earning well from it. Moving forward a few months I decided that I would be able to support the family in the short term by doing deliveries and coding add-ons and working for an agency doing manual labour in dog food factories and packing on farms.
This worked well for a few months, but the Kodi scene changed, one of the most reputable addons had put a botnet in their addon code so they could perform a denial of service attack against a group of coders that had bad-mouthed them.
Well, it destroyed trust in Kodi and especially the addons so that work dried up.
At about the same time, a group of friends I had done bits for wanted to start a dropshipping site, they offered me enough to cover my agency wages, but under the agreement that I could continue doing whatever I wanted on the side.
Which was good as I could do their work and network to get more work.
That's how I learned not to work for friends lol, 3 months later they had changed their plan and I was the one left high and dry. It wasn't too bad as I had been hard at the networking and had picked up other work, but I found myself networking 90% of the time, and coding the other 10% but 9% of that must have been Python work and I wanted to be doing PHP work, I was earning decent money, more than I had for years but it was becoming a drag, the networking felt like begging in the end.
Something snapped and I said f*** it, I am going to do whatever it takes to break into commercial development. I hatched a plan which was to interview as much as I needed to learn what I needed to know to get past the interview stage, so I wrote up a CV and pushed it out to as many roles as I could.
About a week later I had my first bite. A role in York, about 1hr 10mins from where I live now, we had a screening interview, I passed that, and then I was sent the technical test. That was interesting, it was for a Laravel role (another PHP framework) and the technical required us to use Laravel to solve a problem.
Given a number in Roman numerals, the solution had to convert the numerals into its base ten equivalent, so for example XCIV would become 94 (XC being 100-10 and IV being 4).
- Roman numerals use specific letters (I, V, X, L, C, D, M) to represent numbers.
- For example, I = 1, V = 5, X = 10, etc.
- The placement of numerals determines if you add or subtract their values:Smaller numeral before a larger numeral means subtraction (e.g., IV = 4, IX = 9).Otherwise, numerals are added (e.g., VI = 6, XI = 11).
That was easy enough to represent in code:
function romanToDecimal(roman) {
const romanMap = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000
};
let total = 0;
for (let i = 0; i < roman.length; i++) {
const current = romanMap[roman[i]];
const next = romanMap[roman[i + 1]];
// Apply subtraction rule
if (next > current) {
total -= current;
} else {
total += current;
}
}
return total;
}
So my mission was then to use Laravel to do it, and I learned about Laravel's Collections which is a turbo-powered wrapper around arrays.
Needless to say less than 3 hours of learning and playing with collections I had my solution.
I sent it in and to my joy a few days later I was asked to interview in person.
A week later I got myself down to York and a half-hour interview ended up taking an hour and a half as we were all passionate about PHP, we discussed differences in versions, what I did like, what I didn't like, to be fair it didn't feel like an interview, it was more like a good chat.
I didn't have any friends or family I could talk to about coding without their eyes glassing over so a good chat was more than welcome.
I fully admitted that I knew nothing of commercial tooling as I had been developing alone and that I knew nothing of Laravel and would have to learn on the job as I had done for the Tech test... honesty is always the best policy, plus I was not bothered about not getting the job as in my head I was on a recon mission.
A couple of hours later I got a phone call from the recruiter, I was in!
I quickly bought books for Laravel and Eloquent (Database ORM) and read like crazy.
My first project was to help convert a Codeigniter project to Laravel, the Codeignitor bit wasn't hard, freelance I had worked with Codeignitor, Phalcon, Cake and plenty of other frameworks.
We were delivered the repositories with the code in but no database, but having a deadline we could not let that stop us so my first task was to create Laravel Models for the incoming database by reading the code base and using the SQL (Database Language) to define tables and columns so I could create the models.
126 Models later I had got very good at converting SQL to Eloquent models, needless to say writing the queries to replace the SQL wasn't difficult either, by the time 3 weeks later, they finally delivered the database we were pretty much ready to go.
I did well in that job, I learnt Laravel pretty fast and I used to turn up early and leave late to avoid traffic learning whatever I could from whoever, especially regarding commercial tooling, like PHPStorm (Integrated Development Environment) and GIT (Code Versioning).
Now whilst I loved that job, a few little things happened over the time I was there that was getting to me, add to that the commute had for some reason gone from 1hr 10mins each way to just over 1hr 30mins each way and I was feeling it.
3 months in and luck decided to shine on me. We had a single floor in an office block and the fire regulations had rated the floor for 18 people I was the 18th in place, but out of the blue a mobile app developer that had previously worked there wanted to come back, and being the last person in and still on probation the company decided it was easiest to let me go, so they put me on garden leave for my final 3 months, I was over the moon.
I had come to love Laravel so I spent the next three months 18 hours a day ripping Laravel apart till I understood almost every facet, how all the 'magic' happened that was hidden deep in the classes, fully paid no less!
As the garden leave was coming to an end I started applying again, I had applied for a company locally a couple of times but had never heard anything back, I would later find out this was because the HR staff were lacking at the time.
Anyway, I managed to get myself a good recruiter who shoehorned her way into the company and got me an interview.
Same as before I went in and sat for the interview, no tech test this time, it was critical thinking exercises on the spot, writing SQL queries, working out how many 2 pence pieces were in a glass jar, that sort of thing when that was out of the way we just sat and talked Laravel and PHP, I knew it went well as on the way out of the interview the man interviewing me started showing me where things were and explaining how to get in and out of the office etc.
I was in!, I was now going to work for the largest and fastest-growing e-commerce agency in the North of England, result!
I started on the third line if you don't know what that is, the first line is the person at the end of the phone when you have issues, and the second line is the slightly more technical people they pass you to to resolve your problem, the third line is where it comes when the issue has been identified with the software by the second line and it needs fixing.
I had a week of training on the platform administration interface then down to code. I pleased myself, I was solving three tickets a day from my first day in the code without knowing the platform, not bad.
Come to my probation review at the end of six months, I was up to 5 tickets a day, and I was crapping myself, we went into the office and my boss asked me why I was so nervous, I said it was the first appraisal I had had in like 20 years of working.
He just burst out laughing before apologising for laughing, he then said the meeting was a formality, they had not had a better new starter in 6 or 7 years, 3 tickets a day from day 1 in the code was unheard of and 5 tickets a day was more than a lot of other third line engineers. He went on to tell me that I was without a doubt a Senior level engineer and apologised that for the company you had to have been there for 12 months and there be a Senior position open to become one and unfortunately, then neither was true then, but as soon as he could he would promote me.
I had gotten a name for solving recurrent bugs, those bugs that kept coming back, this was because I have two hard-wired hates, money problems and repetition. So when I knew a bug was recurrent I would take the time to dig in, undo as many repairs as I could find and go at the issue a fresh, 99% of the time solving them once and for all.
This was nice because, for the first time in a good few years, I could feel my confidence growing, I didn't feel useless anymore.
A month later there was an issue with translations, so I rewrote our translation code using a manager pattern so new providers could be added in minutes if required, this got me noticed and another month later I was on the Pro client development team working on projects for clients that paid for that extra service, another couple of months later I was promoted to the Enterprise team, handling clients that paid us like £24k a month or more to keep their sites up and running and developing features to keep them ahead of their competition.
A year or so later I was offered the position of Technical Team Lead managing 10 Enterprise clients and a small team of engineers.
It was at this point I started to recognise the importance of code quality and good coding practice when it came to promoting good teamwork, where team players could move about when needed as they all practised the same discipline, it was at this point I started working with a friend I have to this day as we both understood what was needed to take out teams, our work and our clients to the next level, a friendship I have to this day.
My story continues from here to the present day which is a few years lol, but at this point, you have read enough and the points I wanted to make have been made.
Please don't ever think you are not good enough, because, at the end of the day you can learn, you can bounce off of walls till you learn how to navigate them.
I am not particularly smart, clever or intelligent, I think subconsciously I recognise patterns which is why I have developed an affinity with code. Tenacity and passion are very good at winning, so if you want to work in a career that is pretty damn stable, very well paid and abundant in choice, then you cannot go wrong with programming.
Honestly, a lot of people say 'Oh, I'm not smart enough to do that' and such, and it's just not true, if you can speak and read English then you are 90% there before you touch a keyboard. Yeah getting good takes time, effort and learning should never stop, but look at the rewards, remote work, great pay, stable work, and loads of choices of different paths in development, frontend, backend, API (Application Programming Interface) development.
The other 10% is like the grammar in your English classes, it's putting the semi-colons in the correct place.
The least you can do is get yourself on Udemy and try a couple of courses, oh yeah and always insist on remote roles (unless you prefer the office) as it helps the rest of us...