The Artima Developer Community
Sponsored Link

Java Community News
James Gosling on Boiling Oceans

3 replies on 1 page. Most recent reply: Aug 16, 2006 2:15 AM by Achilleas Margaritis

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 3 replies on 1 page
Bill Venners

Posts: 2284
Nickname: bv
Registered: Jan, 2002

James Gosling on Boiling Oceans Posted: Aug 10, 2006 10:38 AM
Reply to this message Reply
Summary
In his weblog, James Gosling writes about how to "boil oceans," i.e., do something that would be impossibly difficult to do all at once. He warns against confusing a big vision with a to-do list, and instead suggests taking small steps today that move you toward the big goals.
Advertisement

In Boiling Oceans, James Gosling gives advice on how to implement a big vision. He says that at Sun, they refer to grand visions as boiling oceans, to emphasize that it would be unrealistic to try and accomplish the vision all at once:

At Sun we use the term "boiling oceans" to refer to trying to do something impossibly hard all at once.

Gosling's first suggestion is to make sure the vision itself is not bigger than needed:

[Boiling oceans] is an especially silly thing to do if all you really want is a kettle of hot water for tea. Engineering projects too often fall into the trap of over-generalizing, trying to solve problems that folks might concievably have, building things so large and elaborate on day 1 that they never get off the ground.

If you're sure you really want the big vision, though, Gosling reminds that:

A journey of a thousand miles begins with a single step.

He suggests that today you take one step, tomorrow another, and so on, towards the goal, and mentions that over time, as you take more steps, the goal will likely shift and adjust.

One of the big sources of the problem is confusing a vision with a to-do list. Implicit in taking the first step in a journey of a thousand miles is that you have to have some clue about where you're going. That's the role of a vision for a project. It's seductive to take the vision and turn it into a to-do list. But grand visions lead to insane to-do lists. The art of breaking them down into manageable steps can be a tough one.

Visions are notoriously slippery things. Your vision of a good place to go, of the right target for a project, is heavily dependent on the time and place where you are standing and looking out. With every step on a journey of a thousand miles you see things from a slightly different vantage point. Your vision adjusts. Your goal shifts. For me, that is one of the most exciting aspects of a project: I start out with an intent, with a vision of where I hope to end up, but the true destination unfolds in fascinating and surprising ways.

Often the hard part, as Gosling notes, is figuring out how to break down the grand vision into smaller steps. How do you break down big plans into manageable steps? Do you have any other advice for how to accomplish big goals in projects?


Ari Zilka

Posts: 8
Nickname: ikarzali
Registered: Jul, 2006

Re: James Gosling on Boiling Oceans Posted: Aug 10, 2006 10:24 PM
Reply to this message Reply
> <p>
> Often the hard part, as Gosling notes, is figuring out how
> to break down the grand vision into smaller steps. How do
> you break down big plans into manageable steps? Do you
> have any other advice for how to accomplish big goals in
> projects?
> </p>

I can suggest what worked for Terracotta: when attempting to cluster at the JVM level we noticed the previous attempts started with a fully-clustered heap implementation. We instead took a different approach:

1. prototype. Synthesize a use case and implement just enough to make that use case work
2. Find customers and DO NOT just cheat and synthesize another use case. Take the prototype and try to extend it to meet the real use cases. refactor. refactor. refactor.
3. Our version of "don't boil the ocean" was to decide to cluster the parts of heap that a developer specificies (via configuration file naming of classes, fields, locks, etc.) as opposed to clustering the entire JVM. I wonder if "configuration driven / declarative / AOP" is a rule or just worked in our case.

All told, we were able to get to market in just over a year with something that works for a reasonable set of use cases. Furthermore, we know which use cases it will not work for without blindly trying and wasting people's time.


--Ari
http://www.terracottatech.com/

Kay Schluehr

Posts: 302
Nickname: schluehk
Registered: Jan, 2005

Re: James Gosling on Boiling Oceans Posted: Aug 11, 2006 1:35 AM
Reply to this message Reply
"Having visions, call the doctor"

In the end it's all about taming visions. But maybe it's also about compromising visions with reality?

Maybe someone has noticed the irony that you need a SUN to boil an ocean.

> [Boiling oceans] is an especially silly thing to do if all
> you really want is a kettle of hot water for tea.

Or boiling down programming to get Java... very silly, yes.

Achilleas Margaritis

Posts: 674
Nickname: achilleas
Registered: Feb, 2005

Re: James Gosling on Boiling Oceans Posted: Aug 16, 2006 2:15 AM
Reply to this message Reply
Wouldn't top-to-bottom construction be more useful in the case of 'boiling ocean'?

Flat View: This topic has 3 replies on 1 page
Topic: James Gosling on Boiling Oceans Previous Topic   Next Topic Topic: Backbase Releases 1.2 Version of Ajax Toolkit

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use