D.I.D. companies

Have you read the Joel Spolsky’s blog post about the 12 steps for better code ?
If you didn’t, you should, it’s great, as almost all Joel’s blog posts.
So go on, read it, I’ll wait.
http://www.joelonsoftware.com/articles/fog0000000043.html

Welcome back, I hope you liked it.

So, what I want to talk about is the first question: “Do you use source control ?”.
All companies I’ve worked for would respond to that question:
“Yes. Yes.”
“Yes, of course! Yes.”
“Yes, we have 3!”
“Yes. Yes. Yes.”

Did you get it ? There are many source controlĀ  repositories, at least 1 per project.

“So what?” you would say, “Too much of a good thing can be wonderful” said somebody famous.
But it means a lot : you, as a developer, have to remember multiple account names and passwords, because each SCM (http://en.wikipedia.org/wiki/Source_control) has its own authentication, usually not integrated with the company’s one, it means multiple project layouts, although some projects are similar, it means multiple kinds of branching and tagging.
BUT, first and foremost, this proliferation of SCM’s within a company promotes NO code reuse, NO code refactoring, NO peer code review.
So you are condemned to write that StringUtils class/login page/users’ rights scheme in all projects, or at least copy it from project to project, to manually propagate bug fixes between projects (if you remember and have time and willingness), and there’s no knowlegde sharing among the developers of the company.

All in all, everybody is in his little cell, speaking only with his inmates. So what happens when you are moved in another cellblock (i.e. project) ? You have start to learn from scratch the project layout, how it’s built, what are the used patterns and classes.
And all this leads to poor productivity as you are busy learning the mechanics of the project instead its business, poor educated developers because they don’t have the time to learn and share best practices among them, and wasted company resources in duplication of effort.

And the root cause of all this is, in my opinion, the value that the company attributes to the code : NONE. A company that values and understands that the code is THE COMPANY GOODS, the bread and butter and the alpha and omega will take care of it, will choose and/or educate its developers to care about the code and will do the kind of stuff that Google does about its code base (single code base, tested, no ownership, code reuse, code refactorings, etc.).

Or maybe I’m just very bad at choosing the companies I work for :P

But what means D.I.D. ? It’s the acronym of “Dissociative identity disorder”, which is a psychiatric diagnosis that describes a condition in which a person displays multiple distinct identities or personalities (known as alter egos or alters), each with its own pattern of perceiving and interacting with the environment.
Here’s the full explanation http://en.wikipedia.org/wiki/Multiple_personality_disorder

Posted in craftsmanship, software | 2 Comments

On programmers and footballers

Who am I ? A programmer.

What am I doing ? I write code, “not-my-piece-of-****”, never want to see again kind of code, FOR MONEY.
Ergo, I’m a professional!
Somebody gives me money, preferably truckloads of them, and I give them an application which is 5 months late, 5 features missing, and full of bugs.
All this while working in a team. A team of professionals like me …

But you know what? Who’s also working in teams of professionals, but are doing their job well and are paid real truckloads of money ? Sportsmen! (and sportswomen, but their trucks are smaller).

So, let’s take footballers, because they are famous and everybody is watching them now. What are THEY doing good and I’m not?
They practice all week (besides getting involved in all kinds of scandals), and play on Sunday. That’s work for you (money for nothing and chicks for free, ala Dire Straits).

But what are we doing ? We work all week, maybe we put in some extra hours too, and in weekend watch the above footballers play, cursing that they can’t … write an application without bugs!
Err, they can’t score. Sorry, I got carried away.

So, where’s my/our mistake as professionals?

We chose to spend our life hunched over a computer the whole day and even some nights, constantly producing code.
No time for anything but code, must get that project done like yesterday! No time to think about the best design, best implementation, ease of change or modularity, must finish it right now.

What to do then ? Besides becoming a footballer, I mean.
Read books, magazines, blogs, etc. ? Yes, but is it enough ?
Watch other programmers writing code, maybe ? Yes, but watching footballers on Sunday doesn’t make me a better footballer.
Go to conferences like I did (I went to http://openagile.ro and it was an eye opener and prompted me to write this).
Yes, all of the above are good, but not enough.

But what would make me a better programmer (or a better footballer) ?
I think PRACTICE! You know, like footballers do all week.
And by practice I mean write code to throw away, write code with no pressure or deadline, just to learn and experiment different designs and implementations.
Resolve the same problem again and again, just to develop a “programming-muscle” memory.
Congregate with other programmers to see and learn other ideas and approaches.

So, I’ll do Katas, I’ll go to Code Retreats, andĀ  I’ll throw away all the code at the end :)
I hope all my musings convinced you of the value of practice.

See you soon on the practice field.

Posted in craftsmanship, software | 3 Comments