04 February 2010

Software Design

"System Design, is one that as a profession we talk about less than I believe we should. It is, in many ways, the most important and most difficult thing that we engineers attempt to do. I believe that we avoid talking about it because it is hard, and seems somehow “unscientific.” There are clearly some designs that are good and others that are not. But the judgment of how good a design is often seems subjective or based on aesthetic principles rather than on the cold hard facts that we are engineers who pride ourselves on forming the basis for all that we do. I hope that this essay convinces some readers that the dichotomy between science and art or engineering and aesthetics is not clear, required, or even desirable. What we do must be grounded in fact, but it also needs to be grounded in taste. We should revel in that rather than trying to cover it up. It makes what we do more difficult, but also much more interesting."
-- Jim Waldo

I've been thinking a lot again, lately, about software design and how to teach it... and about how little there is out there to guide the design of good software architecture...

All part of my Quest After The Heart Of Design for the last 15 years. And maybe (just maybe!) I think I have a useful angle on it that might illuminate a path forward.

I'll say more as I develop the concept.

(And, BTW, Jim Waldo is, in my humble opinion, one of the preeminent thinkers on design alive, and one of the most interesting people I've had the privilege to meet.)

03 February 2010

Death

So Jason and I were discussing death, as we sometimes do. In particular, what to have engraved1 on our tombstones (assuming we get so lucky!)

"I told you I was ill" -- Spike Milligan

This quickly degenerated to the OO software-designer specific:

"I've been finalized..."

"I've been Garbage Collected."

"Finally, I've been taken up to the PermGen space!"

...all depends on your spiritual views, I suppose...

[1] I it just a coincidence that tombstones get engraved? Probably not.

23 January 2010

Boolean Illogic

Why do Java programmers hate the boolean XOR operator?

Is it that they are just generally ignorant about the full-eval boolean operators in general? You know, the operators that look like &, | and ^. Perhaps its that most Java developers are under the impression that they only operate on bits, an are ignorant of the fact that they operate on booleans (and Booleans with that fucking horrible autoboxing/unboxing nonsense.)

I know that 99 time out of 100 we prefer the early-out operators && and || for their efficiency, but a simple ^ can save a hell of a lot of unreadable and less-understandable if-then-else logic. For example, I've just refactored (somebody else's code)
if( check ){
    if( !user.isAnonymousUser() ) doStuff();
}else{
    if( user.isAnonymousUser() ) doStuff();
}
which I find nasty as hell to be sure is doing what it's supposed to, into
if( check ^ user.isAnonymouseUser() ) doStuff();
Much easier to understand, no?

10 January 2010

How Do Development Managers Screw Up?

Here's a question, much on my mind:

What is the single most important thing that Development Managers do, or fail to do, or pay insufficient attention to, that create a friction in the delivery of working software?

Answers in comments (or email if you don't want to publicly reveal details) please!

By "Development Manager" I don't just mean those people who have those words in their job title, but I mean any person who is responsible for tasking development teams - large or small - and ensuring the delivery of software systems by their developers. Sometimes they are called Project Managers, sometimes - in small entrepreneurial startups - they are the Boss Of The Whole Gig. The point is that they are the interface between the business stakeholders and the technical people who do the development and implementation work.

06 January 2010

New Courses Scheduled

Courses newly scheduled:



Please contact me directly if you're interested. Places are limited, especially for the Design Patterns course.

More to come soon... if you're interested, I suggest that you keep track of my course schedule page feed (the feed-link is near the top-right), or course-schedule calendar in your feed-reader.

27 December 2009

Flightwish Reboot

Restarted working on Flightwish today. A lot of background stuff... seeing that the DNS is correctly set up for all the FW domains... getting Subversion properly configured on the dev server... restoring the old FW software trove... all the dirty little details of permissions, software configuration and setup that don't usually get mentioned in software development plans, but eat into your time in such a big way.

I've installed the Pebble blog engine on the server, and I have to say it looks pretty nice. Far more impressive than the Blojsom engine that I'm still using for my personal blogs. Simpler to use and customise, and performance feels somehow snappier. The only real snag I hit is that Pebble is supposedly able to interpret WikiCreole - not my wiki syntax of choice, but better than no wiki syntax at all! - only it doesn't seem to work. At least I couldn't make it work. Well, it was pretty late in the day, so maybe my brain has simply had enough for the day.

My idea is to first just get a Flightwish blog up and running so that I can get some content up on the site, and update it reasonably regularly so as to improve its pagerank. I was a bit surprised to see, though, that despite having only reactivated the flightwish.com site a few days ago, its pagerank is 3. Not bad for a dead site! I guess it must be because it has been a real site in the past, and also due to its age (several years.)

After that my next priority will be to get a forum system up and running and looking reasonable so that people can start to sign up and chat. Yes, it would seem to be Yet Another Social Networking Website. Hopefully we'll have enough of a real focus to make it a bit different. The idea is (as it always has been) to do something in the travel space, with a strongly social slant.

As soon as the forum is set up I'll focus on writing a bunch of content - to be released at several-day intervals - telling the stories that drive/drove the initial concept of Flightwish. Those stories (you'll have to subscribe to the Flightwish Blog and wait a few days if you're interested - there's no content there yet) will explain the shape of the Heart of Flightwish as it exists in my head. I'll probably also reminisce about some of the experiences we've had with this thing in years past... the long, long road we've travelled to get here.

Lots of work for a one-man-band! But I think we can do something really interesting, different and meaningful in the travel space. Certainly I'd love to visit Bolivia, Peru, Guatemala, Mexico, Belgium (for the beer) and loads of other places, but I don't think I can do it without a bunch of help!
Related Posts Plugin for WordPress, Blogger...