Torrey’s Blog

My Application Development Ramblings

User Experience Headaches

October22

This week has been an eye opener into the reality that I’m a programmer and not a designer. I’ve nearly completed my second year as a professional software developer and have quite the project list for my resume, and still have so much to learn about software development. This post is about the user experience design problem I encountered with two clients.

The first example comes from an Auction Manager application I wrote that handles property auctions and contacts.

prux.png

This application was not based off any other application and was created from scratch. As I created this and went through various meetings with the client it was clear there are various steps and seperations during the process of property auctions. As an application that will grow over the years I imagined that using an Outlook style explorer bar would be benefitial and make the application easy to understand and learn. Once work started picking up for the client and the software was used more they found that this kind of style slows down the work flow, because of the extra clicks it takes to get to the various screens they need. After I visit them this week I’m sure I’ll come up with a better idea to repair the work flow and create a better user experience, but my question is how do you plan and prepare the great user experience if the application never existed? What works for some clients may not work the same for others.

The second example I have is a point of sales system I created for small businesses. This is still in development and I’m 100% sure this interface will change within the next two weeks.

spvux.png

While creating this software I searched the internet to view various screen shots of point of sales systems to get an idea of how I could improve the ease of use for users. A lot of systems out there are screens loaded with information that will completely confuse the user. By simplifying everything and making the whole process faster. The boss and other office co-workers liked the system and said it should be a really big hit with people. One of our clients that will be using the software soon came to have a sneak peek at it. Their first reactions were that all the information is displayed on the screen and there is no contrast between the various parts which will leave users confused. Her point of sale system that she is switching from is QuickBooks POS, so everything she compared to was that. If it doesn’t function like QuickBooks with the various screens they use, then it appears to confusing to learn? I just don’t understand the design side of things to accept feedback like this.

Every client is different, and small businesses seem less likely to have training sessions because their work schedules are so busy. In the last year I’ve heard multiple comments that clients want their software to look and function exactly like Microsoft products and other big name companies like Intuit. Their reaction really comes from years of using these products, which causes me stress because of the thought and ideas I’ve put into the making the software I’m presenting. New innovative ideas don’t stand a chance in a fast moving busy small business. I am confused on how to approach the user experience design side of things because all I’ve done is programmed most of my life.

If anyone has some great adivce on resources to read or listen to I’d be more than willing to take a look. Right now I try to learn as much as possible from various web searches on the topic and listen to the Pixel8 podcast.

A Client Requests Time Traveling?

August13

This is new and interesting. Just when I thought clients have reached the limit of requests when it comes to changes in their software they blew me away on this. I received an email from a manager at this client office that was asked by one of his big clients to recompile a year to date report of their repair jobs.

The funny part is that this same manager has updated financial figures in the database, and changed a savings calculation for his client 3 times total this year. His request was to somehow use old information for the old date ranges. Requests like this make me laugh, and think really silly stuff. I even mentioned in the email about scientists can’t even figure out how to trace back movement of energy to make time traveling to the past possible. :)

Someone has to tell these administrative people how it is, and maybe I’m the guy to do it! I’m in a joking mood, so don’t take that comment seriously.

One Client CEO Is At It Again

June13

The CEO I mentioned in my blog in the past is causing some problems again this week. Last week he asked for an update of what needs to be worked on for his company’s project. I gave him a list, diagram of the current system, and included a description of the capability and features of the software I’ve developed for him so far.

This past Monday I get an offensive email back as a reply. He doesn’t understand why there are 2-3 months of development left, the cost of out-of-pocket and not using the software is high, and a few other ignorant comments. What makes them ignorant is the fact his company has been using the software I’ve been in the process of developing since last April. This CEO is so out of touch with the day to day realities of his own business the guy doesn’t even know what they have. If you’ve read the book “Execution: The Discipline of Getting Things Done” you might remember this:

“Know your people and your business. Leaders have to live their businesses. In companies that don’t execute well, their leaders are out of touch with the day to day realities. They are getting lots of information delivered to them, but it’s filtered. Presented by direct reports with their own preceptions, limitations, and agendas. Or gathered by staff people with their own perspectives. The leaders aren’t where the action is. They aren’t engaged in the business, so they don’t know their organizations comphrensively, and their people don’t really know them.”

This little excerpt describes this guy perfectly. It’s a shame I have to deal with someone so ignorant. If he would have taken even 5 minutes of his time to talk with his people he could of had the facts to properly respond back. Software development follows a process, and this process isn’t always understood by leaders. I think it’s pretty straight forward.

  1. Requirements Specification
  2. Design
  3. Construction (implementation and programming)
  4. Integration
  5. Testing and Debugging
  6. Installation (deployment)
  7. Maintenance (updates)

