Matthieu Tanguay-CarelMatthieu Tanguay-Carel, Udemy Ruby on Rails Instructor & Code Mentor

Matthieu Tanguay-Carel is a Ruby on Railsinstructor on Udemy and uses Codementor to provide additional 1:1 help to his students.

Matthieu is using his freelance Ruby and Javascript expertise to fund his travels around the world. The Quebec City native has lived and worked in Chicago, San Francisco, Berlin, and Madrid, and currently resides in Luxembourg.

He’s quickly become an active Codementor, racking up more than thirty sessions in his first month alone. If you’re currently learning to code, Matthieu’s creation, What’s Next?, is a handy resource to help beginner, expert, and freelance developers decide what to learn.

You’re a freelancer, and you travel a lot. Can you tell us how your career brought you to this point?

ThoughtWorks logoAfter college, I worked as a consultant at Thoughtworks for more than five years, doing a lot of web development, Java, backend, and coaching.

Then I took a sabbatical and went to Madrid for a year. I spent some time taking online courses, mostly on history and philosophy topics, which I have a bit of an addiction to. What’s nice about them is that you can take them very seriously, do all the quizzes, watch all the videos… or you can have a casual interest and just watch a couple of the lectures.

Since then, my girlfriend and I have moved to Luxembourg for her work, and I’ve spent the last six months freelancing. I’ve been doing some Rails work, and some Javascript on mobile websites. I’ve been doing Codementor, and I also do traditional coaching.

I like the freedom of the freelancing lifestyle – I really don’t envy people who go to the office every day. The change in lifestyle has been huge, but it’s been a great fit for me. One thing you have to cope with is loneliness, and I do miss teamwork. That’s why coaching and Codementor are so great – they’re human and personal.

What’s an interesting project that you’ve worked on recently?

I’m working on a personal project about language learning. As a language learner, there are a lot of questions you have that don’t have an answer.

Let’s say you want to know, “What are the most useful thousand words I should be learning next?” Maybe you’ll have a frequency list for that language to help you decide. But then you have to consider that the list is going to be different depending on context – is it for casual conversations, business conversations, or fiction? Or, you might ask yourself, “What are the words I’ve seen the most often that I don’t know?” If you could figure that out, generating flashcards out of those words would be interesting and helpful.

So I’ve been working on a Ruby gem called text-analysis-utils  that’s trying to ask some of these questions. You can give that gem the article you’re reading and it’ll give you statistics about it. You can tell the gem the words you know, and the words you don’t know, and it can estimate your vocabulary size. Because it knows the stuff you’ve been reading, you can ask it for example sentences for certain words. If you remember the article, it can also be an effective way to jog your memory.

The goal is mostly exploratory – from working on them, you start to realize how hard these questions can be to answer. For example, vocabulary size is very difficult to estimate because you have one size while reading and another while talking. But I’m still really interested because it’d be nice to invest in something useful to someone who’s not a Ruby developer. I think of it as research, and maybe in a couple months, or a couple of years, something else can come out of it.

What tools do you use to get things done?

I’m on Ubuntu most of the time. I’m a big advocate of open-source software, so it’s pretty much the only OS I can stand using. I spend most of time on the command line with Vim, a code editor.

For client sessions, I’m a big fan of Tmate. You can set up a command-line session with your client really quickly, so that’s worked really well for my Codementor work.

What’s your favorite hack?

This one is kind of pedestrian, but looking at the logs or the stack traces is an important part of solving a problem. Sometimes you might want to do a bundle install for a rails app and a gem doesn’t install, so the first thing you do is just try and install that gem. Then, if that install fails, you can look at the stack trace and find out why it’s not installing.

I also spend a lot of time thinking about the process of troubleshooting programming problems. A lot of our time is spent troubleshooting things that have simple solutions, but the feedback coming from the software is terrible. We end up searching for solutions on Stack Overflow, which is a great resource, but it would be nice to have a dialogue with the computer.

In a lot of cases you’re focused on fixing the problem, but it can be useful to ask yourself, “What can I do to get a better error message?” One of the saddest parts of a programmer’s life is when a piece of software is failing but there’s no error message, so you then have to try and make it fail in a way that’s going to give you information.

Sometimes, you’ll be working on a website and your AJAX call fails. It’s nice to work in the sandbox of a browser, but browsers are also really good at hiding error messages. They might log cookies or headers and you won’t have access to them, or the error messages in a lot of situations might just be terrible. You might make a cross-origin resource sharing (CORS) call, and if there’s an error on the server, your response headers might not be what you expect.

I find CORS to be very useful, but it has quite a few gotchas: you have to set up your response headers correctly, you have to implement an action to handle options calls, and if you want to use cookies, you have to be on the same domain to make sure it works. You can specify as a user that you accept third-party cookies, but you have to understand the box to use CORS correctly or it can be really frustrating.

What do you wish someone had told you when you first started coding?

I came late to the teamwork side of programming. I wish someone had told me about pairing and working with colleagues to get quality work done. It can be easy to get stuck, go deep, and lose your perspective. I used to use a lot of Google-oriented problem solving: you have a problem, you search for a solution, you paste some code and you fix it.

But that’s not an interesting life – you don’t improve your skill set. Also, search engines are very specific, but another person can tell you, “You seem to be misunderstanding this concept. Maybe you should read up on the event loop in JavaScript.” At the end of the day, you realize your skills are better, you interacted with someone, and you solved your problem. It’s a much more fulfilling experience.

What can Codementor users do to make their requests more effective?

If you have a problem, it’s good to identify the specific thing that’s not working. “I have a problem with Angular” is not useful; you need to tell us exactly what you think is going wrong.

It’s also not a good idea to give homework to your mentor in your request. For example, I see clients posting requests in which they want you to read the API for something. That’s not the best way to approach this – it makes it feel a little like a sweatshop. It’s much more rewarding to do the work together, particularly because the problem you actually have might not be the problem you think you have.

From a time-efficiency perspective, for the client as well, it’s probably better to get to a session quickly and expose the problem. You’ll get good feedback into whether that problem is the problem you should be solving. If you’re worried about getting into a session and paying for something that won’t help, that’s what the grace ten minutes is for.

Here’s an example of a well-written request: “The picture for my website is always on the left, and I’m trying to center it. Here’s a link to the site. I’m using the following technologies.” That’s a perfect request, because I can go have a look before the session, and then we can start.

What advice do you have for clients to get the most out of Codementor?

I encourage clients to go onto Codementor for pairing. Maybe you have a difficult feature to code, one that’s central to your project. You can go onto Codementor and have, say, an expert rails developer give you advice on your design that might save you a fortune in your own time and in later troubleshooting sessions.

I’ve also had a couple of sessions of high-level consulting: “I’m trying to do X. What do you think of this technology versus that technology?” Sessions that had no coding involved. I think that gives great value, because you can provide a narrative to the client. The client usually has a lot of technologies to choose from, and they all claim to be the best.

 


Matthieu Tanguay-Carel

Need Matthieu’s help? Book an 1-on-1 session!

View Matthieu’s Profile

or join us as an expert mentor!

Last updated on Mar 08, 2017