﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule">
  <channel>
    <title>avonellelovhaug.com</title>
    <link>http://avonellelovhaug.com</link>
    <description>Avonelle Lovhaug</description>
    <copyright>Avonelle Lovhaug 2007</copyright>
    <generator>RSS Generated by Me</generator>
    <item>
      <title>Top 5 Programmers to Avoid</title>
      <link>http://www.avonellelovhaug.com/1399.aspx</link>
      <description><![CDATA[<P>If you’ve ever worked with a programmer, you know that some programmers are smart, funny, and can make your project successful. Other programmers can ruin a project, making everyone's life miserable in the process. Here’s my list of the top 5 programmers to avoid like they have contracted a scary disease.</P>
<P><STRONG>Know-it-all Nancy<BR></STRONG>Nancy has no interest in your input. In fact, Nancy will roll her eyes at you when you offer an opinion. Nancy thinks all her programs would work perfectly if it weren’t for the users.</P>
<P><STRONG>Jumpin’ Jack<BR></STRONG>Jack jumps in and makes changes without considering the implications. Unfortunately, this means that his fixes often break other things, or are ill-considered. Working with Jack means you’ll be spending as much time backing out&nbsp;of his "improvements"&nbsp;as implementing them.</P>
<P><STRONG>Slow Joe<BR></STRONG>Slow Joe is the opposite of Jack. Joe can’t complete any fix or enhancement without at least a&nbsp;year of analysis and study. We don’t know why Joe is so slow, but finding out would probably take too long. We have lives!</P>
<P><STRONG>Tongue-tied Ted<BR></STRONG>The reason why Ted became a programmer was because he thought he wouldn’t have to speak to people anymore. Unfortunately, Ted was wrong. Programmers need to communicate with end-users, project managers, business owners, and other programmers. And since Ted doesn’t like talking to people, he’s unlikely to ask the questions he needs to do a good job.</P>
<P><STRONG>Hacker Harry<BR></STRONG>Hacker Harry likes the idea of having power over the company. He thinks privacy rules don’t apply to him. So, he likes to hack into the server to read everyone’s email. He guesses passwords to access systems that he doesn't rights to. Harry likes the power he has knowing more about technology than others, and isn’t afraid to use it for his personal benefit.<BR></P>]]></description>
      <category>Tech vs. Business</category>
      <pubDate>Wed, 03 Sep 2008 22:20:15 GMT</pubDate>
    </item>
    <item>
      <title>Why You Need a Support Plan</title>
      <link>http://www.avonellelovhaug.com/1397.aspx</link>
      <description><![CDATA[<P>Just the other day I sent a proposal to one of my customers for ongoing support. I prefer to establish a flat-rate monthly support plan for my customers, which can be used for questions, troubleshooting, bug fixes, and emergencies. The flat rate arrangement is good for my customers, because they can budget for it appropriately. It is also nice for them, because they don't have&nbsp;to make an&nbsp;investment decision each time they call. ("Is this&nbsp;question worth&nbsp;getting charged?")&nbsp;I always prioritize my customers who have this kind of arrangement.</P>
<P>This post by <A href="http://www.smallbusinessbranding.com/author/lynette/">Lynette Chandler</A> at <A href="http://www.smallbusinessbranding.com/">Small Business Branding</A> covers <A href="http://www.smallbusinessbranding.com/1030/help-tech-support-the-sky-has-fallen/">why you&nbsp;need a plan for technical problems</A> <STRONG>before</STRONG> they happen.</P>]]></description>
      <category>Tech vs. Business</category>
      <pubDate>Fri, 22 Aug 2008 15:08:21 GMT</pubDate>
    </item>
    <item>
      <title>What everyone should know about bugs</title>
      <link>http://www.avonellelovhaug.com/1396.aspx</link>
      <description><![CDATA[<P>If you have never worked on a software development project before, you may be completely shocked during the first testing session. I guarantee that you will find a bug in the system within the first hour. In fact, you are likely to find something you didn't expect in the first 10 minutes.</P>
<P>This may&nbsp;trigger a panic attack in you. I know exactly what you are thinking: <EM>What happened?&nbsp;Didn't the programmer test at all? Did we hire the wrong person? We are doomed!</EM></P>
<P>Calm down. Take a deep breath.</P>
<P>Let me give you some information about&nbsp;software bugs that will help you traverse this scary time.&nbsp;</P>
<P><STRONG>First, finding bugs is normal.</STRONG> In most software projects, a programmer (or team of programmers) write the code and do a lot of their own testing. However, fairly quickly in the process they develop blind spots. They&nbsp;start testing using the same&nbsp;steps, and they miss the steps that you used. That's why it is critical that someone who is not the programmer&nbsp;test the software.</P>
<P><STRONG>Second, a good programmer HATES&nbsp;bugs</STRONG>. Despises them. And&nbsp;wants to kill them dead, er, fix them.&nbsp;Quickly. </P>
<P><STRONG>Third, a programmer needs information to fix bugs.&nbsp;</STRONG>He needs to know <A href="http://www.avonellelovhaug.com/1348.aspx">what happened and what you expected</A> to happen.&nbsp;He needs to&nbsp;know&nbsp;how to&nbsp;reproduce the&nbsp;problem so that it can be fixed.&nbsp;(Here are <A href="http://itscommonsensestupid.blogspot.com/2008/07/tips-to-write-good-bug-report.html">some tips</A> for writing really good bug reports.)</P>
<P>If you have provided a good bug report, and the programmer reports that the bug is fixed but it isn't, now you can panic. Well, actually no, you don't need to panic unless this happens repeatedly. </P>
<P>Let me tell you a secret: While I hate bugs, I'm actually happy when my users report&nbsp;bugs during the testing phase of a project. When users find bugs during testing, that means we'll get them fixed before we go live. I have seen plenty of projects where the software was not sufficiently tested up-front, and went into production with lots of bugs. It is better to find those problems early and resolve them, than to subject lots of users to them later.</P>]]></description>
      <category>Think Like a Geek</category>
      <pubDate>Tue, 19 Aug 2008 21:51:14 GMT</pubDate>
    </item>
    <item>
      <title>How to tell if an estimate sucks</title>
      <link>http://www.avonellelovhaug.com/1395.aspx</link>
      <description><![CDATA[<P>Even if you aren't paying for custom software on an hourly basis, you probably still care about how long it will take for the programmer to complete the work. After all, you <A href="http://www.avonellelovhaug.com/">hire&nbsp;a programmer</A> because you&nbsp;think custom software will add to your bottom line, either by saving you money or increasing your marketshare. So every day without your new software is costing you cash.</P>
<P>Programmers are notorious for missing deadlines and taking longer than they promised. So if programmer says they will be done with your project by X date, how can you tell if they are just blowing smoke or if they really know?</P>
<P><STRONG>Sync your terms.</STRONG> Sometimes the problem is really a question of interpretation. The programmer says "I'll be done on June 1st", and you think "Cool - we can start using it then!" But really, the programmer just meant the initial code would be done on that date, and wasn't referring to set-up, testing, deployment, or training - all additional tasks that must be completed. So, when you&nbsp;talk with the programmer about milestone dates and deadlines, make sure you are speaking the same language. Ask specifically about when you'll be able to use the software "live" or "in production".</P>
<P><STRONG>Pay attention to the trees.</STRONG>&nbsp;Don't just focus on the "forest" or end goal.&nbsp;A good programmer knows that there are a lot of intermediary steps that occur in any software project. They should be able to provide you details and estimated completion dates for each step in the process. You want this for two reasons. First, there may be tasks for you or your staff to complete in this process, such as testing or entering products for an online catalog. You may learn that the programmer will be fine, but you'll need an additional week to complete your tasks. Second, uses this opportunity to probe further. You may not know anything about programming, but you probably have some sense of what is going to be complex. Ask questions about the details you have received to make sure you understand what to expect. A good programmer will welcome the opportunity to double check their understanding of the requirements with you.</P>
<P><STRONG>Ask their references.</STRONG> When you talk to their references (you are checking them, right?) make sure to ask about how well they did with the deadlines. Some programmers aren't good at estimates, and others aren't experienced.&nbsp;</P>
<P>Estimates are always tricky, and don't expect the developer you select to be perfect every time. But you <STRONG>can</STRONG> expect that they will work hard to meet the commitments they have made to you, and will let you know if they can't.&nbsp;&nbsp;</P>]]></description>
      <category>Business</category>
      <pubDate>Mon, 11 Aug 2008 22:38:44 GMT</pubDate>
    </item>
    <item>
      <title>The Secret to Building a Crappy User Interface</title>
      <link>http://www.avonellelovhaug.com/1392.aspx</link>
      <description><![CDATA[<P>If you are like me, you have seen your share of really bad web applications. You have probably wondered "How could anyone design something this crappy?"</P>
<P>I am going to tell you.</P>
<P>The secret to designing a really awful&nbsp;user interface is to&nbsp;think like a geek and not like an end-user.</P>
<P>That's it. </P>
<P>I'll give you an example you will see on many e-commerce sites. Many of these sites don't let you enter a credit card number with dashes or spaces. Believe me when I tell you that there is no good reason why sites do this, and it makes it much harder for users to enter the correct number because they can't easily break it down into managable chunks. (Here's the <A href="http://www.unixwiz.net/ndos-shame.html">No Dashes or Spaces Hall of Shame</A>, in case you are interested in seeing examples of several companies that do this.)</P>
<P>This is what comes of thinking like a programmer. The programmer went "hey, I need to send this to the payment processing company without those spaces or dashes, so it will be better if they just don't enter them. Or, they didn't want to write a bunch of complicated validation logic for each type of credit card number. Unfortunately, they just ended up with software that was harder to use.</P>
<P>Of course, getting into the head of your users isn't easy. But if you want really great software, you have to be able to think like they do. </P>]]></description>
      <category>Tech vs. Business</category>
      <pubDate>Thu, 07 Aug 2008 20:59:50 GMT</pubDate>
    </item>
    <item>
      <title>The Secret to Programming Methodologies</title>
      <link>http://www.avonellelovhaug.com/1387.aspx</link>
      <description><![CDATA[<P>When you talk to programmers, sometimes they will talk about methodologies. In fact, some programmers will go on and on and on about them. If you are hiring, they may tell you that they use “agile” practices or “waterfall”. As your eyes glaze over, you may correctly wonder “do I need to care?”</P>
<P>The answer is: <STRONG>No</STRONG>.</P>
<P>The question of methodologies can make a lot of programmers very religious. I’ve seen perfectly normal people get quite aggressive when they started talking about their chosen software development approach. Even the sales people for consulting firms can say quite pompously “We use only agile methodologies in our software development projects” as if they were talking about gold or something. Geez!</P>
<P>If you are not technical and are trying to <A href="http://www.avonellelovhaug.com">select a programmer</A> or team for your project, don’t worry about methodologies. Using a particular methodology is no guarantee of success.</P>
<P>Instead, focus on proven results. Ask to speak to their references. Hopefully these are organizations with projects that are similar to yours. IF you are building an online store that will need to service thousands of transactions a minute, then talk to a customer with a similar online store they built. Or if your project is a cool new iPhone app, then find out what kind of iPhone development experience they have.</P>
<P>If you want a successful software project, using programmers with proven track records will increase your chances.</P>
<P><FONT color=#ffff00>Yeah, but Avonelle, what do all those methodologies mean?</FONT></P>
<P>Okay, just because you asked for it, here is some very basic info on software development methodologies:</P>
<P>There are lots and lots of “<A href="http://en.wikipedia.org/wiki/Software_development_process">methodologies</A>”, but they can be organized into two groups:</P>
<UL>
<LI><A href="http://en.wikipedia.org/wiki/Waterfall_model">Waterfall</A> processes</LI>
<LI><A href="http://en.wikipedia.org/wiki/Iterative_development">Iterative</A> processes</LI></UL>
<P>With a waterfall approach, system development is very orderly. You start by defining requirements, then create a big design (usually a long document or set of documents), then write code, then test/fix the code, then deploy it. Done. Once you move to the next step, you don’t usually go back to a previous step. Sometimes people call this approach <A href="http://en.wikipedia.org/wiki/Big_Design_Up_Front">BDUF</A> (big design up front).</P>
<P>With an interative approach, software is developed in several “iterations” of usually 2-4 weeks long. Each iteration includes planning, requirements, design, coding, testing, and deployment. With an iterative approach, it is thought that issues and misunderstandings about requirements can be more quickly identified and addressed than a traditional waterfall approach. (Some iterative approaches include <A href="http://en.wikipedia.org/wiki/Agile_software_development">agile</A> and <A href="http://en.wikipedia.org/wiki/Scrum_%28development%29">scrum</A>.)</P>
<P>Again, I don’t think you need to worry about these things, but since you asked…<BR></P>]]></description>
      <category>Tech vs. Business</category>
      <pubDate>Thu, 17 Jul 2008 21:59:26 GMT</pubDate>
    </item>
    <item>
      <title>The Problem with Selecting the Lowest Bidder</title>
      <link>http://www.avonellelovhaug.com/1382.aspx</link>
      <description><![CDATA[<P>None of us wants to pay more than necessary for anything, including&nbsp;programming services. Sometimes the lowest bid is a great deal; sometimes it isn't. Here are some things to consider when comparing bids for software development:</P>
<P><STRONG>Compare apples to apples. </STRONG>Make sure the bids you are comparing are all fixed bids, and not hourly rates (even with an accompanying estimate.) Because estimates are not typically binding, and every developer works at a different speed, hourly rates are a more way to compare bids.</P>
<P><STRONG>What's included?</STRONG> Make sure you thoroughly understand what is included in each bid. Here are some things that might be extra in some bids and not in others: </P>
<UL>
<LI>Hosting costs</LI>
<LI>Status meetings/reports</LI>
<LI>Third party development tools</LI>
<LI>Source code backups</LI>
<LI>Ongoing support/bug fixes</LI></UL>
<P><STRONG>Making contact.</STRONG> Some programmers will be willing to work in your office or at least occasionally visit. Others may charge extra for this service, or may not provide it at all. And some will be able to guarantee response times for questions and changes, and some will not. As you approach deployment of your project, knowing that the programmer will prioritize your application issues may make a big difference if you are coordinating a public roll-out.</P>
<P>Make sure to ask lots of questions so that you can more completely compare the bids you receive for your project.</P>]]></description>
      <category>Business</category>
      <pubDate>Fri, 11 Jul 2008 20:07:32 GMT</pubDate>
    </item>
    <item>
      <title>Risky Business</title>
      <link>http://www.avonellelovhaug.com/1380.aspx</link>
      <description><![CDATA[<P><A href="http://www.37signals.com/svn/">Ryan at 37signals</A> recently posted on <A href="http://www.37signals.com/svn/posts/1118-features-are-a-one-way-street">the dangers of adding new features</A> to software. Once a new feature is added, it is difficult to remove even if it doesn't work well and not utilized by the majority of your users. The problem is that SOME users will likely become frustrated when the feature is removed.</P>
<P>Ryan suggests that this should inspire you to be very careful about the features you implement. I think this advice depends a lot on the size/impact of the feature, but his point is valid.</P>
<P>The problem is - what should be done if the feature IS clunky and difficult to support? The application we recently deployed is designed to replace a couple of existing applications and processes that had been in place for years. It has a better underlying data structure, and a more streamlined user interface. But it also removes some features, like automatic faxing of reports to subscribers. </P>
<P>Will users be comfortable switching to the new system? Only time will tell. It was a risky decision and the customer spent time evaluating the alternatives, but ultimately for my customer, the decision was about limited resources and how to best serve their community. </P>]]></description>
      <category>Tech vs. Business</category>
      <pubDate>Thu, 03 Jul 2008 18:57:42 GMT</pubDate>
    </item>
  </channel>
</rss>