We’re going to have three of these it seems. Bunch of old farts at a table with idiots asking half-arsed questions.
Erm. Well that’s what Hani would say anyway. These are often a little stunted; the NFJS people need to make sure they seed the crowd with local user-group members and prethought questions, especially for the first panel. Then again, Chris from the local CinJUG asked a couple early on, so maybe they did
(BT=Bruce Tate, SH=Stu Halloway, DT=Dave Thomas, EH=Erik Hatcher, DG=David Geary)
This transcript is poorly recorded, so my apologies for any misrepresentations or mistakes I introduce. Also I’m obviously summarising to save on typing in Ben Galbraith’s Relax-NG session
Qn: Which O/R Mapping will win?
BT: EJB3 will be late. JDO2 looks good, I give it 18 months to get there.
Qn: Comparison between Spring and Hivemind?
BT: Different problem-sets. Hivemind: Attachment points to Tapestry, more dynamic config than most others; better runtime changing. Spring: Lots of momentum.
EH: Hivemind separate from Tapestry (correcting BT).
Qn: Which AOP will win?
SH: Not out yet. AspectJ has best shot currently. Groovy more important.
DT: Are aspects Java? Is hacking it onto Java the right thing, or should we have a new language(something) on the JVM. JVM is an attractive deployment platform, not just for Java.
Qn: Why are aspects big now when been out for so long?
BT: Tech takes small steps. DCOM was small OO step for MS. Aspects have just been taking small steps.
DT: We don’t yet know how to design with aspects. 30 years intuition, but not much experience, we still use boring logging examples.
SH: MDA?
DT: AspectCobol.
Qn: (me, so didn’t record enough of this, my question was something like: ) We keep hearing of aspects as the next big thing, but no one is sure. What else is out there and could win instead?
SH: More client stuff, less web. Intellectual property rights. Resurgence of dynamic language capabilities, and a return to ad-hoc languages.
DT: Java will be the last general purpose language. Why? Cobol had db, structures, business things. Java has none of these (Hen: I suspect I don’t understand Cobol to explain this properly). Future languages will go back to more specific things (Hen: Unsure how this includes Ruby, Dave’s favourite language).
BT: Java unique in history as 1 true language right now. Aspects will be around in the future; abused but then will become a powerful part of future languages.
SH: Whatever wins will run on the Java platform, maybe .Net too. This is why I’m hopeful of Groovy.
DG: Smalltalk!
Qn: What aspects of a dynamic language give it advantage over java?
DT: Dynamic not for everyone. Focus is on toolkits/langs/frameworks, which is bad. Should be on programmer. Some programmer’s find dynamic nicer and get 2->50 times improvements. So can be ahead of the curve.
DG: Static type checkingis way over-rated.
EH: Groovy: closures and continuation. Dynamic is bad for IDEs though, much harder to have an Eclipse/IDEA. I’m too addicted to Intellij right now.
SH: Want to build in dumbest way possible. Want idioms to grow as things becomes more complex. Would like to return type from new XXX(). Also I want to have the ability to have as much type checking as you want. So a flag to increase/decrease dynamic/static checking.
BT: Being able to just type out and evaluate an expression; and being able to undo some of the worst things in Java, like CheckExceptions.
SH: Reverse side. In Jaava we take a tools superstructure approach to things, this is what is really competing with scripting.
Qn: What should a programmer do to improve themselves? (asked by a Cobol programmer migrating to Java).
BT: Find a mentor.
SH: Doing. Could read and think I understand, but wouldn’t. Writing things outside of my skillset in a new language is the best way. Talking with others, having a way to step away from problems, for example I run when I hit a problem. Find a job where people respect this.
DT: “Herding racehorses; racing sheep” talk. Research from 60’s about how to become an expert in a talk I give (though unfortunately not this weekend).
Suggested a 3 page article to IEEE with 2 blank pages and a third page with just “practice” on it. It’s hard to not fall into the “Everquest syndrome” of repeating things (ie make 10,000 swords) to gain experience. Which is not really experience, just repitition.
Treat your individual experience like an investment portfolio. Have feedback to show when things are working.
EH: 1) Come here. 2) Open-source; learn lots, both good and bad code. 3) Mentoring. Be around people you want to be like.
DT: Open-source teaches ability to read code. Being able to tell apart is useful. (From Ward Cunningham): Put 10,000 line Java program into Word; zoom to 10% view, look for the patterns. You can tell good and bad from there.
DG: Don’t try to climb the corporate ladder. Point career to where you can learn the most. Aquire enough knowledge and the rest follows.
(Emphasing question; Cobol to Java)
DT: Thinking the wrong way. A good Cobol person has a lot to teach Java people and we’ve lost track of that.
BT: David: I disagre. Following corporate ladder is important. Easiest two ways to lose a programmer are 1) feel not appreciated, 2) not challenged.
DG: Where can I go next to learn the most, not where can I go to get the best promotion.
BT: One thing in common for the 5 of us. Personal passion.
Qn: How do you keep up with new tools?
DT: 2 answers. Most professions (doctors, lawyers etc) the individuals study outside of their working hours. IT moves quicker than most; we have to study outside of work.
Second answer. Ask, why do you care? You can be far more productive on one thing. Staying behind the leading edge is best as most things beyond die.
SH: “Java’s Cover” by Paul Graham. Good article to read on judging a tech by its cover. Wait for things to hit your radar a few times.
DG: Good idea to learn a little about a lot. Helps you see the landscape.
EH: All I do is read blogs and goto conferences
DT: Investment portfolio. Diversify. Read about .Net.
BT: Find people you trust. Build relationships. Build own skills to ‘offer’ in relationships.
Qn: How do you pick an IDE for Java
DT: Emacs
SH: Intellij
SH: Embaressment of riches in Java now. MS no longer the leader of the field. AspectJ really only usable in Eclipse.
EH: Lucene coder creates superb code in just Emacs.
DT: Choose a tool and learn it.
SH: But don’t stop and learn emacs. You’ve not got time
Qn: Dynamic/Agile dev philo. When do you worry about maintainability?
BT: Testing philosophy. We’ve lost too much of the RUP artifacts and need to remember those somewhat when using Agility.
DT: All we do is maintainability. New code immediately becomes maintenance after the first draft.
DG: Dynamic language. You have to have discipline.
Qn: Where in user’s experience are things going over the next few years? Still in the browser? How do we improve usability?
SH: We know how to get good usability (look at Intuit). It’s expensive.
DT: Console interfaces. Kids use their thumbs and play consoles; computers will be that way. Within 5 years we’ll mainly be programming mobile devices.
DG: Hopes something comes along to beat clunky HTML. (Hen: Then he mentioned Java Desktop Network Components).
DT: Brwoser delivery. Look at GMail.