š”Can we talk about innovation as a young developer?
TL;DR
When I entered the professional world, I had to learn how to push myself and provide deliverables that at first seemed very challenging, if not impossible.
The purpose of this article is to share my experience on how to approach challenges that requires technical innovation.
In this article, we will go through :
- Introduction of the subject.
- Establishment of the foundation of what drives the product.
- Discussion about the obstacles that prevent the realization of features as envisioned.
- Sharing of my feedback on how to overcome them.
- Presentation of what to expect when following my approach.
- Conclusion of the writing.
Introduction
Innovation is about reviewing what exists and doing it in a new way to make it better.
Before when i was a student and then a recent graduate, I used to think that it might be presumptuous to discuss innovation at this early stage in my career.
From my perspective, it was necessary to first replicate what has been already done, build competence and experience, and have a 360-degree understanding of the field before considering changing things.
Now and after almost three years of working in the corporate world, I can affirm that itās an integral part of a developerās daily life.
Business needs decide about what should a product do
An engineer in essence must have the willingness to serve society by helping to build the infrastructure and tools that will enable it to thrive and ensure the prosperity of its citizens.
The solutions designed should not be limited by the technical capacity of their creators but should strive to be as reliable and efficient as possible, aiming to satisfy the users rather than further frustrating them. This is where innovation becomes a central part of the process.
šļøš· If citizens need two shores to be connected by a bridge to offer new economic and social perspectives, then civil engineers must find the solutions that make such a building happen, or if not, suggest the best alternative that serves the same purpose.
š»šØ If users need to link information from two different platforms, carry out financial transactions more smoothly, or have high-quality virtual meetings, then computer engineers must address these issues and solve them in a way that serves the best interests of users of their platform.
Barriers to technical innovation
Iāve been lucky to work with managers and product owners who make no compromises when it comes to user experience.
However, making a product as simple as possible for users often means dealing with a lot of complexity behind the scenes.
Sometimes, developers donāt fully grasp the business aliases behind a feature and, therefore, try to negotiate its implementation by proposing alternatives.
However sometimes they encounter challenges that, under specific conditions, become obstacles and prevents them from reaching the desired outcome.
The main challenges that have slowed me down and continue to slow me down in achieving the innovative feature weāve set as a team in various projects are:
- Limitation by services, libraries, or third-party components : Often, we had to create Chrome extensions, use external service APIs, or rely on third-party libraries. But in some cases our requirements were so unique that the existing options couldnāt fulfill them yet.
- Important trade-off : Sometimes, the benefits of an optimization (speed, storage) are more costly in terms of complexity or expenses than the project currently allows
- High complexity with low technicality : The range of technologies needed for an IT project is so extensive that expecting all team members to develop expertise in each one is too challenging. Consequently, for a single person, evaluating options and making precise decisions alone can be very difficult.
- Disorganized codebase that twists your arm : Sometimes, the existing codebase requires so many changes to add a single feature that starting the project from scratch becomes the obvious solution. When the code is not extensible, developers start to manage unnecessary complexity.
Overcoming technical barriers, guiding developers to surpass themselves
I honestly believe that I had many good intentions during my developments, as well as the desire to deliver good products.
However, counterintuitively, I found myself saying things to my team like:
- Is this really achievable?
- Itās going to be very difficult to accomplish
- Currently, there are technical limitations that prevent us from achieving what we want
- How are we going to do this? Weāve explored many ways with no success
And many more ā¦
But after persistence, when we finally see a positive outcome, it brings a great sense of satisfaction.
Over time, we have created features that we are proud of, and upon completion, they have helped us mature technically and professionally.
When it comes to innovation, an ounce of execution is worth more than a ton of theory.
Phil McKinney
Important section ! (my experience with pushing the boundaries in technical innovation)
In practical terms, four things define my method and have allowed me to surpass myself :
- Encountering the impossible gradually and continually : I choose an initial approach and explore it to see how it goes. Then, I take a break, forget about the problem for an afternoon or a day, and then revisit it with a different approach, and so on. Iām willing to let the challenge work on me from the inside, allowing it to slowly mature in my mind until I find an interesting approach.
- A team that understands the aliases associated with a challenge and gives you the time you need to develop a solution, a team that, after some progress, analyzes the situation with you and provides fresh ideas and a new way of looking at the problem that you can explore. A team that shields you from distractions and supports you in interactions with clients, top management, and stakeholders.
- Participation in various projects, such as side projects, freelancing, and corporate projects, expands a developerās perspective on what can and cannot be done. The knowledge and skills acquired in one of these domains become an asset and a source of fresh ideas in another.
- Accepting not to tackle multiple tasks at once : computer engineering is an abstract science, and a developer needs mental space to be able to visualize the technical problem and navigate its intricacies to find a workaround to overcome the obstacle.
The real expectations behind the pursuit of self-improvement
Whenever I dig deep and canāt find a good solution, or when I encounter a technical challenge that exceeded my current level, i often feel overwhelmed with worries. I sometimes even doubt my abilities, think iām a fraud but I try to persevere.
The nature of the results obtained varies; I donāt always manage to achieve exactly what we set out to do.
- There are times when I can create a feature just as I imagined.
- Other times, I achieve similar results but with negotiated business rules.
- Occasionally, I may not get the exact result I wanted, but I end up with a much better solution than the basic one.
- Sometimes, I canāt find the solution, but I understand precisely why I canāt achieve my goal.
But despite all of what was said before, it doesnāt change anything in the personal satisfaction that I receive when I finish my work.
Conclusion
When I joined Leyton, my manager, Saad RGUIG, had a way of doing things that summarizes the content of this article, which I will share as a conclusion. When he requested a technical task, no matter how challenging it was, he never accepted an immediate ānoā or any negotiation from the team at the beginning. Instead, he would be open to refining the taskās requirements after we conducted research and presented our analysis.
Acknowledgment
Special thanks to Imane EL MIR for her precious help and honest feedback.