Site Meter Web Dev Notes » Design

Design

Nine Causes of Software Error

Saturday, May 17th, 2008

Error message box

The majority of defects in a software system are introduced in the earlier stages of development. Requirements are the top factor in a projects success or failure. It is therefore very important to spend a lot of time prior to development discovering the needs of the users and the requirements the system will need to satisfy in order to avoid large time consuming problems in the future.

Another important thing to note is that the cost of fixing defects or problems discovered is significantly less the earlier they are discovered. The saying time is money is no stranger to software development. Web development is no exception to these rules!

Here is a list of nine common causes of software errors that you should look out for and try to avoid!

    Nine Causes of Software Errors

  • Faulty requirements definition
  • Documentation errors
  • Client-developer communication failures
  • Deliberate deviations from software requirements
  • Logical design errors
  • Coding errors
  • Non-compliance with documentation and coding instructions
  • Short-comings of the testing process
  • User interface and procedure errors

Three General Principles of Quality Assurance

Friday, May 16th, 2008

The following are three general principles of quality assurance which I learned about at University and which I have found to be very important to keep in mind. Every now and then, you should take a moment to sit back and ask yourself the following:

  • Do you know what you are doing?
  • Do you know what you should be doing?
  • Do you know what the difference is between both?

The first question is pretty straight forward. Of course, you know what you are doing, because you are in the process of doing it! The point here is to actually take a minute to think about what you are doing right now so that you can then better determine if you should keep doing it. Remember, you should be doing something to satisfy the requirements as specified by your users!

Once you have identified what you are currently doing, take a moment to look back over your requirements and see exactly what you should be doing. Its amazing how easily we can steer ourselves off in the wrong direction. This is often the result of some geeky desire to make something incredibly cool and awesome, which can be fun but potentially disastrous to a project.

Finally, now that you know what you are doing and what you should be doing, you can identify where you are heading in the wrong direction and fix the problem as soon as possible.

I know I know, it sounds like common sense, but it’s not as simple as you may think. How do you actually measure the difference between both? It’s not always going to be a clear cut situation! You will need to use certain methods which may be mathematical formulas, testing, inspection or metrics.

When in doubt, always go back to your users. Software development is all about the users. You can be the greatest programmer in the world, but your knowledge will be useless in practice unless people use the resources you develop!

Set Realistic Goals and Reach Them

Wednesday, April 23rd, 2008

Part of being successful is being realistic. If you have certain goals you really want to reach, don’t just set out to get them blindly. Identify your final target goal, then plan smaller, more realistic steps to help set you on the path to reaching the ultimate goal.

If you set your goals too high right from the start, you’ll never reach them!

128295832083907500cantreach.jpg

Are we Building the Right Product?

Monday, March 31st, 2008

As we work on developing a resource, we often sit back and ask ourselves, “Are we building the product right?”. This is extremely important to do as often as possible to ensure that we are consistently meeting our requirements.

However, at one point in the development process, we also need to take a moment to ask, “Are we Building the Right Product?”. Sometimes, even our users don’t exactly know what the right product is, so although we may be building the product right according to the requirements, we may still be building the wrong product!

So how do we avoid this problem? Keep on interacting with your users throughout the development process to get continuous feedback. Have your users test what you have done thus far and help them better discover their needs. Remember, you want them to use the product once it is finished.

Sure, you can always build exactly what they initially asked for, hand it to them, take your pay check and run… But wouldn’t you rather they recommend you to others or potentially hire you again in the future? And if you are developing internal software instead? Do you really want your boss to tell you that you need to start over or possibly even fire you? Probably not!

You are responsible for your software, take pride in developing it!

Using Personas During Development

Saturday, March 29th, 2008

Customer personas

A few days ago I mentioned personas and promised to go into more details on a future date. Today, I am happy to announce that we have finally reached that future date! The image above is from Occam’s Razaor by Avinash Kaushik. You can click the image to read the article it is from for even more in depth information about personas.

So what are personas exactly you ask? Well, persona’s are basically fictional characters. Now before you go ahead and think I am crazy, let me explain how these fictional characters can help you with any kind of development! Developing a web site or application can be a lot of fun, but sometimes we can get carried away and lose sight of our real goals. Our ultimate goal is to satisfy the needs of our users, so its important to remember who they are while we develop.

