Monthly Archives: July 2021

Elements of a great developer job

Over the past few months, I’ve been thinking about my dream job.  Not that I’m not happy where I am right now, but what would make me really happy?  Just thought I’d share.

Company Feel – Excited or boring?  Does the company feel big or small.  I like to work in a fast-paced environment with a lot of control.  Others will like the warm, snugly feeling of a great big company will lots of bureaucracy and red tape.  What about the fringe benefits?  Do they have free beverages, Taco Tuesdays or do they sponsor a local user groups?  Are they located in a cool part of town, or do they allow working remotely?  These things can differentiate a good company from a great company.  I know some of these fringe benefits are kind of cliche these days, but they really do add to employee morale, especially that of a developer.

IT – Your IT team is there to support you in your work, not hinder.  Let’s face it, employees are still people and have obligations outside of work that need to be taken care of during work hours. Accept it.  Slow internet connections are simply unacceptable.  Things like site blockers take the “nanny for 9 yr olds” approach to adult management.  Instead of doing this, let everyone know that the internet is being monitored, and they will be fired if they use it improperly.

Management – Management is there to tow the company line.  But it can be done without severity.  Does management tend to say, “Hey, you were five minutes late!”, or “I saw you logged in last night at midnight, working on anything fun?”  Let’s face it, developers develop on their own time.  A great book that I read recently was Pragmatic Thinking and Learning, in which the author recognizes the necessity of a calm working block of time and the impracticality of getting one at work.  The best work environment (and hence the best manager) embraces this concept and allows you to work when it is best for you, yet still holding you to be accountable for promised work product.

Product Management – Do the product managers know what they provide?  Do they know their audience? or are they flying by the seat of their pants?  If they are, do they at least acknowledge that?

Executive Leadership (C-Level) – Does the highest level of management have a clue?  Or are they just blowing smoke?  Do they have an accurate view of what is going on at the lower levels?  A telltale sign that this is not happening is when product releases are delayed.  A good sign that this is happening is when you see them conducting 360 reviews, talking with people outside the C-level block, like investors, support staff, clerks, etc.

HR – I prefer to be a consultant and remove HR from the whole equation.  No one has your best interests at heart but you.  Earn your paycheck, and pay for your own damned healthcare.  Depending on your station in life, you may need to have company-sponsored healthcare.

Priority and Severity

Priority and Severity are the foundational methods to categorize work items in software development. With the agreement and buy-in across the team on the accepted definitions, it is much easier to order and schedule work.

Below are the industry standards for Priority and Severity. Do not stray from these definitions. You will only end up dooming your team to failure.

Priority
An organizational ordering of the work item. It is not based on how hard the problem is or who it affects. It defines importance to the team. It typically affects when the work will be scheduled.
1 – High – Most important/valuable to the organization. We will fix this bug first.
2 – Medium – Moderately important. We’ll fix this bug eventually.
3 – Low – Least important. We’ll fix this bug when we get around to it.

There is no need for more than 3 levels of prioritization.

Severity
A technical categorization of the bug. How much of an effect does the work item have? Is it the game changing new feature that we think will make our profits soar? Is it the terrible bug that every one of our users sees every time they login? Maybe it’s just a typo on the About Us page. Severity defines the what. There are 4 levels of severity:
• Critical – This is a serious. Wake up the CIO. Some part of the system is down and it is affecting all customers. There is no known workaround. If necessary, all hands on-deck to get this done.
• Major – Some part of the system is not working properly, affecting all customers. There is an effective workaround.
• Minor – Some part of the system is not working properly, affecting some customers.
• Low – Pesky problem for some customer, but they can live with it until we fix it.

Blockers
A blocker is neither a Priority nor a Severity. Do not get caught in that trap. A blocker indicates that something is blocking something else from occurring. A bug can block other bugs from being tested. Knowing that something is a blocker can affect the bug’s priority.