Shearer Software

 

 

SD East 2002

Software Development Conference, Boston

Thursday, November 21, 2002


Project Management from the Frontlines

Andy Kaufman, Institute for Leadership Excellence and Development

He asked several questions to get a general feel from the audience. One was: How much leadership bandwidth do you get, in terms of good role models? Someone gave a low score. Different people joked:
"So everyone else is bad?"
"Yes, of course we're the good ones, because we came here."
"Yes, that's why I'm here instead of leading my team."

Entropy: change in projects, workplace, policies. Results in confusion.

Often, companies and managers deceive themselves that the choas is temporary and can be stopped by doing things the "right way". Beware of using term "right". See the shades of gray.

Entropy is here to stay. Recognize it, fight against it, develop new leaders to help.

His session was designed to present real-world knowledge gained.

We broke up into small groups to discuss.

When the speaker took over again, there was an example story from a government contractor. Their radar system had half a million lines of code already written when it was respecified by the government to work at sea instead of on land.

Engage, find your one thing.

New role of leadership: "help people face reality and to mobilize them to make change". (This was a quote from someone, but the text was overprinted on the screen. Probably missing a font.) We must be able to see reality. Often an inverse relationship between reality and position. Higher level people can't look at the same level of detail that they used to as lower level people. Must be exceptional listeners. Listen "musically as well as analytically", needing more than email and documents, need body language, etc. "Most leaders die with their mouths open."

You will get burned. Just don't make the same mistake twice. Look for the gap between written and unwritten rules. "Unwritten rules are reality, and reality always wins." Pick any expressway. Posted speed limit is the written rule, unwritten rule is higher. At sea, sail-powered ships supposedly have right of way, but in reality, larger ships do. He has actually asked people "What are the unwritten rules of this department?"

Focus on results, not activity. For example, a focus on people's hours rather than getting things done is a problem.

Sometimes workplace turns toxic. Life is short; don't waste it.

Any project worth working on has plenty of unknowns - accept it and manage it. True outlaw wisdom: "The project schedule is the plan for exactly how the project will not occur!" Keep a sense of urgency, to prevent uncertainty from freezing process.

Important to define success earl. All you need is a reasonable chance of success. It provides focus and boundaries. Review regularly.

Define priorities up front. Tool: Business Impact Matrix. Helps communicate, set expectations. Example: triangle diagram of cost, scope, time, quality in the interior; which are most important? Chris, an audience member, had bad experience with this; it just became a finger-pointing tool. Discussed this.

Reduce variables, using success statement and business impact matrix. Outlaw wisdom: "Minimize newness"; too much too soon together = crisis.

Use Risk Matrix for risk management on an ongoing basis for all projects. Be specific, including consequences and personal responsibilities. Shouldn't take all your time, though.

Clarify roles and responsibilities. Take initiative to make things better. One manager couldn't decide on who to replace him (showing lack of leadership), so he chose two equal people. Two kings. No one could figure out who to go to. Duplication, confusion. Lots of money wasted, nothing accomplished.

RACI Matrix: who is Responsible, Approved (others have this as Accountable), Consulted, and/or Informed.

Allow responsible failure. Fear of failure can be positive, but a problem in the extremes. Can't be right all the time. Not allowing failure reduces willingness to take risks. "Innovation lies on the edge of risk, and not allowing responsible failures kills innovation."

Foster radical honesty. Lies are often a protection mechanism. It starts with us admitting when we don't know. Allow respectful, frank (even uncomfortable) dialog. Lack of truth leads to distrust, which has costs. Audience comments on this: don't finger-point; take care not to attack people themselves. Focus on problem or issue.

Manage the edges. Most not completed to spec problems happen at the edges. Example of Mars mission destroyed because one team used metric, other didn't.

Keep milestones short. Break problem down.

Strive for simplicity. Ease of use over more features. (What percent of MS Word do we actaully use?) Focus on value. "Rockwell, not Picasso!"

Capture what you learn. Talk and reflect after a project! Tools: Lessons Learned, Horizon Time. "What you don't know may not hurt you, but what you don't remember always does."

Minimize reliance on consultants. Never let core knowledge reside only in their heads. Use for niche expertise and training your full-time people.

Communication: make sure objectives are clear and understood. Favorite quote of all time from IT, from Jerry Winberger: "It may look like a crisis, but it's only the end of an illusion." (Secrets of Consulting, p. 149)

Communicate WIIFM. Show how it affects them. Radical honesty. Continually make the case. Be specific with commitments. Go face-to-face; it's the richest medium.

When inflicting change on people, make sure to align incentives to the change.

Slides are online.


Servlets

Jason Hunter, www.servlets.com

