Don’t you dare laugh

I made the the inofficial newgods blog, everybody can register. But you can only post if I let you. I am not going to post, I have this place. But those of you[1] that don’t have a blog and feel the need to publish something and there’s no fitting mailing-list or you want more permanence or whatever, feel free to use it. It’s got an rss-feed and this guarantees at least I will read the page regularly (as will the other newgods bloggers most probably).

My expectations aren’t very high because I know you people and I have seen those communities without posts before …. putting this blog up cost me near nothing so I am trying. And no: this is in no way meant to be in competition with daniel’s new software community, I am just trying to get more people addicted to blogging 😉

fn1. you know who you are

They always get you

Paranoid?

Well, there’s no reason, unless you work where Psycho works. He’s finally scheduled for his first week of “stand-by” duty. Until today he managed to avoid that. Let’s all console him 😉

Load 27.91

Yes that happens when I run the project. I am testing on the same computer on which I am developing the project. Of course during a full test I am not quitting eclipse or any other programs. I have then 142 178 java threads active as opposed to 20 when I stop tomcat. For each start of tomcat I can take a 3 minute break from my computer 😉 Maybe I should change the project to use less threads.

The Joel Test

I just did the Joel Test for my own project and then for how projects generally work in our teams. For my project I scored a lowly 3, other projects here may perform between 4 and 7 depending on the project. Whow.

Here’s the test (more elaborate descriptions can be found on joels site)

# Do you use source control?
# Can you make a build in one step?
# Do you make daily builds?
# Do you have a bug database?
# Do you fix bugs before writing new code?
# Do you have an up-to-date schedule?
# Do you have a spec?
# Do programmers have quiet working conditions?
# Do you use the best tools money can buy?
# Do you have testers?
# Do new candidates write code during their interview?
# Do you do hallway usability testing?

Copy and Paste Debugging

This is a computer fairy-tale for the advanced programmer. Behold the wondrous indeterminism of the computer.

Once upon a time there was a bug that wasn’t going away and the error message was cryptic. Always at the same point of the xml specification the program would stop and deliver the cryptic message.

The programmer asked another programmer what to do.

The other programmer answered: “Copy other text, it will work.”

The first programmer shook her head in dismay.

A day later she gave up and copied text from another part of the specification to replace the buggy part. She edited the copied text. Now the specification looked exactly the same as before. She ran a last test and …. if she’s still banging her head against the wall she will have a mighty head-ache tomorrow. Of course it worked.

Specs, Concepts and Design

Ask Joel about Offshoring features a very interesting (and long discussion) only one point of which I want to quote here. It’s the second sentence.

In reality, a developer spends around 80% of the time designing and 20% actually coding. If you really want to spec the problem down to pseudo-code, then you’re solving the complete problem twice – clearly inneficient. Alternatively, you design to a high level, maybe down to individual method names, which still leaves the developer loads of ‘design’ work, as much real work is actually happening inside the methods.

Note for Daniel: That’s what I tried to explain yesterday in our After-Exalted discussion.

Note for the rest: to refer back to my post about conceptual points. Here’s another problem with concepts: of course I could give them a very very detailed estimate of the time needed, if I did an analysis that would equal about 50% or more of the time of my original estimate and then it would probably take me one or two days to implement all that but I don’t think it’s the point of a concept to have done everything before the tasks are actually scheduled. Therefore I can give only rough estimates of the time needed, because I have to include eventualities and risks in it.

My actual problem with that is that it sounds really lame to say: hey I need about 15 classes (including tests) for this, I need 7 days (it sounds even lamer than my actual estimate this way).

Shock of the Day

Imagine you are sitting around a table gaming …. all of a sudden your mobile rings. Oh no, this is the call from the office you have been dreading, something went wrong with Task X. When you answer the phone, you don’t recognize the voice that says: “Microsoft[1] Deutschland.”

Just a prank by a certain someone we all know. But at that moment I was wondering what on earth could have happened, how M$ got that phone number and wtf did they want. Lucky for me I only answered with: “Yes, hello?”

fn1. for those who don’t know: I do not work at M$ 😉

Conceptual Points

Today I encountered the finer points of concepts for software development projects once more.

I got an email from the project manager asking me wether 4 days was a good estimate for the project. The number was derived from a previous (very similar) project, the concept of which I had agreed to have recycled for this one. I was a bit shocked at the email because my rough estimate for the project was more. When we first talked about it, I had said 10 days. This differs by even more than the standard developer’s-factor[1].

Now for one it’s cool that we have concepts, project managers and something one might call a “development process”. Part of this process asks for the developer to break up the project into small blocks that will take about 2 hours to complete. Now really that is hard for me. What it does is keep the estimates low. Because you cannot make a block smaller than programming one class, can you? Two hours should be more than enough to write a class that’s just an implementation of a template method pattern[2]. How do you put all the risks and the debugging and the things that just happen into such an estimate? Yes: use the developer’s factor[1]. My question is: how do you explain the factor to your project manager?

I told them the true estimate – which I got up to seven days instead of four by rewriting the concept to include extensive testing[3] – and then I explained that this estimate would only hold, if really nothing went wrong and everything went as expected and that from my experience[4] there will be un-anticipated problems (as always). Now I am curious wether that is a mistake I’ll have to learn from the next time.

fn1. the developer’s factor is the factor a developer should multiply every estimate with to arrive at a time that will barely suffice to complete the task. Usually 2 is a the standard factor.

fn2. oh yes I really took care to use a design pattern there for once!

fn3. I now use unit tests and functional tests officially!

fn4. there’s that word again, which makes and breaks developers in my opinion, not to suggest that I have a lot, but hey …. everyone has to start somewhere.When do I get to level 2? 😉

The Pragmatic Bookshelf

I read about a new series of books distributed by o’reilly somehwere. But I cannot seem to find where I read about it. Instead I found the blog of at least one of the authors: PragDave and the webpage of the pragmatic programmer (which seems to be down as of this post). So far there is a book about (pragmatic) version control with cvs, one about (pragmatic) project automation and two about (pragmatic)unit testing with java and c++ …

Quote Joel of the day: “[…] what drives me crazy is that most software developers do not realize just how little they know about software development.” or alternatively Socrates: “I know that I am intelligent, because I know that I know nothing.”