Unfortunately, we often forget about our users while developing because we rarely get a chance to interact with them. In some cases, we develop a web site or a blog without even thinking about who will read it. We just sort of hope these users will show up once we are done! That is definitely a mistake. You need to know your audience ahead of time. Even when we do know our audience, we still often run into problems because we generalize them all into a single category. With persona’s, we help ourselves remember our users by giving them more personality.

A persona is therefore a fictional character who represents a group of users who will be using the website or application you are developing. Already, rather than just having “users”, we force ourselves to break these down into groups of similar users. Now, so we don’t forget these groups of users, we give them names, lives, and personalities, so that we keep them in mind while developing!

If you’d like to know more about personas and are interested in using them, visit Usability.gov. This website is definitely a great resource and will get you started creating your own personas quickly. There is even and example allowing you to meet Matthew Johnson!

The Pesticide Paradox

Monday, March 24th, 2008

Pesticide

We have all heard of insect resistance to pesticides at one point or another. When pesticides are used to kill insects, those that are the most resistant to the pesticide are those which manage to survive, at least long enough to reproduce. This means, that the next generation of insects are more likely to be resistant to pesticides because they will have inherited resistance from their parents. Over time, the most resistant insects will continually survive and reproduce until eventually the entire population will be resistant.

Similarly with software development, a system will tend to build resistance against a particular testing technique.

What the heck am I talking about? Bugs of course! If you are the manager of a team of developers, and these developers know the testing techniques that will be used to find bugs in the code they develop, then these programmers will quickly learn to avoid creating such bugs to avoid being the one responsible for faults in the system.

While this may seem like a good thing, it could be problematic because testing will now suddenly stop finding bugs! If those working on the software forget that testing cannot prove the absence of bugs, they may then believe that their system is of higher quality than it really is.

Human error is inevitable, and if the programmers know the testing technique because it is always the same one used, what will happen is that the code will be written in a different way such that the bugs are displaced to different areas, but not eliminated. This of course it not intentional, but while focusing on eliminating one type of bug that they know will be found, other bugs will be created.

Most developers know, we rarely fix one bug without creating a few others to replace it! In large systems, bugs can often be difficult to detect, so change your testing technique from time to time to ensure that you release higher quality software.

Learn How To Fit 67 Articles Inside One

Saturday, March 22nd, 2008

Remember back in April when I became the new writer for Web Dev Notes? I started off by introducing Joomla, PHP-Nuke, phpBB and PHP. I even recommended some cool software like the ALT-Tab Replacer, Virtual Desktop Manager and the Firebug plugin for Firefox. After a slow start, I finally got my big break when my article Formatting Text in Wordpress started to bring in steady traffic!

In my early Web Dev Notes days I stuck to covering more technical topics such as how to insert CSS on your website or how to create your first PHP page. However, after testing out the use of humor in posts like the Top Ten Stupidest Joomla! Administrator Tricks and When will GoogleBot index my Brain I discovered that this unique approach was actually quite well received! I also realized website marketing and SEO was a very popular aspect of web development so I decided to venture into this area with posts like The Battle for Traffic - SEO vs Content, No Contacts, No Money and Validate Your Website for Better SEO!

Of course, even though I would later discover that marketing and SEO would be a very popular topic on my blog, at the time I had no idea yet! Looking at my stats, the posts about PHP were the most trafficked so I decided to cover this area more extensively! In May I introduced some great web development resources and then discussed the relationship between PHP and a Web Server/Browser in order to build a solid foundation before diving right into PHP for the rest of the month. I then covered how to comment PHP code, the debate over using Print or Echo, how to use variables, how to use concatenation with variables and variable naming conventions. Using this introductory material, I was then able to go even deeper and cover topics like using arrays, if/else programming logic, nested IF/ELSE conditional statements, and PHP Loops. Since the topic of loops is already an extensively covered subject, I decided to make my articles sound unique by naming them, “The magic of WHILE Loops“, “The incredible FOR Loop Multi-Tasker“, and “The FOREACH Loop Love Affair with Mr. Array“.

In order to stay informed, I subscribed to many RSS feeds relating to my topic. In so doing I noticed that Digg and Google were two very popular topics. I decided to explore these subjects a bit with articles like, “List of Google Hoaxes“, “Who’s Digging You?“, “Google’s PageRank Explained by Phil Craven“, “Declare Warr on Digg Doondles!“, “I Hacked Google and Stole Their Robot lolol“, and “Are Your Archives Burying You Worse Than Digg“. These articles continue to bring in traffic to this day!

