Creating our applications for our users and not us, this is nothing new and it seems logical right? as a software developer we create applications for our users, to help them resolve some sort of issue or facilitate some manual process, etc. This is what software developers do. And in many cases we just open our
SDK of preference and start creating this much needed applications using only our own instincts and preferences.
If it was just this easy, we'll all be making a fortune selling these much needed applications to a lot of businesses out there. The need for software applications to resolve problems and/or enhance existing manual procedures is real. However, my opinion is that most software developers, systems architects and the like spent too much time talking about what framework to use, what programming language, or how to incorporate that new cool language feature that everybody is talking about instead of spending time asking real users what is it that they really need. I know, in many cases we might work for a large company and have the middle man, the business analyst or project manager who tell us what to do, and in most cases this works, however when you are running a Micro-ISV you don't have the luxury of counting with all those people which in many cases, the less people that are involved in a software project the better - I'll be writing about this specific topic in a coming post.
As software developers, we tend to have these endless discussions about the latest tools, technologies, patterns, etc, and most of the times we do enjoy engaging in these discussions, it is fun and sometimes we learn one thing or two. However, this is an activity that does not mean anything to the end user of our applications, in fact, the user can care less what tools the software architect or the developer chooses to build an application, they only care about having the application do what it needs to do and to have it ready for use sooner than later.
For example, let's say we are developing some application that we know a lot of users will be interested on, we have received some feedback from users and have an idea on what it is that they need and want. Now, we have used our wisdom (and experience, etc) to decide we are going to develop this application as a web based application. This is great! no problems there, the issue comes when we start over thinking and arguing about what web technology, framework to use. Maybe we like PHP and MySQL, after all it is free and open source, or maybe we like the Microsoft platform,
asp.net, SQL, etc... and that is OK too. The problem exists when we start wasting time arguing with our team or with ourselves about what technology is better, and often we are bias when making our decision, we usually decide to use what we like and not what we know is better for the specific application and the user base. Most of these discussions are based solely on what we prefer, it is based in our own ideas of what's better and more often than not it has nothing to do with what the users want, we do not make these decisions based on what's best for the user. There are some exceptions, so please calm down and don't get too mad with me just yet.
The truth is that the user does not care about all these details that we as developers care too much about, the user does not have a preference regarding the framework or the programming language, I know is a shocker for most of you... but it is the truth, they are the normal ones, we are the geeks and they don't care about the tools we use. As a developer myself, I love to try new things all the time, but I reserve the use of these new frameworks and technologies for my own little projects, samples, etc... I try to avoid the use of new frameworks and technologies when developing a new application that will be used by real people and in a production environment, I know by experience that trying a cool new control, tool or a new feature is not what's best for my users. It is always possible to use the newest and greatest, it is just that doing this will require more time, will more likely have more bugs and this is not what your user wants, we all should know that by now.
I am building my new
Micro-ISV with this mindset, create software that it is simple to use and simple to manage. My main goal is to build applications for my target audience which is micro businesses and solo entrepreneurs, you can learn more about it
here. I am doing my best to make sure that I create something that adds value to my users, software that helps them do their job and at the same time I am doing this by using the tools that make the most sense for the type of application I am building. After all, the goal is to create something useful, even if that means I will be using tools that aren't too exciting or new for me or my developers... the important thing here is to help my users and if I succeed at that, I'll be happy.
Next time you are creating a new application for a user, or are working in a team that is about to develop a new application, think of the user, think of what is better for them and try not to start developing your product solely based on your own technology preferences.
Good luck!