BLOG

Focus on what is important

When building software, it is very easy to get lost in things that don’t matter. I spend a lot of time working with clients on projects of all sizes, and I’ve picked up some things that I think could be helpful to consider when prioritizing features.

I look at two ratings overall:

  • How many users does this effect?
  • What impact will this have on those users?

Very simple right! It could be but lets use a very simple problem, someone has forgot their password on your website, and they need a way to recover it.

The number of users this effects is small, most likely a small percentage a small percent of the time. The impact of making this feature super polished is very minor, a person may enjoy the nice flow for having a password reset, but it really doesn’t matter beyond the few seconds of interacting with it.

I am always sad when building a very complicated huge software system for time to be spent building out an elaborate password reset feature. The impact and user’s effected are minor in comparison to say the landing page a user sees when logging in. Heck we have the best password reset flow in the industry, but our landing page is mediocre because we wasted time on something that really doesn’t matter.

When building software, or managing a team focus on things that actually matter. You may find you have features that have a large impact on a small number of users, that still needs to be prioritized because the small number of users make up the majority of your revenue. The model is different for each software application I’ve worked on.

I’m going to close with a list of things that I feel in most cases are low priority/low impact features that need to be functional, but doesn’t need to be overthought.

  • Password Reset (as mentioned above)
  • Settings Screen (generally in mobile applications)
  • FAQ screens (these need to be there, but don’t spend time making them more than what they need to be)
  • Image uploaders, don’t overthink image uploaders at first especially if the images aren’t used for anything more than a logo. Tell the user to upload an image the size it needs to be for example 256 x 256. Don’t spend time on a cropper for a single profile image
  • Administrative Tools, tools that are only used by super users, these impact a small subset of users (generally only the owners of the software)

Hopefully this helps make your projects more of a success in the future, just remember that a lot of little things with low impact can add up to a lot of time that could of been used on things that matter more.

.NET vs NodeJS based which should you choose?

Over the last 10 years I have had the opportunity to work with all kinds of web frameworks, and sometimes it is very hard to choose which one to build on. I’m going to give you very bluntly my opinion of both as it stands today, but the bottom line is it really depends on what you are after.

Starting with NodeJS frameworks is sometimes overwhelming for those new to the Node world. There a ton of web frameworks, each with their own set pros and cons. In particular most of my recent development has been done with SailsJS which is a MVC framework built on top of┬áNodeJS. It claims to be similar to frameworks such as Ruby on Rails. SailsJS was really refreshing to start developing in, and most of the challenges I had in this world were around 3rd party dependencies. I’m going to jump into what I think are the primary Pros/Cons of working with a NodeJS framework.

NodeJS pros:

  • Inexpensive hardware needed to run servers
  • Lots of opensource projects and examples
  • Constantly improving performance with an active community
  • JavaScript based, which allows a common language for frontend and backend development (for web anyway)
  • Very easy to launch an HTTP server
  • Lots of frameworks that make development so much easier (SailsJS being my favorite)
  • No compilation of code, increases developers speed to test new features

NodeJS cons:

  • Require a framework and other 3rd party modules to be fully capable
  • Version dependencies between packages can become problematic
  • Windows support has always felt like a second rate citizen
  • Support for 3rd party modules can be abysmal

My experience with .NET is one of love/hate. At times I feel it works like magic, and everything comes together as a perfect combination of flexibility and capabilities. Other times though I feel like I’m fighting with a framework that was built to slow down development. In my experiences I’ve grown to love C# as a language, and really do appreciate compiler checks. So I’m gonna jump into my Pros/Cons of .NET as a backend.

.NET pros:

  • Has been around a while, and is supported at a lot of major companies
  • Support for C# and other languages that all compile down to libraries that can be used.
  • Awesome WebAPI framework that makes converting JSON to objects super easy
  • Visual Studio (in my opinion) is the best code editor
  • LINQ introduced in .NET 3.5 makes it easier to query data in databases

.NET cons:

  • Server costs are more expensive due to Microsoft Licensing fees
  • Library dependencies can make you lose hair
  • Deployment takes a lot longer, although Visual Studio does try to make it easier
  • Slower development cycle as a whole

I know that a lot of these points are debatable, and I’d love to hear about your own thoughts. For my own projects I tend to go towards SailsJS for the sake of speed, but I have found larger clients definitely prefer .NET primarily because their entire IT most likely runs on a Microsoft stack.

My final verdict is: It depends, there are so many factors to making this decision that need to be looked at, especially the type of project, scale, lifetime, and so on that should be considered. I’m always open to sharing my thoughts just message me on Twitter @adamwlarson or reach out to me through my company Zymo Interactive (www.zymoent.com)