During the month of June I was taking a course on Interface Design so decided to cover similar topics on Web Dev Notes. I began by discussing the advantages of using personas during development and then decided to list nine causes of software error before discussing software quality and the three general principles of quality assurance. I introduced the subject of human/computer interaction and demonstrated how good design can help us better interact with computers. In fact, making the interaction between humans and computers as easy as possible is an important goal of improved user interface design. I also mentioned that building the right product is even more important than building a product right.

It was around mid-June when I also began to notice how well my SEO, blogging and marketing tips posts were doing! I therefore decided to write about the guaranteed way to generate incoming links and conquering the crowded niche! I also wrote about some issues I was having with trying to follow my own advice when I noticed my trackbacks were being kidnapped and asked if it were possible if my bullets were killing them! Not wanting to stray too far from the very roots of web development, I also introduced the Pixel Groovy website, discussed how to created animated favicons and threw in 21 CSS tutorials answering frequently asked questions.

During the month of July I continued to cover a lot of marketing topics. I created a new Top 11 Posts section and asked if people thought linking to other sites increases incoming traffic. I also started to learn a great deal about blogging and realized that my very own archives contained in itself the power to help WebDevNotes succeed. I therefore stopped considering old posts like dirty socks thrown into a laundry bin, and instead began viewing them as cornerstone content that should be linked back to frequently so that new visitors could access my best content easily.

128298538306407500iminursoxst.jpg

Upon making this realization, I began offering my visitors some blogging advice with the help of Lolcats to make the posts more fun and easy to read. For example:

Don’t let Chihuahua’s hold back your website! Start working with the purrrrfect partners and plot your plan for success. Make sure you plant the seeds for success early and listen to feedback so you can feed your readers a happy meal. Make good use of article directories and other marketing techniques and never forget the secrets to writing a successful blog!

In conclusion, to those who say linking to old content is difficult, I beg to differ! Don’t let those archives go to waste ;)

How to Create Animated Favicons

Wednesday, March 19th, 2008

favicon

First things first, what is a favicon you ask? A favicon is the small icon that you see in the URL field in your browser when visiting a website. Depending on the versions of your browser, when you bookmark a page, you will also see the websites favicon when looking through your bookmarks. If you look up into your URL field right now, you will see that the favicon for this particular website is the 451press logo, which consists of a red square with white flames.

I’m sure you’ve seen plenty of favicons while browsing the internet as they are becoming more and more common. However, have you ever seen an animated favicon? That is to say, have you ever seen one that shows a moving image? It’s actually quite easy to do!

To add a favicon to your website, all you need to do is create an icon named favicon.ico and put it in the root directory of your website. It will then automatically show up for all users visiting your site! Pretty simple.

So how do you create this favicon.ico file? For more advanced users, you can draw it in Photoshop. If you do this, you will need to download a plugin which will allow you to save in .ico format. Of course, I have found that you can just save as favicon.gif, then rename the file to favicon.ico and it will still load in all browsers. Please note, for your favicon to work, it must be exactly 16×16 pixels.

There is however a great alternative for users who just wish to generate a favicon from an image file. HTML-kit.com offers a great tool which will let you choose an image file on your computer and have it converted into a favicon for you. All you will then need to do is save the file it generates and upload it to your server in your root directory.

Great, now you know how to create a favicon and where to put it. The next question is, how do you make it animated? Well, .gif files can actually be made into animations. Again, you can use Photoshop to create animated .gif images. You can also visit GifAnimations.com if you are looking for some free animations you can use. To use your animated .gif file as your favicon, you will need to then use the following code on your webpage:

<link href=�images/favico.gif� TYPE=�image/gif� REL=�icon�>

If you’d like to see an animated favicon in action, visit Pod1.

So why bother using an animated favicon? Well, since the favicon will be displayed when a user is browsing through their bookmarks, the fact that yours is animated may make it stand out a bit more and this could help remind visitors to visit your website more often!

How to Start that Big Development Project

Tuesday, March 18th, 2008

Development Process

