Leave your comfort zone
Leave your comfort zone

To be or not to be (happy), that’s the question. In this article, I expose some thoughts about what could make a software developer happy in his work. I wrote this article with several targeted audience in mind : Junior developers, Senior Techleads and H&R resources.

Are we (Software Developers) different from the other workers ?

Since one year, I am living in a funny small country called Switzerland and until that time, I have never been so baffled about Software developer (Un)Happiness.

Let’s imagine the place I am living (Switzerland) : a rich country proud of its culture; amazing landscapes, good food (or at least our neighbouring countries have the best one near), more than decent salaries, quite a bunch of international companies; mixity of culture and nationalities in some workplaces. By the way, if you are interested; please have a look to the great site of my friend (http://suissepic.com/).

Zermatt Swiss mountain
Zermatt Swiss mountain (courtesy of suissepic.com)
lausanne : view from ouchy
Lausanne : view from ouchy

I won’t talk about human needs, Maslow pyramid and all the “Influencer” literature that is attempting to make you believe hard that tofu is the recipe to be happy (dumb link here).

I would rather attempt to describe what is the Software Developer Maslow Pyramid ? Why?

Everything is assembled to make people living there happy. But our software developers are often unhappy, why ?

To make this article easy to read, I compiled my personal TOP of the developer concerns.

[[toc]]

TOP Developer concerns

Which kind of company is the most appropriate to me ?

This question seems to be the most stressful one for the developers. We could say that there is some kind of unrevealed classification of the best workplaces. (interesting link here)

The taxonomy of Software developer workplaces

  • The mythical Camelot cities : Google, Netflix, Amazon, Facebook etc
  • The non-less great places to work : AirBnb, LastMinute, Netflix
  • The companies you would never expect to be great : SAP, Salesforce
  • The software editors
  • The big organizations that develop their own software (Bank, insurances, Public administrations)
  • The IT Consultant agencies
  • The startups or licorns
  • To be a freelance
  • The IT Research laboratories

Whatever the rank your company could be, I think that most developers ignore the real trade off offered by these companies.

Google, Netflix, Amazon are famous for the amazing conditions (link1, link2).

How to pick the right company to work with ?

Here are the list of questions a software developer (or its future manager or recruiter) should ask for itself :

  • Do you want a balanced life between work and social aspiration ?
  • How many hours per day are you willing to work ?
  • Are you ready to face technical challenges (and to accept failures) from the right beginning of the Job interview
  • Are you ready for permanent performance review ?
  • Do you know your limitations ?
  • How frequently do you want to change job ? Take risks ?
  • Is Software development for you a job or a pleasure ?

The blue or red pill

Depending to this thorough interview about yourself, you might have five choices :

  • The highly demanding jobs : and we can insert there our Camelot cities, Technical lead positions in both Software Editors and Startups
  • The risky and thrilling jobs : create your own startup or to be freelance
  • The (quite) safe jobs : public administrations, big organizations, IT research laboratories
  • The mercenary jobs : think about yourself, reach the ladders, don’t expect anything from anyone : IT Agencies
  • The probably ideal jobs : AirBnb, etc. Digital companies with business on Internet

Opinion of the writer : I have been through IT Laboratories, startups (my own and others), software editors and more recently IT Agencies and Big Organizations. There are very different aspects in each companies. I would recommend anyway the following advices :

  • Unless you create your own dream project : always pick a financially profitable company
  • Profitable IT Consultancy Agencies means nothing. Most of them don’t invest on you past a certain age. Take your own responsibilities.
  • Choose the company with the right ratio between personal involvement, family life and risk. Your wages are the direct result of this function
  • No, it’s not necessary to throw everything to build a company
  • You can be part of the 99% and be happy.

 I need a proper environment

Well, I discovered a trend on Instagram : desktop office photos. Coders are taking in photos their office, and try to have the most beautiful one.

Environment is important to make a developer happy. However I don’t remember to have seen any survey about it.

Cozy office
Cozy office

In the collections of article I collected (see at the end of the page), no one is talking about it. I had to find some other keywords to get some materials :

It’s a such wide topic, I would state only the following advices to pay attention in your next job :

  • Allow remote working (in relaxing room, home office) as much as possible. You will save money and make developers happier.
  • Are phone heavy groups like marketing and admin separated from developers ? All “distractions” in an area should be project related.
  • Create offices and conference rooms for privacy and larger meetings.
  • Provides many small boxes for personal phone calls, head to head meeting. Nobody appreciates to call in the corridor his wife.
  • Please invest in chairs, hardware, screen and even gamma reducing glasses. Depending of the chair you offer me, I know the value of your employees.
    Arrange desktops so people are not looking directly at each other.
  • Please invest in tree and other natural ornaments. It is deeply relaxing.
  • Let people bring their own devices
  • The desk layout should leave enough room to support pair programming; it should have lots of horizontal space for documents, monitors, and books.
  • Purchase good headphones for engineers.
  • Cell phones need to be on vibrator mode.
  • Phone calls must to be handled in one of the private areas, not in the war room. No speaker phones.
  • Please provide IM like Slack. No one want use Skype anymore.
  • The room should have many whiteboards and flipcharts.
  • Have the coffee and food room located separately so as to encourage inter-group interactions.
  • A signal system (cone of silence) should be developed so developers can indicate they are in a flow state and do not wish to be disturbed.
  • Provide lots of power outlets.
  • Provide natural light if possible.

I want to be popular


    while (true) {
    	self.attemptHappiness()
    } 

Yes, some software developers are looking for fame. Even if they are part of the 1%, these interesting colleagues have a totally different schedule from the other developers. To have such employees implies :

  • they need time to write their blog entries
  • they will participate to conference, meetups.
  • they will broadcast a lot of new positive ideas to their colleagues and attract new talents
  • they might be ambassadors of your company

A lot of positive things aren’t they ? However these kind of topnotch developers are also tough to satisfy and to keep. They might not fit with :

  • static organization
  • static technological stacks
  • political environments (when you need to shave yaks to use a new library)
  • lack of progression / opportunities to grow

However some kind of companies are clearly attempting to recruit them as this clever little ad (from Happy developer company):

happy developer ad
happy developer ad

I want to be an artist : please set me free

There has been a lot of literature and articles how the software developer job is different from.. a bricklayer for example and should be considered more as a creative / artistic than a scientific / technical job. While I am rather disagreeing, hereby, for the same reason I can appreciate old paintings and hate anything about the modern arts : our ancient masters had what we call techniques and art without technique is an advertisement. A pale sweet and cheap copy from what our former masters used to do. And sofware coding is the same : you have on the one hand, creativity, freedom and intellectual work and the other hand the beauty of a developer who has mastered perfectly his tools.

Free software : free will
Free software : free will

Straight to the point, some developers are unhappy in their work environment because they lack creative atmosphere (I am quoting this good article) :

  • Meaningful projects : too many software projects are meeting a dead end like a car during a crash test, and more predictable is the failure, less engagement you will have of your colleagues
  • Creative freedom :  give them your goals, delimit their action perimeter and let’s them free inside (I know it sounds awfully similar what my peasant neighbour use to tell me about how to breed roasters and chicken)
  • Mastery : encourage every team to have an initiation phase for the newcomers. I believe that the army (no matter you are pacifist or not) has been able to build strong ties between the team members using well-known practices. And I often compare a project deadline as the first time on the front-line, it’s the moment you will be comrade of war and not only colleagues 🙂

No legacy app : I want modern frameworks (or my own)

Clearly, software developers should not forget that :

The level of involvement in code quality (clean code), self-practice, certifications and learning new technologies build their own CV.

In big organization, legacy software are plethora, even these companies are aware of the level of decay their information system. A lot of developers think they have been very unlucky when a legacy software is crossing their happiness road.

Leave your comfort zone
Leave your comfort zone

I will be honest, I am not in this first group. For me, legacy does not necessary mean  a failed project.

A legacy project is also a software project that had enough success to become a legacy.

Anyway, each software developer should be aware of his yearnings :

  • Am I a new technology addict ?

Falling in this category, you can find Front end developers (JS Libraries sickness ugh), Junior developers but also software developers who don’t like invest much in a technology (aka becoming experts)

I see plenty of unhappy developers, frustrated to not use these technologies. Which advices could we provide ?

  • Accept that your company is not evolving as fast as you wish
  • Be prepared to change company, if the frustration is growing too big. But don’t become a toxic colleague to your comrades
  • Accept that there are very few jobs that offer great technological stacks, job stability and good environments. And such jobs will require as much luck as skills to obtain them.

My best recommendation is to evaluate your professional life this way :

You will probably not be able to find the ideal position unless you are creating it. And unless you are successful, it will be a temporary happiness. A happy developer is a free developer (free of choice; management). You will be free to use any technologies in your personal projects. Therefore, if you are too frustrated about your job, please try to analyse which skills are you currently developing in your current job; and push them a level higher. Satisfy your frustrations with external / personal projects. Your software developer life will become healthier.

 

I don’t like functional code : I write bad-ass code

This category of unhappy software developers are not commonly found. I am however subject of this frustration and in some way I am well placed to describe the phenomena.

First and foremost, my education conditioned me to develop tools and software frameworks. Functional / programming has been an unknown domain to me during a long time. I have never written an IBAN class, a stock portfolio. I wrote tools, even fully SAAS / three tiers tool solutions but it wasn’t B2C Software.

It exists developers falling in either of those categories :

  • software developers that loves to produce frameworks, guidelines and tools
  • software developers more interested by functional features, UI…

HR recruiters and team managers should be aware of the developers expectations in this domain.

I don’t write code any more : the software technical lead paradox

Another turn in the life of Software Developers is when their colleagues or the management are recognizing them for their technological expertise. Such software developers are nicknamed “Techlead” by HR Managers. And it is honey pot for a lot of unprepared developers.

With Great Power Comes Great Responsibility
With Great Power Comes Great Responsibility

As a Software Technical Leader, we expect you to :

  • Spend more time to teach, define and broadcast the best practices for the other developers
  • Cry tears of blood on the trainee’s code
  • Write software documentation (architecture, diagram, use cases)
  • Improve your software factory
  • Identify the actual and future problems in your software design (and accept them when you don’t have time to fix them)
  • Spend more time, your butt painfully laying a on corner of a colleague desktop that on your own seat
  • Doing technical interview, technical reviews
  • Having less time to code

Sure it’s an exciting job, really different from the job of a software developer however I know a lot of developers succumbing to this sweet trap. A better wage, recognized status. In theory, this honey pot has a lot of attraction. But pay attention, you will be often outside your comfort zone. Yes, you won’t be able to spend a full coding day without being interrupted.

You will spend less time to code and some people are blindly or stubbornly refusing to accept their new duties; a lack of fairplay towards their employers.

And you will have to rely on personal projects to satisfy your need of progress and coding.

I don’t want to be @Deprecated : my future as a Software Developer

Another stage (the final one?) of the unhappiness for a Software developer is to decide what would be the next step of his life ?

Software development career
Software development career

There are not so many choices and of course it’s depending of the developer sensibility :

  • From Software developer to Software Techlead to Solution Architect and finally Enterprise Architect. Doing less coding and more abstract things.
  • From Software developer to a full manager status (Project Manager, IT Manager, Blob Manager)
  • Various careers (DBA, SysAdmin, Test engineer, DevOps Engineer) with their own paths
  • Consultancy career (Sofware Technical Auditor, Functional Analyst, Process analyst etc.)

The toughest thing is to decide what and when. It is a big source of  stress, uncertainty, and ultimate happiness for Software developers.

For this reason, we find so many unhappy developers. They do not have a clear picture of their career, what they can do, what they need to do to achieve it.

That is a real sadness that so many IT Consultant Agency are not investing in real courses to explain the developer career. And not only as a crude and obvious way to make more money of them. For example, explaining to a Cobol developer, that he has to abandon everything to be a Vue.js developer.

I believe more than a company will benefit to explain him clearly his opportunities and put his first step on this road. And even speaking transparently that this opportunity does not exist there. Believe me – dear HR/Sourcer – an employee will be more than thankful whether you take the risk to explain him his opportunities and careee paths with the risks and expectations. Sure, he could have to leave if there is no such opportunity in your company, but still, better an happy employee than some toxic wastes.

Another point I strongly believe in is the tutelage, guidance. To avoid any superfluous anxiety, each new step for the developer should be assisted with a more senior colleague that will take him for few days during a mission or his daily routine. This way, developers will be able to forge their own opinion and about a work. No more theory.

I would recommend to any IT Sourcing department, to invest in some graphics and easy-to-catch documents to explain Developer careers. And if you do not know how to start, contact-me I will be pleased to lend an interested hand.

Conclusion

In this article, I have tried to sum up some side of the developer’s life reality. I haven’t expose all the solutions for these situations tough certain are obvious. I would be very interested to obtain your feedback and maybe some other situations I could have forgotten.

References :

 

By sleroy

Leave a Reply

Your email address will not be published. Required fields are marked *