Impress Myself's avatar

Impress Myself

21st Century Software Developers Make Business Decisions

As a software developer, you are primarily getting paid to turn your expertise into functionality. No one cares how many lines of code you churn out, they care whether or not you are creating something valuable. They care that the features you create somehow make the business more profitable.

How do you create features that have a high value to the business?

This continues to be one of the biggest problems in software today.  In some software businesses assessing the value of a feature can simply mean evaluating how the businesses financials have changed, but more often the feature has an indirect effect on the financial metrics.

Many times the software is used to help others do their jobs better and in many cases a feature is added to increase user satisfaction. The audience and purpose of these features makes them difficult to measure. 

All this to say, it’s important for developers to realize that although the work you do is highly valuable, it’s really hard to measure and understand, and even more difficult to prove. Developers of the 21st century need to have a good understanding of the business, need to be the pioneer of measuring the effectiveness of the features they create, and need to be able to communicate with “business people”. 

In the past software developers have struggled to integrate their expertise into the larger business. They have struggled to interface with non-technical people and have especially struggled to communicate the limitations of what the software can do and how best the software can help the business. 

This type of severe lack of communication has necessitated many types of fixes: project managers, excessive meetings, agile software methodologies of all kinds, and a myriad of other ideas. The software industry as whole has actually gotten decent at implementing agile and providing a fairly decent communication framework between software and the business.

Now it’s time for the next step, it’s time for software developers to recognize their role in making business decisions. Anytime you make a decision about your software you are also making a business decision . You are making a decision about resources, schedules, what the users experience will be etc.  

If you have developed a decent amount of software were features are defined by business folks, sales, or anyone non-technical you have experienced a pattern of absurd uninformed decision making. Something like the customer asked for X, to solve Y, by date Z. Where X doesn’t solve Y and could never be accomplished by Z. Then you go ahead and implement X, and everyone is pissed because you did what they asked you to do.

This is at best a highly flawed dynamic, but it persists anyway, and for a variety of reasons we don’t need to discuss here.

However I will propose one solution. The software developer/team needs to be authoritative and trusted with business decisions. Do to that we need tools.

Collection of metrics is a great tool to start with. If we are able to make a quantitative measure of the features we are designing then we have a great start in understanding the usefulness, flaws, and value that a feature provides. Let me write that in bold, A GREAT START. Metrics are not the beginning, the end, or the holy grail of anything. There is so much that a metric can’t tell you.

But there are very useful things metrics can tell you. Metrics can tell you how often a feature is being used (did someone click on this thing), the level of engagement (are people coming back to this), demographics, and a whole bunch of other interesting stuff. 

Metrics will not make you an authority in your business, they are tool that will help you craft the narrative around the value of a feature and it’s cost. A tool that will take you from anecdotal examples into a more concrete realm. They will help you layout out causes and effects so that you can allow the “decision makers” to choose the best options.

As a developer it is definitely your job to write code, but it’s not enough to crank out features. There are a variety of tools and techniques that can make you more informed about the costs and benefits of creating applications and features, unfortunately there is no silver bullet. There are best practices and great suggestions like metrics, agile, user testing, etc. But you will have to find the right mix of techniques, tools, and art to be a truly valuable contributor to the business understanding of your work.

You have to be an arbiter of decision making and an expert in the business value of the applications/features you develop. You need to be able to make smart business decisions with the software you are writing, and then be able to communicate that decision to the rest of the business. You need to be a well qualified consultant for your stakeholders so that they can make correct and reasonable requests that result in valuable features. 

A simple answer to the difficult farce of STEM Shortage

Google CEO: Fight Unemployment With Job Sharing - InformationWeek

Fun idea. In the United States with government being on the side of employers and employers being on the side of reducing costs and maximizing profits, I doubt this will ever be possible. 

If anything, I predict working hours will increase for skilled professionals while unemployment will increase for non-skilled professionals.

Backlash stirs in US against foreign worker H-1B visas

This reminds me of union busting. The available work force is demanding good pay, conditions, and benefits so thy will find someone who won’t.

Now the government is helping them. 

We don’t have a shortage of STEM workers, we have a shortage of STEM workers that are willing to be company slaves. 

U.S. economy collapses in first quarter, but growing again

I’m guessing this astonishingly wrong “estimate” was not an accident. The old “You can’t handle the truth” thing. 

An Append to: The Boomerang Kids

