High Impact Development

0

It’s difficult when you have a new project, a port/rewrite, or working on a major new feature for a project to stay on track and on course. More often than not developers tend to get side tracked during development on things that, at the time, seem super important and vital to the success of the project but in retrospect you could have spent your time better.

Impact

There are ton’s of things during the course of development where a case could be made that you ‘have to handle them right now!’, for example technical debt, bugs and styling. If you handle those now, it’ll keep the cost low, make for less code changes, less testing in the future, etc, etc, etc.

I’m not denying that’s the case, but when you’ve got to get features in front of customers where should you spend your time and effort?

I realize this about myself as well. I know I can be like a dog with a bone when something comes up or I trip over a potential performance issue, technical debt, UI, etc. I’ve now started asking myself these questions:

1.) Will a customer see or interact with what I’m working on in the next release?

2.) Does what I’m working on have a direct positive impact on the customer in the next release?

3.) If what I’m working on wasn’t in the next release would the customer notice or care?

4.) Do I have to justify my answers to any of the above questions to my team members?

Using those questions I try and keep myself on track especially around crunch time. What I’m working on should have the most, positive, impact on my customers. I also use these questions to help prioritize tasks, I’m going to start working on the highest impact, most important task or feature first. This gives me the ‘best bang for my buck/time’ in terms of work and my customer.

An old manager and good friend of my used to ask if what we were doing was a “Science Experiment” a nice way of asking all 4 of those questions in two words. There is a time and place for science experiments, I do them all the time, but there equally is a time and place where you shouldn’t be tacking technical debt, working on a unified styling framework to rule them all or conducting science experiments.

We should always strive to put out the best product we can to our customers, but that only works if there are compelling features for them to use. Having the prefect architecture, prefect UI and no bugs or technical debt is only amazing if there are customers using your product.

Resgrid is a SaaS product utilizing Microsoft Azure, providing logistics, management and communication tools to first responder organizations like volunteer fire departments, career fire departments, EMS, search and rescue, CERT, public safety, disaster relief organizations, etc. It was founded in late 2012 by myself and Jason Jarrett (staxmanade).

In Project Development Context Switching

0

Most developers are acutely aware of context switching. Your working on a new feature in a sprint when the business comes to you with a urgent production bug from last release. You have to switch contexts from what your working on, remember what your did last release and figure out the problem. That’s a pretty big context switch.

context-switchingBut what about the context switching you do that you really don’t realize is happening? I never really noticed it when I was working full time in the .Net stack, it was just the norm. It wasn’t until I started playing around with the MEAN stack and Meteor that I realized how much context switching I was actually doing elsewhere.

File/Project/Solution Context Switching

When I first started developing I was addicted to Visual Studio Projects and even Visual Studio Solutions. Even simple solutions would have a half dozen projects before there was a line of actual code.

But what’s the harm? Again it’s context switching. Your business logic project will be different then your MVC website or API project. Figuring out where things go and the structure takes mental space. This is especially true if you have ambiguous project names, for example “BusinessLayer, BusinessLayer2, BusinessLayer3”.

Language Context Switching

In a typical project how many programming languages/syntax’s are you using 2, 3, 4 or more? In the Resgrid project we have C#, JavaScript, HTML, CSS, Razor, TypeScript and SQL. There’s a tax you pay switching languages, even if they are C based. If you’re a C# or Java developer and working in JavaScript how many times have you done equality with “==” instead of “===”? Just because HTML or CSS isn’t a ‘language’ you still have to conform to it’s rules, thus you need mental space to remember the rules and syntax. The more complicated the markup or language the worse the hit it (I’m looking at you XAML!).

Medium/Device Context Switching

I really like Cordova for mobile development. There are some caveats to when it makes sense but the promise is amazing, use your HTML, CSS and JS to develop on device mobile apps. It’s just a web browser running a local web server right? The same about responsive websites, just have 1 website and it dynamically changes to meet the device screen requirements

But you just can’t take something designed for a full desktop web browser and just assume “Yep that’ll work fine everywhere”. Same for a Hybrid app, iOS, Android and Windows Phone all operate very differently switching platforms, rendering engines, etc all take pretty major context switches.

