I like to always symbolize important events with a nice post, this gives me the chance to stop and really think about the numerous events and challenges that I had to surpass to be able to achieve this big milestone. When someone starts a new career, it usually feels like a jump into the unknown, as we are completely unaware of what will happen in the years to pass.
In this post, I am going to share my feeling, successes and failures, with the hope that this will help you give some clarity to your own path. It is true that no story is the same, and your paths and career may be very different from mine, but the aim of this post is to highlight what lies behind my current strong self-esteem is actually a multitude of failures and uncertainty.
Before I even started – Over 10 years ago
If you follow me on any social network or joined me at any social event, you will already know that my career as a developer was not actually planned. I spend my teens studying toward a Business Management and Economics degree and own my own cafe for 18 months before my career in development actually started.
At the time, the internet did not have things such as #100daysOfDevs, and boot camps were not very common where I come from, so my expectation of becoming a self-thought developer was very limited. I am not going to go into many details as this is not the scope of this post, but what you should know is that I managed to get my first ever developer job with very limited tech knowledge and experience (a couple of months of YouTube and side projects in the evenings).
If you are currently working to get your first developer job, you are probably already saying that I have been lucky and that things do not work this way anymore. But as someone that has helped many people find their first developer job and is still heavily involved in interviews, I can guarantee that this is still possible. When I look back at that young me, I can see something that still flows strong into my vein – Passion!
The similarities between me many years ago, and the apprentices that I currently interview or help is the willingness to succeed. If there is something that you have to get out of this post is this, your actual skillset and portfolio are just a very small portion of what is needed to get a job (and progress in your career) is the willingness to learn, the passion to succeed and ability to accept criticism. Never go into an interview expecting a company to give the job because “you are the guy”, or because “you know all that there is to know” because I can guarantee you that you will fail miserably. I am not saying that you do not know enough, but I can say that there is so much to learn that in 10 years I have personally just scratched the surface, so your few months of learning can surely not be a match (or at least is not a good attitude to start with 🙂 )
Junior developer – the biggest imposter in town
I still remember vividly that while I walked to my office for my first day as a developer, my legs were shaking uncontrollably. During the journey to the office, I could not stop but to think that I was a BIG imposter and that I managed to get the job by fooling the interviewer, but that I actually had no idea what I was meant to do and if I could even complete a simple task that day.
Unfortunately, this feeling is not an easy feeling to actually remove and it stayed with me for quite a long time. No matter how hard you work and how much you learn, the tech industry is so wide that you will easily find yourself in conversation or in tasks that are beyond your conform and the feeling of imposter will pop back in faster than you can even imagine.
If this is currently happening to you, I can guarantee you that it is totally normal and that you are not an imposter. A company never provides you with an opportunity because they expect you to be ready for your day to day job, but because of what you will be able to provide in the long run, it is an investment in who you are, not what you know right now! Take the time to learn, work hard and with time you will be able to control this feeling.
Unfortunately, Imposter Syndrome will actually be something that you can get rid of, but it will stay with you for the rest of your career. I personally still feel like an imposter on a daily basis on my job, but as I said before, with time you will be able to “control this feeling” and use it as a weapon to focus your learning and improve yourself.
There are many posts and books that cover imposter syndrome and I greatly suggest you get to know it a bit before you get started in your career. You will never be fully prepared, but the knowledge of it may help you alleviate the feeling! I found this blog post from Codementor to be a lovely resource to read: https://www.codementor.io/blog/imposter-syndrome-deypemtirw
Still a junior, new company
Just 6 months have passed since my first ever experience, and I started to feel ready for my next position. As a new developer, you will start to feel invincible, and think that there is nothing else for you to learn in your current position (or so I felt at the very start), so I decided to move on and progress in my career.
The following graph is a precise representation of how your career will work out (or at least the internal feeling):
It was my first job, I got carried away and was naive with myself in expecting to know it all! When I found a new position and started my new job, I realised that I just knew what I was exposed to and that was not much at all. In my very first experience, I was just used to defining static HTML and CSS (simple ones with no form or nothing), but in my new position the scope of the technologies used grew more than 10 folds and I found myself back to that uncertainty zone with shaky legs.
The above graphs won’t just happen once, but they will happen over and over again in your career. The drop to “discouragingly realistic”, as scary as it sounds, is actually going to be the starting point to your next career growth. As the wise Socrates once said:
Finding things that you do not know and working to put them into practice, is the drive you need to succeed and improve.
Mid Developer – One of many
In this section, we are fast-forwarding a couple of years. I spent over 6 years in the same company, so this and the following sections will all take place in the same company. Even if I worked in the same company, the company growth and different projects have still provided me with many opportunities to go through the learning cycle that has been shared above.
At this stage, I was starting to control my fear of the unknown and have a good attitude toward failure. The main problem during this phase of my life was that I was just average, I was just “one of many” other developers. Coming down from the “hill of naive confidence” makes you realise that you are not special, and that is a big blow for someone as competitive as me.
There is nothing wrong with being an average developer and working your day to complete your goals. I have meet many fantastic developers that are happy to be in this place and have no incentive to move forward (unless due to time). I took a very different path, I worked toward a greater goal, I set myself a very hard and unachievable task and I worked hard day in and day out to succeed.
I still remember back in my mid-20s, I sat down with my wife and during a conversation I share my plan with her. At this point, I had just 2 years or so of experience and was well aware that I was still a junior and had lots to learn, but I told my wife “In 5 years, I a going to be the CTO of the company”.
Looking back at where I was and comparing it to where I am now, I can easily see that I was extremely naive (even if I achieved most of my goals as we will see later), but that small conversation was the base of my current success. What that promise did, was set the foundation for my learning strategy, it provided me with the strength necessary to stand up after failures.
I spent the next few years of my career focusing on what I did not know, learning from my peers, listening and taking notes. I repeated the above learning cycle over and over. I did not just do my work, but I also looked at what my superior did, I requested active feedback, I took my chances to move forward and as already mentioned I failed many times, but with perseverance also comes success.
This path that I call the “fast track” is not simple, and it is not what everyone is supposed to follow. But even if you do not do this at the same speed that I did, you may still want to take this as an example of what will be needed of you to progress further. It is true that after 4-5 years you may be called a senior (that is what I meant above when you move forward because of experience), but the truth is that if you REALLY want to move forward if you want to feel like a senior and remove that feeling of imposter within you, you have to master your skills, you have to push your boundaries and do this over and over.
Being a developer is not easy due to the nature of the tech industry, but being a good developer is even harder. Long story short I managed to become a tech lead and looked after over 40 developers in less than 5 years of experience. I did so with hard work and dedication and you can too.
Senior Developer – In control of my weakness
We are now 5 years into my career (halfway) and I am now what is called a senior developer (I felt like one and was called one), but I still had a long way to go. The tech career is not all around coding, and moving forward in the career ladder, will start to expose skills that are less “technical” and more “managerial”. Your expertise will be less driven by your ability to code, and more by your skill to lead.
When I became the tech lead, many people within my wide team were more experienced than me, and many others were more specialised than me, so I started to feel like an imposter again (yes, more learning to come for me). Luckily for me, I had the opportunity to be supported by great managers that really saw in me, what I could not see yet, and supported me all the way.
What I learned over time was that the main reason why I was given the opportunity to lead people was not related to my technical skills, but my attitude toward the wider team and learning. The scope of this is a bit too wide to just cover in a small chapter, but I am going to give you a small insight into what I have learned to have been my recipe for successful leading:
I have not mentioned this in the previous chapter as I think it makes more sense to do it here, but being humble has helped me from my very first day and still does now. I never lie about my ability, and I am super clear about what I know and what I do not know. This not only clearly defined who you are to others, but it also provides a clean slate for you to be able to ask for help and reach out for new learning opportunities
Accept other people’s skills
I have seen many senior developers being too stubborn to accept being wrong and or accept not knowing something. In my career, I have actually done the opposite, no matter my position. I have actually always praised others’ speciality and openly trashed my suggestion/solution for one of my peers (at times even junior). This may sound similar to the previous point, but is just a consequence of it. In the previous one, I was happy to accept my weakness, here I am happy to accept other strengths.
Share your failure
The world is full of superheroes (thanks to marvel). Social media platforms are full of great stories of success (like this one maybe), but the trust is that I have always been very clear about my failure. I am happy to share that I am only a human and this really helped me to break up the wall between me and my colleagues.
I have covered this point slightly above in my previous story, but I want to emphasise the importance of delegating. Your brain is just a muscle and there is no way for you to learn absolutely everything that passes your way, or even if you have the available memory to learn anything that there is to know, there may not be enough time for you to do so.
Knowing that these two resources are finite, it is very important that you work around them by trying to delegate what may not be important to you and focus on what really matters.
Speak for your audience
As you become a developer, chances are that you will be called a “nerd”.
If this happens it does not mean that you look anywhere close to the above image, or that you have anything wrong, what this means is that you are not speaking the language of the people that are around you, and have bored them with things that they have absolutely no interest in.
I use the above description to explain the skills necessary to communicate effectively with people around you (either face to face or by email). No matter what meeting or conversation I have, I always ask myself these two questions:
- Does the person on the other side of this conversation know what I am talking about?
- Does the person on the other side of this conversation care about the subject that I am sharing?
If the answer is no to any of the questions above, then you should stop right now and try to change the way you express yourself to be more in line with the people around you. If you are attending a management meeting never talk about bugs and code smells, but turn this into “maintenance costs” and “code quality”, if you are talking with a junior developer do not use the complex terms, but provide simple examples to explain the situation.
I have been fortunate to have attended a management school that has thought me this and I can clearly say that it has been an invaluable asset.
Before we move to the next chapter, I am going to share just a few more words to provide a real-life example that encapsulates all the points above. In my initial time as tech lead I was challenged over and over (not all the seniors were happy with my position), and there is a single meeting that is clear in my mind:
We were having an architecture meeting attended by many managers and seniors. During this meeting, I was asked a specific question and require to come up with a solution to a problem. Instead, than give them a solution on top of my head, I clearly defined that I would prefer for a less experienced team member to help us here (mid developer so not part of this current meeting). My public call for help was confronted by a senior denoting to my managers that I was not meant to be in that position as I could not “fulfil” the role that was necessary for me. As you may imagine, I felt helpless and totally not in control (yes my legs started to shake, but I was sitting luckily). The only feeling I had was of total failure, I thought I was really an imposter and I should not have been there. But luckily (as I said before I had a great manager), my COO actually took over and replied “Simone is actually the right person for this job because he can accept his weakness, not the other way around”. This was a great eye-opening moment for me, I will cherish that moment for the rest of my life.
The big leap – Software Architect
I am realising that this post is getting very long, but 10 years are 10 years. So I am going to jump a little forward. In the previous chapter, I was enjoying my new power as a tech lead and worked toward many new skills necessary to succeed in that position, but the years have now passed and I have decided to move on. As we learned before moving company can be pretty traumatic as you are catapulted down to the “discouragingly realistic”, but I was ready for it and happy for a new challenge.
After 6 years in my company and around 4 as a tech lead, I decided to move forward and joined my current position as a Software Architect in This Dot (I was not an architect when I was employed but got promoted to one after a few months).
Here I am, with 7 years of experience and a long list of previous successes, scared again of a new challenge! Until now I have worked in local businesses around Wales, and moving to an international company opened a new set of “insecurity” within me….
What if people in Wales are actually not as good as the people oversees
How will I get help working remotely, how will I apply my existing skills
The above thoughts and many more twisted and turned in my head for many months until I finally started. At that moment I have started to realise something (of course seniority also helps here), that no matter the difficulties and challenges that I will be provided with, what matters the most is the willingness to succeed.
You may remember the above sentence, in fact, that was the same sentence I used to explain what makes a good candidate for a junior developer role! That same spark that I personally see in people’s eyes when they apply for their first job, the same one that I had many years ago, is the one and only real skill you need to succeed!
Since joining This Dot I have met amazing developers with CVs that make mine look useless, worked in great companies and delivered many great projects. I am still experiencing “imposter syndrome” from time to time and this is totally fine, but my 10 years of experience have opened my eyes and made me realise that no matter the challenges, in time, I will succeed.
We have now reached the end of this post. A post in which I have shared numerous instances of “shaking legs”, “failure”, great weakness and ongoing setbacks. As many people say, people usually see success as luck and or given, but I personally started from nothing and worked my way up. I worked hard for it, I did not just wait for the future to land on my legs, and that comes with a price (endless hours of learning and constantly working outside of my conference zone).
I have recently achieved another milestone in my career by writing a book that I wished I had when I first started my career. If you enjoyed the above post I suggest you get a copy (It is just 5$ with the following code – https://leanpub.com/beyond-coding/c/10-years-post ).
It is time to say goodbye and continue my career for another 10 years and see where that brings me. I have learned now that you never reach the end, and at every turn, there is a new beginning. May your career be as fruitful as mine and please reach out if there is any help that I can give you or comment below if you found this post useful.