This piece "The Boomerang Kids Won’t Leave" from the NY times, caused great reflection on my work experience since graduating from college, five years ago.  

It made me realize that the boomerang generation is still accessing the social safety net, but now it’s being run by the older working generation and not the government. Which I believe caused a negative cycle of economic problems for everyone involved.

I know there are many factors in the difficulties that the so called ‘Boomerang Generation’ have experienced, but the one I have seen most readily is the unwillingness of the older generation to leave.

My first job out of college was at a very large technology company that earns tens of billions in revenue a year. First as a contractor then as full hire. My contract position was in a job no one wanted as a  tester, just sitting pushing buttions, then I took a full time job no one wanted working as Quality Assurance Test lead.

The lead job was thought by many to be a dead end job, as few people were able to climb the corporate ladder or merge into a software development career. I spent the next two years attempting to turn this job into a career in software development, which I eventually did at the end of that two years.

Every step of the way I was blocked by people twenty to Thirty years my senior. I would be competing for jobs where the reqs required 1-3 years experience in software and the other people applying had 20 to 30 years experience and were happy to take the same pay. It was difficult and a bit baffling.

While it’s obvious that the economy was contracting and the company I was working at was eliminating positions, it was also equally obvious that the people eligible for retirement were not retiring. These are people over 60 working as software architects and managers of all kinds. Which were the jobs people traditionally took when they had acquired 20 or 30 years of service.

So not only were there far fewer jobs to take, but far fewer people were exiting the work force. 

Over the last few years I have had the opportunity to work with many of these older workers and find out what was going on. They almost all wanted to retire. But the vast majority had their 401ks ravaged by the economic collapse. This made it incredibly impractical to retire if not impossible. On top of that many were supporting their kids and some even their grand kids. 

I can’t help but wonder if the privatization/slashing of our social services creates economic avalanche of sorts. Where the burden of the poorest falls to those with the best jobs, which (right now) means the oldest folks, forcing them to stay in those jobs, which then blocks the younger  generation from independence which then puts more pressure on that same group of people. 

Seems like a lose, lose, lose. 

I Will Recommend The Fire Phone

The main part that’s important to me when I recommend something to family and friends:

Will it work how they want it to?

Will they bother me about it?

With the Fire phone I think the answers are yes and no.

As a software engineer I get way too many tech support calls from friends, relatives, and most of all my wife. The number one  thing I have to deal with is the classic, “My phone is full, how do I save my pictures?”. With the amazon fire phone that problem is solved, and so are many others. 

Side Note: If you write software, apparently any recommendation is an implicit guarantee for tech support for forever.

A quick checklist of why I think it will work for family and friends:

  • Curated app store with all the apps they love
  • Unlimited Cloud hosting of pics(huge win for my wife/mom)
  • Mayday easy fast tech support right on the phone(Can I get an Amen?)
  • Free prime for a year == Free Netflix(equivalent), Music, and Other Junk (people love free content)
  • They can show off 3D crap to their friends(people love showing off crap)

NSA: Our systems are so complex we can’t stop them from deleting data wanted for lawsuit

"Harmful to national security" is like when parents say "Because I said so". They don’t have a good reason and they don’t feel like talking about it.

The Last Line Effect

From this article you have learned that with the Copy-Paste method making a mistake in the last pasted block of code is 4 times more probable than in any other fragment. It has to do with the specifics of human psychology, not professional skills. I have shown you in this article that even highly-skilled developers of such projects as Clang or Qt tend to make mistakes of this kind. I hope my observation will be useful for programmers and perhaps urge them to investigate our bug database. I believe it will help reveal many regularity patterns among errors and work out new recommendations for programmers.

This would be a great check for a static code analyzer. 

I’m Excited about iCloud Drive

I think this iCloud drive movement is going to make a big difference in the apps landscape. I think it will solve two major problems, that from the user side has always been confusing.

One saving stuff, especially games. It’s just hard to know in many apps if your games are being saved and if so where ? Is it local, in a private cloud, in iCloud? And so on, I hope to see game makers start to use iCloud drive to more explicitly and seamlessly game information.

Two music apps. I love making beats and loops and stuff on my phone. I hate the idea that I need to buy a third party app to transfer files around, or use a really shoddy copy and paste feature. I’m hoping this will transform the music landscape on IOS devices and help all the music making apps to inter-operate much more smoothly and intuitively.

Here’s for pinning all my hopes and dreams on Apple making a great cloud product. This will solve the majority of my pain points on ios.