Jonathan Boccara is a lead software engineer focusing on how to make code understandable to humans. He wrote the book The Legacy Code Programmer’s Toolbox, that shows how to be efficient while working with existing code. And he blogs on Fluent C++ about how to write expressive code. Jonathan has experience in C++, large codebases, financial software and library design. He can be found on Twitter @JoBoccara.
What was your best/favorite subject in school?
My favourite subject in school was maths. It is the rational side of maths that worked with me. In my view, doing maths consists in learning, understanding, and thinking creatively. This approach taught by maths is useful in about anything I do in my life today, be there at work or outside of work. Humanities, on the other hand, consist in… well I’ve never really figured out humanities, to be honest.
What was your first job?
My first long internship (1 year) was to work on a trading desk in the City of London. This was pretty awesome.
My first actual job after graduating consisted in performing financial analyses (this is called TS) at Ernst & Young. This is like the worst office job you can imagine. Long days (and nights), dull tasks, little learning, stressed people, and low pay especially when you work out your hourly rate.
People go there because they think it will help their CVs. But they spend several years of their life being miserable, for an uncertain outcome. I fled from that company after a few months.
This made me realise something I consider important: there are a lot of challenging jobs out there. For some of them, the challenge lies in the task itself, and that’s a sane situation. Like in programming: code is a complex thing, and doing what you want with it requires good skills. For others jobs, like those positions at Ernst & Young, the actual job is not challenging. There is no technicality, you just move numbers around and hold meetings with your clients. The real challenge comes from living with the hostile work environment. And that is not the type of challenge you want in your professional life, in my opinion.
Where and how did you first get into the industry you currently work in?
I used to be writing code as a hobby, and I liked doing this very much. When I decided that Ernst & Young wasn’t for me, I decided to try to do coding professionally.
I couldn’t sell my skills, because back then, some 8 years ago, it was just an on-the-side thing, and there was SO much I didn’t know about programming. But my selling point was mainly my motivation, my desire to learn, and also the fact that I was familiar with the domain of the application (it was financial, the sort of things I was doing in my long internship).
Today I lead a team of programmers, and the desire and aptitude to learn is what I value most in new recruits. You can make it in the programming industry with little knowledge at the beginning, as long as you’re motivated to gulp down a lot of it in the following few years. That’s a fantastic opportunity in the programming industry.
How do you keep yourself motivated?
There is one thing that kills the motivation of thousands of developers: legacy code. Legacy code means code that has been around in the company for a while, that you don’t really understand and don’t feel comfortable changing (even though your job is to make code evolve).
I don’t mind legacy code. In fact I even appreciate the intellectual challenge it provides. I have two secrets to stay motivated with legacy code: don’t complain if you don’t mean to improve the code, and take ownership of the code you’re working with. Even if you didn’t write it yourself, consider that this is *your* code, this is what you have to work with and you have to make the best of it. This, and realize that legacy code is everywhere.
If you want to read more about that, I talk about it more extensively in my recently published book, the Legacy Code Programmer’s Toolbox.
Have you ever tried any unorthodox techniques to attract attention to your business?
As I explained before, as programmers we need to learn all the time. A few years ago I decided to try a new technique of transmitting knowledge: the Dailies.
Every day I make a 10 minutes presentation about a topic of programming (on the C++ language for example) to the people in my team and nearby, right in our office spaces.
The first time was a little awkward because we had never done anything like it. One person standing in the office and speaking for 10 minutes on the whiteboard. Weird.
But after a couple of times it became a routine, and people appreciated it a lot: it gives us the opportunity to learn something new every day without spending too much time listening to it.
Now every month I repeat the same kind of presentations to a different team, and I fuel some of the contents by taking them from blogs. Read more about the Dailies.
What personal achievement are you most proud of?
That would be blogging.
About two and a half years ago, I started my blog, Fluent C++, with the objective of writing two articles every week, on the topic of writing expressive code in C++ (and even in the context of legacy code).
So far I haven’t missed a week without releasing two articles, and I hope this continues for a long time!
What wisdom would you have liked to share with yourself when you first started out?
Wow, there is a lot. So much so that I wrote a book about this: the Legacy Code Programmer’s Toolbox. I wish I could ship my young past self this book, it contains about everything I’ve learned over the past 8 years or so, how to be efficient and happy when working with existing
I also wish I could give it to other young developers back then that could have done great but that progressively lost faith in their job because of legacy code.
Programming is a passion, and it should also be the case
when you do it professionally!