Developing in a Polyglot World
By edort on Dec 04, 2007
Sun senior engineer Craig McClanahan has years of experience in developing applications. His program development career spans almost the entire course of the discipline's history, from the almost stone tablet and chisel days of RPG to modern technology frameworks like Ruby on Rails. So he's got a lot of experience and insight to invest in a talk about program development. And in fact, program development was what this talk was about. The session, titled "Developing in a Polyglot World," gave McClanahan an opportunity to expound on some of the major issues that application developers, especially web application developers, face today and offer some suggestions for being successful in the future.
At this point, you're probably wondering what the phrase "developing in a polyglot world" means. In fact, McClanahan started off by asking how many folks in the audience knew what the word polyglot means or were stimulated to look the word up. Few raised their hands in response to the question. I suspect that like me, most of the audience had an inkling that the word has something to do with knowing multiple languages. I also suspect that almost no one in the audience had any idea what it had to do with program development.
Wikipedia lists a number of definitions for polyglot. McClanahan presented these three:
- Composed of several languages
- Program valid in multiple languages
- Person fluent in multiple languages
O.K. so what's that have to do with program development? McClanahan's answer is that application developers live in a polyglot world, a world that requires them to be fluent in multiple program languages and platforms and be able to leverage that fluency to develop successful applications.
The Internet has also brought about the need to share data and programs and because of that, there's a requirement for developers to create programs that run in multiple environments -- an analogue to the idea of a program valid in multiple languages. That requirement is even stronger today due to the popularty of mashups, where the objective is to collect applications and other resources from the Web and bring them into an application. Because of this, McClanahan said that the program development trend is to focus on formats like XML, SOAP, and ANT that don't care about what platform (the platform " on the other end") is consuming the content,
There's a real bottom line in all this. McClanahan noted that it's straightforward to become an expert in a particularly narrow branch of technology. And if that technology is popular, you have a career path -- at least for a while. Case in point: at the end of the last millenium, when companies were devoting their developers' attention to the Y2K problem, folks who had the programming skills to address that problem were in much demand. But that was a short term need. As a side note, McClanahan pointed out that because of the way UNIX-based systems handle dates, these systems will face a Y2K-like date dilemma in the year 2034. He then quipped "but I'll be retired by then so I'll leave it up to you to handle that problem."
McClanahan said that though it's much more difficult to master multiple systems, the reward is career advancement and higher pay. But this requires more and continued education, something that's typically not demanded in the programming development profession. McClanahan, in fact, called for a change in this regard, pointing to the fact that his father, an attorney now in his 70s, is still required to take courses to keep current. So too are doctors, who are periodically tested to keep up to date with the newest advances in their discipline. McClanahan also mentioned that a project that he's currently working on (but cannot yet divulge) requires him to know a lot of new technologies, including Ruby on Rails, DHTML, Ajax, CSS, REST, and Apache configuration.
Taking the David Letterman approach, McClanahan ended his talk with a top 10 list of suggestions for web application developers:
10. Expose data and logic as a service. In the Internet age, content is more important than presentation. McClanahan pointed out that some other site will grab that data and present it in an attractive way, so developers shouldn't worry about presentation. What an application can do is more important than the user interface.
9. Integrate external content. This is the corollary of the previous item. If a developer makes applications and data available for sharing with other sites, his application can also take advantage of content available for sharing from other applications. McClanahan said that essentially all useful content is available on the Internet. The added value that an application can offer is merging content in an innovative or compelling way.
8. Seek quality of service deals from sources. This follows from the previous item. If an application incorporates and is dependent on external content, the availability of that content is crucial. So it's important for developers to work out a quality of service arrangement with the providers of that external content.
7. Give quality of service deals to users. Quality of service is important for end users too. If a developer wants his application to be successful he needs to work out a quality of service deal with the target users of the application.
6. Adopt agile development processes. Users are demanding quick, periodic, and unobtrusive updates. To meet that requirement, McClanahan recommended the adoption of a continuous and iterative development model with incremental releases every 7-14 days. McClanahan pointed to NetBeans 6.0, which took a long time to be available as a final release, but has been available for a long time in various milestone builds. McClanahan said that users want new software quickly even if it's unfinished. But it's important to let users know what's not finished and to give them the opportunity to provide feedback.
5. Enhance unit and functional testing. McClanahan advocates reducing the release testing workload by doing more aggressive unit testing and functional testing. He further advocates that release testing focus on integration and usability testing.
4. Build in scalability. It's important that web applications scale to meet increasing demand. McClanahan stressed the important of separating the persistence, model, logic, and view parts of an application to better support scalability.
3. Capitalize on heterogenous technologies. This follows from much of the earlier discussion about polyglot development. McClanahan noted that large applications require a variety of technologies to address the variety of issues they often face such as firewalls, security, storage, and so on. He also warned developers to beware of "one size fits all" technology stacks.
2. Reach out to mobile devices. The install base in the mobile arena is potentially huge. McClanahan mentioned that there are billions of these devices already available and to watch for new and upcoming innovations in this area. Also see what two of Sun's leading voices in mobile technologies have to say about this in my blog Java Mobility From the Insiders -- An Interview With Terrence Barr and Tim Cramer.
1.Enable user provided content. McClanahan stressed that successful next-generation Web applications enable users to provide content as well as rate content. So to be succesful, developers need to follow suit.
To sum it all up, McClanahan offered the following:
- We live in a polyglot world. The days are gone when one technology stack could solve all requirements (if they ever did). It's important to understand what technologies solve which problems.
- Developers who have multiple skills are more valuable than those who don't.
- Develop applications around scalabilty and sharing content.
- Incorporate the input of users into the development process.
... and most important: have fun!