Wednesday, November 4, 2009

paradox (II)

The original paradox urged me to look for some answers. I've been thinking but mostly I've been asking around. I am not alone in this as a few others in other software companies could tell the same kind of stories.

The most mentioned reason is boredom. Developers' boredom. Laziness. Not incompetence. Which is sad. You can do a thing right, still the day is too alike the others, so you do a poor job just to finish earlier, or cause you've done it so many times before.

The original post title was Don't hire contractors ... It doesn't say it all, but it's catchy and with a reason. It turns out that in case of my project a major cause of poor code was the work of contractors. Not that they were incompetent, not they were even bored (cause those were the times in the lifecycle of this project when no one could get bored), it was the market forces that made them write code fast, not test and ship early. But they grew and got market share. (See here a post that says they might have even chosen the right path from a business point of view). They provided a job for me, the one who swears at their code.

No automated tests, no code reviews, no time for a best-practices catalog, an outdated wiki. Great programmers. This is the recipe for a best selling product !?

Anyway, back to the original title: if you can afford to ignore the business and only care about code, don't hire contractors if you don't have a good development process to oppose some forces to their fury of producing lots and lots of code. Contractors come and go, so they have to produce code to justify their cost (Permanent employees have to do that too, but they are not under the same time stress. They are there forever, or until the review following the last bad review comes, which might take two years in some companies).

Build them a light but working development process, allow them to be creative, but don't let them fool around with code, nor leave garbage behind. Or else a developer like me in a post-contractor era will complain that the code is poor and lose time solving paradoxes instead of producing code ... top-quality code.

Tuesday, September 15, 2009

agile architecting

The whole IT world "is" / claims to be / wants to be agile today, which reminds me of the days when the hype was about multimedia ... every CD out on the market was multimedia.

But actually this title has quite some substance if you watch this presentation The evolving Guardian.co.uk architecture. A presentation worth watching from which I would extract these ideas:
  • architects, don't underestimate developers when tech issues must be solved !
  • having a parallel platform team to deal with non-business, purely technical stuff
  • new architecture optimizations and improvements being much later needed than estimated

Wednesday, August 19, 2009

paradox

It's a bunch of smart people, I hear them all the time in meetings and I read their emails ... How can I say they are smart ... a good percentage of what they say I don't understand! They are the core that built and are now extending and selling a well known HP product. And they are polite and helping, which is another sign that they are smart ... I mean they must be smart, I feel it.

How come their frameworks are over-engineered, the code is full of dirt, the test coverage is close to zero? And something along this paradox to be tagged as sad: how come they are forgiving with this state of facts?

Friday, August 14, 2009

the young and the motivated

Its probably the young IT industry in Romania that makes recruiters add this sort of benefit in most of their emails and ads: You will be part of a young and motivated team.

I am looking forward for the times when I'll read this instead: You will be part of a very experienced team with great past achievements.

Thursday, July 23, 2009

intuitive [/] emacs

... a screenshot of mcedit, no comment


Monday, June 29, 2009

new comers are right

They see the code base differently, they are unbiased: they don't know who owns a package, they don't know there are historical reasons why the code is so bad, they don't know the past trade-offs and political games, they are unaware of the dirty workarounds that still keep things moving.

You've been "contaminated" all this time you've spent in the project. You know package A is owned by the team lead so you won't review it harshly, you naturally justify the bad dependencies with the schedule pressure two releases ago, you got used to unsetting this environment variable and creating that magic file by hand each time you run a deployment and those worthless TODOs seem a natural code outfit, they almost please your eye.

New comers can't see the forest for the tree, but this makes them focus on every tree. And sometimes healing tree by tree is what gets a global healing effort started. What they see is the current technical debt at a granular level. They are not yet bored with the codebase so they are eager to find the problems you have long accepted.

Only if there was someone to weight their opinions against the contaminated ones ... and do it faster than the team contamination velocity.

Wednesday, June 10, 2009

my wider resume

... you're looking at it.

It's the entire collection of material I've been posting here. It's not mere writing, it shows a way of thinking (consistent?) that a standard resume won't show. Anyone working with me or who I am working for can expect I'd want to implement the ideas outlined here during the partnership, so they'll be well informed when choosing if they want such a partnership. It's a solid step to openness.

It's my contributions to software in general: code snippets, reviews, technical HOWTO-s, quality assurance, coding for fun and contribution to OSS, and they are all linked to from here, each with its own story.

And it's fueled by contributing. There are still many other ways of contributing that I can think of: writing a full blown article for an IT magazine, registering as a speaker to a software conference, giving a speech at your local university, creating and maintaining a product or website.

Is this worth the effort? Probably not if it's an effort and there is no fun in it. But if it _is_ fun, then this is a step forward for you who want to play in a higher league.

You could be invited to join a company and not apply to join one, you could have a discussion partner and not an interviewer in front of you, it could be a dialog like We heard about you and appreciate your work versus an interview like Please tell us about yourself and your last 5 professional years; then it would continue with We are perfectly aware that someone with your capabilities can help us ... compared with We'll continue with a short list of 10 questions.

Now, tell me, is it worth the effort?