The Future Java Developer

Working together with Duke Award winner and Java Champion Fabiane Nardon and the also Duke Award Winner and NetBeans Dream Team member Sven Reimers I have presented talks that discusses the Future Java Developer, the most recent ones in JavaOne Brasil and JFokus. Admittedly, we are not particularly visionaries, and our “future” is pretty grounded on experience today. Although during the talk we make some specific previsions, we’re really not trying to foresee the far future nor even debate the future of the Java Technology. The idea is to look at what developers, specially the ones working with Java, can do today, to prepare their own future. Here, I’d like to present some of the main points of the talk.

Software development has always been an unique opportunity. It is what Malcolm Gladwell in his book “Outliers” calls Meaningful Work: “work that is autonomous. Work that is complex, that occupies your mind. And work where there is a relationship between effort and reward — for everything you put in, you get something out“.

An important point about “meaningful work” that Gladwell makes is that it takes time for someone to master. He presents research in different fields — music, computers, law, agriculture — that correlate 10 thousand hours of doing a meaningful work, with being successful on the specific area. Gladwell shows that those that put that many hours are successful, and those that are successful, did put in that many hours. Gladwell also discuss that there is no such thing as a “born” genius, in short, the old saying “1% inspiration and 99% perspiration” is not only true, but inevitable.

Preparing for the future means putting now enough of those 10k hours in things that will allow you  to become better and relevant in the future. With that in mind, software development gives us some interesting benefits, that for lack of a better word, I’ll call here freedoms. Some are old freedoms, existing since software started to be developed, some are more recent ones, that we are lucky to be right on time to benefit from.

Freedom of Imagination

As the Dilber cartoon says: “try to get this concept through your thick skull: the software can do whatever [you] design it to do”. Your imagination is the limit. The lack of constraints make software something hugely powerful, and extremely complex. As a corollary, get through your thick skull that software development is hard, and it is not going to become easy just because there is a new language, new framework or new tool. In 1975 Edsger Dijkstra wrote that “Programming is one of the most difficult branches of applied mathematics; the poorer mathematicians had better remain pure mathematicians.” Got the idea of how hard it is? Developers that get excited doing the hard things and that work on their freedom of imagination will always be ahead of the pack.

Freedom to Run Anywhere

Java was not the first, but was the technology that popularized the “run anywhere” idea. This is not a Java-only benefit: since the industry broke free from the lock-in that developers had in the 90’s, developers learned that they can write software that runs in multiple environments. Today, in one way or another, all development technologies are trying to give you this freedom. Well, maybe not all… But this is something that we should not “un-learn”: do not let yourself become tied to a single vendor or single platform. Choose technologies that give you ample opportunities to experiment with multiple environments, this is the only way to have now the freedom to experiment today with things that will be valuable tomorrow, and also, to guarantee that, when devices, platforms and vendors disappear, you don’t get dragged into the drain with them!

Run anywhere has another side that is as important: once a lot of the code can run in multiple devices, manufacturers can create new devices easier. We are seeing this trend with Android: by leveraging developers knowledge and tools, and allowing (even if only to a certain extent) developers to target multiple devices, it created a strong marketplace that many vendors could participate. With most of the development technologies targeting multiple platform, the future will bring even more devices, and the opportunity will be open to those that keep their freedom to run anywhere.

Freedom to Learn and Build

Open source is a world changing phenomenon, and may be the most important thing for software developers. Like Bart, repeat 10 thousand times, “Open Source is good for me, I’ll fully embrace it”. It is, and you should. If you plan to reach 10k hours of software development, you need to work on software that you are excited to work on, that you are passionate about. And if you want to be ready for the future, you need to be able to learn from what exists and build on other’s work, and build with others, and have others building on what you did. If the future is built on what you helped build, you will be in the right spot when the future happens, you’ll be making it!

Open source has many other advantages, for companies and governments, and users. But no one benefits more then the developer. The sooner you realize this, the sooner you’ll learn to value your freedom to learn and build.

Freedom to Work Anywhere (and with Anyone)