Java servlets available since 1997. Released every year for a while, but then being embedded in J2EE slowed it down. In 2.3, finally added filter mechanism, among other things. Sun forced J2EE support by suddenly requiring that servlet engines support the whole of J2EE to be qualified.

New req.setCharacterEncoding() function, because browsers almost never send Content-Type like they should. Standard versioning and dependencies in 2.3.

Filter mechanism. Filters can modify headers, content. Could be used for authentication, XSLT, logging, etc. Simple API. Deploy with a line or two in the XML config, where <filter-mapping> element lets you match URLs on a regular expression. Chainable.

Now on to version 2.4. Development has begun. No longer combined with JSP. (He said that was a good idea; before it had been kind of like having HTTP and TCP/IP combined in the same spec.)

The expert panel voted 10-0 to deprecate single-thread model, but Sun's spec lead went against them (for the second time). Apache is not supporting 2.4 for this kind of reason. He's "bitter", as an audience member put it, because the experts group is being ignored.

Security model (authentication) improved.

Web Services

Web sites for machines.

An audience member objected to his characteractization of Web services as "like CORBA", because it didn't guarantee objects existed. More like RPC calls than CORBA's method calls.

Problem: 5 different stock quote web services gave answer in 5 different formats.

Problem: these are supposed to be human readable, but have you ever tried to read a WSDL definition? When it's too big, it's not human readable anymore.

JAXM, JAX-RPC. SOAP impl., relying on servlets. JAXM (Java API for XML Messaging) manipulates SOAP messages. It won't make J2EE 1.4. Politics behind this is like Survivor. (Should Sun be voted off?) JAX-RPC is Java API for XML-based RPC, ie SOAP.

Servlet Frameworks

JavaServer Faces: for Web GUIs, under community review.

Apache Struts: Implements MVC (model-view-controller) model 2. Struts controller servlet, "action" objects, eliminates artificial tie between URLs and activities. Open source. Widest adaption, most Sun support of the shipping frameworks, ties to JSP for better or worse.

How will JSF compare to Struts? Open question. JSF proposal focuses more on GUIs. Sun quote on "unifying a fragmented area and strengthening tools" sounded Microsoftian. He's in favor of Darwinian evolution instead. "Fragmented" just means "diverse".

Apache Turbine. Another MVC framework. Current version is 2.1. Kitchen-sink kind of solution. 3.0 may be more modular. DB mapping layer may be moved. Bigger, less widely used than Struts. But been around the longest and has the most features. Ties to Velocity.

Enhydra Barracuda. Open source from a commercial entity. MVC model. Newest, may have learned from the restj. Ties to XMLC.

"Do not build a web site on a commercial API unless you're sure that the company is going to be around and will support it." Good argument for open source frameworks. Not about price, about empowerment. Should be able to keep going without depending on another company.


XML, Web Services, and What About It!

Panel Discussion.

Josh, .NET teacher. Jason Hunter, expert in servlets, XML, open source, created JDOM. Christian: Apache/Jakarta, open source .NET. Elliote, professor, writes books about Java and XML.

Show of hands showed only three point in audience (out of a couple of dozen) are actually using Web services for business.

Are Web Services successful?
Elliote: Still in infancy, too soon to tell.
Christian: People are still untrusting of web services; needs time.
Success of CDDB (etc.) to automatically get CD track names. Not XML or SOAP, but successful, and a web service.
Next: SOAP had way too much type. When companies do that, bad idea. Like Microsoft naming their technology .NET: huge catastrophe. Not going to radically change anything; had these capabilities previously. SOAP just makes it easier.

Is SOAP successful?
Rusty: doesn't do what it purports to do particularly well. Overly complex. Some other XML-based system could be better.
Christian: Gee, I didn't know two XML tags were massively complex.
Rusty: Lots of other rules too. Must-understand headers, no DTDs, etc. Spec runs over 100 pages.
Christian: Mainly when going through different machines, simple requests are two tags. Use Schema instead of DTD.
Rusty: Great, XML Schema will reduce complexity. (laughter)
Josh: XML Schema adds data types.
Christian: SOAP provides an envelope model. A mail carrier doesn't look at the letter.
Rusty: Use HTTP headers for the envelope. Use TCP/IP.
Christian: My device here doesn't use TCP/IP.
Josh: (Showing his cell phone) It does. It has an IP address.

Jason: Innovator's Dilemma. If something else simpler, easier to use, good enough comes along, may replace a do-it-all effort like SOAP. XML-RPC? RSS is a web service. 80/20 rule. XML-RPC may be the thing to do better.

