Posts

Being a Developer must not become a burden

This post has been inspired by a discussion spawned from a thread on Vanilla Community, about the topic of business models for the products created by Developers. Very briefly, one of the key points was the comparison between a purely commercial model, where (almost) everything that one creates is sold for cold, hard cash, versus a more collaborative one, where Developers give their contribution in form of code and knowledge, and obtain the same in return, without exchange of currency.

Vanilla Community is very much oriented towards the latter approach, by providing an invaluable amount of software, knowledge and expertise, completely free of charge. In that sense, I am kind of a “black sheep”, as I recently decided to start selling some of the plugins I created, rather than giving them away for free. Of course, anyone is free to do what he, or she, likes with the fruit of his, or her, own labour, and I’m not advocating that every single line of code should be sold for big bucks. In fact, I actively contribute to Vanilla Community (and several others) without billing my time, for the sake of helping people the same way they helped me when I started.

Other people do it for passion: they absolutely love coding, or maybe working with a specific set of tools, or even just working in a specific field, and they can’t help but share this passion. As soon as someone asks about something that they love, passionate people give everything they can to help. Some of them even get on a high by doing it. Passion can really be a drug.

Bitter truth

However, and, I would like to add, unfortunately, the world doesn’t run only on good will. One of the issues of having a passion is that such passion can easily be exploited with our consent. I cringe when I hear young Developers saying that “they can’t believe that they get paid to do something they would happily do for free“. That is the first step to get royally screwed by people who have passion for nothing else, but their own profit (I bet many salespeople’s ears are buzzing, right now). When they see that your skills are valuable, but that you are ready to give them away for peanuts, they run to the nearest shop and get you three sacks of them. Don’t expect that they will spend even one second thinking that they are exploiting you. Such concept is unknown to them, that part of their brain tends to malfunction more often than not. In short, apart from rare cases, Companies have no interest in paying you more than what you sell yourself for.

Should you become a “greedy bastard”, then?

Despite greed being built-in in all animals (including humans) as a mechanism for survival, I’m not advocating a greedy behaviour. I simply say that, if you can afford working for free, or for very little, you are conscious of doing it and you are fine with it, there is no harm. This, though, doesn’t mean that you can expect everyone else to do the same, as other people, like myself, for example, have to pay bills and support a family. Even if they just like to smoke cigars and drink expensive Brandy, the bottom line is the same: they need money. That doesn’t make them any worse, or any better than someone who works for pure passion: they just have different needs and priorities, and act accordingly.

My experience

In my 15 years of career, I admit I have worked on many projects just for the sake of it, without expecting (or obtaining) any compensation, therefore I know what it means to work for passion. I also got exploited because of it, and it took me almost five years before “waking up”. Five years in which I got paid X per month, while my employer charged the same amount per day. Considering that all the work was done by me, and that, without me, my employer would not have obtained the contract, I wonder what the hell was I thinking at the time, and why didn’t I set up my own business, instead of “working for passion”. Believe, it’s a painful memory.

My personal recommendation

To all the young Developers out there, I can tell what I already wrote in the past: find your worth, and don’t settle for anything below it. It’s great to have a passion, it’s great to be part of a great Community of free people, but don’t wait to have arrears to pay. Don’t be afraid of asking for money, when your work is valuable to the other party. They surely have a budget, and they expect you to set a price. Besides, negotiating payment is a fundamental skill that any Developer must learn, together with dealing with Clients (on a regular basis) and many other non-technical skills. And, remember, when Clients cry, it’s because they don’t want you to notice that they are actually laughing.

A “song” of warning

I’m closing this post with the translation of one of my favourite songs. It was written in 1971 by one of the best Italian singers ever lived, and it applies quite well to the topic of this post.

Translation is not literal, but the concepts are unaltered. If you wish to listen to the original song, you can find it on YouTube.

A Doctor – F. De Andrè (1971)

As a kid, I wanted to heal the cherry trees, when, red with fruits, I believed them wounded.
Health, in my eyes, had abandoned them, together with the snow-white flowers that they lost.

It was a dream, but it  lasted long, therefore I swore I would become a doctor.
Not for God, not as a game, but so that the cherry trees would bloom again.

And when I finally was a doctor, I didn’t want to betray my childhood dreams.
A lot of them came, and they were called “people”, sick cherry trees in all seasons.

And my colleagues agreed, my colleagues were happy to see in my heart so much will to love.
They sent me their best customers, with the diagnosis right on their faces, the same for them all: sick with hunger, unable to pay.

Then I understood. I was forced to understand, that being a doctor is just a job, that you can’t give science away for free, if you don’t want to get sick with the same condition.
If you don’t  want that the system corners you in your hunger.

And the sure trick is to take advantage of your hunger. Of your children, of your wife, who now despises you.
So I closed in a bottle those snow-white flowers. The label said “Youth Elixir”.

And a judge, a man, sent me to spend my sunsets in prison.
Useless to the world, forever stamped as “trickster and charlatan”. Doctor, Professor Trickster Charlatan.

Code != Clothing, or How to neatly structure your code

