Taming the Hydra

The story of how I have(n’t) overcome my impostor syndrome.

Helder Santos
xgeeks
9 min readApr 11, 2022

--

In this article, I will go over some of the challenges I faced in two very distinct phases of my career as a software engineer, with an overarching feeling that I wasn’t quite good enough for the role I had at the time, which might resonate with the experience of multiple others in this area.

CHAPTER 1 — The walk

I started my career as a developer in 2011 in a small startup in Viseu, a medium-sized town in the heart of Portugal. My colleagues at the time were the two founders of the company and there I had the opportunity to be a jack of all trades, helping in everything related to the engineering side of the business to deliver and maintain custom-made web applications.
This meant architecting applications from scratch, setting up and maintaining web servers, designing databases, communicating with clients to keep projects running, and ensuring their goals were achieved, among other things. All of this made me absorb knowledge from multiple different aspects of software engineering, but I never felt I mastered any, which was something that was always on the back of my mind. I felt that to become a master in one field, I wouldn’t be able to fulfill my role since everything else was inevitably going to be left behind. I thought this would be one of my major weaknesses, since there would always be someone better than me in any of the areas I worked on, until recently. I have lately found out that this is not entirely true, and that having a global perspective on software development can bring immense value to some teams… I’ll expand on this later in the article.

As the startup grew, there was an increasing need for someone to assume a managerial role and at that time I started to be the main point of contact for some of the clients, led development teams to fulfil project goals and helped steer product decisions, thus learning a bit about a role that I would later understand to be a mix between engineering and project management. This role has grown in me and I loved seeing projects grow and evolve in a controlled environment, where all decisions were thought and tested before being implemented. I was able to help my colleagues with specific implementation details for more complex features. This was however one of the times that I felt I was not good enough for the job and I kept feeling like at some point my lack of skill/preparation would show through and cripple the company and myself in the process. Fortunately, this did not happen a lot, and although I have failed at times, we were always able to make sure we learned from those failures and put in place mechanisms to prevent them from repeating, some of those mechanisms I still use to this day.

As time went on, the dust began to settle and I started to become more confident in my capabilities, performing better in my role and with less stress than before, work gradually became (almost) a walk in the park, and projects were evolving at a fast and manageable pace. Little did I know things were about to take a huge turn, and the walk would soon turn into a vertigo-inducing climb, which I will go through in the next chapter.

CHAPTER 2 — The climb

It was late 2020 when I got a proposal for a whole new challenge, moving with 3 of the colleagues I was working with at the time to a company that was going to open a new office where I lived. This was my first contact with xgeeks and simultaneously the first time I really thought about moving away from the company where I have learned everything I knew about software development.

The decision was not an easy one but after some ponderation, I realized that I would likely regret it if I let this opportunity pass by, so I decided to accept the offer and move to xgeeks, knowing that It would be a completely different experience, basically a fresh start, which was quite daunting. I would have to prove myself to my new team, learn new things at a fast pace and keep up with the frantic speed of a top-notch multinational software engineering company, and boy was I right…

I had around one week of onboarding and then proceeded to get some training in the technologies and tools used across the company. This initial phase gave me enough time to settle into the new pace and I got to meet a lot of my new coworkers who were very welcoming and supported me in everything that I needed, which is quite a feat considering we were at the height of a major global pandemic.

After a couple of days, I got assigned to a project, along with the two co-workers that joined xgeeks with me. The task was to unblock a project that had been halted due to some technical issues allied with time constraints. We were supposed to finish a 3D previewer that should export the blueprints of objects edited on a 2D canvas.

This was the first time I realized that the previous 9 years spent on multiple different projects at my previous company could be very valuable, because luckily for us this was a challenge that we were somewhat familiar with (I told you I would get to this part). I had already worked with PDF generation and 3D editors in separate projects, 70% of the knowledge required was already there, we just had to push for the last 30% that would tie both ends together and deliver a product that met all the requirements.

After around one month of working on this project, we managed to complete it and deliver the finished product for approval. This was my initiation to the ways of working at xgeeks, and although I did have some sleepless nights at the start I believe it was an amazing way to get started and was overall a great experience to be able to contribute to such a rich project.