About to begin that big development project? Where do you begin? It’s important to discover exactly what needs to be developed before you develop it, so start by collecting information. This information will help you answer the question, are you building the right product?

Here are some things you will need to identify and write down:

1. The people who are involved with the work - You are developing a program or tool that will be used by users for a specific purpose. Who are these users? Who they are will affect how you program.

2. The thing the people you identified above use to do their work - You are being asked to develop a program or tool most likely with the hopes of making a task easier for workers. In order to find the best solution, you need to understand how the people are currently solving the problem. What program are they using to do the work right now?

3. The processes that are involved with the work - You need to have a good understanding of all the processes needed to complete a task. If the work the users are doing involve multiple steps, you need to make sure the program coordinates all of these tasks effectively.

4. The information required to do the work - You could make a great program, but it can be totally useless if it doesn’t provide the information required to do the work. Identify the information the users will need and find a way to make it available within the program. If the users need to look elsewhere for the information, they may look elsewhere for the entire solution as well.

5. The inputs required to do the work - You need to find out exactly what sort of information will be input into the system before you begin creating the system. You don’t want to reach a point near the end of development and realize the entire thing is useless because users cannot include vital information! While a keyboard and mouse are also common input devices, you may find that your users specifically also need a webcam or microphone input device to complete certain tasks.

6. The outputs created by the work - Fairly logical, but still necessary to discover! How will you manipulate the users data to provide useful results? What is the end goal the users hope to reach by using the program you are developing?

Once you have discovered all the necessary information, you then need to begin interpreting it!

1. Create descriptions of the people who do the work - Do this by creating personas for all of the main groups of users that will likely be using the system.

2. Describe the different goals involved with the work - Based on the information you collected, you should be able to identify all the goals the different users hope to accomplish by using the system. You need to know all of these, as this is what you will be developing your program to do!

3. Document the work step by step - We all hate documents, but if you want to save time and money, get the job done right the first time and write down exactly what you need to do. According to the Nine Causes of Software Error, faulty requirements and documentation errors are the leading causes of bugs and errors.

4. Create different scenarios regarding how various aspects of the work are done - By now, you have identified different types of users, you know what each of their goals are with respect to using the system and you have written down step by step processes to achieving these goals. Now, how do you combine all this information logically? Think about how the work is done by the users. If one user is using the system to enter available inventory and another is selling the inventory that is available, the program you develop needs to coordinate this logically such that the total inventory count is correct! What happens if you have 10 toasters and you sell one while Bob is counting boxes in the stock room? Then Bob goes to his computer and types in 10 toasters, while Joe hands one to a customer and there is really 9! Later that day, Joe will sell someone a toaster when there are none left!

5. Create charts and diagrams showing the work flow - If you’re working on a large project, you need charts to show the entire work flow. This makes it much easier to see and find the associations between various methods.

6. Trace the different scenarios, the different people, and their work descriptions through the charts and diagrams - Make sure all the users can in fact reach their goals by tracing paths through the charts you created. If all users can reach and accomplish all of their possible work tasks, you’re on the right track!

As you can see, when you’re working on a large project, there is plenty to do before you even write a single line of code. Many people like to jump to coding and creating prototypes right away in order to get user feedback more quickly. This is a mistake. Don’t waste your time creating something the users will ask you to change or modify once you show them. If you know what they want from the start, this will limit the amount of modifications you will need to make after the users get to test the software. When in doubt, look back to the Three General Principles of Quality Assurance to make sure you are on the right track!

Update: If you’re about to begin work on a software project, do not underestimate the importance of Software Project Management. Project Management plays a HUUUUUGE role in the final success or failure of a project. Read this article from Software-Engineer-Training.com which provides an Introduction to Software Project Management.

Are Your Archives Burying You Worse Than Digg?

Wednesday, January 30th, 2008

Archives

Greetings fellow bloggers, web developers and entreprenurs. Today, I’d like to bring up and important topic which may be holding back certain websites. Are your archives burying you worse than Digg?

This question is only relevant to certain types of blogs and websites. If your site is news focussed, this is not really a big issue for you. News websites require frequent updates with current news relating to the topic in order to be successful. However, other blogs and websites may be more focussed on tutorials and information which remains relevant regardless of it’s age.

