Random thoughs about software development

One question you need to ask yourself every morning

This is one of my latest discoveries and it has completely changed the way I approach my responsibilities. It has a profound impact on my work and it gets me going every morning. The question I’m talking about is:

How can I deliver the most value to:

  • the users of the software I’m building
  • the organization I work in
  • my team

I’m aware that to some of you it can sound cheesy or like cheap coaching talk, but please bear with me and I’ll try to explain why I think it’s actually essential to ask this question (hmm, 3 questions in fact ;) ) not from time to time, not every week, but EVERY SINGLE DAY.

What is the value?

Let’s start with terminology: what is this mythical value? Everyone is talking about it, but it’s still hard to describe, it’s still very vague term and everyone understands it differently. I’m not going to give you dictionary definition and I don’t want to start philosophical flame war right here, so I want to stress that I’m sharing my personal view on that subject and how I understand value.

Let’s assume you work for a product company. The goal of this company is to create a great product for their users, be efficient with shipping new features while keeping in mind their financial situation and, of course, being profitable. So - in my personal definition - every single action that helps your company achieve their goals is delivering value.

How can I deliver value?

There are endless possibilities to deliver value. You can look at this from different angles as well.

Lets focus on the product first. You can come up with new features that will make your product better. Maybe you can think of any improvements that will make this app faster or nicer? Maybe you can think of collecting data that you’re not collecting now that will help managers to make more informed decisions?

Now let’s look at company as a whole. Maybe you have noticed some inefficiencies in communication between developers and QA team and have an idea how to address them? Maybe you could point out that meetings without strict agenda are time wasters? Maybe you realized that daily stand up meetings could be better / faster / more informative? Or maybe you have an idea about a bonding activity that will bring the whole company closer and help to understand better what other departments in the company are doing?

No ideas how to bring value to your team? Lots of options here as well. The simplest and most obvious one is to focus on finishing off the task at hand as quickly and with the best quality you can achieve. But you can be here more creative - maybe you have an idea how to refactor this nasty piece of code that nobody wants to touch? Or maybe you can spend some time speeding up test suite? Maybe you’ve heard about online service / tool / design pattern which could solve some of your team’s problems? Why not to give it a try? You don’t have to spend a lot of time doing this, build a proof of concept, test it out by yourself, present it to the team and decide what to do with it next.

Why should I do it?

You can ask - why should I do it? I’m perfectly happy with my current workflow - I’m doing one task according to specification and then move on the another one, after 8 hours I go home and enjoy the rest of my evening. Is there anything wrong with that? Of course not, if you fulfill your obligations - everything is good. But I will still encourage you to devote a couple of minutes every morning to contemplate on the questions I have mentioned before because benefits of doing so are so big it’s a pity to pass them up.

By focusing on your company long term goals you will be asking yourself question Why I’m doing this task? you will gain a broader view of your assignment and understand in what way it is going to help your company achieve their goals.

You will stop moving mindlessly from one task to another and you’ll unlock your creativity. You could even surprise yourself how much good ideas you have. Your career will speed up and you will be able to unlock your full potential.

Thanks to your proactive attitude you will be recognized as a great employee and coworker. It’s always a pleasure to work with someone who cares about his responsibilities and radiates positive energy.

You will feel more proud and satisfied with your job. You might discover that you actually have causative power and can have an impact on your product or organization.

You will be always on a lookout for new ways of delivering value and thanks to that you will be constantly learning new things

You will learn how to convey your ideas to the technical and business people and how to execute them. This will boost your soft skills, which are very often unappreciated by software developers.

Can I really do it?

So, it all sound cool, isn’t it? But you might think - it’s too idealistic. There is no way I can apply this to my company. Let’s think about it for a second. One of the possible problems might be:

  • I work in a company where I’m told what to do and there is not much space for proactivity
  • I work in a big company where there are many levels of management and there is no way I can push my ideas
  • I’m a junior software developer and I don’t have enough experience

Let’s think about it for a second. In the first case, one question is coming to my mind - Is that entirely true? I’m sure there are companies with a rigid process, but for me, it’s hard to imagine that company could discourage their employees from taking an extra effort. Maybe you’re not in a position to introduce new product ideas, but I strongly believe that you still will be able to find some areas where you can add some value, maybe on the team level, or maybe just by increasing your own productivity - it’s still delivering value and it’s a great start to do this mental shift. The same applies to big companies with strict structure and many management layers - start with something small and see how it goes.

If you’re worried that you are a junior level developer and won’t have anything valuable to offer - it’s completely not true and stop thinking like that. In the first place - you’ve been offered a job because someone thought you will be helpful for the company, so you’re already expected to deliver value. Secondly, if your start actively looking for ways to add value, you’ll grow as a developer much faster and you will boost your career.

As you see, there are potentially endless options to deliver value, to add something extra. What I did is, I gave you some examples, not everything might be applicable in your current company, but some of the things definitely will be. The only limit is your ingenuity and the results will surprise you.

Written on March 12, 2017