By Janice J. Heiss
Published March 2012
This series of interviews spotlights Java Champions, individuals who have received special recognition from Java developers across industry, academia, Java User Groups (JUGs), and the larger community.
Jorge Vargas has been a freelance Java consultant since 2000 and a Java Champion since 2007. He is a leader and moderator with the JavaUp Java User Group, a valuable community partner in Oracle’s Tech Days Program, located in Mexico City and focused on Mexico’s student developer community. The Tech Days Program has been visiting Mexico every other year since its inception. In addition, Vargas organizes Java developer events in universities all across Mexico. He has a particular interest in the translation of JDK docs into Spanish and is working with his JUG to seek volunteers to work on this project via java.net JUG community projects.
He has contributed code to two open source projects: SimpleJ is a retro-style virtual games console and developer kit for learning computer programming, and JrMan is an OS version of the REYES rendering algorithm used by the Pixar motion studio’s PhotoRealistic RenderMan.
Oracle Technology Network: You have been a practitioner of “extreme programming” [XP] in introducing companies to Enterprise JavaBeans [EJB] 3.0. Tell us about the pluses and minuses.
Vargas: Some companies, including some very big ones, have a lot of systems written in languages such as Delphi, PowerBuilder, and Visual Basic, and they need to migrate to new technologies, because maintenance and time to market are very crucial. You can imagine a company with a program that has 400 modules, each of which is an executable.
Creating or migrating this to a new platform is complicated, because we are talking about hundreds of thousands of lines of code. Here is a strategy I use in consulting with companies to help them accomplish this:
1. Give workshops about Java in all flavors.
2. Give workshops about building code with XP and agile techniques.
3. Generate a master project to build all apps based on Scrum, some XP methods, and Kanban.
4. Build important core components such as security, login, menus, printing, and graphics.
5. Help them by providing weeks of consultation with no developing—they have to learn how to do it.
6. Answer small questions or address requirements to help resolve problems or doubts.
7. Be happy to see a happy customer.
This may sound easy, but it’s not—the process takes months and hundreds of hours, but it can be controlled, and with small iterations, we can translate customer requirements and problems of legacy systems to the new system.
Oracle Technology Network: You are active in projects involving geolocalization and Java in the back end and the Web client, with interfaces to the Apple iPhone and RIM, Android, and Nokia devices. How would you characterize the challenges in this work?
Vargas: We have launched a beta program of Yumbling, a geolocalization-based app, with mobile clients for BlackBerry, iPhone, Android, and Nokia, with a Web interface. The first challenge was to design a simple universal mechanism providing information to all clients and to minimize maintenance provision to them. I try not to generalize a lot—to avoid low performance or misunderstanding in processing data. We use the latest Java EE technology—during the last five years, I’ve taught people how to use Java EE efficiently.
Now it’s time to demonstrate it in an app for millions of users in the next two years.
We will need short time to market and then provide APIs and interfaces to give this capability to end users and administrative users. The app is based on points of interest with real and actual information and prepares APIs to be exploited by others’ apps in a short period without compromising data and performance—as the boss says, “Faster faster faster.”
Oracle Technology Network: You also provide Java apps and architecture to a company that serves companies that sell internet, telephony, and TV via cable.
Vargas: Some years ago, we provided support to a company that makes software for internet, telephony, and TV via cable. The company usually used C programs to provide provisioning infrastructure and monitoring and control of devices. In this case, we used the power of Java EE instead of using Java SE and created multithreaded programs to provide the services we built, tested, and deployed.
We used multithreading processes to detect fraud and irregular values in the infrastructure and to collect information. Similarly, we created some Web apps to show and configure all the data in this process. In this case, we used Java EE 6 with S/B GlassFish Server Open Source Edition Release 3.x.
Oracle Technology Network: You have written on your blog about “false innovation,” where organizations or individuals innovate not because it really helps them or makes sense—but for other reasons. Can you tell us what you mean by this?
Vargas: Some people want to “innovate” because they read about an innovation in a magazine or encounter new ideas in a club. This can be good if it helps them discover the real problems in their organization but not if they simply want to implement a new and often expensive solution as an end in itself. I usually suggest that we do a simple study to see if the suggested innovation is right for their organization and take it from there.
“I believe that if all of us, when we are programming, would only think, ‘I need to do the simplest program possible,’ we would be happier and more successful.”
Oracle Technology Network: You have also spoken of “misapplied experience,” where experienced developers may be better at solving problems than avoiding them. How might this tendency be alleviated?
Vargas: I believe that if all of us, when we are programming, would only think, “I need to do the simplest program possible,” we would be happier and more successful. Some programmers assume that more-complicated programs are better and fail to call upon their experience to write fewer lines of code.
Oracle Technology Network: Oracle developer Brian Goetz, author of Java Concurrency in Practice wrote this statement: “Often, the way to write fast code in Java applications is to write dumb code -- code that is straightforward, clean, and follows the most obvious object-oriented principles… Because compilers are written by humans who have schedules and time budgets, the compiler developers focus their efforts on the most common code patterns, because that’s where they get the most leverage. So if you write code using straightforward object-oriented principles, you’ll get better compiler optimization than if you write gnarly, hacked-up, bit-banging code that looks really clever but that the compiler can’t optimize effectively. So clean, dumb code often runs faster than really clever code.” Your response?
Vargas: I agree. Perhaps by dumb he means “standard” code that gets standard results, as opposed to very creative, imaginative, “brilliant” code. Most of the time in writing software, we aren’t trying to launch a rocket to the moon. I would say, “First program in the way you know how, and then run integration tests and proceed from there.” I think Brian wants to send a message that we don’t need to improve code that already works fine. Some programmers invest hours and hours coding something because they want the absolutely best program, but such exertions are not always necessary.
Oracle Technology Network: You have observed that different communities of developers in Mexico are sometimes in conflict with each other about which IDEs to use or how best to develop software generally. Tell us about this.
Vargas: Unfortunately, people sometimes see their communities as superior to others and as being “at war” with others because they believe they have the best framework, IDE, or software development technique. Obviously, I think that simply because a framework is the most famous, or newest, or in fashion, it’s not the only one to use. Each problem requires a unique solution. We may prefer some technologies over others, but we are not gurus who can decide which IDE or framework will exist forever or is best for every situation.
Oracle Technology Network: You have worked in IT departments in the U.S. and Mexico. Can you tell us how they differ?
“In the U.S., there is more order and organization in the development process than in Mexico. I don’t know if they always use the best processes to design a project, but Americans are more organized.”
Vargas: Good question—I think there are a lot of differences. I think the main problem in Mexico is that if you design for months for a simple project and produce something different from user requirements, you may end up needing to develop out of thin air. In the U.S., there is more order and organization in the development process than in Mexico. I don’t know if they always use the best processes to design a project, but Americans are more organized. I prefer agile techniques.
Another issue in Mexico is the continuous discussion about programmers’ wasting time on things besides programming or learning, such as social networking and games. In the U.S., programmers and their bosses seem to trust each other more than in Mexico. In both places, we make mistakes, use different IDEs for different purposes, don’t use a continuous integration technique, and don’t take enough care about time between tests and their corrections.
Oracle Technology Network: Tell us about your efforts to encourage young people in Mexico to develop their Java skills.
Vargas: Well, I enjoy giving conferences at universities, and after we talk a little about Java and technology, we talk about jobs and the attendees’ life goals and incomes. Usually I don’t speak in the bigger cities, because I think we need to improve knowledge in all cities across Mexico. At the universities, people don’t easily find jobs. We talk about how if they get more knowledge and skills with Java, we can work together. Young people can be very enthusiastic, and I have had young programmers work both onsite and offsite—this is very interesting for them.
In addition to doing conferences, I publish Web pages and create JUGs, but unfortunately, JUGs last only a few months or, at most, maybe two years, because students leave the university and don’t have the time or interest to continue participating in their scholar JUGs.
Oracle Technology Network: Is there a different style of programming that Mexican—or, to overgeneralize, “Latin American”—culture tends to encourage?
Vargas: We can generalize about some things in Latin America, but there are also a lot of differences. There are differing regions such as Mexico, Brazil, Argentina, and the rest of Latin America. I think because of the size of communities, the educational styles in these regions, and the influence of JavaOne, Brazilians and Latin Americans generally see software in terms of open source. In Argentina there is a greater focus on proprietary software (IBM, Oracle, and so on), and they look to European and American markets. In Mexico the focus is on both open source and proprietary software—we look to local and U.S. markets. In Brazil the market is very local.
Oracle Technology Network: Is there anything you would like U.S. Java developers to better understand about Mexican and Latin American developers?
Vargas: American Java developers don’t need to understand us any better, but they should keep us in mind when designing tools and docs we use. We have to use what they produce—it is not optional.
Oracle Technology Network: How would you help young Mexican Java developers, just out of school, prepare for their first job interview and their career generally?
Vargas: During their studies, we encourage them to create real systems—not just school projects. They need to look for small companies or social and NGO organizations that have real needs they can meet, obviously with less efficiency than professional programmers but with benefits for both parties. With this experience, novice programmers can get good job interviews because they can demonstrate how they have worked to get a program functioning and show some documents that demonstrate how they have helped organizations. And they need to read and read and read—at least 30 minutes per day so they can know all about the technology changes and opportunities in the Java world.
Oracle Technology Network: What has surprised you most about the evolution of the Java platform?
“Without a doubt, I’ve been most surprised by the birth of new languages based on the JVM, with a different focus and styles to adapt to the different needs and challenges involved in creating software.”
Oracle Technology Network: What are some things you would like to accomplish with Java?
Vargas: We next want to build more core in order to provide services to mobile apps, of course using REST services with GET calls. You might ask, “Why not EJB 3.0 or 3.1?” The answer is that for these kinds of apps, we absolutely must use simple services that are light and very fast.
Oracle Technology Network: Where in the process of programming do you have the most fun?
Vargas: I guess in the development phases, because it is the moment to test the design and design the test. This may sound like an inverse order, but it’s the real world. If you can write code easily and faster, your design is good. If you are writing code, you create tests beforehand to write it.
Oracle Technology Network: What technical insights into the Java programming language have been most important to you?
Vargas: First, understanding how to build a good visual interface with Swing and the Abstract Window Toolkit [AWT], because that enabled me to understand a lot of Java concepts. Second, always think about how a concurrent problem has to be coded. And third, sockets, sockets—we have sockets in the real Java world, so we need them and must practice them.
Oracle Technology Network: The Java classes you couldn’t live without are...?
Vargas: String and Integer — you can use them for everything, and you need to understand them. But I think my preferred interfaces are List and Map.
Oracle Technology Network: Can you describe the process of writing Java code?
Vargas: I prefer some agile techniques—the ones I use depend on the kind of project, customer, and technology. Here is the basic process:
First, I must understand the customers and their needs and perspectives. Second, I write down the risks and opportunities involved in writing the software. Third, I plan in a simple way the tools, IDE, frameworks, and other components we can include. Fourth, I write all requirements in user stories.
Fifth, I divide and prioritize user stories to visualize the project. Sixth, I iterate and iterate inside stories and show it to the customers, reviewing and deploying in test and production environments with high quality. Seventh, we stop the process when we are out of time, stories, or money.