Just remember that there is more to context switching then just switching from your active work to a bug in a 1 year old feature or going from a product to another product.

Resgrid is a SaaS product utilizing Microsoft Azure, providing logistics, management and communication tools to first responder organizations like volunteer fire departments, career fire departments, EMS, search and rescue, CERT, public safety, disaster relief organizations, etc. It was founded in late 2012 by myself and Jason Jarrett (staxmanade).

.Net’s Stagnation and Brain Drain

Recently Justin Angel posted an essay he’d written titled “The Collapse of the .Net Ecosystem, V3”. It’s an interesting read and very well could be flawed in many meaningful, statically and logical ways. But if you haven’t popped your head up in a while there are noticeably less .Net jobs then there were in 2006-2010. This could be relative or absolute, but when I was looking for a  job a few years ago the C#/.Net listing were few and far between.

brain-drain

The jobs that are out there aren’t at startups, they mostly aren’t working on solving interesting problems, they are Line of Business applications.  Head over to Angel.co and see how many of their 8,400+ startups are using C#, hint it’s less then 2.5%.

There is nothing wrong with Line of Business applications or enterprise app development. You can make a very good living doing this and get to work on some cool stuff, maybe. But without new people, new ideas, different points of view and fresh perspectives the .Net Community becomes an echo chamber. As a whole it will lag behind other more cutting edge development techniques and methodologies because we aren’t exposed to them, as people aren’t flocking to be .Net developers.

You may be saying to yourself, “That’s fine I don’t want to work for a startup anyways” and that’s a perfectly valid opinion. But it’s undeniable that startups attract the younger developers, who can take the risk and the commitment to the startup pace. These then become the next generation of enterprise developers. If there are only a handful of .Net startups what does that say about the possible new input into the .Net Development collective? How many developers are leaving? I’d bet you we have a net loss in people leaving the .Net community verses new minds coming in. As I sit here the path that is currently laid out for .Net developers is the track languages like COBOL followed.

For the last few years Stack Overflow has done a developer survey. You can head over to SO and check out the results. The section I want to focus on is “Most Popular Technologies”. Here you can easily compare 2013, 2014 and 2015 trends.

2015-06-15_8-02-02

Here is the breakdown for C# for the last 3 years:

2015 2014 2013
C# 31.6% 37.6% 44.7%

In 2 years C#’s popularity on SO has dropped 13.1%. To be fair JavaScript dropped 4.5% as well from 2014, but they call out Node.js (13.3% and AngularJS 13.3%) and Angular didn’t have any numbers for the 2014 survey. The trend may not be alarming to all, but at a minimum it should let you take notice and stock of what the future looks like.

.Net will be around for a long time, but in 5 years how much new development will be done in it compared to how much maintenance? What about in 10? I love the C# language and the .Net Framework, it’s elegant, complete and very capable. But would I want to just fix bugs on a 10 year old legacy system day in and out with it? Sure you will be able to find C# work, but is it going to provide the challenges that keeps us developers engaged and provide job satisfaction?

I don’t blame Microsoft for this (ok maybe just a little), they are responding to what the market wants. You can’t continue to just push you language/framework as the only way to do things. Hell even Apple announced that they are open sourcing Swift. But times have changed, in the past you needed to do .Net for Windows development. Web application weren’t very good and to build any decent Windows Apps you used .Net. Eventually those Windows Apps got ported to ASP.Net, then ported to MVC. We went from Windows where really only C++ and .Net mattered to the Web where, well lots of things matter. Now to build a “Metro” app you can JavaScript or C++, no .Net required and there are tools to utilize “Metro” apps in the normal desktop.

I think with Microsoft Open Sourcing a good chunk of their ASP.Net stack they can compete better with Java, companies that don’t run Windows can use straight .Net now on their Linux/Unix boxes. Yes there was always Mono but that never really took off as I had hopped. So there is some light on the end of the end of the tunnel, hopefully it’s not a “No Exit” sign.

Resgrid is a SaaS product utilizing Microsoft Azure, providing logistics, management and communication tools to first responder organizations like volunteer fire departments, career fire departments, EMS, search and rescue, CERT, public safety, disaster relief organizations, etc. It was founded in late 2012 by myself and Jason Jarrett (staxmanade).

Go to Top