So...you want to be a software developer?
Updated: Feb 5, 2021
Steve Attwell shares his story on how he became a qualified and accomplished C# and Python Developer.
How my journey started...with a copy of Classic Boat monthly!
Scrolling through Facebook the other day I came across several adverts for courses being offered by various coding academies, coding bootcamps and others. They all make the same assurance; you can "get into tech" after just one or two months of training...."hmmm, and at what cost"?, I thought to myself.
It got me thinking about a time in 1991 when, on a disastrously grey and gale-force windy weekend that ruled out any chance of surfing, a friend and I were thumbing through a coffee table copy of Classic Boat monthly. In that moment, suddenly we had the ambitious idea of building our very own boat. I can still remember the feeling of the butterflies of excitement as my 13-year-old self envisioned a future of adventurous sailing trips, all documented via camcorder.
As our project got underway and the challenges became apparent, we compromised. Severely. By the time we dragged our vessel down to the river, our concerns over its dubious construction were realised - as it effortlessly sank beneath the murky water. Betrayed by our enthusiasm, we returned home defeated, feeling that if anything the experience had simply shown us that we didn't know what we didn't know when it came to boat building.
Fast forward 20 years
I found myself pouring over mental health datasets for the NHS. I'd always had an interest in tech and when the odd opportunity to write code came about, I was always eager to give it a try. I decided I wanted to make a solid commitment to becoming a serious software engineer. As I had no qualifications in the field, I decided to get qualified through an accredited course. In next to no time, I had received a letter from Birkbeck University informing me that I had been offered a place to study Computer Science.
Towards the end of my studies, I lay in bed one night, unable to sleep from too much caffeine. A chilling thought arose in my mind: I still didn't know how to write packaged, good quality software. In fact, I could barely even write SQL scripts. My Java course at university had not taught me how to write a class and if I was honest, I had a very vague understanding of what a class even was, why I needed it or how to use it. You see, a university degree sets you up with the foundations of your vocation. The rest is then continually augmented through practical experience in the real world.
My first interview
So, armed with my degree, I applied for a role in software development at Belron International, believing I might sway things in my favour with my frankly brilliant personality. Of course, I failed the technical assessment. Miserably. As I slowly walked back to the local train station, the same thought kept playing over and again in my mind: "Why was getting into software development proving to be so challenging?" I stopped to observe a dairy cow munching away on the border of Milton Park. Eager to distract myself with anything kinder than that technical assessment I said, "Aww, aren't you a cutie!" Moo-cow only stared back as if to say, "whatever". And so I travelled back to London feeling dejected but also with a full two pages of notes taken during the interview and assessment of all the things I didn't know about C#.
I met a group of mates at a pub and as we started on our fourth round of drinks one of them suggested I try a learning path on Pluralsight, which he described as an online learning library. I took a long gulp of my pint of Guinness before whipping out my notes to scribble down the name. Later that week and based on the feedback I was given in my failed interview, I enrolled with Pluralsights C# learning path and completed around 50 hours of online material. In hindsight that path took almost a year to complete!
And now with my new found confidence, I managed to pass the technical test at a college where I ended up working for a while before contacting Belron International again. Endearingly, they remembered me (awww, thanks to my frankly awesome personality) and agreed to interview me again. Three interviews later (they run a very thorough selection process, one being role-play. Awful. Just awful.) I was successful and offered a role as a developer. Of course, in the time since my first interview they'd moved their core focus to Python and AWS. Things move fast in software. You never stop learning.
The challenges with programming are real
There's a learning curve with programming languages and it certainly does take time and practice to even partly understand. You underestimate this commitment at your peril but equally you don't need to embark on some horrendous university degree that will only cost you a ton of cash and still do nothing to prepare you for a commercial setting. Sure, there are companies that will only consider qualified graduates but there are loads more who won't care about your software engineering or computer science degree. It's worth keeping in mind that degree obsessed companies will want nothing less than a first which can be difficult to achieve in night based, part-time studies.
So, if you've come this far, maybe you'll go a few paragraphs further and allow me to outline my steps to becoming a software engineer. This is my subjective reflection of course and others may have a different perspective.
My top tips on becoming a software developer
First and foremost, don't buy into any "zero to hero in X hours" claims. There is no course that will adequately turn you into a programmer in 24 hours because the term covers many technical competencies. You might learn a programming language but if you can't write values to a database then you won't be able to achieve persistence.
So, these are my suggested steps to becoming a junior software engineer without incurring the cost of a degree or falling for the quick fix claims out there (which can also be proportionally costly).
1. Choose a language
It helps to keep an eye on what is supported by cloud technology as this has become very popular. If you are unsure about a language then some suggestions are Python, Node.js or Go.
2. Enrol with a good online training library
I use Pluralsight but there are others. Pluralsight costs around £24 a month and gives you access to hundreds of videos with many being packaged into learning paths. Mosh Hamedani offers some free Python tutorials on YouTube if you don't want to go the paid route. He can certainly get you to a point where you'll know if programming is for you or not. Ideally, you'll want to complete training paths that cover beginner, intermediate and advanced courses. Give yourself a descent amount of time. These learning paths are substantial, but they are relevant. Take your time and practice regularly.
3. Learn a database technology
With the emergence of cloud technology, database choice has become a bit more complicated. SQL is good for learning relational database concepts, but databases like DynamoDB or Mongo use a different approach and are better suited to cloud technology. If you don't know anything about databases and want to work in cloud technology, then DynamoDb is good. But just keep in mind that databases can be complex things and knowing one won't necessarily prepare you for another. You will ideally want to get your syntax choice to a point where you can interact with your chosen database using code.
4. Create an account on GitHub and cover off Git Actions
This will allow you to share your code, collaborate with other developers and allow potential employers to view your work.
After the completion of these steps, you may want to approach companies who are sympathetic to or willing to take on junior programmers. They will very often want to see your GitHub account to view your work and they may have a technical test for you to complete.
Once you're successful at getting a role as a junior developer you will certainly want to cover off continuous integration/continuous deployment (CI/CD) and get to grips with agile methodologies. You may also need to embark on some cloud-based technology like Azure or AWS. Both offer courses and accreditation and your choice of platform and learning path will be informed by the hiring organisations platform of choice.
And finally, once you're confident in your abilities, there are some exciting fields you can branch out into and by then you'll have a clearer idea of what interests you.
#Python #C #SoftwareDeveloper #University #Pluralsight #Github #Azure #AWS #Agile #DynamoDb #Mongo #SQL #MoshHamedani #NodeJS #Go