The software engineer’s feature set

You have built some things, have ideas on how to code the “right way” and you may have held a job or two. But there is more to being an engineer than code. If you are on a technical track or a management track, you need to develop and ship your personal feature set.
 
An analogy…
 
In the “real world” one of the first things you learn is project scope and the tendency for the scope to increase. As you start on a project, the features and expectations of the project grows. As an engineer, your job is to help manage scope so features get out the door.
 
Features > Door > Profit <> Repeat
featurescope 
 
What many engineers do not think about early in their career is that their role as an engineer has scope. To be successful you need to improve and add to your feature set. Add features by managing the scope for delivery.
 
How, you say? Glad you asked…
 
Steps to add to your feature set

Write down your current feature set

Take time to inventory your feature set. This might be as simple (or as complicated) as reviewing and updating your resume. While you are at it, update your LinkedIn profile as well. Write down both your technical skills and your soft skills. The skills that make you feel comfortable:
 
  • Constructive code review comments
  • Team members like me
  • Product owner trusts me
Identify features you want to develop
Look at your feature list and then start thinking about the times at work where you do not feel comfortable. If you have trouble at first, spend a half hour at the end of each day to take some notes. Then, rank them. This will help you manage your scope for delivery of your new features.
  • Take part in team meetings
  • Talk to members of other engineering teams
  • Understand the goals of other departments (sales, marketing etc.)
  • Network with engineers at other companies
  • Do a technical presentation
Pick a feature, refine and set a goal
This is the most important step. Let’s say that you want to take part in team meetings. What does that mean to you and how does that align with your other goals? For example, it might mean that you want to take on a role in your team like scrum master. Or does it mean that you want to be more thoughtful in giving estimates by identifying edge cases.
 
Whatever you choose. Dive deep into it as if it were being written in code. Write out the specific ways that you can develop and measure that feature. To further our example, if you want to point stories, this might be a list to start with:
  • Look at the backlog ahead of time and write down your understanding of the story
  • Thinking about the “not so happy path” of the story
    • Exceptions
    • Alternative ways to access the feature
    • Old code or new code
    • In pattern or not in pattern
 
Finally, set a goal and communicate that goal with your manager. You need someone to hold you accountable! If your manager is not the right fit (and that is a whole other topic) you should find a mentor or another engineer.
 
Deliver
You have your list of things to do, your goal in mind and you have set that expectation with your manager. Now, you need to go heads down and deliver.
 
That means managing scope.
 
Work through your list and get feedback. If something does not seem right, reevaluate. If you add scope, set the expectations with your manager .
 
When you finish your feature, claim the victory with your manager.
 
Repeat
I always tell the folks I manage that they are in charge of their own career. As a manager, my responsibility is to help empower, enable and support. Do not expect your manager to spoon feed you the features you need to develop to be successful.
 
You are never done with a product, especially when the product is you. Start at the beginning and do it again and again until it becomes a routine.

Leave a Reply

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