The panelists commented on performance, transactions, and security. Performance: XML is wordy. Rusty: latency is a factor, parsing time really isn't. Security? Josh says HTTPS works. Christian said Apache Jakarta is coming out with a security package and Microsoft is taking the lead with a transaction API. Apache AXIS makes SOAP easy. Rusty: security not a big problem, w3c standard provides element-level encryption, unencrypted no worse than phone-line systems that preceded it; transactions are difficult.

If you could change one thing? Christian: people ask him how to create asynchronous services. Jabber or maybe JXTA could be a disruptive technology because it addresses this.
Moderator: MS ad with wine bottles breaking, has a handheld automatically updating price. That's asynchronous.

Josh: I would decide on one SOAP encoding scheme. Not guaranteed that all SOAP clients will interoperate now.

Moderator: One person is responsible for that mess.

(No one but Rusty would name names, Don Box.)

Rusty: If I were supreme ruler of SOAP, I'd make minor syntactic changes, allow more complete XML (processing intructions, DTDs), then resign and let someone else worry about it.

Moderator: What is REST, and how does it apply to web services?
Rusty: Not sure REST is really an alternative. (REST is Web's stateless architecture based on URLs.) When piggybacking SOAP on HTTP to get through firewalls on port 80, Dave Winer and other designers ended up breaking HTTP rules and gave a lot of offense to HTTP folks. Fixing this is delaying SOAP 1.2. If they had used port 82, it wouldn't be an issue.

Future?
Rusty: Beauty has an evolutionary advantage. Looking at something as ugly as SOAP, I can't see how we'll still be using it in 10 years.
Jason: Web services have 2 things going for them: 1. standardization (tools are there), 2. hype. Companies will think about it because of the buzz. Like Google, Amazon, trying it.
Josh: Big advantage is toolsets. His big problem is the defaults of AXIS and .NET are not the same. Too many options. Need to pare down and standardize.


Web Services Case Study

Timothy Chien, Oracle

Custom app for Schober provides address validation, credit check, co-branded portal services for partners. The speaker, from Oracle, consulted on the project.

Before: had a couple of Oracle DBs with a Proprietary XML-based client API. i-QMaster.

An online merchant client wants to develop an app that takes an order, then verifies address and customer's credit rating.

The consultant's solution used Apache SOAP over HTTPS and a service EJB to talk to Schober's existing XML message broker. This ran in Oracle9iAS OC4J, a moniker that looks like someone started to type the word "Oracle" then banged a fist on the keyboard. (That was me; the speaker didn't say that.) HTTPS used server and client certificates.

Clients receive: WSDL, request/response schemas, SSL certificates, Java client stub (if requested).

Issues encountered: need compatible serialization/deserialization classes; .NET Dataset doesn't map cleanly to Java's equivalent. Have to ask the client what serialization classes they're using. Details of setting up Java to connect via HTTPS: digital wallets, trusted root certificates/CA. They had to massage the body of the SOAP message to get it to work. Two styles of WSDL.

Oracle's own XML processing tool tried to generate the EJB, but (reading between the lines) it didn't really work and they had to write a simplified HTML interface to Schober's existing XML broker, and run their tool over that. This seems very roundabout. The speaker said that Apache SOAP alone may be robust enough for huge number of transactions and QoS. He's waiting for J2EE 1.4, which incorporates Apache SOAP and optimizes it for J2EE, as well as enhanced security (XML DigSig, SAML, etc.) Want to expand UDDI registry.

This session ended early, so I headed next door to:


Fast Java Fast

Java optimization class. Boy, could a lot of Java apps use some of that.

Recommendations:

Use new Java collection classes, ArrayList instead of Vector, etc. Preallocate arrays if you can predict the size. In a large user-interface table, use lazy loading. Showed loop unrolling. Use StringBuffer for string operations. And pre-size them. Use type-specific versions of containers if you need more speed. (Generics, which look like C++ templates, are coming in Java 1.5.) Use hashcode member variables and a custom equals method to shortcut equality tests. All fairly simple stuff.

A bytecode optimizer/obfuscator can shorten names and reduce JAR size 25%.

In servlets, make session state small. In JSPs, include the instruction to prevent creating a session.

For HTTP, you can avoid using Unicode by not using PrintWriter. Also, avoid char-to-byte conversions in constant strings. Use buffer.getString().getBytes() in init method. Then you can use out.writeBytes() instead of out.writeString().

Improving EJB performance: try getting rid of them. He's seen far too much of what he calls "resume-driven design". There's far too much overengineering for points of flexibility that are speculative and never used. Seriously reconsider if you're using Entity Beans.

Evaluate object-relational mapping systems, if you have to map at all. TOPLink, CocoBase.

More tips on EJB performance...

Find an expert to tune SQL performance. Use stmt.addBatch(), to batch SQL statements.

www.javaperformancetuning.com web site.

new CachedRowSet()...modify...rowset.acceptChanges()