That’s for the normal development process, and keep in mind for this project I basically have 3 total layers. First is the application and web development. This includes the new items and features. Second is the report development. And the last layer is maintence of the software modules previously created. This could go more in depth, but I’ll leave it at that.

For the sake of that CEO he’s lucky that my boss is a great communicator, because I’m sure he wouldn’t like the reality I’d spit back at him if given the opportunity. I’m not a verbal dancer of words, I will tell you how it is.

I’ll leave this post with two quotes I based off the book “Execution: The Discipline of Getting Things Done”.

“If everyone doesn’t commit to the changes they help make then the execution will not be successful.”

“An organization follows the behavior of its managers and leaders. If there’s no accountability or structure then people are going to do what they want, and cause execution to fail.”

It’s not that peachy Microsoft!

May29

In my last post I blogged about n-tier development and updating a dataset through a web service. Later that night I found the link from Microsoft showing how to update data through a web service. Well, I tried it out the next morning…Life is not as simple as they make it look! Trying to update that way ended up making my web service complain about the dataset not being the correct type, so I ended up using my first method. I also ended up adding a little extra flavor to the update webservice method so it’ll handle inserts, deletions, and updates. If I get the chance today I’ll post up the source code for that on my blog and also the snippets section of this website.

Happy coding, it’s almost the weekend!

AppStylist Bandwagon

May14

Since I’ve had the chance to get back to coding a little bit outside of work, I’ve dug into an unused program that comes with the NetAdvantage package. That app is called AppStylist. After I figured it out and read through the documentation for using what it generates I started going nuts styling all my applications. The results you can achieve with the presentation layer are quite stunning. I’m sure my clients will appreciate the new look.

One thing I haven’t figured out if it’s possible or not is the ability to remove a loaded style from the running application. A majority of the Infragistic controls are documented, but AppStylist seems to lack a little in that department. I’m sure trial and error will pay off sooner or later.

In other news, have any of you read what scientists are planning to do under the Alps? They managed to create a device that will blast particles together traveling at light speed to recreate the big bang. Now is it just me or this sounds incredibly stupid? To top it all off I’ve actually had a nightmare about it the same night I read the story. The idea of them possibly causing a catastrophic event just freaks me out. Microsoft asks you how would you move a mountain in their interview process, this sillyness might be a possible solution.

And When Friday Ended He Rested

May10

It’s great when Friday finally rolls around. Last week at this time I took Friday off and booked a king jacuzzi suite at a lake front resort on an island. Probably at this exact moment I was relaxing in the jacuzzi feeling so great to be a programmer and have the money to afford such a nice day. As always Monday came around too quickly and I was back at the grind again this week.

One of the crazier things that happened toward the end of the week is that one of the clients almost decided they wanted to combine two seperate companies into one database. It would have been a disaster for them if they decided to. Luckily, the right people and legal advisors stepped in and showed them how it would complicate and cause problems for everyone. Coming up this Monday is a meeting to talk about how they will conduct business now that they have two seperate companies. My boss is a way better speaker than myself, so he’s going to be a huge help when it comes to explaining to one particular manager how it will all operate. I’m too technical and complex for my own good sometimes.

Have any of you used the Infragistics NetAdvantage controls? I’ve had them for a few months now and they are the best thing I could have suggested buying. Their controls have so many features that clients wants and it’s more than easy to get something up and running. Even on my lunch break Friday I managed to whip up a demonstration for a client that does dynamic reporting based upon filters the user creates and can save or load back into the application. Infragistics does have some problems with documentation, but usually if you can’t find the reference in the help file someone has already asked on their forum.

Okay, enough rambling for now, I’m going to go and reply back to some comments I received. Thanks everyone that has commented on my posts before!

Last Minute Corporate Decisions

April29

One of the things I’ve come to know while being an application developer is that the people that run companies are the worst when it comes to finalizing plans or making decisions. If anyone reading this has an explanation of why they are so slow to make decisions, feel free to make a comment.

Last week one client decided they are going to open up a new company a little early in another state. In one weeks time I have to take the current software I designed that runs their business and alter it to work at both locations for either company. For example a manager could be in another state and pull up information for the other location all in the same program. That might cause you a bunch of stress when you have to make a huge change like that, but luckily it’s not as bad as it sounds.