Work from anywhere is a lifestyle that will become more common as time goes by. This has many implications, the most obvious one is that you can choose a great place to live at, and this is not something to ignore. But there is the other side of it: if you need to put 10k hours in something, it needs to be something you like, and chances are, that the best people doing whatever is that you like will not be seating in the next cubicle. Working from anywhere works both ways, for you and the people you’re working with. To work with the best people, work with them no matter where they are: they will not move to your area just because. So, choose what you want to work on, you can work on anything from anywhere with anyone, at least when we’re talking about software development. That also means you need to cope with working with people that are far away from you, be it physically, culturally, financially, linguistically or whatever. Respect that. Free yourself from the constraints of the work place, pursue your freedom to work from anywhere and with anyone, it will open big opportunities.

Freedom from Hardware

Recently there is some buzz about the 3D printing thing, how it will turn manufacturing on its head. Imagine, you need to manufacture something, and you don’t need to worry about building a manufacture plant to do it, all you need is your ideas and design capabilities. Won’t this be amazing? Yes it will. But if you’re a software developer this is true today! Any idea you have, you don’t need to buy/order/install/build a datacenter: you have all the machines you need, 5 minutes away. Dozens of cloud providers are doing the behind the scenes work, all you need is a good idea, and your code. Oh, remember the multi-platform thing we said earlier? Yep, it is valid for cloud too: make sure you don’t get stuck to one of those guys, so choose smartly how you go about it. Of course this is not without it’s issues, there are many. But the freedom to test, implement, grow and even throw away your ideas is already changing software development. And if you think cloud computing is the same old thing of having a server co-located somewhere, you really need to go play with it right now. Free your ideas from hardware constrains, it takes time, so start now.

The future is your future…

As you can see, those possibilities are all true today. But, realistically, they are not the day to day reality of most developers. But it can be yours. So, what about the future? The future has more and more developers benefiting from those freedoms, and that means, more ideas being able to see the light of day, more open source to learn and build from, more devices and vendors to run the code that is developed, more people working together from different places.

Yes, that does means there will be more challenges: we’ll need more code able to run concurrently for one. We’ll need to benefit from the multi-core machines that are showing up. Our frameworks will need to support cloud environments. And yes, languages will show up that will benefit from those things better than the languages that exist today, and there will be new frameworks and abstractions that will allow us to be more productive on this environment. None of that is news: this is the development world. Remember, software development is complex, and no matter how the vendors try to put it, it is not about to become any simpler.

There will be a huge amount of developers coming from development countries like the BRIC (Brazil, Russia, India, China) and others (Africa, Indonesia…), that will have access to more learning because of open source, more chances because of cloud computing, and more jobs because of remote work. Software development will be more inclusive, because those freedoms will give more developers the opportunity to make their 10k hours, and join in. More developers means more ideas, more devices, more frameworks, more languages, more communities, and more open source. Software development is a mixture of engineering and art, and more artists can only be a good thing!

So, in short: to survive the future: learn to deploy in the cloud, while keeping your vendor and platform independence. Learn to work with people from multiple cultures, joining the open source revolution, so you become a better developer and a more connected one. From open source, learn to build on top of what others built, and to develop simple solutions so others can build on top of what you do. Think of services, cloud will provide that, and the new connected devices will require it. Neal Ford talks about the “Polyglot Programmer“, because “applications of the future will take advantage of the polyglot nature of the language world.” Become one!

And, finally, what if you’re a Java developer? You’re on the right track. You understand the importance of multi-platform and standards. Java is one of the most important language for open source software, and Java’s most important features are themselves open source, so you’ll be at ease there. Java is also the main focus of the cloud providers and Java software like Hadoop form the backbone of many cloud environments. Most cloud frameworks are done in or directly support Java. Not to mention that all of the important cool new languages that are being talked about run on top of the JavaVM and integrate well with your Java libraries and knowledge.

In the end, what matters is your passion: to prepare for the future, choose something you’re excited about, consider the cloud, build it as and with open source software, join in or attract people from anywhere. Keep your independence. You’ll do great!

This article is cross posted to my blog at

Posted in English, Java, Open Source | Tagged , , , , | 5 Comments

SouJava nominated for the JCP EC

This week, Oracle officially nominated SouJava for an Executive Commitee seat on the Java Community Process (JCP), and I’ve been indicated as the group’s representative. Since then I have received many e-mails, and started writing this lines several times, but couldn’t get too far… There is no simple messaging regarding the JCP these days. To even start means touching on all the large issues at stake, including Apache, Harmony, Android, OpenJDK, Java SE, the TCK, JSPA, Open Source, Oracle, and so much more… That’s not surprising. The JCP is at a crossroads where everything Java meets.

