From lawyer to Software Engineer
Today I share with you an interview with Guillaume Monnet, a self-taught developer who changed career from being a lawyer to being a Software Engineer. I hope you enjoy his story. Read on for advice about learning to code and interview tips for your first job.
Hey, so can you introduce yourself?
Hi, I’m Guillaume, a full-stack developer living in Luxembourg. I currently work in the banking industry after switching careers in 2015. Previously I was a legal advisor specialized in intellectual property law with 6 years of experience.
How did you learn to code?
My passion for coding goes back to high school, where I started programming in C++. I had the crazy idea of creating a highly realistic 3D video game! Long story short, it didn’t work. I had no clue how to create an actual game. But I learned a lot about programming, solving problems, digging into documentation, etc. And I loved it! After this first experience, I never stopped programming during my free time. I started working on basic websites, flash animations, WordPress websites.
After high school, I tried to enter engineering schools to learn computer science. At this time, circa 2002, you had to be good at mathematics to be accepted. It was not the case for me, and I got rejected everywhere. So, I enrolled in the math and computer science curriculum at the university.
In France, university is very cheap, and there is no entrance exam. I thought that being good in coding classes would somehow compensate for all the rest. But what I found out early is that the first year was only mathematics classes, with only one OCaml course. So I struggled there for one year. After that, I decided to study law like most of my family.
I already did some internships in my family law practice, so it was not a strange choice. I enjoyed it and ended up being very good at it. I got my master’s degree in intellectual property law in 2008 and worked for six years as a legal advisor. I advised clients, negotiated contracts, and even did some lobbying (on the light side!) in various companies like Yahoo! Or PricewaterhouseCoopers.
During these 11 years of studying and practicing law, I never stopped coding on bigger and bigger side projects. The last one before switching careers was a failed attempt at creating an Instagram dedicated to pets pictures. I worked on it for two years and did everything by myself, from designing icons to developing mobile apps. I learned a lot, and we even went on regional TV and newspapers. It was a fun time, even if the app never took off. But most of all, I had something big to showcase.
Ultimately, coding was taking most of my free time, evening, nights, and weekends. In 2015, I decided to switch careers. It was a tough decision. You have to put aside your painful years of studies, your work experience and start over. Going back to school wasn't an option, having a family to support. But my side projects helped a lot, and I was able to showcase them and land a good first job.
I can also say that my background helped me be a better developer. Before becoming a legal advisor, I was mostly an introvert. Having to negotiate and explain legalese developed my communication skills and self-confidence. Today, I think I am a decent developer with good soft skills. So, I did not lose everything during the conversion!
Why did you learn to code?
I started tinkering with code at a young age, and I loved it. Being able to write code and immediately see a result was really rewarding. Even in my early days when I was completely lost!
I also learned everything by doing, so it didn’t feel like learning most of the time. During my career switch, I started taking some online courses and dug deeper into some topics. Design patterns, for example. I had to fill the gap of my missing computer science education. I also wanted to be a full-fledged developer and not be missing critical skills. That’s why I also read some books about technical management. Not because I wanted or even could be a manager at this time. But to better understand the industry I would be evolving in.
How did you learn coding?
I mostly learned by doing. I definitely cannot sit and watch video tutorials. It’s not a format that suits me well. All I learned I did it by working on bigger and bigger projects. Usually, the process is the following: I start working on the project, list what to do next, take a task, and when I'm stuck (all the time!) I Google it.
However, I do not take anything for granted and never stop at the first result. I try to learn on the subject as thoroughly as possible with the time I have. It is not always easy, and sometimes I just completely miss the concept and fail to understand it.
I have to go back at it multiple times to understand what it’s all about. I had this experience recently with React hooks. After my first research, I could use a basic example but failed to understand it. It required multiple attempts and hands-on experience to grasp the big picture.
I also took some online courses on Code School (now Pluralsight) and edX (for machine learning). It helped me understand more abstract concepts, but I found myself not remembering as much as I do when working on a project.
I think this way of learning has one advantage aside from giving you hands-on experience. It's also very similar to working in a company, minus the tight deadlines!
What was the interview process like for getting your first job?
Among my various interviews, I was lucky to get only one whiteboard exercise. I truly despise them, and I failed miserably. I do not understand how you can judge someone's ability to code and work in a team by asking them to write algorithms on a whiteboard. Most developers will use libraries anyway.
But the rest of the interviews were genuine discussions with the team, mainly trying to see if I would be a good fit. And technical questions were here to assess how I would approach problems and solve them.
I also had to show my portfolio more than once. Having worked on various personal projects before switching careers played an important role. Overall, most interviews were enriching chats with the team with one or two meetings maximum.
Do you have tips for people who want to learn to code without doing a degree?
We are lucky to be in an industry where we can learn everything on our own. That is not the case for all subjects. For example, the law is hard to grasp. Surely, you can read the law and the jurisprudence and mostly understand it. But learning how to apply it to real cases requires hands-on experience with teachers and practitioners. I don't see how one could learn this by himself online. And I see the result all the time, for example with the GDPR, where most analyses done by non-practitioners are completely off.
Coding is a little bit easier to approach in this regard. You write your code, run it or compile it. And you can mostly assess by yourself if it is working or not. But do not fool yourself. It is vast, and some subjects are very technical. While I always understood what I was reading when practicing law, sometimes I can not understand some programming topics. One example, machine learning is very hard for me due to the amount of mathematics involved. I can use libraries, but I completely fail to understand how they work.
Like any other field of study, there are many branches, languages, approaches, practices. And it evolves a lot every day, more than anywhere else. You will need to like it and be dedicated enough to explore the new things coming out every day.
What are your career goals?
I started working on a side-project three years ago. It’s called Mockoon. Mockoon is a developer tool that allows you to easily and quickly mock any API. It’s an open-source desktop application that has been growing steadily for three years.
The application recently passed the 100k download mark and has more than 12k monthly active users.
Like a true developer, I was frustrated with the available options and ended up building my own! Still, I tried to build it with a startup mindset from the beginning. I used technologies I knew best (Angular, Electron, Express), trying to get feedback as early as possible, avoiding spending too much time on useless features or improvements, etc.
As it is growing, I have a hard time keeping up with the work it requires. Adding new features, fixing bugs, helping people having issues or questions regarding the app, writing tutorials, blog posts, etc. requires a tremendous amount of time. All of these while maintaining a decent work-life balance with a full-time job and two kids. It is a challenge!
I also think that I can keep the application open-source while providing optional paid services and make a living out of it in the future. That’s why I decided to leave my job in the coming months and work full time on this project. I am not there yet, and it is a little bit scary. But I know that this is for the good of the project and mine too!