I found a nice little trick (improper way) for achieving what I wanted when it came to dynamically switching database connection strings. If you were to open up Settings.settings in your project properties you’ll notice that the connection string has the type (Connection String). What I ended up doing was creating a combo box that lists the different companies, and when the user selects a different one it switches and saves the updated connection string. You might be thinking that it’s impossible considering that the scope is Application only, and you are correct. What I do before compiling the application is to switch that value to a String type and give it User scope. Now the user can use the program and change connection strings at his/her will.

If you need to make further edits and updates to the application, you’ll need to change back the type to (Connection String) and open up your App.config to add the provider. Which is:

providerName=”System.Data.SqlClient”

Add that back to your App.config connection string tag and you’ll be all set for editing data stuffs again.

In the near future I’m going to change the way I do this by creating a web service to serve out the datasets I need to access. This should also be useful for all my clients and give them the ability to access their SQL based application data from any location they have an internet connection.

Mind Blowing ReportViewer Control

March28

Bet you were expecting some great ReportViewer control weren’t you? ;) I could only wish there was one. Yesterday I managed to find another oddity in ReportViewer control for Visual Studio 2005. This time it dealt with custom code inside of a (local-embedded) report. I created a report for a client’s scrapped assets that needed to do some calculations based off values in the rows. After all was created and ran, I noticed in the ReportViewer that the totals didn’t compute or maybe even run. I pressed refresh and tadaaa my proper total appears. Now keep in mind that I have the report automatically refreshing in my C# code, but calculating values seems to require two refreshes. And this was what I had to insert of my code to get calculations to work perfectly:

Thread.Sleep(1000);
reportwindow.rptViewer.RefreshReport();
reportwindow.rptViewer.LocalReport.Refresh();

If you tried to change my two manual refreshes or take out the thread sleep, the calculations will not execute upon opening the report. Now, if the user decided to press refresh on his/her own then he’d realize the totals will double in value each time. Quite frankly I’m getting sick of doing work arounds for controls that should work in a little bit more stable fashion. I know Microsoft patched a couple of the problems with this control, but doesn’t it seem silly that there are so many more bugs in this control that weren’t even touched yet? Does anyone use Visual Studio 2008 and see that these types of problems are fixed?

My Time for ASP.NET 2.0 is Here

December17

Over the past two weeks I’ve been working with ASP.NET 2.0 to create a administration interface for a realestate auction company. This is the first time I’ve done any work with ASP development, and I’m really loving the C# integration. It took me less than day to realize that the calendar control was near useless when it comes to needing to work with time. Businesses always deal with time, and as to why Microsoft hasn’t added that feature to the calendar control is beyond me. Luckily with the integration of C# I was able to use a text box with some code to properly parse out the entered time.

When I first started the above project I used generic pages then worked in the authentication and cookies. Creating a cookie was fairly simple, but I spent 30 minutes figuring out how to get rid of the cookie or invalidate it. I might end up code snipping my solution to that issue. From my experience so far, ASP.NET is a really awesome development platform, and the integration with C# made everything really easy. There’s plenty more to explore and work out, so this journey has just begun.

Incompetent Clients and CEOs

September27

I’m finding out as I continue down this developer career path that some clients and *most* CEOs are completely incompetent. If you try following Joel’s (from Joel on Software) advice on estimating a project’s completion most CEOs and clients would eat you alive. I kind of gave up on that whole multiplying by 3 for an accurate measure.

Two days ago I had a meeting with a client and their CEO. Most of that meeting was great, but as eventually expected the CEO asks, how long will it take to complete? For all the continuious lists and lists of things they’d like, I gave a modest answer of 2 months. Currently, I’m working on their project 2-3 hours a day for 5 days a week usually (sometimes I have to switch and work on a different client). One other important thing to note is that this company doesn’t really pay their bill on time or at all. He instantly decides that is too long and wants to know what can be done to shorten the length of time. My body is pumping blood through the veins quicker than you can imagine at this point. Here I am stuck in a position of attempting to answer his question when it’s not really my decision of the time I’m allowed to work on his project, or to speak to him about his bill that he doesn’t pay. Somehow I fumbled through the rest meeting and left there quite pissed off.

Why can’t these people be a little more competent about the jobs and functions of their business, and also the 3rd parties they hire to do work for them. To successfully run a business you need to understand all the spectrums of what you are doing, right? For this specific CEO, I’ve heard him tell many stories and to my best understanding his business when created was great and the business partnerships he created were solid. His lack of taking the time to understand his business as it evolved over time is causing it to fall down slowly. His excuse is that he doesn’t have the tools necessary to run his business, and that’s one of the reasons why the development work I’m doing is so important for him to manage successfully. In actuality he’s had the proper tools all along, but is too incompetent to understand how to use them properly.

That’s enough rambling for now, if anyone manages to read all this please let me know what you think!

« Older Entries