So, I’ll start simple and leave the other issues for other posts…

SouJava is an important and active Java Users Group, based in São Paulo, Brazil. It has tens of thousands of members and hosts activities in several cities. The group has been working with the JCP for a long time. It was the first JUG to join the program and has been promoting the JCP in Brazil for years. It also worked heavily to get the Brazilian Government to participate and recognize the importance of the JCP – and to add open source, standards and Java to the Government’s agenda. SouJava also pushed Brazilian developers to participate in the JCP, and many of the group’s directors have joined JSRs, which worked to extend the group’s experience. Our User Group is respected by developers, companies and the government, and participates in major discussions about software development in Brazil. By helping connect the Java and the open source communities, the group had an important participation in the open sourcing of Java. SouJava will bring its passion for open source, standards and Java technology to the JCP to fight for transparency and participation.

As for me, I have been involved with the JCP for a long time, even longer then SouJava. JCP’s Patrick says I’m one of the first individuals to join as a member. I’ve also participated in the backstage discussions of many of the issues that happened. I consider the JCP one of the most important cornerstones of Java technology – Java’s most important feature.

For a long time, I felt at ease with the JCP, since Apache was part of the Executive Committee. Geir Magnusson is a longtime friend, and the fact that he was fighting for the things I believe made me feel I had someone to defend my rights. I respect and understand Apache’s decision to leave the JCP, but for me, once Apache and Geir decided to step down, I felt I was losing my direct connection to the Process.

Personally, I see this as an opportunity to join the fight for more transparence and better developer participation in the JCP, as well as working to make sure the JCP respects the needs of open source communities. My discussions so far with Oracle make me believe that we are aligned on some of these issues, and it’s clear we already agree on disagreeing in others. This is fine; disagreements are, of course, part of the process.

However, there are still major steps ahead: SouJava needs to run the election and receive the approval of JCP members. If the members understand our participation is beneficial, we’ll need to get into the discussion and work out our proposals with Java developers. We understand it won’t be easy and it that is hard to make a difference. But the group is strong and independent. It will not shy away from tough discussions and hard decisions.

I would like to thank everybody for the supportive e-mails. I’m really excited with the opportunity, and will do my best to deserve the support I and SouJava have received. To be honest, I’m also a bit scared with the sheer size of this challenge. I sincerely hope we can measure up to expectations.

Posted in English, Java, Java User Groups, JCP | Tagged , , | 10 Comments

JUGs, Trademarks, Copyrights and Open Source…

In preparation for the Oracle Users Group Leaders’ Summit that will happen in Redwood Shores California next week, a long time, unsolved issue resurfaced and JUGs have a hope to discuss it during the Summit: the usage of JEDI, an open source Java training material developed by Sun Microsystems through the University of the Philippines Java Research and Development Center. An issue that shows that JUGs, as well as any developer, need to pay attention at those pesky things called Trademarks, Copyrights and Licensing…

JEDI is a wonderful project, promoted by Sun as an open source effort, that many Java User Groups around the world have promoted, used and even translated. Tens of thousands of students have already learned Java from those JUG efforts, specially through the work done by DFJUG and JUG Indonesia, as far as I know, the two largest JEDI/JUG efforts. JUGs are not the only ones teaching JEDI, but they are an important and active part of the project. JUGs do more than translate: they turn the content in something live, that students can relate to, with teachers, friends, support and community.

Because it is a training material, Sun employees from the education group (the former “Sun Education”) have in multiple times in the past complained about the usage of the freely available material, saying that the free training provided by the JUGs is prejudicial to their education interests. One has to wonder how it can be prejudicial: teaching Java in poor areas, and thus increasing the pool of available Java developers, will only increase the chances that they will eventually be able to afford an official training or certification.

But offering the training for free or to developers that can’t afford is not even a requisit! Even if JUGs (or other institutions or even companies) are offering this as paid training, that is the nature of open source. If the material is open source, then, there is nothing to complain about. Or is there? Unfortunately, the JEDI courses are “open source” in description only… The site describes the project as “designed as an open source program”, and in an official letter addressed to “whom it may concern”, Sun called JEDI an “open source Java training course”. But this is where the “open sourceness” of JEDI seems to end… There is no license anywhere, no description of rights that project members have, and no specific public information about rights to translate, distribute or even use this material in courses. So far, the push for JEDI that Sun did in the past, that many JUGs jumped into, seems to lack the effective rights needed now that the efforts became real.