Take this blog here for example. I have written some basic getting started with PHP tutorials which some people found useful when they were first posted. PHP has not changed since I wrote the articles, so they would still be useful today. If I’m lucky search engines will send those posts some traffic or another site will link to them. However, if I am not lucky, the post will be buried deep in my archives and users may never find the information again.

If I wrote a post reporting about Paris Hilton going to jail, I wouldn’t care if the information was buried forever, because today the post is old news. However, when you have written some really exceptional posts that are still relevant and useful today, you need to make sure they don’t get lost. Many websites therefore often link to their top articles in the header of their website or in a menu which is very visible. If the top posts are good, these websites have a better chance of getting their visitors to come back!

If you cannot edit the theme of your website or blog to include a top posts list, you should consider writing a post from time to time letting your visitors know about some of your best articles! Make sure your best material is read more often!

For an example of what I am talking about, visit the very successful problogger.com website. You’ll notice in the top left corner right below the website logo is a list of some of Darrens most popular articles. If you check the dates, some were written as early as 2004!

I’ve now been writing this blog for three months with a minimum of five posts per week! Thats over 60 articles, many of which are starting to get buried deep in the archives! Now that I have put in place a solid foundation, I also need to start following my own advice and help my visitors find the best of my older articles. I cannot edit my theme for this particular site, so from time to time I’ll now start writing a new series of articles titled, “Top 11 WebDev Articles”. Why 11? It’s my lucky number!

I’ve already explained why this would be a good idea, but here’s another example just to further stress why this is important. One of my more popular articles is related to formatting text in Wordpress. This article helped many people at the time and is still relevant today. The article also gets some search engine traffic, so I know its information people are still looking for and need! This is therefore an example of the type of post I would want to include in my top list!

Also remember, good internal linking will help search engines better crawl your website, help increase your page rank, and help increase your page views and readership! Just put yourself in your visitors shoes. If they visited your website and enjoyed your posts, they will then be very eager to find a list of your top articles to read those too!

About Web Dev Notes

Your one stop destination for anything and everything related to web development

Web Dev Notes Author(s)

Blogging Flair

New Media, Web 2.0 Channel Posts

  • 10 Ways to Make Sure Your SEO Goes Out of Its Way for You
    If they want to have success, companies should do everything they can to ensure that their SEO firm doesn't provide lousy service. Here are 10 tips to keep in mind: 1. Be realistic. Don't waste your [...]
  • Podcasting Transcription
    A Guest Post from Tishia Lee of Tishia Saves Time: When I first started offering transcription services as part of my Virtual Assistant business, transcribing podcasts was not something I [...]
  • Don't Dabble - Make A Commitment
    If you want to get the best bang for your buck, plan on podcasting for the long haul. Podcasters who “test” things out with one or two podcasts and then give up may think that they've given [...]
  • A Question of Podcasting Frequency
    This follows up on yesterday's post about not dabbling in podcasting but rather to make a commitment. Podcasting on a schedule is important when building a community and an audience. Don’t have [...]
  • Do You Twitter About Your Podcast?
    Whenever I release a new episode of Work at Home Moms Talk Radio is pop the link up on my Twitter and invite my followers to come check it out. This has brought me several first time listeners which [...]
  • Looking for Podcast Outsourcing?
    I mentioned having my podcast audio's transcribed in my last post. In case you wonder - no, I do not transcribe them myself. (Shudder the thought - I did enough transcription to last a lifetime in [...]
  • Business Podcasting Benefit: Be An Industry Thought Leader
    I often ask people 'Why haven't you started your podcast yet?' and a common reply is 'I don't feel like I'm enough of an expert to cover the topic I'm interested in.' Enough of an expert? [...]
  • Business Podcasting Benefit: More Content
    Building a business on the web requires that you generate a lot of content. Content on your website draws traffic both through search engines (people searching for your content) and through links [...]
  • Business Podcasting Benefit: Deeper Relationships
    A website visitor is just a website visitor. You can't really say that you have a relationship with someone who has only visited your website can you? But when the web visitor subscribes to [...]
  • Business Podcasting Benefit: Increased Market Exposure
    When you consider how many millions of people are walking around with iPods and other Mp3 players you have to wonder, wouldn't it be awesome if they came looking for you? Well they do. Ipod [...]

Hot Off The Press


Warning: Unknown: write failed: No space left on device (28) in Unknown on line 0

Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct () in Unknown on line 0