Cracking Code and Conventions: An Exclusive Interview with Nicolas FränkelJune 05, 2023
In this enlightening interview, we explore the unique journey of Nicolas Fränkel, a seasoned professional in the software industry. From an architecture student to a passionate software developer, Nicolas shares his candid thoughts about the current state of software development and the potential impacts of AI.
- 🧑💼LinkedIn: Nicolas Fränkel – Head of Developer Experience – API7.ai
- 🐦Twitter: @nicolas_frankel
- 👨💻GitHub: nfrankel (Nicolas Fränkel)
- 📝Blog: Nicolas Fränkel - A Java geek
- 📚Medium: Nicolas Fränkel
- 💡Hashnode: Nicolas Fränkel
Bazlur: Can you tell us about your background and how you got started in the software industry?
Nicolas: This definitely needs a long answer! After I finished high school, I had no clue what I’d study. I had graduated in Math-Physics but loved drawing, so I entered an architecture “school” (it’s the name in France, though it’s higher education).
After two years, I understood it was not “my thing.” However, I found a class where you’d code a virtual 3D scene through a dedicated language. I fell in love with the class and spent an insane amount of time reading through the documentation and experimenting with all the options. I became the go-to student for it, and the year afterwards, I was assisting the teacher. I have found my way: I wanted to be a developer.
"I fell in love with the class and spent an insane amount of time reading through the documentation and experimenting with all the options. I became the go-to student for it, and the year afterwards, I was assisting the teacher. I have found my way. I wanted to be a developer."- Nicolas on discovering his passion for coding.
Now I must stop a bit and explain some interesting facts about France and the French culture that may surprise people from other countries. Napoléon founded the first engineering school in France, l’Ecole Polytechnique, and to this date, engineering schools are held as the “elite path” in Higher Education compared to Universities - exactly the opposite of every other country I know. Also, engineering degrees are master's level (and not bachelor's level). For this reason, French companies easily hire engineers from specialties different from the job’s requirements - they are supposed to learn fast.
I knew I couldn’t become a developer with only an MSc in Architecture and that I should become an engineer. Fortunately, the year I realized it was the year a “bridge” opened from the Architecture School to the nearby Civil Engineering School. I applied to the program, was selected, chose every IT-related option I could (not that many), and graduated with high honours.
Every engineering school requires an internship of three months or more. I chose an IT consultancy company and was hired afterwards.
Bazlur: That’s a fascinating journey, and it’s impressive how you found your passion for coding while studying architecture. I’m curious to know, what specifically about coding and developing software appealed to you the most?
Nicolas:It’s a question that I never asked myself, but here are a couple of answers that may have played a factor:
- Architecture classifies as a “Major Art.” In France, it was historically part of the Fine Arts education and taught along with drawing and painting. At the end of the 20th century, Architecture Schools were finally moved from the Ministry of Culture to the Ministry of Public Works. That’s to say; the culture had to transition from “artsy” to “scientific.” Most of my teachers actually had graduated in art, and it showed.
Unfortunately, I’m more scientific-grounded and code (as well as a couple of other engineering classes) attracted me much more.
- I do like learning, and I discovered with the 3D class a domain where the knowledge corpus was delimited in scope and the ability to access the documentation with no intermediary directly.
I found it very enticing compared to regular classes, where the corpus is virtually endless, and you need a teacher to lead you through it.
- Last but not least, computers and code are much easier to handle for me. A language has rules, and as long as you play by the rules, you’ll get the expected results; humans, not so much. I guess it’s easier for (and probably for most developers) to interact with computers than with humans for this reason.
"A language has rules, and as long as you play by the rules, you’ll get the expected results; humans, not so much. I guess it’s easier for me (and probably for most developers) to interact with computers than with humans for this reason." .- Nicolas on his inclination towards coding
Bazlur: In an article, my good friend Bruno Souza once suggested that programmers should explore their creative side outside of coding, whether it's through writing poetry or enjoying kite-flying. How many years of coding experience do you have—more than 20 perhaps? As the topic of art came up, what were your thoughts on it? Have you found any non-coding inspirations in your life?
Nicolas: Actually, for me, it’s the opposite. When I was younger, I drew a lot (and painted a bit). When I started working, I had to catch up with people who had a computer science/engineering education and spent a lot of time on it. It meant stopping most unrelated activities, including drawing. I tried to start again a couple of years ago, but I didn’t have the same fun as before, plus it was time-consuming. Nowadays, I prefer taking pictures of places I visit via my job.
However, I do think that sitting and coding at your office table all day long is a terrible idea. In my case, I practice sports: running because it’s the easiest, biking a bit, playing squash a bit, skiing and swimming a couple of times a year, hiking, etc.
I’ve noticed that it frees my conscious mind. In general, I try to have a long pause during lunchtime when I go running (or even walking) around. I’ve often come up with solutions to problems I've had for a couple of days during those pauses. I’d recommend such pauses.
"I’ve noticed that it frees my conscious mind. In general, I try to have a long pause during lunchtime when I go running (or even walking) around. I’ve often come up with solutions to problems I've had for a couple of days during those pauses. I’d recommend such pauses."- Nicolas on the importance of taking breaks.
On an unrelated note, I do love real-world languages and learning them. I don’t know if it can be called inspiration, but I always try to learn a few sentences of the language where I travel to.
Bazlur: Let’s shift gears and talk about the current state of software development. As someone with extensive experience in the software development industry, what do you believe are the major challenges that developers currently encounter? Given your extensive career in this area, you have likely witnessed a range of strategies and solutions employed to tackle various issues, many of which have created new difficulties. Could you also offer advice on how these challenges can be effectively addressed?
Nicolas: My opinion is that our industry is plagued by herd mentality and cargo cults. Let me develop.
We are supposed to be engineers. Engineering is finding the "best" solution in a specific context. Best is defined by the requirements: it can be the cheapest, the fastest, the most resilient, etc. Most likely, it's a combination of prioritized requirements. For example, the business wants to hold a worldwide event in Q2. In this case, the most essential requirement is that the solution must be implemented before the deadline. Then, it should be as cheap as possible since we don't need to re-use the code base afterwards.
"My opinion is that our industry is plagued by herd mentality and cargo cults. We are supposed to be engineers. Engineering is finding the "best" solution in a specific context."- Nicolas on the issues in the software industry.
The context could be that we are already working with an externalized workforce, but we are not happy about it. Yet, given the schedule, it's not feasible to interview and hire developers to replace the ones we have. The pragmatic way is to keep using the workforce, at least for this one project - better the devil, you know.
However, our industry is full of injunctions that completely ignore both requirements and specific contexts: be agile, and you'll solve all your delivery problems! Chances are that the organization won't change anything but the terms it uses—goodbye, project managers; hello, scrum masters. The former will get two days of training and magically transform into the latter without any other change.
Another current favourite of mine is: migrate to microservices, and you'll solve your scalability and maintainability problems! It completely ignores the fact that most real-world companies don't have scalability problems, are not mature enough to tackle distributed system issues introduced by microservices, and will face the exact same maintainability problems with microservices as with monoliths.
To be complete, I should also mention the possible turmoil that AI can bring to IT. Whether it's a forest fire that will drastically revolutionize the way we work or just a spark with no potential, I cannot judge. I intend to spend some time evaluating the subject in the near future, though.
Bazlur: You mentioned the potential impact of AI on the IT industry and your interest in evaluating the subject in the near future. In your opinion, what are some key areas within software development that AI could have a significant influence on, and how do you envision AI potentially changing the way developers work in those areas?
Nicolas: As I mentioned, I’m barely scratching the surface at the moment. My experience so far, either personally or with my team, is pretty bad.
For example, as a support engineer, you need to have enough knowledge of the subject to verify that the AI is not hallucinating its answer.
Likewise, I asked OpenAI to refactor a block of code with nested when to a more idiomatic solution using let. I had to make a couple of roundtrips, and none of the solutions offered were equivalent to the initial code. It drove me to the solution, but it for sure wasn’t the magical recipe that everybody thought.
I've had direct experience with a developer who copy-pasted StackOverflow answers to write code without understanding the context. I can assure you that I’ll never work with this person again. On the other hand, StackOverflow is an awesome tool for developers who know how to use it. At the moment, I see these AI tools as StackOverflow on steroids, nothing more, nothing less.
Bazlur: We can certainly view it as a tool that facilitates our work. However, considering its unprecedented rate of improvement, do you not think that AI will have a significant impact on our lives in 5 to 10 years? Would it be wise for programmers to begin learning about data science, machine learning, and AI development?
Nicolas: Again, I reserve my judgment, as most of my previous forecasts have been dead wrong, as they underestimated the possibility of a cog in the machine.
Developers should always learn as much as possible. However, does a car driver need to understand how a car works? With what level of detail? I have to admit that I’m happy to know languages that allow me to develop code with high-level abstractions. Some other developers get a kick out of going down the rabbit hole of low-level abstractions.
In short: it depends on what you like and at what level you want to use AI.
Bazlur: What advice would you give someone new to the software industry who is unsure about which career path to take? Could you also provide insights into the various roles within the industry, such as developer, quality assurance, manager, and developer advocacy, and the specific skills and interests needed for each of these roles?
If you’re unsure, then I’d advise you to try as many roles as possible. While you can find plenty of resources online, nothing beats direct experience. We are fortunate to have a shortage of technical roles compared to the industry’s needs: it’s always possible to switch roles back and forth if you so desire.
Regarding the roles, for me, a developer is the root. Automation QA engineers are developers who like to try to break things and uncover secrets and are able to document their steps in doing so. QA engineers, both automated and manual, deserve a lot more credit than they receive, as they uncover issues early in the development process, hence keeping maintenance costs down. But if you want to be one, you should be prepared to be an unsung hero.
I’m probably being subjective, but for me, developer advocates are developers who are able to explain complex things in simple terms. This explanation can come in multiple forms: blog posts, documentation, videos, conference talks, technical support, etc.
Managers are special in my world: most of the managers I had in my life had little to negative value in the company, being paid huge sums of money to approve my vacation requests, be the proxy for my yearly raise, and create reports for managers higher up the chain.
However, I’ve had a couple of managers who actually had lots of value: they handled all of the crappy company stuff so I could do my job. These people are indeed priceless. If you want to become one, you need to love people genuinely, look forward to interacting with them on a daily basis, and accept to stay in the shadows while putting the people who are doing the work in the limelight.
Bazlur: Thank you so much for sharing your insights with us. We really appreciate your time. If we have any further questions, we will be sure to reach out to you. Before we end, is there any parting advice or resources you would like to share with our readers, such as a list of recommended books or any other helpful information?
Nicolas: Be passionate about what you do. Once you lose passion, it becomes a regular job. If you’re not passionate about your job, change it! We (technical people) are very fortunate that there are more positions than the available workforce.
"Be passionate about what you do. Once you lose passion, it becomes a regular job. If you’re not passionate about your job, change it! We (technical people) are very fortunate that there are more positions than the available workforce."- Nicolas's parting advice.
If you leave bad companies to join the good ones, the former will wither and die, and the latter will grow and thrive. Vote with your feet!
Nicolas provides an invaluable perspective, emphasizing passion and continual learning in the ever-evolving tech field. His critique of industry challenges, along with his empowering advice for choosing a suitable workplace, makes his insights both informative and inspirational for professionals in the software industry and beyond.
I hope you, as a reader, have found this interview beneficial. Stay tuned for next week's interview with another industry star.
Note: This comprehensive and insightful interview was conducted through various digital platforms, including Google Docs, email, and Slack. We welcome any suggestions to enhance our process, ensuring better future experiences.