Alain and I talk about the old days; about jumping into a first job in PHP because Commodore 64 coding was probably close enough; about how, to be really great on a development team you can skip most of the university education, but learning sport should probably be mandatory..
Noah Gibbs: Hello, I’m Noah Gibbs here with Computer Science: Just the Useful Bits. I’m here with Alain Mauri, who has been a freelance developer on a team lead. Currently, a freelance developer has been a software developer a long time. How long? Well, he he says that he played Space Invaders when it first came out.
Oh, and hey, so good to talk to you. Good. Good to have you here. We’ve corresponded online a fair bit in various places. And it’s lovely to actually, you know, see you in person like this to see you and get to talk back and forth.
Can you tell me a little bit about your background? Can you tell me a little bit about kind of how you’ve learned to development over the years I’ve included school, but also everything else?
Alain Mauri: Oh, hello. Good morning. And I’m really excited to be here. This my first kind of experience in this in this case, and well, it’s tough question. I’ve learned development in many, many different ways. From academic background, from going back to school after university. But probably the first thing that happened to me was when my dad, he was working as a sort of, helping retailers, helping their staff and things like that. And it had a sort of thing like point system going on. And he was gaining points every time he was selling something to retailers. So he had enough points and he told me at that time, would you like to have this computer? And it was a C64. And at that time, I was simply mad about it. My, my friends, almost my all my friends had it. And I was just you know, reading those magazines back in the 80s about computer science and was basically the many, everything written down on that, but I wasn’t understanding anything. I was at middle school in Italy, so was around 12, 13 years old. So my dad brought this thing home. And you know, “you should read the manual.” And I was a kid. So I didn’t read any manual, just plugged in everything, and started trying to see everything. The screen come in, and the cursor just popping in. And now what do I have to do? And at that time, I took the manual. And I had a small cassette with a one game. I don’t remember the name of the game, I had just one game and I started playing it. And I say, wow, this is cool. Nice, cool, cool. And whenever I was going into this game, I was just thinking about how can I do the same thing? And like every other kid, I believe, and so start to open the manual. And, you know, we have to say, C64 user manual was not written with the user in mind. Because it was a thing for engineers. And so when I went to… Okay, you know, something like, Okay “10 PRINT ‘HELLO’”, “20 GOTO 10” and then run an endless loop that was fine, perfectly fine. And at that time I was kidding my sister. So basically, I was… I’m not going to tell you what I was printing on the screen, but it was kidding my sister. And, and then after that when all the things that were going on, and BASIC was pretty fast to learn. And I’ve been stuck in the sprite creation, I remember that. So, there was an example of a balloon. I still remember that one. And I basically draw all the, all the grid on a piece of paper and start, you know, drawing things on a piece of paper just half empty, half full. And I had all these values and after many years, okay, well that’s, that’s binary. Those were the binary values of that thing. And then those were pixels, basically. But I didn’t know that. So and that was just going to run with PEEK, POKE and DATA stuff and all this kind of thing. So when I got my, my first balloon going on the screen, I said, great. Now, how can I turn this into a game? I never turned it into a game. I didn’t have the skill. So I just went on, you know, playing and things like that. And then I moved to the high school and my high school was… I don’t know how high schools are organized in, in different areas of the world. But in Italy, you have Lyceum, and there’s a classic one and scientific one. And then you have technical schools, and technical schools should give you the capability of going into work right after school. So my mom was, she’s really pragmatic. So she told me, you go there. You need a job after this and you go there. And she said there is this school, they do sort of computer science. And I went into it. And we didn’t do any computer science. So we’re just doing, you know, physics, chemistry and math, and a little bit of English, Italian, all history, all these kinds of things. And computer science was just left for the physics teacher at the time with a little bit of Turbo Pascal. It was awful. I have to say, it was simply awful. It turned out a little bit on the third year because we went into a little bit more detail. And we had a teacher in statistics, a young one. And have to say, it wasn’t a good teacher. It was one of those teachers coming into the class like, okay, guys, I need to read the newspaper. So do whatever you want. And it was the technical school, or it was supposed to be. But that time he was interested in probability so he teaches us probability, small simple stuff. And I don’t know if there’s something similar in UK but in the 80s you could at that time sort of, betting on football games. So basically you have this piece of paper with all the football games and you were putting one as the home team was going to win, X for a draw and 2 if the away team was going to win. So just doing this kind of thing, you pay different fees and stuff like that. You could win some money and my… I remember my granddad won some money and bought a car with it. So I said okay, let’s apply this and I wrote my first program on the C64 BASIC, and trying to… basically going from all stuff from football teams and football matches in Italy from… I had the book that was going from ‘78 up to 1985. So I took all those statistics, put them in a program and trying to win something. And that was on a cassette. Well, I didn’t win anything. My, so, 13 was the highest score. I did 10. Was pretty much okay for 14 years old, 15 years old kid, that was great. It was my that was my real first experience in programming. And without any knowledge about data structures Without any knowledge about anything. And this is where my, my journey began. And, and then all the other things are common, you know, academia. When I went into university, I went into… I wanted to do physics, by the way, but at that time, the closest thing that could have given you a job and was closer to physics was electronics. So I went into electronics. And I did quite a lot of stuff there and didn’t go so well, the university in the beginning. And besides I finished but it took me 10 years to finish. Quite a lot of things but I went through many different things and, and programming, I have to say, was still there, but not so deep inside me, like after the university. So I did my exams, I did a little bit of C++, Modula-2, all these kind of things. And the day I graduated, I had to go to the university in the afternoon. And that was the changing point in my life. I met a friend of mine, we’ve been at school together. I was a volleyball player. He was a volleyball player. We played in different teams. We played many times, one against each other, but he was a friend. And he said, You know, I have the small company and we’re looking for developers and have you ever done this? I said, Well, yeah, of course, on a C64 in the university. He said, Okay. Tomorrow, come to the office, and let’s talk about it. And the day after my graduation, I went to the office. And he gave me a book about PHP, and a book about HTML, and said, That’s it, you can start. It’s so easy. And that’s how I started basically, with a book on PHP and and HTML and CSS. And it’s been the fantastic journey after now with many, many, many different things. So my background is completely… Yeah, I have some engineering, which is electronics. I apply some of the things I’ve learned in electronics, mainly about, you know, logic gates and stuff like that. When I see something that has to make a choice in the program and some controls I put down to tables and things like that. So these are the things I’m applying. But honestly, no computer science concepts at all. I’ve discovered them, some of them, during the years. “Oh, cool. I know now, I’ve seen this many times. Now I know the name.” And. And that’s it. So this is basically the my background.
Noah Gibbs: You mentioned when I… I send out a little basic set of questions before the show, just to get a couple of sentences of everybody’s background. You mentioned Modula-2, and I’m gonna bring that up specifically because Modula-2 is kind of like learning Latin. It’s behind a lot of things that we actually use, even if you’re not gonna hear anybody speak it on the streets. How did you how did you feel about Modula-2? It’s kind of one of the classic background computer science things. It’s a source of how almost all everybody does namespaces now.
Alain Mauri Yeah, so how do I feel? Well, if you asked me to write something down in Modula-2 I just say, No way. And there’s no way I’m going to write something. It’s been hard at that time, really, really hard for me. So, you know, by chance, C and C++ were more easy to understand at the moment, even if I had some problems with pointers. And… But Modula-2 was kinda completely different. And there was this, this language there and we were doing it on paper. We were not doing it on, on nothing, because we didn’t have computers. We have a small room for computers, but you have to book the room and go there all these kind of things. You can imagine a university with 20,000 people and just small, in the middle of the night, with a small room. So everything on paper and with a strange language and I at that time, I couldn’t find any reason behind it because my, I had friends going to another university, they were doing Java and others, they were doing C++ or C, and we will do Modula-2. I would just ask myself why? Why? So, this “why” obviously stayed with me at the time. So, yes, I’ve learned it. I did my exam. But it’s not something that I wanted to apply, basically. And, and when I have people ask me, what did you do at the university and say Modula-2, they would just stare at me and say, what’s that? And, yeah, and I kind of explained really, I kind of explained because it’s something… I have the name I’ve seen, if I see something on the screen and say, Oh, yeah, I remember this kind of thing. But it’s something, you know, where you put in those memory location down there and almost gets lost until someone asks you. And… But yeah, that’s it. And I didn’t know that many concept of it have been applied to different languages. So that’s something completely new for me and it’s nice to know that I did something useful at the end. But yes, Modula-2 has been has been a part in my life and I still remember one of the exercises. So, the exam was divided in three things, theory, practice and an oral part. So, practice was divided also small exercises, and one of the exercises was translating from C to Motorola 68,000 assembly and, and also translated from C to Modula-2. And I did pretty well, the translation from C to assembly and I completely failed from C to Modula-2. Because it simply wasn’t going into my mind.
Noah Gibbs: So for for listeners who don’t necessarily know about assembly language… That’s probably a lot of folks out there. Assembly language is one step above native application code or machine language. Assembly language maps directly to the lowest level representation on the machine. So when Alain is talking about translating from C to assembly, that’s essentially the same job your compiler does. It’s the same job that the program does that turns the C code that you write into a native app. He’s just talking about doing it manually on paper.
Alain Mauri: Yeah, was quite hard. But it was nice. It was something, Assembly for example, is something I always seen as not wizardry, but real engineering. Real, real engineering. My idea of engineering was assembly at the time. I’ve seen assembly on magazines in the 80s. I think people still remember, I have a magazine about computer electronics for the C64. And I’ve seen people writing printer drivers by themselves using the assembly language for the C64. That was crazy in my opinion, and that was real computer science, real engineering. And that was what I had in mind. So when I saw somebody said yeah, this crack, I like it. And it was easy to, to understand. And well Motorola 68,000 is a great microprocessor and it’s being used many different things and with the other one the Z80 and the Z80 also that one was great. And and those were the things you were learning at the time. And other… See, I saw sense in that. From C to assembly. But still, as I told you before, from C to Modula-2, I didn’t see any utility out of it. And that is fine.
Noah Gibbs: So you’ve talked about mainly learning through experience, through on the job stuff. Do you feel like any part of what you studied in school was useful to you on the job? You mentioned a lot that wasn’t. But but what what would you say were the parts from your formal education that were actually useful on the job? Were there any?
Alain Mauri: So the, especially the things that were really useful. There were a couple of things. So engineering, especially in the University, where I’ve been to was really, really hard. Though there was no limit for people to go to the university. So there was no admission, nothing. And in Italy fees are really, really low, and everyone can afford University. Just imagine my first lesson was chemistry 750 people in one room, it’s like being in a concert. With this teacher, just, and I was shocked by this. And, and the teacher said at the end, I remember at the end of the first lesson that said, probably less than half of you will get a grade and probably most of the people and that was true. They had so many different things. Either chemistry was a difficult exam, and then all the much exam, we because we did analysis, topology, study of functions, limit integrals, many things and they were all big obstacles. And physics was a big obstacle too. So one of the things that I’ve learned and I’ve applied, too, on a day by day job was okay, always ask, why, why something is in this way? So if you apply a concept, even now… If you read, for example, Sandi Metz’s books, and they said, she said, okay, be aware of dependencies, all this kind of things. Why? Because… I found a simple reason, this one. And this came from my university information. So always asking why you have to do one in this way. For example, dependency injection, why is that the doing dependency injection, then stick a dependency into the code. Because I think, well, you need to expand the code in future, it’s easier to do through dependency injection. And the other thing I’ve learned is you have to program thinking about your future self. It’s more or less something that came from the university. So if I have to study, I have to study for my future self, not for now to pass the exam. I have to learn something and ask myself why so I understand the thing. Those things get fixed into my mind, and when they are fixed into my mind, I can apply them in future. Because otherwise I won’t apply them. If I learned them, okay, that’s fine. I learned dependency injection. I don’t think why I have these dependencies, they just learn it. And then in the future I will forget it and I will go back into the same errors I’ve done before. And so this come from practically, this comes from from the university. And there are other concepts coming from electronics that I’ve used like logic gates, logic gates are great in my opinion. We had an exam on logic gates, I really loved that. And it was in my mind, it was building with logic gates, or using Karnaugh maps, or using you know, truth tables, all these kind of things were wonderful. They can be they can apply, be applied to both electronics and computer science. You can apply them. And it’s something tangible, something you can touch with your, with your hands. So you have a bunch of conditions, and you need to apply this condition. What’s easier to do is to just use the zero and one, and put them in a truth table and find out a logic function. And then that logic function can easily be translated into code. And this is one of the things I’ve used most. And that comes out from from my university degree. And yeah, mainly this kind of small things, you know, not big things, small things. So asking yourself, “why?” is something in this way and why you have to use it so that it gets fixed into your mind. And then all the small tricks I’ve learned through university, through different disciplines, from logic to electronics and things like that. Even a concept like, you know, in control automation, you have a feedback sometimes you have the circuit. And you have an output and you can take the feedback and put it into the input again, to fine-tune the system. Even this can be sometimes applied in coding. It’s more or less something like recursion is doing. If you think about it. You take, you take the output, you put it again inside, and you just sort of fine tuning of what comes next. And yeah, all these concepts coming from different disciplines, all that, they all go into my, my, my way of work.
Noah Gibbs: The other thing we talked about when trying to figure out a topic, is, you talked a lot about team management and communication. Those were the things that you really emphasized as important to coding. Tell me a little about that. I know you’ve been a team lead.
Alain Mauri: This comes out not from education. It’s more from the sport I’ve been. So I’ve played volleyball for many years, and then I had to stop because of my back, my back was aching. So I had, I had to stop. And what I’ve done was okay, I still have this passion for volleyball, how can I go on? And that went into coaching. I started with female teams. Then I went to young teams, so young players, trying to teach them how to play volleyball, and all those kind of things. And then I ended up in coaching male teams at the, our top regional league was the regional league where I played in Italy, it was a tough league for that region. And we started doing real, that was real tough to manage that was more going into a gym and having a lot of people and everyone with his own skills. So you have the top player, you have the play-the-middle player, and you have the let’s call it junior player. And my role was not to tell them what to do, but to guide them and let them discover their potential. So even if you have a top player, it does still have some potential. My thing was just trying to convince them that doing some sort of exercise was finalized to discover and uncover his potential. And the same thing for the junior was, so, okay, you’re junior, you are good. But still you can improve your technique. So let’s do this sort of exercises to improve your technique. And then after all the single exercises, you have to put all together and put out a strategy and play all together and all the player needs to collaborate all together. And this is mainly what happens in, even in programming. Everyone, when you lead the team, you have to uncover the true potential as developers, single developers, so you talk with them. You try to discover what are their weaknesses, what they want to improve if they think they still have room for improvement, but then the match is the product you’re dealing with. That’s the match. The goal is to make the product great. And so at the end, you go into the match. You try to guide them through the match. But still they have an eye, they are on the field, they see things in a different way. And so the strategy comes from their point of view and your point of view, but only through talking. I’ve never been one of those, “now you do this, because I’ve decided to do this.” It’s always, you know, how’s this point, what do you think about it? If they have a good point, I can change my mind. I’m not a dictator. I’m just a human being like them and probably have been good at discovering that potential. And you don’t have to be the best developer to do, to be a team lead. You don’t have to be the best developer and this is a relief. If you think if you think it’s a relief, you don’t have to be the best one. You have to be the one that helps them to become that possible path.
Noah Gibbs: So that sounds like – and correct me if I’m putting words in your mouth – that sounds like you would recommend an education in something like sports or coaching or maybe, maybe other group activities, over a lot of the technical education you got in school. That you’d suggest maybe sports or group activities are better preparation for being a developer. Does that sound like what you said?
Alain Mauri: Yeah, definitely, definitely. I really agree on this point. You know, if you remember, in the 80s, 90s, there were all those kinds of movie, “Revenge of the Nerds” all this kind of things, you know, nerds, computer science, or with big glasses and no social skills at all. And all these kinds of things. I’ve been so in that way, when I was a kid. So this is why I went into into group sport. I went into volleyball because of… because I was not good at football. So a friend of mine said, Okay, come to volleyball. And I’ve tried and I fell in love with the sport. And yes, sport is great, because everyone has his own skills and teaches you how to respect your teammates and the opponent. You don’t go into a war. You go into a match, which is different. So when I, when I listened sometimes to sport commentary say, “Oh, this has been a fight,” no, it’s not a fight, it’s a match. It’s something different. A fight is something that comes to you with war words, and put this kind of rage into the people. And no, it’s not a fight, you don’t have to kill anyone, you don’t go to defend your country or this, blah, blah, blah. So you go into a match with someone that can be better than you. And you have to recognize that. And you have to be aware of this. And if they are better than you they win the match. You just have to say, nice, thank you. It’s been a good match. We see each other next time. And this is something that’s really really teaches quite a lot of things. How to behave with people, have to stay with people, how to think in a different way and how to empathize with people. Because if someone cries after a match because he lost the match, that’s his own way of doing things. If someone swears and just starts punching everything around… Because I’ve seen people like that after a match, that’s their way of doing things. You can’t criticize, you need to empathize with them. And just to understand why they are doing this. Like, because probably there’s some frustration, something like and never been… Imposter syndrome, something like that. If you think this can be in any way in any, in many place. So you lose a match, “oh, I’m not at their level, I’m not so good. And why I’m here and why I’m doing this.” And this comes with a frustration that can come out in different ways. More, let’s say violent way, which is probably not the best thing to do but everyone is different. Or someone crying, someone swearing, someone just not saying anything. Don’t want to talk with anyone just going home.
Noah Gibbs: Sounds like you’re thinking of the really intense emotions there as a very direct parallel to developing software as a team.
Alain Mauri: Exactly, exactly. This is a complete parallel. So when you learn how to deal with standard things, you go into team management, besides all the HR things like you know, doing things I really hate, because I don’t like to judge people. I don’t like to be judged. I don’t like to judge people when they do this performance reviews. Come on, guys. We are developers. Why do I have to give you a score about something? It’s not the score. Did we release the product? That’s fine. Perfect. We’ve done it. We nailed it. That was our purpose. Release the product, these features. Not scoring someone. Yes. This teaches you this kind of thing. You go into a team. You sit down with people, you talk with them, you try to understand them. And the most important thing in my opinion is you learn to listen, which is something really hard. Listening is something really hard because you have to understand what they are saying. Because it’s not like sitting down and listening to a song, we listen to the words. It’s things like simply sitting down, listening, understanding, and then you can have that “aha!” moment. He said, now, I know why you’ve been so happy, the spirits, you’ve been so down in the spirit, you can understand the standard thing and then you can have them. A sport is perfect in my opinion. My personal opinion is that sport is really perfect. Any kind of group sport, any kind. I suggest for my experience, volleyball, basketball, rugby, rugby is a great sport for this teaches you many many different things you had quite a lot of hard contact, but at the end, everyone is happy. You have the third time you have all this kind of thing. Football. Yeah, I like it. I watch football but have some doubts about it. But yes, things like basketball, volleyball and and rugby are perfect for… Even Water Polo, in my opinion is a perfect sport. You need to collaborate. And one of the things I will said more about volleyball is… This is one of my coaches told me, I think programming is more or less like, volleyball is the most democratic sport in the world. If you think, you can touch the ball two times, one after the other, you need someone else to help you. And programming is the same thing. You can’t do a great product by yourself. It’s not that time anymore. In the past probably yes, but not that time anymore. You always need, someone has to help you. Through peer reviews, through pair programming, through experience. Programming is great. And this is why volleyball taught me so much about that.
Noah Gibbs: It makes a lot of sense. I was thinking earlier and going to ask… You talk a lot about sort of emotional management of the whole team, which makes a lot of sense. I’ve been a team lead and been a manager. I get it. Do you find that the preparation from sports and similar helps you when it’s just you working on something? I mean, like a hobby project or something else that isn’t necessarily professional, but it’s just you?
Alain Mauri: Well, yes, not not only that one. Sport, and music and art in general, I’ll call those disciplines. You need discipline. Programming is a discipline. You need discipline. You can’t go into… Hey, I want to build the best video game in the world. And you just go straight into them. In a discipline you need work behind me. You need to understand what the… what’s your final goal, you need to understand all the background you need to understand all the things out on the table, problems. You need a sort of organization, sports is same. You need to organize when you go into training. You can’t go and train and do, Okay, today we do it. You need preparation before. You need to think about the goals. You need to think about how to reach those goals. What are the steps. And music or any kind of art is the same thing. You need to learn technique. And you need to reach a certain degree of mastery. That means you need to exercise. And you can do exercise in different ways. And there are different kinds of exercises. But you need to repeat the same thing over and over and over. Because the sort of thing about this video of Steve Vai, one of my favorites, a couple of days ago and said, you need to play hours and hours because your fingers that sort of memory. If you think about programming, your fingers as sort of memory do things automatically, but you need to master this kind of thing. So you need to exercise and go into exercise needs discipline, discipline has some sort of plan behind it. And at the end, you can reach your goal. It teaches you a lot, a lot, a lot more than what the universities are teaching you in my opinion.
Noah Gibbs: That makes a lot of sense to me, but I actually wrote a book about that. Yeah, yeah. Mastering Software Technique. You know about it?
Alain Mauri: Yes, I know about it. I know about it. I’m planning to buy it.
Noah Gibbs: All good. All good. Take your time. But yeah, you know I agree with that. Another thing that you mentioned briefly in sort of the initial questionnaire was about learning stuff on your own. You mentioned design patterns, SOLID, OO design principles, tree traversals, etc. Tell me a little about how you do that. How do you do study in your spare time?
Alain Mauri: I’m kinda lazy sometimes. I buy the book. I’ve tried to read the book. And depending on the book, if I find the book exciting, I just go straight with it. If I don’t find it exciting, I just put it on the table. You know, there. You know, I have the book. I have the book about Design Patterns here. But yeah, I’ve read it once. And I say nice, great ideas. There are some nice concepts, but I will say something probably unpopular. It’s a boring book. The classic Design Patterns book is boring. How I learn is something, I don’t know, something different. I practice, I practice quite a lot. And then I try to find out a project. So something like to learn HTML and CSS. best thing to do is put out a page, your personal page, for example. You put out a personal page, and you start tinkering around with HTML and CSS, and you learn things. And you ask why things are in this way. And then someone tells you something like, Hey, you know, have you ever thought about Flexbox? Oh, what’s that? Then you go, you take something, you read something about, and you try to apply it. So my way of doing things, I’m reading quite a lot whenever I have time. And then I try to apply those concepts in theory with small projects. So it could be my personal website. My wife would like to have a website so we will start doing things about that one, and that helps you in improving your skills. On the front end side of the world, for example, improving your artistic eye, if I can call it that way, so you can have an eye for design. The other thing I, I like to do is also reading different kinds of disciplines. So not only programming, I’ve tried to recently tried to learn how to draw properly, drawing is a great thing to take things in mind. I always been bad at drawing, like really, really bad. And so I’ve seen that with a few tricks and a few suggestions you can improve your drawing, but still need discipline. As we go back to the same thing is you need discipline. I tried to learn Yes, programming skill, things about programming, but also things about architecture and physics. I really love basic drawing, all these kinds of things and sometimes I don’t know how to explain but they go straight into my, my work. They did… They open you some new doors and these doors goes straight into my work. And I try to apply things I’ve seen in, in the books in the different disciplines and things like that. So just as an example, I went to Vienna. Wonderful place. I love it. I’ve been there many times. There’s a nice house there from a Vienna architect called Hundertwasser. That house is wonderful, all curved things because he was saying that square shapes are not human, because human bodies not square. So it’s always full of curves. So it was building. He built this nice. It’s social housing, by the way, nice house where people live, all curved, nice color. So one of the things I said is, well, nice. Could this be applied to web design. I’m not a web designer. And I went to talk about this with some web designers. And they said yeah, could be a good idea, things like that. So I said, Okay, let’s start doing something. And I start doing in my spare time. Some pages. Tried to put this kind of view. So curved things instead of square stuff. And how do I, how can I manage this kind of thing through CSS to Flexbox? through other concepts, familiar with front end designer, and in that, in that thing, my front end just started growing and being better. So going from architecture to this kind of thing. So this is the way I learn usually.
Noah Gibbs: That makes a lot of sense, and ties into what you were saying earlier about how if you don’t have an application for something, if you don’t know what you use it for, it’s a lot harder to care. It’s a lot harder to think of it as important. Let’s see, is there is there anything that I should ask you anything that you feel is really important, either to how you use computer science topics, or just to how you learn programming, developed in programming that I’m not asking you? I mean, you’ve had a long career, there’s a bunch of stuff you’re good at. And there are things that specifically you are good at. What am I forgetting to ask you that I should probably ask you?
Alain Mauri: Probably why I’m, there so many years and sticking around with Ruby and know what to change. Yeah, you know, I’ve learned a couple of things in going on, I’m not so old. So I don’t want to give some, you know, old suggestion. But when you reach a certain level of age, you reach a certain age, I think it’s better to focus on what you can do really well. I think that. I’m not saying I’m mastering Ruby because it’s not true. I’m not mastering Ruby because there’s so many things in Ruby, but I enjoy developing Ruby. This is something that gives me really, really joy. I’ve discovered it by chance. Basically, I wanted to change up many years ago and I wanted to stop doing Java development. Not because Java itself is bad, I’m not judging. It’s simply because I wasn’t enjoying it anymore. So a friend of mine told me, you know, we are looking for a Ruby developer and I said, “Ruby, what’s that?” I start looking and start, you know, reading about it. It’s cool as a language, I said. And so I went into this interview, it was a funny interview, I met this company owner in a bar in my hometown, we just sit down drinking a beer. And so, oh, what you’ve done? Just tell me about the things. Okay, I’ve been, you know, deep into Java and things like that, and he said, Oh, cool. Want to learn Ruby? I say, why not? How much do you want? This was my interview, basically. I said, Okay, let’s go. Let’s go. I was freelancing, so I didn’t have any problem. I started, let me see if I have it here. I started reading Ruby. It’s in Italian. It’s a book in Italian, this one. It’s Pocket Ruby. Yeah. This was my first Ruby book. It’s one of those books, you know, like hello world, and then they turn into HTML and CSS, multiple things together. All this kind of thing. And then I had real real time, things to do that were mainly mainly this big software that they were trying to move from the time was Rails 2… Rails 2, from Rails 2 to Rails 3.1 they just gave me this big codebase and said, okay, your task is moving this from this version of Rails to the next version of Rails. And if you remember that time moving from Rails version was kind of painful.
Noah Gibbs: For listeners who aren’t necessarily deep in Ruby Land… Rails 2 to Rails 3 was by far the largest rewrite between versions ever. They merged two different frameworks. Rails into a framework called Merb. And so that was by far the most painful Rails transition to have ever existed. Every other version has been easier than that one.
Alain Mauri: It’s been really, really hard. And you know, at that time, I didn’t understand anything about Gemfiles, anything about Ruby gems, and all this kind of… Everything was new for me. But I just went straight into and start doing it, I had this start. So I planned a couple of things. First thing was writing small Ruby programs to understand language and the syntax. At that time, I was still writing with the Java Mind. We have a enumerator, you go into something. And there is this nice “dot each” with Ruby. I was still doing it in the Java way. So for a for loop. And my colleague was, that’s not Ruby. That’s Java. And I said, Yeah, I just, I was basically running Java until yesterday, so you can’t expect me… So I’ve started. First thing was writing small programs, to learn the Ruby way of doing things. And it took me three weeks, I think to go into the Ruby way. And when I’ve discovered that with Ruby can do many things in one line, you start to abuse that. So was abusing one liners, and my colleague would say, Yeah, okay, remember, that’s fine. That’s Ruby, but don’t abuse it, it’s unreadable. You can’t read it. And so I start mixing this kind of thing. So some suggestions from this colleague of mine more expert in Ruby, and I start doing things. And then the real task came in after a month, they… okay now, yeah, you had enough time, they said. It was a startup, so you can imagine everything working. Now, it’s time to move on. And start, I believe, as those have been, it took me as a newbie two months to migrate. And those have been the probably the most painful two months of my entire career. But at the end, I did, and it worked like a charm. And then we, everyone was happy, we deployed and that was, that was it and that was how I started with Ruby and Rails, and I’ve never left that one. And the other turning point in my career with Ruby was when I left freelancing because you know, when you freelance, you have those customers, you tend to do things in the same way. And Italy is a hard place for freelancing, a lot of taxes, a lot of duties, things like that. You have to pay an accountant to make things look nice and shiny, because otherwise the state comes for you and chasing you all this kind of thing. And that said, though, I’m over with it. I want to change. I found this Austrian company. And the other turning point there was, I’ve been in a team, in a big team. And peer reviews in a big team are different from peer reviews in a small team. And I was already in my forties, so you can you can imagine. I was already in my forties, and I’ve learned tons of stuff. I put all my experience back. And I said, I’ll start from scratch again. I went into this company, the first time I opened my first pull request, the whole world came down. You know how it works. You know how it works when you are new in a in a team, you need to know the team. And well, the first peer review is always something going back and forth, back and forth, back and forth many times takes ages and you say, Oh, my God where I am now, but I’ve learned tons, tons, tons of stuff. And this is where I had the next step. The other big step in understanding Ruby was this book. Ruby Under a Microscope.
Noah Gibbs: Yes. By Pat Shaughnessy. That’s a really good one.
Alain Mauri: Yeah. And this was another turning point. Now we understand what this is. You remember I was saying you need to understand why to fix your things in in mind. And this book has me understanding why some things are this way. Require, Include, why modules are working that way, why the hash is the workhorse for Ruby. All this kind of thing. And this gives you a huge boost.
Noah Gibbs: Once again, for for listeners that are not necessarily deep into Ruby. Ruby Under a Microscope is Pat Shaughnessy’s kind of guide through the C source code of the Ruby interpreter itself. And so that’s basically walking through how the whole language is implemented. It’s the equivalent of reading through the source code of Java and the JVM, if you’re if you’re a Java programmer, for instance. Or reading through the source code of the V8 engine in Chrome if you write JavaScript.
Alain Mauri: Going back to one of the things you asked me before, about what I’ve learned in university. When I went through this book, and I see the C source code, remembering my C stuff in University helped me quite a lot. But I have to say C is quite understandable as a language. And if you ever program in any kind of language that has a syntax that derives from C – Java, PHP, even JavaScript in some in some sort of way, you will understand the code. But those c lessons way back in the in the University helped me quite a lot and going through some things, some things are still obscure, some others have been clear. And and now you reach this kind of point where, okay, now we can sit down, I can write a small program, and I can explain why some of the things are going in a certain way. And and this is one of the things you learn with going up with the age, you need to be good at what you know, you can still learn stuff, programming, still learning, you can still learn new skills. I’ve done a technical test currently in dot Net. And after, let’s say a couple of days trying to understand where I am, Oh, this looks like Java and you know, those things come out from your mind and then you start doing. But still, I can’t tell you why something happens in dot Net. But I can tell you why something happens in Ruby, not everything, but some of the things that I I can tell you why is happening that way. Because I’ve stared at that one because I’ve, I’ve asked myself why is in that way? Those things are sticking into my mind. Probably forever.
Noah Gibbs: Yeah, I’m, I’m a big fan of reading the source in the standard library or even the source of the interpreter or compiler. Absolutely. It’s, it’s wonderful being able to sort of have X ray vision to look down underneath it. I love that approach. But again, you know, I wrote Rebuilding Rails so obviously, I’m pretty fond of that approach.
Alain Mauri: I completely understand and, and this is where sports came in. So if you think about volleyball, volleyball has some movements, which are not natural, the set or (…?), all these things are not natural. Or the way you jump, they are not natural way of doing things. You need to match that technique. And to match that technique. You need to go deep into it in the way you put your hands or your arms and there’s someone telling you, you know, if you take your arms in this way, and you take it, put your hands in This way, things will be better. And you start practising the things to get better at small steps. And the same thing here, if you read the source code, if you go deep into something that really interests you… And I know you are a big fan of benchmarking, because I’ve been following you about benchmarking. And benchmarking is nice, I believe it’s something I would like to explore a little bit more. But those things when you you go into this kind of deeper knowledge, it’s like, you know, aha, this is how it works. And now I can make things better. And this is where you someone, I believe, in the senior level. Let’s call it senior level, which is not code related, not age related, in this case, should focus and move on still learning open to learn some new things, but try to master or at least understand better what you already know.
Noah Gibbs: You know, we’ve been talking for a while here, we’re starting to come to the end. Pretend for a moment that this episode is massively popular. Everybody loves it. Everybody wants to hear what you have to say. It’s the internet. So a lot of people also want to, you know, say terrible things about it. That’s That’s how everything works. But it blows up. It’s big. It’s everywhere. What’s your SoundCloud? You know, where do you hope people go next, to learn more about this or to learn more about you?
Alain Mauri: Just write me, write me. I like to talk to people. And if they are nice people, I like to talk to people.
Noah Gibbs: How would you prefer they contact you?
Alain Mauri: I have many things. So Twitter is fine. LinkedIn is fine. Email, no, because email for me is a little bit more personal.
Noah Gibbs: Okay. So as background, Wildeng is his name on Twitter. So if you were going to follow him or write him on Twitter, that would be who you’d look for.
Alain Mauri: Yeah, exactly.
Noah Gibbs: Well, I’ve had a great time talking to you. This has been this is this has been fun. This there have been some great topics here. Thank you very much. This has been Computer Science: the Useful Bits. Alain, is there anything else you want to say before we go?
Alain Mauri: Oh, yes, this one small thing I’ve seen around the internet. Ruby is not dead. Rails is not dead. They are alive, working well. And I invite people taking a look at them because this is something really enjoyable and it will change probably the way you work.
Noah Gibbs: Well on that note, thank you very much.
Alain Mauri: Thank you.