I met Ruhan Bidart during my first internship. He was my boss, even though he is younger than me. We worked together for almost two years, then we went our separate ways, but later we met again during our master’s studies, as we were in the same class. Ruhan is not only a great software developer, but a complete person in every way. I love to work with him not only for his excellent technical skills, but also for his passion in doing good and helping others.
WLAD: Could we start with an overview of your professional career?
RUHAN: It all started when I was 16, in technical school. I liked the Delphi language and wanted to see it worked in the real world, so I did an internship. It required 40 hours of work per week, and the pay was little, but I was constantly learning new things; I felt I was getting into a new world. I understood that the job of a software developer was that of a craftsman. You start from scratch, and you assemble what you envision. It’s wonderful!
I didn’t like to have someone commanding me to do things I thought didn’t make sense. So I tried some business ideas with my friend Cristophe Trevisani, but they never took off. The drive to start a company was always with me. Suddenly, I had the opportunity of becoming a partner, having equity in the company I worked for. They needed someone to lead software development in the company. I was about 19, and I had only two years of experience, but I really studied and learned a lot during that time. So I did it, assuming a huge level of responsibility. Many things were in my hands: software architecture, development, studying new things…
I worked with projects related to enterprise management, electronic bills of sale, systems for airline and car rental reservations, and online image and video. I worked with big Brazilian content portals that had massive accesses of over a million people per month. It wasn’t easy to keep the system with a minimum bottleneck. In short, I’ve had a broad experience, mostly in the web environment, and I realised that this was the thing I really loved to do. Having many people using and interacting with the lines of code you typed yourself is amazing.
Finally, I decided to leave my company. I wanted to endeavour more innovative business models and I needed more freedom. Even if you own the company, you might end up being an employee of your own business. One of my goals today is avoiding that. I left this company by the end of my master’s studies in computer science. My research was focused on data science and recommendation. Now I’m with a startup that involves hardware and software. We’re trying to make a product that will allow you not to worry about your car’s maintenance.
WLAD: What’s the specific project you developed and liked the most?
RUHAN: The one I didn’t mention before, called Dugthis. It’s a hobby project I do with friends. We found something in common: we all really like music. We like to have a space where we can share songs. So we created a space with the songs we wanted, for us. Then, we broadened the service to serve the general public, too.
It’s a niche-project for the music lover. It was very good in terms of development, because I did this project in the way I found the coolest. I handpicked the best tools and technologies that existed at the time. Very often, you have a deadline that impairs your ability to apply all the techniques you want in a project. So I thought of all the techniques I liked and applied everything in this project. In result, the software became excellent. It’s a project I’m really proud of, both because of what it allows you to do, because I love music, and because of its very solid technical foundations.
Hiring a junior software developer
WLAD: Eventually you had to hire people or take part in the admission process for intern and junior software developer. What’s the biggest difficulty these people face when they start working?
RUHAN: Their biggest difficulty is to leave the university environment, which is much more controlled, and face the real environment, where people build products that are sold.
Some are more at ease with this transition, because before they became professionals, they already demanded a lot of themselves, and did things the right way. Some people, even before they leave college, develop an unbelievable level of excellence. Others have more difficulty, because they go dragging their feet all along. People should ask for jobs once they already have a hard skin, knowing they are in for a hard fight. They should be in a position of being ready and eager to learn as much as possible. You need to be in the present moment, and you need to learn. Beginners should realize that indeed they might know a bit about the theory, but the practice, they need to explore a bit further.
WLAD: Sometimes people don’t dedicate enough?
RUHAN: From people I had contact with, many didn’t have a notion of what was real and what wasn’t. They went to work with the mentality of a kid going to school. To be a really good software developer, it’s necessary to study a lot and be focused every day in technology and many other important details.
WLAD: Is it easy to find a really good software developer for hire? Did you have difficulties finding people to work in your team?
RUHAN: For me, that is the hardest task out of everything. It’s very hard to find a good software developer. It’s an “Agent 007” type of job. A “Mission: Impossible.”
WLAD: Why do you think this is so hard?
RUHAN: A good software developer must have many different styles in himself. This person must really have a broad skillset, and this requires a big effort for acquiring every skill – this really requires a lot of dedication. One way of doing this is by reading many books. You have to chase the knowledge; you can’t expect things to naturally come to you.
Usually the guy (or gal) is accommodated with the technology already known, and he or she doesn’t question things that he or she is working on. The software developer must be always thinking, Couldn’t it be different? Couldn’t it be done in a better way? The good software developer must seek this all the time.
About Education
WLAD: You hold a bachelor’s and a master’s title in Computer Science. You certainly know the effect that university and the academic experience has in the life of a professional that is dedicated to excellence in his job. Do you think that university studies are interesting for people who just want to become good professionals and have good jobs? In which ways do you think university helps? About the master’s studies, do you think it’s an interesting investment for people that do not want to have an academic career?
RUHAN: That’s a hard question. It’s very subjective. Everything depends on your goals when doing the bachelor’s or the master’s. If your goal is to have a title, I think it doesn’t make any difference whatsoever. Don’t go to college to get a title.
It’s evident that many people out there with zero formal education are much more of a badass software developer than many people with multiple academic titles.
But if you attend college with the objective of learning the techniques, learning a solid base of knowledge that you want to apply in the real world, then maybe about 20 to 30 percent of what you learn is completely relevant, and it might be hard for you to stumble upon this knowledge on your own. Not impossible, but unlikely.
About bachelor’s degrees – in general, I think it’s worth the effort. But I wouldn’t say the same about the master’s. You need to think a lot before you decide to do master’s-level studies, because there are going to be many purely academic things you need to do, and you’ll need to reserve a substantial amount of time for that, every week. This might be something you are willing to do, or not. In my master’s, specifically, from a subjective point of view, I learned many things that I didn’t learn in my bachelor’s that I’m certain I wouldn’t have learned by myself. When I got in, I had the objective of combining a few techniques and trying to apply this in a business somehow. Since I had this clear objective from the start, I guided my studies and research towards that.
So ultimately, it depends always on what your objectives are once you start your bachelor’s or master’s.
Coding Style
WLAD: About programming styles, what are the ones that you like and/or use? What code idioms do you like to keep in your code? What are the ways you evaluate the quality of your code?
RUHAN: I’m not sure I understood the question, but the thing I strive the most for to be present in my code is clarity. Before everything, code must have enough clarity that anyone that comes here to read my code is capable of fully understanding it, and advancing it. I strive to produce code that isn’t “mine” specifically.
Coding is teamwork, and you’ll always need more than one person doing things in code. Even if the project only has yourself. For instance, in developing Dugthis alone, I do it thinking that if someone joins tomorrow, and the service needs to explode suddenly, the code will support that in the best possible way.
So your code must be clear, and your comments too – they must be good enough to actually help in understanding the code; they must make a difference for the person reading it.
Those are two characteristics I try to always embed in my code. There are many others, but these two are the main ones.
WLAD: To do a personal project, maybe a quick hack, what would be your favourite programming language?
RUHAN: If it’s a hack… Well, generally I use Python a lot, but if it’s more of a statistical hack, then I also give R a chance, if it can really help in the statistical parts. If it’s a web hack, I’ll naturally use JavaScript, or maybe a derived language like Coffeescript or something like that.
So in general, Python; if strongly statistical, maybe R; and if web, JavaScript.
WLAD: And why do you like these languages? What are their best features?
RUHAN: Python is extremely simple and has “batteries included.” Almost everything you need is already there in the language, embedded in. If you need text-processing, which is something I do a lot, given I work with data, Python is exceptionally good. And it has a reasonable performance. The overall satisfaction with your code in Python is very good, as is the speed in which you code. And the speed in which your code runs is reasonable.
In R’s case, it has some libraries, such as GLM libs, machine learning libs, which are completely built-in and with numerous parameters and optimizations already there. In many cases, you really have to use R, when you are using libraries that other people wrote that only exist in R.
And JavaScript, because the web’s legacy is this language. You can’t escape from it; you have to deal with it eventually if you program for the web. Now I’m giving a chance to node it is showing to be a good option too. It is very good to see the same language in backend and frontend structures.
WLAD: Is there any programming book that helped you a lot or changed your point of view in a stronger sense? Or a programming book you really like?
RUHAN: In terms of object orientation specifically, there is a book that I think is great, albeit it can be really tiring to read: Design Patterns by the Gang of Four. I think it’s worth reading. For the web, a book about JavaScript Patterns is very good.
A pair of books that aren’t so technical, but I think that are worth reading are Founders at Work and Coders at Work. It’s great to see how all these other successful people view things. And also, don’t forget to follow Quora; it’s a giant source of resources for the software developer.
WLAD: What are you studying recently in terms of programming or IT?
RUHAN: The last thing I studied in depth was machine learning, in the perspective of helping recommendation systems and data science. One of the very interesting courses I took was Machine Learning by Andrew Ng on Coursera. I also studied a lot of Angular JS during this time. I don’t think this is the final form web development will assume, but it’s a revolutionary way of writing web interfaces. It is really worth studying and applying, and it’s one of the things I’m using in Dugthis.
Recently I’ve also been studying a bit about mobile programming, especially native Android programing. Today I’m not so focused on studying technical things, I want to learn the business part now.
Software Development Methodologies
WLAD: Do you have any experience in terms of programming methodologies, for instance, Agile Methods? Do you think they work?
RUHAN: Yes, I did a lot of Agile at one time. I implemented Scrum and XP in the company I worked at for a while; that started maybe six or seven years ago. It was awesome – from a company that had no clear process and were doing things the “waterfall” way, we doubled or maybe tripled the amount of things we were able to develop. It was spectacular. And it’s good to see people happy to do their work. Because Agile principles, the way I see it, are very pro-developer. The developers can see their job in a more interesting way, and they start liking the work. And because of that, they feel pleasure in their daily activities, and then we have increased productivity and many more things.
During the five years we went Agile, we used a mix of Scrum and XP. We applied almost everything from Scrum, some bits of XP, and it was great. Our company took off with that at the time.
WLAD: It’s clear that you love entrepreneurship as much as programming. Do you have any advice for the software developer who is thinking about starting a company, or having something of their own for working without being an employee?
RUHAN: The first thing is to create a mindset where you don’t see yourself as an employee. That is the first step. Then, something that I have learned that I try to apply with a lot of effort can be summed up in a single word: focus.
You must focus on what you want done. For instance, if you want to start a software house, go do it. Put your undivided focus on it. If you want to start a company, which is what I’m trying to do today, focus all your attention on that company. If it goes nowhere, you stop and do something else. But doing a million things at once doesn’t work.
Dugthis, for instance, is something that I do for fun, to relax, it is not related to my business work. In business, I’m doing only one thing.
The Bottomline
WLAD: If you had a son or daughter, and if he or she became a software developer, what would be the advice you would give? What would you focus on in their education?
RUHAN: I would insist on forming a solid base in a few things: the maths, the more basic parts of computer science. Those basic things that you learn in the first and second years of college, that the student must really focus on to learn, because they give a solid foundation that goes with your whole career. Long after you’ve seen these concepts, if you haven’t learned them deep inside, you might end up doing work with tiny flaws that can be bad, just because you didn’t internalize the basics.
Then, it’s important to learn some types of programming languages that will lay the solid foundation for understanding how a computer works deep down, to capture the principles of computing. That’s something I didn’t do that I think I should have, and would give me a stronger base today.
WLAD: Great. Any last words or final considerations?
RUHAN: Well, the activity of coding, engaging in programming, it has to be pleasant for the software developer. If it’s not, if programming is something you don’t like doing, then maybe you should choose another area inside the technology field, maybe even in IT. There are several things you can do that are not coding, but can be as interesting, or even more interesting, than coding.
The software developer that is good at this is usually someone that enjoys that activity. Usually when he or she is coding, the mind is immersed in thoughts of possible solutions to the problem at hand. And he or she likes that; it’s not done grudgingly.