Shortly after the 3D exporter, I was assigned to another project, this time I was helping on an audit for a large-scale product developed by a partner company. This project felt very bittersweet at first since it was something I had never done in the past but at the same time, I was again very fortunate to have worked with a multitude of technologies and systems that allowed me to easily grasp the complexity of the project in audit and understand most of its pieces and the way they interacted with each other.

For this audit, I was integrated into a team of 4 software engineers and was tasked with analyzing multiple backend apps and understanding what had been done and what could be improved. I ended up leveraging a lot of the knowledge I had gained previously from implementing and maintaining a medium-sized application that was served to multiple availability zones, and thus had somewhat similar constraints. It was also valuable that I understood how to structure databases and how these can connect to their consumers to reduce latency and increase reliability and availability.

This was the second time I realized that everything that I had done previously served the purpose of creating a very sturdy foundation, that would be the base upon which all the other knowledge would sit. It is much easier to understand a very complex system if you are able to understand most of the parts that compose it, so never underestimate the knowledge gained on simple projects/tasks, as it will most likely prove useful sometime in the future.

Little did I know these first two projects were not more than a build-up for an even larger adventure that was about to come. At this point, I was starting to feel more confident in my capabilities but was still feeling like there were a lot of things that I was missing to be able to perform my role confidently. I felt like at some point someone would ask me a question or task me with something that I would not have an answer or a solution to, and that thought lingers in the back of my head up to this day.
I’m not sure if this feeling is a byproduct of the field I’m working in, but I’m starting to learn that I’m probably not alone in this struggle and that this might be a consequence of working in such a fast-paced field, where what we know at any given time can be deprecated just a couple days after so there is a lot of work needed just to be able to keep up with the ever-evolving field.

CHAPTER 3 — The flight

It was a little over 4 months into working at xgeeks that I was allocated to a large-scale project, where I and my team were going to kick off the work to prepare multiple applications for international expansion.

The proposition was quite simple, there was an existing online marketplace, composed of multiple apps, micro frontends, and APIs that needed to be localized and translated for multiple markets. This meant all the textual content that already existed had to be extracted into resource files and synchronized with a Translation Management Service. On top of that, all market-specific information should also be adjusted to fit the proposition for that country/market (think dates, currency, and units for example). Despite seeming simple, the sheer scale of the application brought a couple of challenges with it, one of which was that the solution should be standardized for multiple technologies (react apps/micro frontends, next.js apps, and laravel backends).

At first, everything seemed a bit overwhelming, I was part of a team of 3 engineers from xgeeks and had little knowledge of the entire scope of the client’s project, which had already over 200 other engineers distributed across multiple teams. This was my first contact with such a large-scale engineering project, and my impostor syndrome was at an all-time high during the first few weeks.

There were some sleepless nights trying to catch up on knowledge that I thought (sometimes unreasonably) I should already have, but eventually, the dust began to settle and our ways of working started paying off, I and my team managed to fulfill the purpose we were tasked with and solve the challenges we had before us. Shortly after that, we were allocated to other teams to help out with other topics at the company, and here again, we had to chase knowledge in order to “stay on top of things”.

In conclusion, in a field such as this, where knowledge and technology are ever-changing variables that never get stale, there will always be new things to learn or to improve on, and this is just something we ought to embrace to be able to keep evolving (and keep up with the field). If you ever find yourself struggling to do this, try to find a mentor that can help you on your journey, it doesn’t need to be an expert in the topic you’re trying to master, sometimes just having someone to share your experiences and struggles will go a long way to help you realize that you’re most likely not alone and that there are others around you that feel the same way.

Sorry for the clickbaity title, by now you probably noticed that I haven’t really learned how to tame this metaphorical hydra and I’m not sure I will ever be able to. But I do know that I’m not alone in feeling this way and maybe overcoming this is just ceasing to feel inadequate or unfit for a role, and trusting that you will be able to learn most of what you need before you need to put that knowledge to the test.

If you enjoy working on large-scale projects with global impact and if you like a real challenge, feel free to reach out to us at xgeeks! We are growing our team and you might be the next one to join this group of talented people 😉

Check out our social media channels if you want to get a sneak peek of life at xgeeks! See you soon!

--

--