Gowind's site

A Software Engineer is a professional

Who is a professional ? In my words, a professional is a high skilled person, who can be relied upon to fulfil expectations in the area at which he is skilled.

3 words are important here

  1. skill
  2. relied upon (reliability)
  3. expectations

Skills

As a Software Engineer, your skill is your ability to work with software. You are programming software to fulfil expectations.

you employ your skill in software and programming, to do what needs to be done.

Expectations

But what needs to be done ?

My team maintains a feature as a part of a large product that serves 100M+ customers all over the world. The feature provides incentives to the user to continue using our product. The feature has a certain definition and behaviour and must serve all the users on our platform.

What my team (and therefore I) must do is a simple statement: Identify and improve this feature to improve usage of our product and retain more customers.

  1. Communication: To do this effectively, my team has to talk to marketing managers to understand how they market our product and how we can provide incentives to attract more customers. Since Marketing is heavily dependent on the country/demographics/language of our audience, we have to put in the effort to consider the various needs before adding or extending the features.
  2. Scale: We cannot launch features that cannot scale to our entire customer base. so before we decide to add more features, we have to see if we can reliably scale to extend our features to all of our users, otherwise it will have a net impact
  3. Planning and estimation: Developers are expensive. For anything we set out to do, we must be capable of assessing the difficulty of tasks, risks that might delay our estimates and most importantly plan the order of things to be done, so that we aren’t wasting time doing a task that will ultimately have to be discarded
  4. Measurement and Analytics : most features are experimental in nature (ie, you do not know if it made an impact or not). To gauge the success of anything we add (or remove), we need to measure the impact. Our job doesn’t just stop once we yeet our code changes into Production. We provide tools and data to assess the impact of our changes so that PMs and Marketing people can make informed decisions.

Notice how programming is a critical but small part of my responsibilities. My work is a superset of programming related tasks. What I am doing is anything and everything to support this feature that my team is expected to maintain as a part of the larger product and the company.

We get to the final part: how am I doing it ??

Reliability

Any automation/script is only as good as how many times you have to manually intervene. If you have a computer, that is super fast, but has to be restarted every 5 mins, it is worthless than a calculator because you can never depend on it.

Similarly, the most talented developers are only as good as how long they can be relied upon and how frequently their managers have to “manage” them.

The best software developers are the ones that managers can forget about knowing because they know that they can manage themselves.

The worst software developers are the ones that, like babies, need a full-time caretaker to make sure they aren’t soiling themselves or causing ruckus in the house or the nursery.

Your team and manager should be able to count on you to consistently deliver, with the least amount of intervention possible.

This doesn’t mean that they never have to message you or setup a meeting or provide you information or basically not talk to you at all, nor does it mean you are expected to do everything by yourself without seeking help.

Your manager and team are happy in the fact that you will seek help, when needed, inform them of the status of your work, really dive into the details and keep track of everything that needs to be done.

Reply to this post by email ↪