History is one thing. Ancient history is another. My Homer sounds seem lame next to Perryn's bebebebeeeeeeeeeeeeeep.
It is both a delight and a moment of sadness to read something like this. Imagine what the world would be like if it didn't take a number of decades for effective software development practices to gain momentum. Would you like to live in that world? Could you live in that world already tomorrow? Why not give it a try?
I've been watching (well, mostly just listening but still) a number of the JavaPolis 2004 recordings for a couple of weeks now and today I ended up browsing through the JavaPolis Music Awards 2004 image gallery.
(please forgive me for the mockery -- I couldn't resist)
Gavin King made an impression by showing off his sensitive side with a ballad to JBoss, followed by a real heartbreaker by Stephan Janssen. Vincent Massol crazed the audience with his Saturday Night Fever act and the oh-so-memorable talking hand thing. However, the most grandiose show was without a doubt the philharmonic orchestra led by Craig McClanaghan and this guy.
I don't know if this is just an urban legend, and I'm sure many of you have already seen it, but since it came up on a company internal mailing list last week and because I really dig the story, I decided to share it:
Mike Clark has the hots for Google Maps. I would too if only they would add Helsinki to their system... Anyway, Google has once again done a good job. The service works great and looks even better.
Yes, a video game written in Ant. Check it out.
(via: Cedric and Dion)
(tangent: Jon seems to use story cards :)
I just got a copy of Managing Agile Projects, edited by Kevin Aguanno and with chapters contributed from a number of people including Kevin himself, Scott Ambler, Alistair Cockburn, Larry Constantine, David Hussman, Ron Jeffries, Linda Rising, and others.
I'll post a review when I'm done with it but you really shouldn't wait for it because all author royalties go to charity!
Managing Agile Projects
Buy directly from the publisher
and support the International Red
Cross disaster relief fund.
(Also note that there's two books with the same name at Amazon.com -- the "right" one is this one)
A while back I blogged about Jack Reeves' old code-is-design stuff and quoted Bob Martin as well. Well, it looks like Ted Neward found another somewhat similar quote from James Coplien in Multi-Paradigm Design for C++:
Many contemporary methods view design as a phase intermediate to architecture and coding, instead of viewing architecture and coding as products of design. But from a more practical point of view, we can't separate design fro either architecture or implementation. If design is the activity that gives structure to the solution, and if architecture is about structure, isn't "design" a good term for the activity that produces it? And much of the code is about structure as well. Why shouldn't that be "design" as well? If you look at how real programmers work, you'll find they really don't delineate architecture, design, and implementation in most application domains, regardless of whether the official house method says they should or not. (How many times have you completed the coding before holding the review for your design document?) Object-oriented designers gain insight into the allocation of responsibilities to classes by coding them up. Empirical research on the software design process reveals that most developers have at least partially coded solutions in hand at the time of their design review and thus design decisions continue into the last throes of coding [Cain+1996].
Ok. I'm not sure if I should link to a spam message (sort of), but since this is so weird and there's no URL's in sight, here goes...
I stumbled onto XSLTO via Peter Provost's blog. A nice looking utility. That might prove to be rather useful if I'd need to transform an XML file into a flat file format, for example.
Laurent has decided to read all the time. I've ended up doing pretty much the same (I recently discovered that I've read approximately 80 books within the past 5 years or so, a vast majority of them probably within the past 2 years -- that's an average of 3 weeks per book). In fact, I'm currently reading again two books at the same time. The other (smaller) one on my way to and back from work and the other at home. But I'm not even close to being the worst book addict living on this planet; I know a guy who reads books while driving a car. Ok, not really while driving a car but while sitting in stop lights. And those books are some of the freakiest titles a man can buy. Anything from software engineering to astrophysics to South-East Asian cultures to biology to nanotechnology. Enough to make my brain cells dump core...
Ruby on Rails version 0.10.0 was just announced with some cool stuff like web services support (both client and server, both SOAP and XML-RPC). More akward syntax for me to learn, though, since I've yet to do any real work with Ruby itself, let alone Rails. But I'd love to!
On a related note, Dion "Groovy Fan #1" Almaer is fantasizing about having Ruby as a scripting language in web browsers. I'd say it would be a lot more feasible idea to put Java on the client-side. In the end, we already have Java plug-ins so the leap wouldn't be that big to enable Java as a semi-standard scripting language for manipulating the DOM tree...
Tim Bacon blogs about the importance of agile shops investing on retention. He's right in that companies must invest in their people even after the recruitment decision. If they don't, their best staff will eventually jump ship. Unfortunately, the problem is even worse in non-agile shops. Think about it. If an agile shop has trouble keeping their people, how difficult it must be for a traditional sweatshop to keep their people when the working environment is, well, non-agile and they pay anywhere from 0-xx% less than what the employee's market value might be.
I know a certain big consultancy right here in Finland that has had a continuous stream of good developers walking out one after another. Yet, they're doing little to correct the situation. Well, their loss, not mine.
It doesn't have coffee stains. It has food stains.
Jason Carreira has posted a list of Hibernate tips. Nice.
It seems like Mike Roberts is getting tired of the UI solutions of existing web frameworks. I've personally experienced similar urges for a while now. For example, these days I'd rather donate a limb than use Struts ActionForms (no, you can't have my kidney--I was just trying to make a point).
...I'll be sure to use Scott's interview questions as a checklist for how knowledgeable I am. That list should take a while to figure out for someone who's been 100% Java since the beginning of times.
In the meantime, I'll stick to knowing enough C# to be able to run a training session on test-driven development with VS.NET...
Dale Emery describes quite nicely what automated testing is about.
Elsewhere, Anind lists various types of software testing with brief descriptions. I'll have to remember this link the next time someone asks the FAQ of "what's the difference between 'X testing' and 'Y testing'?" at the ranch.
Finally, Scott Allen tells a tale of how he evolved with his attitute towards mock objects.
Michael Swanson pointed me to one of the coolest applications I've stumbled upon in quite a while. Witness newsmap, the funkiest Google News visualizer built to date.
I just stumbled onto a couple of old(ish) articles by Jeffrey Veen of Adaptive Path. He rants about CMS products and is quite correct about the real-world usability of many CMS products/projects being less than optimal. Especially so if you're looking at integrating a content management system with an existing website (disclaimer: I haven't looked too deeply to this so that's just my perception based on a superficial googling/rtfm session a while back).
Alright! Radio is now running Pebble 1.7 with the much-anticipated spam blocking features for comments and trackbacks. Thanks, Simon!
Witness this. I just finished reading Spring in Action a couple of days ago, the book was released "February 2005", and it's already outdated in this particular (small) area. This is exactly what SourceBeat is betting on -- being able to provide an up-to-date product throughout its lifetime.
No, I'm not working for SourceBeat and I much prefer reading my books from a dead wood surface, but I'm pretty sure there are many authors out there who'd love to put out a new print within a month of the original release.
It just occurred to me that it doesn't make much sense posting an announcement about an event in English and having a "more..." link pointing to an all-Finnish web page... I apologize for the inconvenience.
(fortunately the registration form is in English so you shouldn't have trouble registering for the event;)
In short, the registration page says that
- the event starts at 17:00 at Accenture Finland headquarters in Ruoholahti (Itämerenkatu 1, 00180 Helsinki),
- it's completely free of charge,
- the speakers are Pekka Abrahamsson of VTT Elektroniikka and Sean Hanly of Exoftware, and
- you really, really should show up!
If you're using Visual Studio .NET and NAnt, then this tip by Gunjan Doshi might be more than welcome.
I just stumbled on something I had forgotten about completely. I finally listened to Alistair's interview on IT Conversations last night and it certainly was a good one. I especially liked the bit about the '68 conference coining the term software engineering. In the end, the participants throwing in "software engineering" as a provocative term seems to have been a tragedy similar to what Winston Royce did with his "waterfall paper" for DoD.
In his latest blog entry titled PHP confessions from a Java fiend, Cedric pretty much acknowledges that PHP is a great tool for lots of things.
It was interesting to learn that Cedric had also picked up PHP because I'm also reading a book on PHP5's object-oriented capabilities. No, I'm not jumping ship. I just like taking a look at what other communities are doing and whether I could learn something from them. So far, I'm not too impressed but I have to say PHP has come a long way since the last time I did anything with it (around 2000).
I'm currently reading Spring in Action from Manning, I've got Pro Spring on its way from Apress, and we recently adopted the Spring Framework at work. Spring has so many benefits over Enterprise JavaBeans that I have to wonder whether it really pays off to do a new edition of a book on EJB 2.1? Sure, the first book to cover the forthcoming EJB 3.0 will probably be a bestseller and all that, but 2.1?
Having said that, Spring is still not perfect (nothing is, after all) but its XML configuration files are still much easier to deal with in terms of testing, for example, than EJB's deployment descriptors and the container (although you can do pretty much with MockEJB).
Reading this prompted a question -- is anyone out there actually writing their JavaScript with unit tests? You are? Great! Now please tell the rest of us how exactly are you doing it and how has it worked out for you.
Largely thanks to Andy, I just found out that Mark Doliner of SAS has proceeded to fork JCoverage's GPL version and has set up a Sourceforge project named Cobertura.
Nice! I hope the project will see plenty of activity, although Mark already seems to have done big things in little time.
No, it's not the number of hits a blog gets. It's the number of comments/trackbacks a blog gets.
Here's a good example: Bruce Schneier reporting a possible break of a security technology. The same news about a Chinese research team having found a collision (or whatever -- I'm far from a hardcore security type myself) in the SHA-1 hashing algorithm has been reported by probably hundreds of websites across the Internet and yet it's Bruce's blog that gets all the action.
I'm thrilled about this. That book is loooong due already and I'm happy to see Brian taking up the task to remedy the situation.
Darrel Norton links to Jack Reeves' classic article on the essence of software design. The part that especially rings a bell with me is when Jack writes
... the only software documentation that actually seems to satisfy the criteria of an engineering design is the source code listings.
That should also ring a bell with you if you've participated one of my trainings on refactoring, XP, or object-oriented design in general. In all of these trainings, I like to discuss about what is good code and what is good design. That quote is a nice little pepper to spice up the conversations. Another good one is a quote from Bob Martin's ASD book.
I'll post that other quote later -- I suddenly have to run...
UPDATE: Here's the Uncle Bob quote:
The design of a software project is an abstract concept. It has to do with the overall shape and structure of the program as well as the detailed shape and structure of each module, class and method. It can be represented by many different media, but its final embodiment is source code. In the end, the source code is the design.
Finally, we have a date for the first Agile Finland seminar (formerly known around the Europe as "Agile SIGs") in Helsinki. That date is 10th of March, 2005, so it's only some three weeks from now! The programme consists of two talks by Pekka Abrahamsson and Sean Hanly. See the invite for more details. The venue is kindly sponsored by my employer, Accenture, and made possible by some extraordinary support from Priya at Exoftware.
If you're around, register for the event at the AAE website. Now!
Brian Marick has posted a collection of links to different kinds of burndown charts.
|
|
My review of Jeffrey Machol's Subversion in Action has been published at the 'ranch. A full 10 -- read the review for details. |
Mike Roberts has started an open source project named Tree Surgeon, which to me looks quite a lot like Jeremy Rayner and Anthony Eden's Megg for Java projects.
Brian Marick blogs about Rick Mugridge's DoFixture for FIT and says:
I strongly prefer Fit tests to be business-facing, written in the language of the business instead of the language of the implementation.
I agree. Automated acceptance tests should test the business functionality without any regard to implementation details. In fact, I've been thinking about yet-another-test-framework for enabling this kind of automated, business-language oriented acceptance testing (too bad there already is a Sourceforge project named "bloat"...). It won't have true technical advantage but I do think it might fit some situations quite well -- including mine, depending on whether we could get the customer participate in authoring the tests (which we haven't, yet).
I've already done some fundamental plumbing but there's a lot of stuff that I haven't done or haven't even thought about yet. I'll try to squeeze in more work to put together something usable within the coming months. Feel free to remind me every now and then...
I'm constantly getting spammed by various online poker sites posting trackbacks to my old blog entries. God I hate those f*ers. Thank goodness we'll soon have more spam filtering built into Pebble.
Bob Martin responds to the age-old argument skepticism against incremental development:
doesn't an evolving architecture just become a big mess?
The problem is, the way I see it, that Bob's example of making a "big architectural change", effectively changing the signature of a method throughout a wiki software (please excuse me for the simplification...), simply does not count in the eyes of the skeptic. There's too many people out there that don't have a clue about what is software architecture -- in my experience, most people think of software architecture as the combination of software products the project/product being developed is built on, or whatever they would describe system architecture to be. For most people, (again, in my experience) a "big architectural change" is something a whole lot "bigger" than adding a new parameter to a widely used method.
Unfortunately, it's very difficult to use any other than trivial examples to communicate ideas or "prove" that something works. The trivial examples won't convince everybody. There's always a large number of people who don't just stop at "show me". Those guys continue with "show me more" until you can't feasibly come up with an example that a) is complex enough and b) fits into your budget for getting the message through to that someone.
Having said that, I can't offer a remedy. I wish I could, but I can't.
People tend to vent about having a bad day of some sort in their blogs. Here's a couple of samples:
The answer, of course, is Agitar's webcast titled Turbo-Charged TDD with Agitator. (I'll let you figure out why on your own ;)
There was a bit of a demo effect (and latency issues, although I avoided the latency problems by watching the recording just now) and there really wasn't much said about TDD, but the webcast did a good job demonstrating what Agitator is all about.
I can't say that I'm convinced of Agitator's value but I would be interested in hearing about first-hand experiences with the tool...
Declaration of Interdependence:
- We increase return on investment by making continuous flow of value our focus.
- We deliver reliable results by engaging customers in frequent interactions and shared ownership.
- We manage uncertainty through iterations, anticipation and adaptation.
- We unleash creativity and innovation by recognizing that individuals are the ultimate source of value, and creating an environment where they can make a difference.
- We boost performance through group accountability for results and shared responsibility for team effectiveness.
- We improve effectiveness and reliability through situationally specific strategies, processes and practices.
Nat Pryce says, "Tell, Don't Log", and I agree that there's a solid pattern in there. Now I'm left wondering what would be the best way to implement such an event-based monitoring (logging, in most cases) setup. I suppose it would be some sort of an observer thing which would definitely be more verbose than the C# native concept of events and delegates.
Jason Yip asks, "is it in or out?" I've recently noticed that certain project managers tend to focus too much on the past and not in the future. I suppose that could lead back to the good old saying that had something to do with learning and history. Anyway, one should not forget that the future is more important than the past. You can't do anything about the past but you can do something about the future. Focus on that. Make it so.
On a related note, I've also observed that it's far too common for a project manager's "pep talk" to become nothing more than talk simply because the communication is not involving the people present. Saying "we must now start doing this and give our full attention to that" doesn't help much if nobody commits to it. You don't get commitment by saying "we must". It's you who should start making that commitment and take the lead. The others will follow.
This past weekend, I listened to Scott Ambler on IT Conversations. A great talk, once again, and in between bashing Accenture, EDS, IBM, etc. ("Accenture comes and says 'we can do it for 2 million dollars a year'" type of stuff...), Scott delivers a high quality talk. Well worth streaming it to the loudspeakers while reading some lame weblog ;)
In other news, Michael Harmer has made an observation: The triangle is bent. A short but powerful argument that I'm bound to steal from Michael.
Speaking of bent, take a look at this. A textbook example of a prescriptive process in action.
In Thoughtworkerland, the head honcho himself talks about the importance of rotation for TW. I know for sure that having next to zero rotation at Accenture is one of the things I least like about my current position and has almost driven me out twice already (not that the situation has improved much since). Then again, when that little bit of occasional semi-rotation happens, it's usually pretty cool stuff. Like running the first XP training in 2005. ...and since we're talking about TW again, I'll mention that here is a two-year retrospective of one of the better known TWers and Bouncycastle developer, Jon Eaves, who also recently (re)coined the term Kryptonite for the software development community.
On the tool front, it looks like M7 is giving out some sort of a freebie JSP editor plugin for Eclipse. I've tried it for a couple of days and it's ok. The only thing that bothers me is that I'm not sure whether "free" means a 15-day trial or indefinitely. Oh, well.
Gradually moving from tools in general to testing, here's a nice-looking little web testing tool that uses Perl. In the other end of the gradient, Brian Marick has found an aspect of his domain name that he'd rather live without. That's a bit like having the aisle seat on a plane or the email address foo@bar.com... Hang in there, pal.
If you haven't noticed by now, I have a bunch of .NETers on my blogroll -- even though I'm all Java these days, I enjoy reading up on how people are doing things elsewhere with other tools. The past week, a number of very interesting blog entries popped up from that part of the blogosphere and got my attention more so than some others:
- Mike Roberts of Thoughtworks has written up a nice kickstart series of blog entries on setting up a .NET development tree. He has also blogged about NVelocity, which caught my eye since just yesterday we ended up replacing a JSP with a trivial search-and-replace style templating engine in order to tackle a weird character encoding issue. I still haven't really tried out Velocity. I probably should. Another scribble on a loooong list, obviously.
- Also, Darrell posted links to a series of blog entries talking about a project at Microsoft that has adopted Scrum.
- Steve Eichert, in turn linked to an article talking about DDD.
- Steve also expressed that he's not too fond of TestDriven.NET not providing that red/green bar. My thoughts exactly. I actually asked about this recently in the XP Yahoo! group. I ended up using the NUnit GUI as well. That colorful bar is hard to beat. Talking of the power of a good illustration, what's wrong with whoever designed this site? Maybe it's just me but I can hardly see the text.
It seems like Google is getting ready to have the whole world on Gmail:
I know this is ancient news in the Internet timescale, but...
Without commenting on the fraud aspect of the article, it still hurts to realize how CXOs believe a CMM certification has anything to do with the quality of the software process... As someone mentioned in a past CMM assessment recap meeting, CMM (as well as ISO 900X) is about making sure you're following the process you say you're following. Nothing more, nothing less.
How did this happen? Not too long ago when one would get blank stares for mentioning the term "continuous integration" and today there's so many continuous integration products out there that it takes a full week to evaluate them all...
And the list goes on (although I think I listed the most common ones above).
With a bit of Googling, I even found one for PHP (nevermind that it isn't feature complete).







