adam bien's blog

Interview With Mission Impossible Java Hacker--Fabiane Nardon 📎

What was your first computer?

It was a Prologica CP200 S, with a Z80 chip and 16K RAM. This was a domestic Brazilian computer that was sold in the 80s.

How do you started with programming? What was your first "Hello World"?

When my parents gave me my first computer, I thought it was like a video game, but then I realized that it would not do anything unless I would program it myself. So, I learned Basic just to be able to do something with the computer. I think that my first "Hello World" was a program to sum up two numbers. Then, later on, I transformed it in a game to teach math to my little sister. It had some character based graphics and she had to guess the math operation result to be able to save a boy from a witch. You know, typical software that geek girls would do :-)

When do you started with Java?

In 1997, when the University I was studying offered us a free Java course.

Why female Java hackers do rock?

Well, I think both female and male Java hackers rock. The Java developers have created some of the most amazing applications in the world. So we all rock, for sure. Now, I think that we need more women in software development for two reasons: First of all, we need more developers. Period. There is not enough developers in the world right now. In Brazil, I would say that at least 30% of the software development jobs are open, waiting for qualified people. Now, if more girls would go to computer science, this would maybe give us the extra developers we need. Unfortunately, very few girls choose a career in computer science. The second reason is because the more diversity of thinking you have in a team, the more innovation you should get. Girls usually have a different approach to problems and their way of thinking can bring different solutions and new ideas. Wouldn't be nice if we could use this in our teams?

What your system is doing?

Right now I'm working on multiple different things. The first one is ToolsCloud, a company I co-founded that is offering development environment in the cloud, using only open source solutions. The idea is to alleviate developers from the burden of having to install and configure tools like Issue Trackers, Continuous Integration tools, Maven repositories, source code repositories, etc. They should focus on developing software and let others do the rest. I'm also working on a new internet service that will be launched by May or June this year. It is the coolest project I ever worked on, but I can't talk much about it yet. Hopefully it will be successful enough so we can have another interview in the second semester :-)

What is the architecture of this new system?

We are using Play! Framework with MongoDB as the data store. The reason for choosing Play! is because it fits very well with the kind of application we are doing. This is mainly a heavy traffic web site, with few database transactions. Besides, the productivity you can reach with Play! makes a lot of difference in a project like this one.

Which challenges do you encountered during development / architecting?

This specific project has lots of architecture challenges, which is good! The main challenge is to architect a system for heavy web traffic. There is a lot to think of when you expect millions of users accessing your application. You have to think on how to scale it, how to organize your data, how to architect the system so you can have zero downtime deployment. Continuous delivery is key to us, so having a solution that allows us to do several deployments per day with no downtime is something very important. There are also several challenges in information modeling. For example, we spent quite sometime deciding what was the most efficient way of representing imprecise date and time. Doing this with the Gregorian calendar is not that difficult, but supporting also imprecise time in units like "ket" and "klekket"... that's a good geek challenge.

Why Java EE?

Most of the applications I created in my life were Java EE based. They are robust, large scale, handling lots of transactions, and doing very well. Java EE is very mature and the specification is getting better at every new release. It is a safe bet if you are looking for a scalable and mature technology to build your system. We chose Play! to this new project, which is not a Java EE framework, but still uses parts of the Java EE specification, like JPA. As Play! attracts more developers, it is going to be interesting to see how Play! concepts will affect the next releases of the Java EE specification, like Hibernate affected the JPA in the past.

Which Java EE server are you using?

I have applications running on JBoss, but lately my new applications have been deployed to Glassfish.

Which Java EE APIs are you using?

Right now, basically JPA, but I have applications in production using also JSF, Jax-RS, Web Services, JTA and JMX.

Which tools are you using?

My development environment is basically composed by Netbeans, Git, Redmine, Jenkins, Nexus and a private IRC channel with our discussions logged by Drone, so we can work remotely in an effective way. I'm also using Zabbix for application server monitoring.

What is your favorite IDE?

Netbeans.

Why do you like Java?

First, I like the flexibility the platform offers. Although the number of frameworks available can be overwhelming sometimes, it also means that you have lots of options and usually you can find an API or library to solve any problem you have. But I think what I like most in Java is the community involvement. Java has a vibrant community, new open source projects are created every day, and it welcomes any new members. Having the opportunity of meeting so many bright people in the Java community all these years made me a much better professional.

Thanks Fabiane (Twitter: @fabianenardon, Fabiane's LinkedIn account) for the interview!