Painful observations

I’ve been in this game for about 20 years. As an employee, a freelancer, a CTO, a team lead. I like to think I’ve met every possible client, manager, and colleague type out there. Of course, that’s not true, but I’ve met a lot.

So I put together some of the things I wish there would be someone there to tell me when I started my journey joining the magical world of software development. It is magical, indeed, but with a lot of frustrations, too.

However many degrees, certifications and professional experience you may have, however many high-profile projects you have been involved in, however many times you have been a Team Leader, Lead Developer, CTO etc., for some people you’ll always be “the programmer”.

You are never irreplaceable. You are, at best, your employer’s best choice based on their budget and what they know about your work.

Your colleague, who everyone likes thanks to the ultra-fast solutions he gives to problems, is ashamed for the quality of his code, even if he doesn’t admit it.

If, at the first meeting with a new client or your new employer’s project manager, you hear the phrase “but ALL programmers we have worked with so far never had an objection about XXXX” immediately stand up and RUN FOR THE EXIT

It is more important to be happy with what you do than to get a good compensation. Even if you need the money like hell.

A good project manager is one who creates the conditions for you to work more effectively, supports you and stands by you, not the one who blocks your way and waves his finger at you.

If you have a mentor, everybody should know. He/she is sacrificing time and effort for you to be better. Recognizing that is often his/her only reward.

However good you may be in one technology, you’re always worse than your mediocre colleague who has got better social skills.

Say “no” where “yes” has unspecific benefits and specific risks.

Never work for free with the hope that you’ll get some paid work later. Even if that does happen, your fee will be close to “free”.

When a project ends, it ends. It doesn’t go on ad infinitum just because someone forgot to ask for some things before it was delivered.

Learn to recognize when someone tries to make you feel guilty about something you supposedly omitted, neglected, or developed wrong in order to ask you to do a dozen things afterwards. If you suspect this to be happening, put your insecurity aside and treat him/her as insensitively as possible. It’s one of the few times you MUST.

Whoever threatens a developer with the axe ends up with no developers.

You don’t know everything, you will never learn everything, and there will always be people who know X or Z much better than you. This doesn’t necessarily mean they’re better than you. Learn to live with that.

Your first employer KNOWS you have no significant experience. As much as you think he’s taking advantage of you, you must recognize that he’s taking a big risk with you.

When someone treats you like a “production unit”, treat them back as an ATM machine.

Sotiris is a software developer with a strange Greek name and the founder of DotSee Umbraco & DNN Services ( He has also worked for various companies in the Web Development, Banking Software, BPM and Document Management sectors. See Sotiris’ full profile on LinkedIn for more information.