Having been worked with countless technologies , frameworks  and 3rd party libraries, I can say that I have seen almost every possible way of organising the code for a project. From the approach of putting every file in a single folder “just for now” (where “now” becomes “forever”, because moving things around is just too complicated), to the one of creating humongous, monolithic do-everything libraries (which I nicknamed “walls of code”), to have everything is in one place, to the theoretically more rational modular system, where files are organized in sub-folders.

The reason why I stress the word “theoretically” is that, while the idea is certainly good, it can still lead to a messy, hard to maintain mass of files. The key of everything, in this case, is finding what logic should be used to structure the code. It may seem a simple question to answer, but the way one answers to it can lead to nasty surprises. Read more

The first rule you need to observe to become a Professional Developer

The inspiration for this post came to me while reading a few invitations I received from some of the “modern contracting” websites. I’d like to thank them for giving me a chance of some good bashing, but I won’t write their names here as they don’t deserve free advertisement.

A bit of background

I registered on some of these websites some time ago, because I needed to outsource some work I could not do myself. Despite being the Client and, thus, looking for someone to hire, I also completed my professional profile in the Contractors section. I did it  because I like to know the background of people with whom I collaborate, and I think it’s only fair that they get to know about me as well.

The drawback of this is that now I also appear as a Contractor, which allows other Clients to invite me to submit proposals to their projects. I was aware of this, and I thought it would not have been a big deal to reject an invitation, from time to time. Also, I saw it as an opportunity to get in touch with new prospective Clients and establish a relationship outside these platforms. Things went as expected for a while, until I started receiving invitations so disgustingly arrogant that ticked me off. Read more

The effects of Technological Religion – Case Study

This post is an addendum to Golden Rule: a Developer is not a Priest. For better understanding of the context, I recommend to read that post first.

Technological Religion is something I found in several places where I worked and, trust me, its effects have never been positive. I remember a case where the fanaticism of two teams was so strong that it created a barrier between them. Here’s their (sad) story.

Once upon a time…

In a town, somewhere in Europe, there was a Company in which two teams lived in not-so-much harmony. Read more

Golden Rule: a Developer is not a Priest

One may ask what do the two figures can have in common. It’s better explained with a preamble.

Today I was reviewing a website (link no longer available, sorry) created by my protégé, when I spotted something that inspired me to write this post. As I usually do, I visited it using several browsers, to check if pages render correctly in all of them. When I opened it with Internet Explorer, all I got was the following message:

We don’t like Internet Explorer.

I’ve seen many websites declaring a browser preference, usually in the form of “this website is optimized for browser X, version Y”, but this is the first one that clearly rejects one so “harshly”. I know the author of the website and I’m aware of the reason why he decided to do it, but, personally, I don’t recommend taking such position.

The message reminded me of an (unfortunately) common issue in the world of Software Development: technological religion. This term can can be described as an almost-fanatic preference of a tool over another, and it explains the title.  Read more

Overview of a Developer’s Career – What Software Development is not

As I mentioned in the first post, some of the people who asked me how to become a Developer gave me the impression of having the wrong expectations. To avoid disappointment, it’s a good idea to have a look at what not to expect from a career in SD.

It’s not a “get rich quick” career

IT seems has been in a state of constant growth for many years now, and it seems it’s only going to get bigger. The market offers plenty of opportunities for a skilled Developer, and, due to the high demand of such professionals, salaries are fairly high. However, you must not expect to become a millionaire. Even if you aim to become the best Developer in the world, you won’t become rich just for that.

If your main goal is making a lot of money, I’m afraid you’re on the wrong path. You should be learning business and marketing instead. In fact, the founders of Google, Facebook, Microsoft and so on were not such great Developers at all. What made them successful were excellent timing and business skills.

Of course, you can always learn those skills as well, but the hours in a day are limited and chances are that you will have to choose something to leave behind. The truth is: Software Development doesn’t bring money. Sales bring money.

It’s not always fun

There will be moments when you’ll ask yourself why you didn’t choose another job, or simply didn’t work in your parents’ farm, instead of dealing with yet one more frustrating issues. Even if you spend sleepless night to make sure everything is perfect, you’ll always have someone in the team who will screw something up. And that person may be you, since you didn’t sleep for so long. The best thing you can do is to accept that issues are normal, and be ready when they arise. Take it easy, your passion must not be a reason to destroy your health.

It’s not an easy discipline

This is probably one the reason why so many “Developers”, to put it clearly, suck. SD is complex and it requires you to have at least a basic knowledge of other fields, such as System Administration, Networking and Design. You then have to put the pieces together, and make sure they run smoothly. Even from a pure coding perspective, you have to learn best practices, know when to use them, learn how to do proper testing, and get used to the fact that you’ll work on the same thing over and over until they are complete. Finally, you have to cope with the fact that the only projects that you’ll ever close are the ones you’ll abandon. All the others will, hopefully, in constant evolution and you’ll work on them for years.

Bottom line

There would be much more to write about becoming a Developer, but I covered some of the most important points. At least, you should now be able to evaluate your priorities and see how they would fit a career in Software Development. If you think it’s your future, I hope I’ll keep having you amongst my readers and I’ll do my best to help you.

In my future posts, I’ll write about the concepts of working smartconstructive laziness and effort investment, from a Developer’s perspective. See you soon!