As all developers are aware, developing software can be hard. And I’m not even talking about the actual process of sitting down and coding. There are thousands of details that have to be accounted for in order for a software application to work. It is a significant challenge to conform every requirement with the ‘big picture’. The UI should look great and be intuitive. The workflow and logic should be accurate and guide you down the path of success.
Writing great software requires a combination of logic and creativity. Steve Jobs said, “it’s the programmer’s job to adapt the computer to the user, not the user’s job to adapt to the computer.” I agree. And, having been at this task for some time now, I’ve found a few tools that have proven quite helpful. I’ll share:
- FxCop – FxCop checks your code based on a collection of rules. There are rules for performance, best practices, globalization, and more. As a human, if you do the same thing 100 times you are probably going to do it differently at some point. You can write your own rules that ensure consistency in the way you write code. It can also help ensure that the entire development team adheres to a set of standards. Link: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6544
- StyleCop – This tool is used internally by Microsoft. It is used to ensure that their public APIs are consistent and effective. It helps with naming conventions, class structure, etc. Link: http://stylecop.codeplex.com/
- GhostDoc – Writing documentation can be an unpleasant chore. GhostDoc automates documentation authoring based on method names and parameters. As long as you follow best practices, GhostDoc does a really good job of inferring what the documentation should be. It gets you 80% of the way done and the remaining 20% can be authored by hand. Without a tool like GhostDoc, frequently documentation goes undone. There are free and paid editions. The paid editions are not very expensive. Link: http://submain.com/products/ghostdoc.aspx
Using these tools can help you deliver great software. What are your favorite tools that help you in your work?
These tools are directed at the .net framework. What are your favorite tools for Java, Ruby, LAMP, and others?
Good user interfaces (UI) are a vital component of great software applications. It is not enough to have great functionality on the backend. After all, UIs are the human-computer interface. If you don’t get the UI right then the entire system will be wrong…regardless of how clever the code is.
Some developers struggle with this concept. Have you heard the joke about the introverted vs. extroverted programmer?
“How can you tell an introverted programmer from an extraverted programmer? The extroverted programmer stares at YOUR shoes when he is talking to you.”
While the joke is humorous, it illustrates how disconnected some developers are with the people that use the software they build.
Developers that are also skilled at UI design are rare. As such, it is almost always beneficial to get a designer involved in the UI development. The designer can focus on appearance and usability and not worry about anything else.
So how do you design a good UI? Answering that question is a challenge since much of design is subjective. My daughter’s favorite color is pink and my son’s favorite is black. Which one is correct? They both are since it is a matter of personal preference. The definition of good UI design is also somewhat subjective. Some people like dark backgrounds when using computers so they don’t feel like they are staring at a light bulb all day. Other people find that dark backgrounds are depressing and they prefer light colors. Once again, both groups of people are correct since it is a matter of personal preference.
This begs the question, how do you choose the correct UI design for an application when people have different tastes? One option is to let the people choose. Here is a process that accomplishes that:
- Build light, dark and medium themes for your UI.
- Make it easy for your users to choose the version they prefer. This allows each person to use the UI that is right for them.
For my fellow geeks out there, the ability to switch between themes at runtime was achieved by setting stylesheet references at runtime. The technology used was XHTML, CSS, JQuery and Asp.net MVC.
There are many other factors when it comes to UI design besides color themes. This article only scratches the surface. If you want to dive deeper then visit http://en.wikipedia.org/wiki/User_experience_design.
Here are some helpful links:
Power to the people baby! Enjoy.
Happy 2011! I managed to avoid (once again) having to eat a spoonful of black eyed peas (a New Years tradition in my part of the world that I am not particularly fond of) and am ready to tackle the new year. This year is an exciting one for us at Crowell and I wanted to share some of the highlights of 2010, as well as upcoming events for 2011.
In 2010, we saw the roll-out of our first application. We initially developed DecisionPoint™ (www.s1000ddecision.com) as a means of solving an immediate problem:
How do companies quickly and effectively develop S1000D business rules?
DecisionPoint has since grown to not only take on the task of developing business rules, but creating and managing BREX documents as well. DecisionPoint is the manifestation of what everyone in the S1000D community is realizing: S1000D business rules are “living”, “changing” things. As such, they need to be stored and managed in a manner that allows for easy update and dissemination. Although it will certainly continue to be available for individual purchase, in 2011, DecisionPoint is becoming one part of CapStone™, our new S1000D Productivity Suite…but more on that later.
Of course we are, at our core, still a services company. We enjoyed many successful projects this year and look forward to even more in 2011. If you have not met us, ask around. We are confident enough in our reputation that we do not employ a sales staff. Instead, we rely on our reputation and word of mouth. We look forward to continuing to serve our existing customers in 2011 and adding new customers to our growing list of references.
As for 2011, we have a lot on our plate.
CapStone™ S1000D Productivity Suite
We are developing a new S1000D productivity suite called CapStone™. CapStone represents what we are referring to as the “second generation” of S1000D applications. The first generation of tools were worried about storage and retrieval of documents. While storage and retrieval is indeed important, it frankly, is a fairly trivial challenge in the IT world. In order to make an S1000D environment truly robust and usable, additional features are required. More details to come…
Well, that’s my update for this new year. Here’s to a great year and our combined and continued success!
— Rick Schochler