⚠️warning this is both a story and a bit of a rant!
Lately, I keep reading, a lot of stories about people that used to hate their jobs (or weren’t paid enough, or both) and then some, god send, close friend or relative, urged them to try to become a developer. Perks include awesome wages and benefits.
Rant
Then they sat down in a fancy coffee shop, came up with a plan, which usually involved long hours of intense training (like Rocky Balboa) with books/ websites etc …and finally everyone lived happily ever after (everything in less that a year).
Every single time I read a story like that (..and there are plenty around the web), it kind of gives you the impression that you are watching a movie.
For me, becoming a developer, was a life journey (switching to drama), not a year of intense training.
I didn’t have a plan.
I didn’t go to any coffee shops and hip restaurants.
Some of the times when I read a story like that, I get slightly annoyed at the end of the story, an awesome developer emerges.
Myself, over 40 now, I sit silently thinking that I have barely covered the tip of the iceberg.
Yeah I know that developers at the beginning of their career think they know everything, only to slowly find out that they know 💩, and the point when they admit that they actually know 💩 is the point that they are indeed decent developers. It has a fancy name, the Dunning-Kruger effect and it even has a not so fancy graph. But I don't give a 💩 about fancy psychology terms.
Being a developer or any type of professional is not a booty call. It’s a way of life. One that is often quite incomprehensible to most.
I will admit that in order to become and good and successful developer, studying computer science or computer engineering is not always a necessity (and definitely not enough by itself) but it’s definitely damn useful.
I studied Surveying engineering, did a masters degree in laser scanning and even though during my studies I had a plenty of C/C++ courses it was not enough. Luckily we had plenty of Math courses.
History
As a kid I was lucky enough, due to the nature of my mom’s work to have access to a computer at that time (early 90s). We had a top of the line 286 with 1024 kb memory, 20MB hd and two floppy drives(1.2 and 1.44 inch one). So I played a lot with BASIC. I had one book in BASIC and a few magazines here and there, material was pretty scarce back then (you have to account the fact, that english is not my primary language, also being 12 years old didn't help either, my english was extremely poor and there was not enough translated material at the time).
A reminder to my younger audience (if any) is that the internet at that point was either not available (before 1995) or available through public libraries or through a 28k modem and an extremely expensive internet subscription.
In the beginning there was barely any useful material online. A bit later, there were some forums which was pretty decent for the time. So as I grew older, I bought a few books and really tried to properly get into programming. My attempts were so obvious that I received on my 21th birthday the infamous, learn C++ in 21 days book.
When I finally got to do my masters degree I thought, that’s enough, I need to take this seriously and I am going to learn programming, even if it was the last thing I’ll ever do.
I had finally the perfect motive, a large part of my thesis was about plane detection and feature extraction from point clouds. So I had to write some kind of software and MATLAB was a no for me (that’s what most people in my area used back then).
At that time .net 1.1 was out and my language of choice was managed C++ and because I had to do windows development and particularly 3D graphics I used the available counterpart managed Directx (I destroyed two desktop computers🔥 one graphic card actually caught fire). I don’t remember why I chose that path instead of OpenGL, I think it made more sense at the time.
I learned a lot, destroyed some equipment, got a working software and a degree. yay 🎉
My first professional experience with coding came a year later when I was working on a laser scanning project with a small budget and we realised that:
- we could not afford any commercial software to render images
- we could not even afford a computer that could actually run that software.
So I volunteered to write a command line tool that could do some basic rendering (at the end of the day, we didn't care about any advanced render features).
In a way it was quite similar to what I have done in my master’s thesis. The software was nothing sophisticated but it did the work just fine.
A few years ago I even dig up the source code from a long forgotten semi scratched CD and pushed it on github.
Then I got addicted!!. Well, not really, rather that when I had a particular problem I would come up with some sort of app. And I did a lot of them.
A few years later I landed a job as data analyst/consultant for a couple big photogrammetry projects. There, I met an old acquaintance who worked with me on the renderer and he immediately decided that I am going to help develop some tools, that the company really needed (as a side project) and that with our combined knowledge it would be easy. Language of choice this time C# (2009 if I remember correctly). I never worked with C# before. But it proved really easy and straightforward.
At that point C# was on its third release so most of the fancy features it has today, were not there. It was just different, easier, had no pointers, it felt like a piece of cake, so I fell in love with it.
The next 7 years I mainly worked with C# but due to the nature of the company I worked for, a lot of the times we got projects that had already defined requirements including in which language it needs to be developed etc.
So we used C# when there was no clear requirements, Java and Javascript(at that time I really hated Javascript, and Node which I now like a lot, was not even a concept). All the projects revolved around photogrammetry, surveying engineering and GIS 🌍 applications (we were mainly focusing on those).
Going international
Then I moved to the UK, and I made my first and biggest career mistake, to date.
I went to a company that developed (or so they claimed) GIS applications, I choose to work there because I was not confident enough to switch fields.
The first few months we did some really interesting things and then the company decided to stop doing GIS enabled applications and switched interest and direction to appointment software with a twist, optimised appointments with routing etc.
That didn’t go well (at least in my eyes), although I am certain they are still happy about the choices they made.
Again because I wasn’t confident enough, I stayed more than I should. I still feel, like I lost a lot of my previous experience(practise makes perfect) (we basically used Java and AngularJS).
And then I said forget maps, forget GIS… let’s go and land a job that is completely different to all the previous Jobs.
Now I work as a software engineer in a telco company.
It’s the best decision I’ve made. Even if I quit tomorrow, it's still the best decision I’ve ever made.
I've learned so many things in such a sort time that my feelings are indescribable. Plus most of the software I've worked on in the past never had a big user base, they barely reached a few hundred users.
Now I am writing software that impact several thousands users, and that feels nice.
Do after 13 years of professional experience feel like I know everything or that I am at a point that I can finally say. I am good, I am really good?
No, I am definitely not.
<3 I hope I didn't offend anyone