Why this blog?

"I'm tired of being a developer".

When this thought came to my mind some time ago I was shocked, since software development had been my passion for almost 20 years. I wrote my first line of code in 1986, when I was a 10 year old kid. My father had bought a TK85 (Brazilian version of the Sinclair ZX-81). Back then, I was just copying games written in BASIC from magazines and praying that they would run after thousands of lines.

During my Computer Science graduation, I was fascinated with all the computer languages that I was exposed to and I was not satisfied in just do what I was asked by the professors. Being a huge NBA fan since a kid, I decided to write a program that I could receive all the game results, control the teams, player transactions, injuries, statistics about games and individual players, etc, etc. I thought even to sell it to other NBA fans and almost got a contract with a games magazine. Anyway, I ended up writing this same program in Pascal (with bits in Assembly), Cobol, Dataflex, Clipper, Delphi and just started it in Visual Basic (but I hated it and gave up). Basically for every new language that I wanted to learn, I would write this full application, making it better on each version. I left the university as one of the top 3 programmers.

I was always very proud of my code. Always trying to reduce the number of lines of code and make it both aesthetic and functional. I liked to solve complicated algorithms and complicated problems. Of course, loved to show off to my geek friends as well, during the many nights that we spent geeking around in my flat.

After two years working for two small software houses, I got a job as a Delphi developer at an international consultancy. I was assigned to work on the architecture team, 8 developers (Delphi and C++), responsible for the development of all the communication, components and architecture of the system. Our clients were the other development teams. On my second week I got a piece of code to do. It was estimated in 1 week. I wrote the code and tested it in 1.5 days and went straight to my manager to show him. I wanted to show how good and fast I was. I went there and said with a big smile: "I've finished that one week piece of work and it is all working."

And then it happened.

He said: "Make it work is nothing more than what I expect from you. That's why you were hired and are paid for. What I'm more interested to know now is how you made it work". (His tone was not aggressive, as it sounds).
He opened my code and went line-by-line. For each block of code, he was explaining me how it could be better, faster, memory efficient, more generic and re-usable. I had written a lot of code. After explaining to me everything that could be improved, he selected the whole code, all classes, and hit DEL. I looked at the screen and the files where gone. I had no reaction at all, totally taken by surprise. Felt a mixture of anger and sadness. He turned back too me and said: "Now you know how to do it properly, so go back to your desk and do your best".

From that moment, I realised that that team was special. They were not just developers, not just people that turn up to work, not just normal employees. They were craftsmen. They were proud of their code and were always seeking the perfection. Motivation was extremely high for the 2.5 years that I worked there, mainly because none of us would accept anything from anyone on the team that was not up to the team standards. Yes, of course there were countless heated debates and we missed a few deadlines. However, we were all united by the passion of building something great.

Time came and I had to move on. My next experience was also great, since I had the opportunity to have my own team, recruited and shaped everyone to work almost up to the same standards from my previous team. I brought some people from there with me as well. Once again, another 2.5 years working at a very high level, with passionate people.

I left this company in 2002 and since then, I met a lot of other developers, in many different companies. Unfortunately, over the years, it seems that less and less developers care about how things are done and have no pride on the code they write.

Getting things done seems to be the only important thing. Yes, I agree that that's the end goal and as professionals, that's what we are paid for. However, developers have very little or almost no accountability for the quality of the code they deliver. There is no responsibility besides making it work. Maybe it is because the person paying the bills or managing the project know nothing about software development and will be happy just having the software working. As this is generally the case, bad and lazy developers get away with it.

Maybe the reason that at some point I thought that I was tired of being a developer was because many times I felt that I was the only one that really cared. Being honest, it is not just about caring about the client, my employer or being professional. I care about my reputation. I care about myself. My code will be seen and used by other developers and at that point, that is how they are going to see me. I don't want to be seen as a can of warms or slow or untidy or just a bunch of rubbish. I want to be seen as tidy, efficient, clean, meaningful and fast. I want to be proud of who I am and what I produce. If you could not care less about yourself, at least respect other developers and your clients, that will need to live with your mess.

The thing that kept me sane over all these years was to always have a pet project, where you can do whatever without worrying about deadlines, clients or users.

Fortunately I soon realised that I was never tired of being a developer. I was just tired of working with people that are not motivated and don't care about what they produce. So my objective with this blog is to provoke this passion and pride on other developers and also share my own ideas and opinions about software craftsmanship.