It's no secret that innovative software development often never sees the light of day -- or sees the light of day long after it was created. Rick Cattell, a Sun Microsystems Distinguished Engineer in the Software CTO Group, has been thinking about this problem for some time. After receiving his Ph.D. from Carnegie Mellon University in computer science in 1978, he landed a job at the legendary Xerox PARC, where groundbreaking technology, like the GUI, WYSIWYG word processing, the personal computer, and Ethernet were created, but initially went nowhere.
After six years at Xerox PARC, where he developed GUI and database software for early personal computers, he joined Sun in 1984, where he led the database group at Sun developing platform enhancements for database performance, database GUIs, and later CORBA-database integration. He was a founder of SQL Access (a predecessor to ODBC) and the Object Data Management Group (ODMG), co-creator of JDBC, and author of the world's first monograph on object/relational and object databases. His biggest contribution to the Java community was starting the enterprise Java project, which eventually evolved into Java 2 Platform, Enterprise Edition (J2EE). He also contributed to the initial definition of the Java Community Process (JCP). The author or co-author of some six books on data management and Java technology, and dozens of articles, Cattell is currently writing a book, tentatively titled "Things I Wish I'd Learned in Engineering School" that he has presented in talks at universities around the US. We met with him to learn about pitfalls that developers should avoid. There was a shared fear that the domination of one company on the client side would spread to the server. Partners like IBM, Oracle, and BEA rallied to the cause of a common platform for Java technology on the server. I also looked at the logic of the players. When you looked at Java technology on the client, there were only a few platforms that mattered, like Windows, UNIX, and Apple. But when you look at Java technology on the server, including the hardware, the operating system, the application server and web server platforms, there were a lot of platforms. And it seemed to me that the value of Write Once, Run Anywhere would really take off on the server side, because it was important there. The predecessor to the Java Community Process (JCP) was very helpful as well. When I joined JavaSoft, Sun's original Java technology organization, in the summer of 1995, I started working on JDBC -- Java Database Connectivity. I was surprised at how cooperative everyone in the industry was, and how effectively I was able to work with them in what we would now call an expert group. The work on JDBC went five times faster than any standards activity I've ever been involved in, and the results looked less like it was designed by a committee. I wrote up a document on my experience with JDBC for the management and my colleagues in JavaSoft, which, after many iterations, became a predecessor to the JCP document on how to effectively organize an expert group to reach adequate consensus. If you look for perfect consensus, you usually end up with a design by committee. With a strong specification lead, you can get a coherent design and still retain a high degree of consensus. Things I Wish I Learned in Engineering School I also didn't realize that good technology is only 10% of success. If your management doesn't know how to manage a successful engineering project, or your marketing department doesn't know how to access the customers, or doesn't tell you what the customer wants, or if your lawyers don't handle your intellectual property correctly, or if the chief architect doesn't have the ability to create a consistent and simple architecture, then your work can be for naught, and you can spend years building things that never see the light of day.
Doing Too Much How do you know you're doing too many things? I would say: Make a list. Set your priorities. Set goals. See if you're set up to succeed at those goals. And if not, figure out how to focus on a smaller set of priorities. You can do that as an individual. That same technique can be applied at every level of the organization. The biggest red flag is missing your goals. Being First Versus Being Best
There has also been a "home field advantage" for the early programming languages, despite the introduction of many better ones over the years. FORTRAN was the first high-level programming language. COBOL was the first widely-available business programming language. C was the first widely-available language for system programming. All of these languages are still around, despite their drawbacks. The Java platform became popular because it was the first in a new category: platform-independent programming for the Internet. Lots of other programming languages in the last 40 years failed because they were not "first" in a category, even though they were really good languages. In fact, I was personally frustrated in the early '90s that the best programming languages were never very popular. I jumped at the opportunity to join JavaSoft because I felt the Java language was in the right place at the right time. It had the potential to be a good programming language and a popular programming language. It's no fun chasing memory leaks and memory clobbers in C and C++. I believe programmers are more productive (and have more fun!) in the Java environment. Some might call it "luck" that the Java language rode the Internet wave. I would call it good recognition of the rules for success. Of course, being first doesn't guarantee success for a technology. You have to consider the other rules as well: a technology needs to be "good enough," and it needs a distribution channel to a large audience. You can find more discussion of the "first is more important than best" idea in 22 Immutable Laws of Marketing, by Reis and Trout. Signs of Failure If you find yourself in a start-up, and you're concerned that the company may be failing, then you have a hard choice of whether you're going to be the last one to turn out the lights, or if you're going to abandon ship. You have to step back and understand whether the new round of funding is going to rescue you or not.
I probably evaluated between 100 to 200 start-ups applying to Sun for venture capital in 2001 and 2002. In nine out of ten cases, it was evident that they were making some big mistakes -- they did not understand who their customer was, or they did not understand how to manage a successful engineering project, or their product lacked architectural consistency. The architecture was produced by ten people, and it looked like it was produced by ten people. Lessons from Xerox PARC Inconsistent Rules See Also
Rick Cattell's Lessons
|
| |||||||||||||||||||
Oracle is reviewing the Sun product roadmap and will provide guidance to customers in accordance with Oracle's standard product communication policies. Any resulting features and timing of release of such features as determined by Oracle's review of roadmaps, are at the sole discretion of Oracle. All product roadmap information, whether communicated by Sun Microsystems or by Oracle, does not represent a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. It is intended for information purposes only, and may not be incorporated into any contract.
|
| ||||||||||||