Java User Groups have dealt with Trademark and Copyright issues for some time: the nature of a User Group is to refer to the technology they are a group of, and many have created names, events and logos that incorporated some of the Java trademarks. JUGs also help bridge the language gap, by translating sites, documents and other material. JUGs are enthusiasts, and they jump into good ideas and projects, on the faith that their efforts will benefit the technology. JUGs are non-profit, volunteer, and many times chaotic organizations that mostly lack of understanding on trademark and copyright issues, and many JUGs have stepped the boundaries by creating events or registered logos that fall clearly outside of the guidelines. SouJava, the JUG I helped create, was guilty of that and after years of discussions and agreements, we’re still working with Oracle to resolve some of the (now small) pending issues. The lovely Javapolis event, run by BeJUG, changed its name to Javoxx and then Devoxx because of similar issues. The usage of Duke, the trademarked Java mascot, and even the Java logo itself was heavily abused by JUGs until we created Juggy, the Creative Commons JUGs Mascot, today used by JUGs everywhere. In an act of sanity, Sun eventually released Duke under a BSD license, freeing the Java mascot from his non-sense trademark jail.

JUGs tend to trust that that things will just be fine, but when there is a large effort under way, JUGs need to be more careful. JEDI is great, but with dozens of volunteers putting in hundreds of hours of translation efforts, and affecting the careers of thousands of developers, and many more JUGs lining up to replicate this in their areas, the lack of clarity on its licensing status is really worrisome. It has allowed local Oracle offices trying to sell their course to promote FUD about JUGs activities, preventing then from forging relationships with governments and schools, and even threatening groups trying to stop their efforts.

Right now, this seems to be done in a local level, and not as corporate initiative. And it is not a new Oracle policy, that’s why I mentioned Sun the rest of this post: the threats and FUD are done by the same people who were doing this during Sun’s time, this situation is going on for years. It just gets worst the larger and more spreader the JUG efforts become. Since the JUGs involved haven’t been able to get an answer for years, I think it is time to put the issue in the clear. We may even find out that JEDI is not open source at all, it was just misleading marketing. But I really hope that next week, we can discuss this situation with Oracle during the Summit, and that we can all push JEDI forward with a clear model that will work for everyone involved. In the end, we all want to benefit Java developers, and the combination of an open source training with the enthusiasm of JUG members is a powerful force.

Posted in English, Java, Java User Groups, Open Source | Tagged , , , , | 13 Comments

My… Preciousss!

This is a new blog, and a new site.

I wanted to do this for some time, the new domain exists for over a year. My old site was really outdated. The design was copied in the past century from the Sun intranet site, the graphics came from a friend that is today an acclaimed designer, but at the time was still learning. The site used a series of Velocity templates and Ant scripts to generate HTML and then upload it. Once I lost the whole thing years ago on a bad laptop crash, the site stayed, stale and aging… Time to move on!

My blog at is still valid, and I’ll double post things here and there. But even that needs some recovering…

Since I just passed 1000 followers on twitter (@brjavaman), this is a good time to launch this new site and blog. And to encourage people to learn about this site, I’ll give away one of the precious items of my personal Java items collection: a brand new JavaRing, from the batch that was saved from JavaOne 1998. It is a collector’s item, still on the plastic bag it came on, with the instructions manual. The batteries are supposed to run for 10 years, probably out by now, but this should not diminish it’s charm.

Want to run for it? Here is the deal: when I get to 1123 followers (just a cool number…), I’ll randomly (probably via choose someone that is following me to get the JavaRing. It needs to be a person: if it is a list or group, a magazine or a company, I’ll choose someone else. One last thing: since it will be Campus Party next week, the sooner I’ll run the draft is Friday, January 21st. If we reach the 1123 mark before that, we’ll just have to wait…

You can help out that the 1123 mark arrives sooner rather then later: I’ll twit some Java tips everyday, and you can RT them. That way, we can promote Java and get to your JavaRing faster! Point people to so they know what to do!

So, welcome to my new little space on the Internet! I do my best to not leave it outdated…

Posted in English, Java | 2 Comments