I grew up in a multi-cultural family and in different countries around the world.
Fun fact; my mother was a pioneer in software engineering and had an HP Vectra as her first PC. Nevertheless, contrary to many tech enthusiasts, I never wanted to learn it.
Here we are, over 20 years later, me writing about software and software architecture. I started learning about software and more precisely, embedded software in my engineering school back in 2010.
So how did I get there?
2009 - Scientific A-degree in France.
I was good at science so I decided to study at the French preparatory school and passed the examination to enter in an engineering school.
2011 - Start in ENSICAEN
I really struggled at preparatory school… but I learned 2 things:
- I’m good at electronic and physics
- I can support big loads of stress and pressure
2012 - Awakening for software programming
That was for me a revelation ^^ when I started programming in preparatory school or even the first year of engineering school, I really did not like it. It was a necessary evil to get the diploma at the end.
I was again good in electronics and physics so I decided to specialize myself in embedded devices and telecommunications but software…
During this year I had a good teacher (Mr. Descoubes) and at a certain point, software started making sense to me. I could draw it, I could interact with it. I could understand how the machine would execute what I’m writing.
What I learned:
- The arcane of how an MCU and CPU works and how to interact with them
- How your code translates into machine understandable instructions
- How RTOSs work and how I can use them
2013 - Horizon extension
I decided I would complete the rest of my studies abroad in Germany. Therefore, I applied for an internship at Airbus defense and space and prepared my ERASMUS semester in Stuttgart.
What I learned:
- In real life, projects never really end. They are always the continuation of something and will open doors for many new things to be built on top.
- Until now, I have been taught that there was only one solution to one problem; this is completely false. Even problems that feels as simple as "How to calculate 0.3*0.3"! Sure, you calculated it in your head to be 0.09 but wait, how does a PC do it? The machine can only count 1 and 0, right? A Byte is 8 bits. When I have a floating value (x,xx), how does the PC calculate it? Do I, on purpose, multiply both by 10 and store the information that I have to divide later by 100? Maybe the CPU has a floating-point unit (FPU) that can calculate it directly?
2014 - Master of engineering in electronic and applied physics, major embedded systems
This was the end of my "studies" and the start of the working life! But wait, I first need to find a job ^^
This did not work as easily as expected. Airbus basically restructured itself and there were no openings and with me being not very good at selling myself as the good engineer I am, after 6 months I managed to find a position at a consulting company.
2015 - Bosch Connected Devices and Solution GmbH
This was probably the years I learned the most and where I met the most decisive people in my life up to now.
I started as a embedded developer but soon afterwards became a software architect. I built PLS (link), TEP (link) and iRoll, and mentored XDK, TDL... I basically worked on all of the company products.
What I learned
- What it takes to make a product that can be sold
- What does quality mean and how to measure it
- What it takes to build a constraints IoT device (it needs to run a long time on battery)
- The base of software architecture and how important this role is to develop IoT devices
- How quality should guide us to make the right decisions to resolve a problem. Yes, there are many solutions, but some of them will simplify our life later on; some will make it worse
- How IoT is the place where "cloud" and "embedded" meet or clash. Do you know how many cloud developers I have met that expected an IoT device to behave as a raspberry Pi because they made a small PoC with it and considered it was enough!? I will have a blog entry to talk about this at a certain point.
- How to do firmware updated on constraints IoT devices
I would also like to thank Husain for mentoring me for software architecture and Christian Weichel for constantly challenging my views!
2018 - Diversification
This is the beginning of the years where I mostly grew as a person and as an architect. From eBike first IoT try (did not become a product at the end but defined several milestones for the recent (2022) generation), to building my first contraints BLE Gateway for smart agriculture; to leading an embedded IoT framework we partially open sourced under the name kiso (first division open source project); to gaining and collaborating with clients for the platform development and defining new concepts for IoT device management !
So what did I learn?
- How to collaborate with clients and manage their interests
- Design and build systems (frameworks) to fulfill broader client needs
- Collaborate with multiple teams to build a cohesive solution
- How to win projects
- How to hire experts
2020 - Focus and application of my knowledge
Beginning 2020, I was requested to join an eBike taskforce with the task to "build some automation to secure the development of our common code." I took the responsibility of a team of 4 experts. After 2 years, I coordinated over 30 experts (grew organically) to build a test-framework (I also open sourced: kiso-testing) and many eBike specific framework plugins that disrupted the testing landscape at eBike. But I also initiated the creation of a datacenter containing only embedded devices that can not only be used to develop software remotely but that can also be used for hardware-in-the-loop testing.
What did I learn?
- I have proven that I know how to design and build complex solutions (to resolve complex problems) that needs know-how in several domains (embedded, testing, cloud, infra/sre).
- That transformation takes time and a lot of effort. Finding or building the right moment to trigger a change is an art that I have not yet mastered.
- That for distributed systems like the datacenter, everything and anything can go wrong.
- How to apply Domain Driven Design for the datacenter and how to increase its stability.
2022 - Certification and long-term organization setup
After 2 years of crazy work, I also managed to pack in my ISAQB-A certification validation: Certified Professional for Software Architecture - Advanced Level which I'm very proud of. I cannot disclose the topic but to give you an idea, the work required to deliver this is on the same level as a masters thesis.
The eBike taskforce is officially over, the "smart system" is now on the market and my group now needs to be integrated to the current eBike organization.
Let see what the future has in store for me 🙂
I want to thank Dr. Gernot Starke and Peter HruschkaI (founder of arc42) that I met and drank beer with in Stuttgart and inspired me to get out of my comfort zone.
I also want to thank NetworkChuck for sharing his story that created additional motivation for me to create this website. Check out his channel, you may learn something.