Welcome to our continuing series of Code Project interviews in which we talk to developers about their backgrounds, projects, interests and pet peeves. In this installment we talk to Tugdual Grall, a developer and evangelist working on the Couchbase NoSQL database team.
Who are you?
I am Tugdual Grall, most of the people call me Tug. I am Technical Evangelist at Couchbase. I live close to Nantes in France. When I am not traveling I am working from home or from a local co-working space.
What do you do?
As a Couchbase Technical Evangelist, I do many different things with a very simple goal: be sure that developers understand the benefits of NoSQL databases (Couchbase in particular) and help them to use it in their project.
To achieve that I have various responsibilities such as writing code (sample code and contributing to the Couchbase open source database project), and help people online answering their questions on forums, Stack Overflow and other social networks.
Finally another very interesting part of the job is made of conferences and meetups where I have the opportunity to meet developers in real life all over the world.
So to get back to the “developer” side of my job, most of the code that I write, either sample code, or contribution to Couchbase Client API, are based on questions and feedback that I got from the community.
Being the visible part of the Couchbase iceberg is an exciting thing, and it gives me the opportunity to discuss and meet the core product development team to provide them direct feedback from “real users”.
What projects have you worked on?
I am mostly working on Couchbase now, and to be exact, as a developer I am mainly working on the Java and Node.js client API and related tutorials, contributing changes and improvements. I am also working on the integration of Couchbase to Hibernate OGM (Object Grid Mapping) that allows Java developers to use standard JPA annotations to access document stored into Couchbase.
You can also look at my Github repositories and my blog to see the type of API and applications that I am building to ease the adoption of NoSQL/Couchbase.
In addition to this, I am also developing a web site for triathletes called Resultri. This site allow athletes to look at their results, analyze them and compare them with other competitors. Lately I have not had much time to update it, but I have many ideas to make it better for users. From a technical point of view this project, started in August 2011 during my vacation in Italy, is a Java application deployed on Google App Engine and was my first NoSQL database experience as all the data are stored into Google BigTable.
I also did many small developments on iOS, but never published any applications. It was really more about learning and playing… but if I have a good idea I can develop the application
What is your development environment?
I switched to Mac in 2001, and since then it is my main development machine. Today I have a MacBook Pro 15" Retina, and have some VMs with Linux and Windows.
I am mainly a Java developer. I have been doing Java development since the first version of the JDK, but I also like to discover and play with other languages. When I develop in Java I am using IntelliJ IDEA from JetBrains, and I am also use TextMate a lot, for example when developing using Node.js.
Another language that I would love to learn and use it Scala. Based on the readings, discussion and basic tests it looks really interesting.
I also have to get more knowledgeable on the .NET platform, for two main reasons:
- Many Couchbase projects are using .NET
- I heard many good things about C#, and I have to build my own opinion about it.
What is your coding pet peeve?
When I am coding my own project I am using the standard Java camelCase with K&R indentation; and I have the habit to use it with all languages. But when I am joining/contributing to an existing project, obviously I just adapt the style to the naming convention of the project itself.
How did you get started programming?
I had some small experience with BASIC programming on HP and Amstrad computers, but I really got involved in development and computers when I was doing my military service in France (yes, I am old enough to have been forced to do it, but for me it was an eye opener thing). During this year serving the country I did not have a lot to do so I got involved in some basic operations such as backup, network, and installation in the local police station where I was working. From there I became passionate about technologies and looked more and more into it and starting programming with Pascal (Delphi… how I really liked this tool), and then moved to C.
Then I discovered on some mailing list that a new language was coming out that was OO and dealing with all the memory management, so I started to develop in Java with one of the beta versions of the Java SDK…
Professionally I started as a developer with Progress 4GL and database for a few years, trying to push Java on some project (with no real success back then). This is one of the reasons I moved to Oracle, as some of you may remember the ad “300% Java” (Java in the DB, Java on the server, Java on the client), and at the beginning the really was more “300% PLSQL” but quickly moved to the Java team (developer and then product manager of the Java EE container).
So you asked about my first programming language, usually I say Object Pascal in Delphi, but like many developers you look at many difference things in the same time. This is what is really exciting.
The developer community influences a lot my coding, just because I learn a lot from others: from the code you can read, discussion you can have online, and often in real life.
I am very active on Twitter as it’s a great source to find interesting content, and I feel that my network is one of the best filters to find good stuff about programming. I use and participate as much as I can to online technical communities such as forums, Stack Overflow, Quora…
What advice would you offer to an up-and-coming programmer?
The short answer is: “open source”.
The longer answer is: One of the best way to become a “good” developer is to contribute to open source projects. You can look at the code, so learn from others, then you have to get into the contributor process where you must comply with development best practices, from code formatting to test and code review. This is what I say each year to the students that I have when I am doing lecture at the Nantes CS university. Get involved in open source and do not be shy!