I started taking computers apart and putting them back together, upgrading them, and setting them up when I was 14. Besides wanting to just play computer games, I actually wanted to understand how the device was constructed and functioned. I learned my first programming language, Python, when I was 17. But as often happens with hobbies, my interests changed. While I later used the hardware primarily for gaming, I became curious about the theory behind it all. Security, CCC, and CT sparked my interest, and provided me with a wealth of exciting information.
But despite being interested in these topics, they only played a limited role in my choice of studies. I chose mathematics and physics instead. Tech was exciting to me, and I knew that studying computer science would go in that direction. But my heart was in the sciences and especially mathematics. To keep up my enthusiasm for digital technology, I decided to take computer science as a minor subject during my studies.
The years at university went by, and there was less and less overlap between my original interests and what I was studying. Although programming languages are part of mathematics studies, they are not at a level comparable to modern software development. They were tools for very specific use cases. The minor in computer science was also at a theoretical level that had little to do with my original interests.
By the end of my studies, I was a natural scientist who could theoretically make sense of the possibilities of digital tech for his own purposes and understood how and why it works. But nothing seemed further away at that moment than actually being able to use this knowledge meaningfully in the field of software development.
Becoming a consultant
After graduating, I started at Frobese GmbH as an IT consultant and quickly realised that my image of a consultant wasn’t spot on, although there was some truth to it. The term “adviser” or “consultant” creates certain expectations in people, especially clients. They can be positive, but also negative expectations. As a consultant, you’re bought in for your expertise, which is why the results also have to be very high quality. In meetings and presentations, there is the expectation that the consultant is convinced of their results because they are based on professional expertise, that they look at all sides in a thoughtful way, and that they bring their outside perspective to bear on the problem.
However, the client also knows what level of experience the consultant has, so the client’s expectations of a senior consultant are different from those of a junior.
But there I was, with degree in mathematics in my pocket and programming experience that had nothing to do with the real world. No experience in professional software development and no experience in using tools for development and organisation.
I had the knowledge and experience to understand most complicated subjects, given my background. That was really what I learned in my studies. I could work , more or less independently, and understand highly complicated topics. Looking back, it was this ability, combined with an interest in software, that provided a good foundation for me to work as a software specialist.
What is my job like?
My assignments start first and foremost with a client needing expertise and/or additional development resources for a project. If the client is convinced that I meet their requirements, they integrate me into the department or project. And that’s where the skills I just mentioned come into play. From one day to the next, you become part of a team that functions sometimes more and sometimes less well, working on an evolved technical infrastructure that is sometimes more and sometimes less well thought out.
The basic challenge at that point is familiarising yourself with the project and issues. This process is different than if I were to take up the same position as a permanent employee. In addition to the resources that the client provides me with, all my colleagues at Frobese GmbH are also a source of advice. Using these resources, I begin to familiarise myself with the organisational structure, the technical systems, the code base, and the technical framework. The degree to which I’ve mastered programming language X or tool Y before starting is irrelevant for the time being. I just have to master it when it helps me solve my task or problem.
Generally, you’re hired as a consultant for a specific role, and your responsibilities arise from this. Ideally, the client also will give me tasks from the project that will support me (ideally) in familiarising myself with things. This allows me to integrate bit by bit into the daily project routine and learn how the social dynamics in the teamwork and where I can provide concrete support or take on my own tasks.
Am I good enough?
The “imposter syndrome” is a common feeling among developers who acquire their knowledge themselves and is based on a misperception. The classic perception of a profession is that I learn the profession and then have mastery of it. But the field of software development and the resources for self-education are so vast that the learning process never ends. My affinity for technology and basic logical thinking forms the foundation on which I can learn exactly what I find interesting at that very moment, or what I need for my professional situation. Programming languages and tools become interchangeable. The more you have already seen, the faster this happens.
A consultant’s true skill is not so much immediately knowing the solution to a client’s problem – the subject areas are simply too diverse for that – but being able to realistically convey to the client how long it will take until you have enough information to find a solution. This involves researching, acquiring new knowledge, and applying it to the client’s problem. The important thing to remember is that it is not the client’s job to provide you with the resources to acquire the new knowledge you need. You are responsible for this yourself and can ideally draw on your own experience and your colleagues’ knowledge.
I’m familiar with this way of thinking and working from my student days, for example when I had to work on weekly exercises for individual lectures. I had to find the tools and information I needed from the lectures and apply it to the problem. Ideally, I worked on the exercises together with other students in a study group. It was important to keep an eye on the framework and boundary conditions so as not to get bogged down.
Transferring this to my everyday professional life, I now just work with programming languages and tools instead of the lecture contents. The framework conditions are the client’s technical and business processes, and the boundary conditions are the things for which my solution must work.
Whether working as a consultant is right for someone is not something that can be determined based on certain fixed criteria. A software specialist should at least have some affinity for tech, which doesn’t necessarily mean programming skills. The ability to learn quickly, resilience in the face of complex problems, and fun working independently in different areas are definitely a good foundation.
But in the end, you have to try things out before you know how you feel about them. A big advantage of being a software specialist compared to a classic developer or IT worker is the opportunity to get to know many different companies and IT systems without having to change jobs. In this sense the work has shown me how diverse the areas and topics are in which you can work in the field of software development and that I am surprisingly well prepared for it because of my science degree.
Want to work as a consultant? Check out our open positions here!