Spam on the Side

For a while now, I have been on a warpath against spam in my inbox. A couple of years ago, I started setting up an elaborate series of filters in an effort to funnel unwanted email to folders I would ignore until needed. I spent a great deal of time crafting the perfect filters and making tweaks to the algorithms as email flowed through the filters landing in various folders. Even after all that effort, unwanted email would find its way to my inbox. At other times, important email from clients, family or friends would be trapped by the filters and sent to some obscure folder only to be found when I went searching for it (after being told, indignantly, by the sender that I should check my spam folder). These cases were not the ideal solution. But neither was wasting time every day trying to pick out the important emails in an inbox filled with junk.

In truth much of the “spam” that hits my inbox is email that at some point over the past three decades, I signed up for and then forgot why. Maybe I signed up to get something free, or download a white paper, or at the time was actually interested in a specific product or company. Call it collateral damage from a lifelong affliction of shiny object syndrome (SOS). I have long since forgotten why I “opt-ed in” and yet the email keeps coming in. It’s unrelenting.

I have had friends and colleagues over the years who gave up. They changed email addresses, abandoning the old address to the hoards of spam. That is ultimate defeat. I will never surrender. But I must admit that my 3-decade spam war was beginning to wear me down.

When I realized how much time I was spending crafting filters, I said to myself there has to be a better way. There I was, staring into the blue glow of my computer monitor at the beginning of another day. The email was streaming in like a stampede of cattle through the only gate out of the pasture. I sat there staring at all of the offending emails which made their way past the gauntlet of my “well-crafted” guardian filters and landed in my inbox. They were staring back at me. They were taunting me as if they knew there was nothing I could do to stop them. Like a Wild West gunslinger’s fingers lightly touching the gun in his holster before a quick draw showdown, my fingers hovered slightly above the mouse, twitching, waiting to pounce. In that moment, I knew I was losing the war.

Then I saw it. There on the bottom row of the e-mail in tiny print was the single word of my salvation. It had been there all along, waiting to be discovered. It quietly whispered, “unsubscribe”.

A glimmer of hope flared in my eye and my trigger fingers froze. I had the thought, “it can’t be that easy”. In spite of my better judgment I clicked on the link. In less than a couple of seconds the link open a browser window and took me to a single page. The page read “are you sure”? And below it a button reading “click to confirm”. It was quick and painless and easy. They said they were sorry to see me go.

The emotion of frustration and hopelessness of losing the long fought battle was gone. The angry gunslinger was at peace. What was left was a hint of remorse. I had the thought: if I don’t get the e-mail I might be missing out on something. That thought passed quickly. After all, I hadn’t read e-mail from that company in years.

Like an army general fueled by a second wind and with a new weapon to fight his old foe, I proceeded to open each email, search feverishly for the unsubscribe link and click it. I moved quickly. Unsubscribe. Confirm. Delete. I moved through the emails swiftly, cutting each one down in turn.

The next several days, I took the time to religiously click on unsubscribe in any email it hit my inbox that I had not been reading, could not remember where it came from, or did not know why I was getting it.

I must admit, my attitude regarding spam is definitely old school. I can remember back in the late 80′s and early 90′s, spam was just something we dealt with. We had to tolerate it. Back then, you certainly wouldn’t want to click on an unsubscribe link, even in the unlikely event you could find one, because that would just alert the offending sender that they had a valid e-mail address.

To my surprise, over the next several days and weeks, I began getting less and less email. I noticed it right away with the companies who sent daily (or even seemingly more frequent) emails.

Today, my filters are history. And victory is mine.

There may have been a time in the past when companies brag about having a large email list. Now in the era of social marketing, companies are looking for fanatical followers, not a “list”. Companies want their customers to know they matter. A list of a thousand fanatical customers has the potential to generate far more than a list of 100,000 or even a million disinterested souls. Companies, at least most legitimate companies, would rather you not be on their list if you have no interest.

Today there are a lot of tools, like Vertical Response and Constant Contact that make it effective for even the smallest business to manage their email marketing campaigns in such a way that will delight their customers and not intrude into the lives of people who are not interested in being their customers.

And we should give credit where credit is due. There are many law enforcement agencies around the world who have worked hard and had some legal victories to shut down the largest spammers.

It is up to us, the all powerful consumers, users and followers, to vote with our mice. Like what you want. Follow who you want. Unsubscribe to what you don’t want. And, when you do find spam landing in your box, never, ever, click the link or purchase the product. If the spam is for something that you can’t live without, go buy it from a competitor who didn’t spam you. And remember to tell them why you bought from them.

I am not willing to declare the era of spam to be over, but the tide is turning. To the businesses who are still sending unsolicited e-mail with no option to unsubscribe, and yes, I still get a couple of those, I would say your days are numbered.

How Much is that Website in the Window? (part 4)

So what have we learned from all of this?

There’s nothing magical about the process.  Our job is simply to get the picture out of the client’s head.  That’s it.  To the extent that we are successful with that “picture extraction” the project will at least have a chance to be successful.  It’s simple target practice rules.  If you can see the target, you at least have a chance to hit it.  If you don’t even know where the target is, then if you happen to hit it, it will only be because of luck.  Most of us need more than luck to succeed.

It may not be easy, but it’s simple.  There’s nothing magical.  It’s not about the technology.  It’s about communicating in such a way that we really listen to what’s needed and then put that into a format that we can hold up and say “is this what you meant”.

I have mentioned Specification Documents and Requirement Documents.  Now it’s time to find out exactly how we use these documents.  Again, there’s nothing magical.  Simply put, these are the tools we use to communicate.

A Requirements Document is nothing more than a description of what’s needed for the project.  It is a document that lists, in non-technical terms, all the functionality desired from the system, program or app.  The Requirements Document answers the question: “what are we going to build?” We create the Requirements Document by asking a lot of questions and carefully listening to the answers.

This is analogous to the architect asking the homeowner how many rooms and what kind of rooms they want in their house, if they want a pool, or if they need a home office.  There is no magical format.  It should be clear and concise.  It should be as long as it needs to be to vividly describe the project.  You can include screen shots, graphics, crude drawings and sketches or whatever is needed to effectively describe the project.

Once the Requirements Document is written, the client can review it and either confirm “yes this is what I want” or make any needed corrections, revisions, or additions.  By the time we’ve gone through a couple of iterations of this process, we all have a clear picture of what is needed for the project.  While it may not be “exactly” the same in everyone’s head, we can be reasonable sure that the picture painted in the Requirements Document good enough to begin the next step.

Now it is time to create a Specification Document.

The Specification Document is a detailed technical document that answers the question: “how are we going to build that?” The Specification Document lists in technical terms exactly how we’re going to build something.  The Specification Document is the blueprint of how the house will be built.  It describes the materials that will be used.  In this case, what platform, required hardware, development tools, and code will be used to complete the project?

The Specification Document will map out the database.  It will include screen shots.  It will include functional descriptions of the screenshots.  It will include flow diagrams of the business logic.  It will include descriptions of business process and how the user will interact with the interface.  And, it will include descriptions of how the interface and data will interface with the database.  It will include test cases.  In short, it will include anything that’s needed to fully describe all the technical elements of the project.

Essentially, the Requirements Document is for the user and the Specification Document is for the developer.  A good project manager can translate both.  There has to be a one-to-one correlation between all elements of both documents.  If something is described in the Requirements Document and not detailed in the Specification Document, it should set off a warning flare that something is missing.  Likewise if something is detailed in the Specification Document that is not described in the Requirements Document, you may want to double check to make sure you are not planning to build something that’s not needed.

With the information in the Requirements Document and the Specification Document we now have enough information to create a budget and a schedule for the project.  Both of these items are now included in the Specification Document.  We list all project deadlines and benchmarks based on days or weeks from the start date.  Once the client gives us the go-ahead, we schedule a start date and all the other project milestones will fall into place on the schedule.

Our recommendation to clients, no matter how simple they think the project is, is to go through these steps.  WHY?  Because every hour spent planning the project on the front end will save time on the development phase of the project.

Do we charge our clients to create the Requirements Document and the Specification Document?    YES!  Why?

First, for a complex project it may take several weeks to go through the iterations required to create the Requirements and Specification Documentation.  For a simple project, it may only take a few hours or couple of days.  In either case, this is where a lot of expertise in designing and coding come into play.  Again, mapping out everything on the front end of the project can save massive amounts of time tweaking and changing something that is developed incorrectly or with poor planning.

Second, once we’ve completed the Specification Document we make it clear to our client that they can roll these documents into a “Request for Proposal” and put the project out for competitive bids.  Competitive bidding will ensure that they get a fair price and are assured that all the bid prices they do receive are for the same project.  In other words, you won’t have one development company submitting a bid for what they think the project is and another company submitting a very different bid for a completely different idea of the project based on their own concept of what the project will take to complete.  Effectively, you get competitive bids that are all for the same barrel of apples.  It’s the difference between actually comparing apples to apples and comparing apples to oranges thinking you’re comparing apples to apples.

Of course, we would also like the opportunity to bid on the project, but that is never a requirement to have us create the Specifications or the Requirements Documentation.  In a few cases, our clients have hired us to manage the bidding process and help them evaluate the bids.  We are happy to serve in this capacity as well.

The temptation is to skip the planning process.  It may seem like spending time creating a Requirement Document or Specification Document up front in a project actually makes the project take longer and cost more.  But the reality is, that for every hour we spend doing the planning and thinking around a project on the front end we are likely to save more than an hour fixing and changing and debugging during the later development phases of the project.

Without both of these documents, you are most likely building something the client doesn’t want (or doesn’t match the picture in the client’s head) you will have to change it or fix it later.  Additionally, if you hit a time estimate or budget estimate without the proper planning, it will only be because of luck.  Not taking the time to do the requirements and specification planning up front in a project is asking for trouble.

You can’t shortcut the process.  And once you have both of these documents, they will become the team’s bible for as long as the project lives. And, everyone has to be committed to sticking to these documents – as “the law of the land” for the life of the project.

Does that mean that you’re stuck and can’t vary from the specifications once you start?  Certainly not.  So what we learn from all of us But it does mean that everyone is clear when you do stray from the specification path.  No one is perfect.  Many times clients are developers have great ideas once development has started.  You want to be flexible.  In many cases, we can produce a quick spec or an addendum very quickly that will describe changes to the original specification after we have started development.  This makes it very clear to everyone what’s being changed, why it’s being changed and if it will cost more or less time or money.

To business owners, I say: Find a developer who is willing to step through this process with you.  You will not be sorry you did.

To developers, I say: get good at this process and stick to your guns.  I promise you will delight your clients by delivering what was promised, on time and on budget!  That is the best way to turn a first time client into a repeat client!

So what’s the secret to winning the project game?  It has nothing to do with technology.  It’s how well we communicate!

How Much is that Website in the Window? (part 3)

In part one, we talked about the problems it causes when you attempt to “ball park” a price before developing a clear understanding of the scope of the project. In part two, we discussed some of the questions that can be asked to help develop a clear understanding of the project. Before sharing some of the techniques we use successfully in developing projects, I wanted to share a couple of stories with you where I broke my own rules and things went horribly wrong.

A few months ago a prospective client called me and asked about developing software that would help him collect data for a project he was working on. The software would be used in-house by his organization to collect data from several different sources and output reports he could use for analysis.

I said I’d love to look at it and he emailed me a fairly well thought out five-page document outlining the requirements for the project. It was clear he and his staff had spent time doing the thinking about what would be required for their project. I went over the document with one of the programmers; we came up with a list about 20 questions to cover additional information we would need before we could create a specification, schedule, and the estimate for the project.

I e-mailed him the questions along with a quote to develop the specification document for the project. I told him that once the specification document was complete, he could provide it to any software development house, including, hopefully, ours, and get competitive quotes.

A couple of days later I got an e-mail response back from him. He asked in the e-mail if I could ballpark the price for how much the overall project would cost once the specification was complete. I emailed him and told him I really could not and that any number I might “throw out” would be meaningless until we had a clear picture of the scope of the project. I got the sense from our e-mail exchange that the price for the specification document was possibly more than they wanted to spend on the entire project.

A couple of days went by and I did not hear back. So I called him. We had a nice discussion but by the end of the conversation I had broken my rule and told him the project might cost anywhere from the low to mid-five figure range. To this day, I have not heard back.

It could be that the amount was simply more than he expected. It’s also possible that they found someone else who was less expensive to work with them. Whatever the case, the numbers definitely scared him. I could argue that it’s better to find that out sooner rather than later, but the truth is I could’ve done a better job managing his expectations. They say “hindsight is 20/20”, but there might have been a lot of other ways that we could have developed a collection of tools that he could use to gather his data that would have cost less. Now we’ll never know. Because I threw out a number without first getting clear about exactly what the picture looked like in his head.

There was another case several years ago when a client came to us to build an expert system. The project was to automate and create a web-based tool that would step users through a specific business process. When I initially sat down with the client, she produced two 11 x 17 sketches of a flow diagram that outlined the processes that she used for her customers.

I recommended that we start by putting together a Requirements Document and Specification Document that would outline her entire process. I let her know these documents would include a schedule and a cost estimate. She persisted in asking me for a ballpark for the overall project and eventually I acquiesced. Against my better judgment, I gave her an estimate based on the two 11 x 17 sheets sitting on the table in front of me. As it turned out that was a huge mistake. What makes it worse is that I knew better.

Over the next six weeks, she and I met several times and we further outlined her process. By the end of that process, I had four E-size drawings created in Visio that did indeed outline her entire process. Apparently, there were more than a few steps to the process that she kept in her head and were never written down on her two 11×17 sheets of paper. As is typically the case with many clients, even those who’ve spent some time thinking about their project, the first pass often does not include everything that will be required for the project. By the time we got it all out of her head and onto the paper, there were well over 500 nodes in the overall process. Needless to say this brought scope creep to whole new level.

I created a new proposal based on the new information and sent it to her. She was still okay with that number, and we proceeded with the work. What I should have done at this point is take the time to create the specifications. But, at the time, I thought the flow diagrams would be enough and we could work from those. Boy, was I wrong!

We started building the software and over the next six months, we met several times to refine the process, test the process and make revisions. She spent time going through the process on her own and would send us revisions and corrections as she found them. The diagrams continued to change throughout the process. At one point we were spending as much time correcting the diagrams as we were spending writing code.
I should have stopped everything right then. This was equivalent to designing a house as you are building it! That strategy almost never works well!

I did a horrible job managing the “revision” process as she re-thought through her process. After six months we were about 75% complete with the production but we had gone over my estimated budget by more than $7,000.
About this time in the process she got very busy with her business. On three separate occasions we had review meetings set up that she had to cancel. I called her a couple of times in the following weeks but it was clear this was not her current priority and she was no longer excited about the process.

A big part of the source of her disappointment was the missed deadline and the budget overruns. Her experience was that the project was turning into a bottomless pit and there was no end in sight. Up to that point, she had spent a lot of money and still had nothing she could use. The bottom line was that she was no longer excited. To this day we have still not completed the project and we probably never will.

Even though she didn’t pay us for everything we did, she never got a site she could use and we don’t have the process knowledge to accurately complete the site without her help. The sad part is, the site would have provided a great service for a fairly large customer base. This is a lost opportunity for everyone!

So, where did I go wrong?

First, while we did create the flow diagram, I didn’t insist on a detailed specification document and cost estimate. We were working off a ballpark figure and didn’t create a realistic schedule for the project. I didn’t manage her expectations well. We were all excited about the project and just wanted to get started.

Second, I didn’t put on the brakes the minute I saw that we were straying from the original flow diagrams. I allowed us to get sucked into endless tweaks. I should’ve raised the alarm at that moment. I could’ve sat down with her and either created an expanded scope (budget and schedule) or narrowed the scope so we could focus on smaller parts of the project that we could actually complete in stages. The theory here is that a lot of small victories would have led us to a larger overall victory. Instead, we got bogged down in trying to complete everything and we never completed anything.

I didn’t do any of that. I just kept barreling through the project thinking that at some point it had to end. I was excited. The client was excited. We were getting stuff done. We were sending bills. And she was paying the bills. Then it did end – just not the way that any of us wanted it to.

She had a picture in her head about what she would get at the end of the project and how much it would cost and I didn’t deliver on either of those.
In both of these stories, I tried to short cut the process and it didn’t work. Sometimes for smaller projects, you can get away with skipping a step in the process here or there and still complete everything successfully. That is almost never the case with large, complex development projects. I could probably build a doll house in my back yard without a detailed plan. I would never attempt that if I was building my 10000 square foot dream home.

Over time, we have developed a process that, when we stick to it, we drastically improve our chances of successfully completing the project and leaving the client delighted. In the final part of this series, I will share that process with you….so don’t touch that dial…

How Much is that Website in the Window? (part 2)

Basically, a business owner wants to know up front what a website will cost. Developers want nothing more than to be able to answer that question. But first we have to ask, and answer some other questions.

What are the questions that business owners should be asking website developers? Wait! Reverse that. What are the questions that developers should be asking business owners…hold on, which way is it? Who is asking and who is answering? The real answer: both are asking and both are answering….I know it sounds confusing, but read on…

Before we get to the questions, let’s dive in to a bit of psychology. Why don’t business owners expect these questions from their developers?
What if, instead of a web site, a business owner was buying a machine to make the widgets sold by the business, or a printing press, or a delivery vehicle? If that were the case, then most business owners wouldn’t hesitate to ask questions about return on investment, how to measure the ROI, and whether or not the purchase makes good business sense.

Most business owners have lumped websites into the budgetary pile right next to “advertising” and “marketing”. Long has the marketing and advertising industry promoted the boondoggle that it’s not possible to measure the ROI of an advertisement. What a crock. Originally, this must have been invented to keep advertising executives from having to be accountable for business results! Even if that was true in the past, with the technology available today it is true no more.

Today, we can track the effectiveness of a website or online advertisement.
With the advent of the Internet, traffic analysis, cookies, conversion tracking code, promo codes, easily obtainable dedicated phone numbers, Facebook, twitter and texting, tracking the response rate of advertising activity, online and offline, is no longer a mystical black art.

The fact is, most business owners don’t understand technology the same way they understand their business, so they shy away from asking the tough questions.
There is nothing mystical and magical about technology. There is no sorcery involved using technology to track advertising or lead generation. It’s OK to ask the tough business questions. In fact, you can either ask the tough questions before you spend the money on a technology solution or you can ask the “why didn’t we” questions after you spend the money. As business owner, it is your choice.

There are some businesses out there that don’t need a website. The hot dog stand or newspaper vendor, come to mind. Obviously, businesses that depend mostly on nearby foot traffic wouldn’t benefit much from having a web site. However, if these businesses are interested in expansion, it’s a different story. For example, a hot dog vendor who wanted to expand the business to have twenty stands across the city, might use a web site to enhance that brand, lend credibility to the brand or gain brand recognition. They might even use the site to pinpoint the location of each hot dog stand each day for customers who loved their product. They might drive traffic to the site by sending out alerts about coupons or daily specials. Even at this level, we want to be able to measure the ROI of the site.

The next step up the functional ladder, is a business that wants to use the website to track lead generation and drive new business in the door. These businesses may only need a simple web presence – a contact us page along with a description of what they do. There are a lot of great tools and services like squarespace.com that allow a business to quickly and easily get a website up and running at a very affordable rate. For these companies, we should be discussing strategies for optimizing for search engines, driving traffic to the site and converting that traffic into paying customers. The bulk of the budget should be used for these types of activities and not for developing the actual website.
Next up the ladder, there are the businesses that need a commerce solution, a customer portal or some proprietary set of tools to interact with their customers. At this level, the conversation with your developer should change dramatically. We want to expand the conversation beyond “what can a website do for my business and what is the return on investment?” to an in-depth discussion about how customers and/or employees will interact with the site and use the online tools as a way to develop and grow the business. At this level you will want to begin to create both a requirements and a functional specification. We will be talking more about specifications in part four of this series.

The bottom line is that the questions that need to be asked, and be answered, depend upon the business applications for the website as well as the company’s relationship with its customers and its plans for future growth. These are not easy questions to answer and sometimes you don’t even know what questions to ask. To start with you can try some of the following questions:

What is your product or service?
How to your customers find you today?
What you currently spending on marketing and advertising and how are you spending the dollars?
What’s the effectiveness of those dollars and how do you measure effectiveness?
How do you want to use the web site to increase your business?
How much new business can you handle?
How can you use the web site to improve customer service?
How can use the web site to improve a business process or solve a business problem?

These should prove enough to get the conversation going. The developer needs to listen keenly to the answers to these questions because the answers to these questions will probably leave clues as to what questions should be asked next. Even if the business owner doesn’t have “the answer” to these questions, their response will provide the developer with clues and to a good listener, each response will lead to another, deeper question.

There is no magic set of questions that work for every business.  Just like there is not one diet that will work for all people.  If a diet works for you, it is because it is a match for your individual body.  Likewise, we want to discover which questions will reveal what we need to know about a particular business so we can develop a solution that is right for that business.

To the developer I would say: it’s up to you to listen to the answers the business owner provides to your questions. Each answer will probably lead to three or four more questions that can be asked. It’s up to the developer to ferret out not only the expectations of the business owner but to also get a clear picture of exactly where the business is and what type of web presence would prove most beneficial to the business.

To the business owner I would say: These are just a few of the questions you want to focus on when you begin thinking about making an investment in an Internet site. Any interview with a developer that doesn’t start with similar questions will be a waste of your time and may cost you money if you select a developer who doesn’t understand your business or your ultimate goals.

Developing a technology solution that works for a business is a lot like playing chess. You want to look at the whole board. It’s not just about writing the code and putting up a site. It is not even about asking the right questions or finding the right answers. It’s about discovering the questions that are right for that individual business and then discovering the answers together.

The developer may not understand the business. The business owner may not understand technology. But a true partnership between both can yield extraordinary results. And, not creating that partnership up front can lead to disaster.

Stay tuned…In part three, I’ll be sharing some stories about how we learned the hard way that we need to ask the tough questions before starting any project.

How Much is that Website in the Window? (Part 1)

I don’t think a week goes by that I don’t get asked this question: How much for a website?

The question itself hasn’t changed much over the years. What’s changed, even though folks don’t realize it, is what they mean when they ask the question.

Back in the 1990s, people wanted to know how much it would cost to put up a brochure website. Websites were simple back then. We could usually estimate the cost of the site by the number of pages because a page was a page was a page. All pages were created equal.

But today, it is a very different story. There are Web forms, static pages, backend databases, scripts, programs, platforms and third party tools than we never imagined a few short years ago. With all the complexities of Internet programming as it exists today, all pages are not equal.

It’s human nature to want to know the cost of something up front. We all want to know we are getting a good deal and that someone is not taking advantage of us. People want to know how much a site will cost and many people want me to give them a ball park price before we spend any time discussing the requirements or the specifications. I usually resist answering this question directly. Mostly I avoid answering because my answer won’t mean anything until I know what you need and, more often than not, my answer will create an expectation that I may not be able to fulfill in the future. Until I have enough information about your business that I can give you a reasonable and well informed “ball park” answer, I typically will not answer questions about price.
It occurred to me a few years ago, that this behavior of avoiding answering tended to make others think I was being cagy or “slick”. So, I developed a few analogies that I use to help explain to prospective clients why I need more information before I can give them a ballpark price.

What if I was a car salesman. But, imagine I’m a bad one. You come to the dealership and ask me, “How much for a car”. I blurt out: “$15,000”. That’s crazy. You would never expect me to give you a price unless you told me which car you were interested in buying.

The real problem here is not the cars. If, as a bad car salesman, I answered $15000 and found out later that the car you had in mind was the Ferrari on the showroom floor, we would have a big problem. We would have the reverse problem if the car you had in mind was the 1976 Monza with 300,000 miles and no air conditioning sitting on the back lot. The real issue here is that the picture of the car in my head does not match the picture of the car in your head. And until we get those to two pictures to match, any discussion about price will be, at best, a waste of time.

Before I can answer any price question, I have to first become very interested in what you’re looking for in a car: luxury, dependability, style, etc. My first and most important job with any client is to take the picture out of their head and put it on paper so we both know, beyond any reasonable doubt, that we are talking about the same thing. Only then can I begin to formulate a ballpark price.

Is it important to put “the picture” on paper? Emphatically, I say Yes. How many times have you talked to someone you were sure you totally understood what they said, only to find out later that they meant something completely different. That has happened to all of us. Without something physical, that both parties can see and discuss, you are still just dealing with individual pictures in people’s heads.

So what’s the first step? I get very interested in your business and how you want to use a website.
For example, if you had a $10,000 budget for marketing, would it be prudent to spend all $10,000 designing a site? Probably not. If somebody came to me with a budget of $10,000 for a site, I would first ask and how they want to use that site. If they want to use it to get more customers, I might recommend spending $2000 on a simple site and spend $8,000 driving traffic to that site. Another business might need to spend all $10,000 on an interactive customer service portal to keep existing customers knowing that they have an additional budget for marketing they will use to get new business.

Another business owner might be looking to spend $30,000 on a web site. Is $30000 on a website too expensive? That depends. Certainly it would be too expensive if that site did not bring in any new business. But what if a $30,000 investment in a site would generate $500,000 in new revenue? Most businesses would jump at that opportunity because it makes good business sense.
Asking questions about price, without being clear about what you need, is a little like calling a travel agent and asking:” How much for a vacation?” I know a lot of travel agents. I don’t know any of them who would quote me a price for a vacation without me first telling them where I want to go. The cost of a vacation to the South of France will be very different than the price of a vacation to SeaWorld. All vacations are not created equal with respect to price.

There are a lot of developers out there. Many of them are very good. Many of them don’t understand business or ROI. There are developers who will build you a killer site, with all the new bells and whistles, that will not generate a single dollar of new revenue for the business. These are the developers who will not ask you a single question about how your business runs or how you serve your customers. The questions these developers will ask all be about platform, look and feel, and style of the site. For sure, these are important questions, but they are just part of the overall picture. To these developers, your website is just like any other business’s website.

So to business owners out there, I say: even though it might take a little longer, find a developer who will ask you questions about your business and work with you to implement a site that has a positive ROI by bringing you new business or helping you serve the customers you already have. Keep in mind, that designing a website with an eye toward Return on Investment will not insure success, but without ROI as part of the discussion, the success of the site will depend mostly on luck. So before you spend a single dollar, ask yourself if you are feeling lucky. If you are, maybe your business doesn’t have to worry about tedious things like ROI.

And to developers out there, I say: Take some time to get to know what your clients really need. It’s OK to refer them to someone else when your specialty isn’t what they need. I have client’s I have not worked for in years, and people who I have never worked for, who call me to ask questions. They may not need me today, but they know I’ll be straight with them and not just try to sell them something because it’s our “weekly special”. I know when they need something my firm provides, I’ll be first on the list, and in the meantime, they are always the first to refer new business to me. They know whoever they refer to me will be treated well and will walk away knowing exactly what they need, whether I can provide it or not. What’s the lifetime value of that? I can’t answer that question either, because we are still adding it up.

So what are the questions that developers should be asking? Don’t touch that dial…stay tuned for part two…

I Telecommute Therefore I Am

Telecommuting has been in the news a lot the past few days.  This is the short version of the story about how our company went completely virtual over the past few years.

Let me start by saying that I am no stranger to real-world commuting.  In fact, it was a way of life for me growing up.  Starting when I was in the fourth grade, my Dad commuted to work in a larger city that was 70 miles from the small town where I grew up.  On summer breaks and holidays from school, my brother and I would go with him to help at the office.

After graduating from college, my brother and I started our own business in that same city.  I lived on the other side of town from my office and commuted across town every day for fifteen years.  During those fifteen years, my brother, who had moved to another city, connected to everyone at the office via phone or email and, in later years, used tools like Skype and GotoMeeting.

By 2005, most of our staff was working from home at least a couple days a week and everyone was managing their own flexible schedule.   We found it incredibly helpful to people’s overall well being if they knew they didn’t have to sit in traffic two hours a day, every day, getting to and from the office.  We timed our morning staff meeting during the typical commute time.  People could either come in early, beating the commute traffic to join the meeting or phone in to the meeting and drive to the office later, or work from home all day.  People had the flexibility to set up their schedule, work hours and work location so that it worked with their life.

Our motto was “flexible doesn’t mean random!”  The only rule was everyone had to be in communication about where they were and what they were working on.

In early 2008, there were only two of us who were coming into the office regularly every day.  Six months before, our Office manager got a job offer with another firm and took it.  We never replaced her.  We were already finding with less people at the office, there was a lot less to manage.

One morning I looked around at 2400 square feet of nicely finished out office space.  I was the only one there.  I asked myself, “Do we really need this space anymore?”

I spent the next couple of weeks negotiating with our landlord and we moved into 800 square feet across the hall which was little more than a conference room and a place to keep some development servers.  For some reason, which I can’t remember now, I thought I needed to have a place to meet with clients.

In the next two years, I think I used that conference room twice to meet with clients.  Most of our clients were in other cities around the country.  Even for the few local clients we had, I would always go to their office to meet.  They rarely came to my office.  Of course, I was still working out of the office because I didn’t think I could work from home.  I was afraid I would get too distracted if I didn’t have a “place to go”.  I was the last to catch the wave.

By summer of 2010, I did catch the wave.  We shut down that smaller office and I set up my office in a spare bedroom.

In the spirit of full disclosure, I should say that our business is a software company.  Our type of business does tend to lend itself well to a telecommuting environment.  Today, we all work remotely.  We bring in team members as needed to work on projects.  We hold daily team meeting via Skype or a conference line (both of which are free).  The thousands we used to spend on rent and physical structure have been replaced by a few monthly services like GotoMeeting and shared cloud services that help us all keep in touch, share files and collaborate.  Text messaging has replaced “popping in” someone’s office to ask that “quick question”.

The only down side is that on weekends and evenings, I am only a few short paces from my office so the temptation is to always be “in”.  But who am I kidding.  I used to spend most nights and weekends at the office anyway.  The difference now is I save on gasoline driving back and forth.

I started this ritual when I take a break for dinner.  I turn off my computer and close my office door.  Even if I have to come back and work after dinner, there is something freeing about physically shutting down and switching gears.  Most nights and sometimes on weekends, I will get in a couple of hours to catch up on email or work.  But I know I have a choice.

Do I miss the social interaction?  Not really.  I am connected and interact with people every day.  I still meet with people over lunch or coffee.  For the occasional team meetings where we require physical space, there are several good, affordable meeting rooms that we rent.  Technology allows us to stay connected now, more than ever before and no matter where we are located geographically.

What made all this work?  Personal responsibility.

In the early days, we made it clear that working from home was a privilege, not a right.  Individuals were accountable for the quality and timeliness of their work.

And, to their credit, we had an exceptional team.  On several occasions, I would have folks show up at the office unexpectedly saying, “I wasn’t getting anything done at home, so I’ll be here for a few hours”.  Others would work from home until there was a looming deadline that we had to meet, then the whole team would converge on the office to take advantage of that fast paced turn around you can get when you are all in the same room.  Others would structure their hours by coming in early, leaving to pick up their kids from school and then continuing work at home once the kids were retrieved.

I would wake to find emails from team members working the wee hours of the morning.  Some people are the most productive after everyone else has gone to sleep and there are no interruptions.  Did I care if a mom or dad needed to pick up their kids or go to a school play in the middle of the day.  No.  I trusted them to get their work done by the deadline and I did not care, nor did I think it practical, to dictate to them when they should be creatively toiling away at their desk.

Not once during all those years, did I ever have the experience that anyone was abusing the privilege, not doing quality work or not being in full communication with me or their team.

Are there advantages to telecommuting.  Of course there are!  Are there advantages to having the entire team working around the same table?  Yes, indeed.  Is telecommuting right for every business, all the time.  Certainly not.   Are there times in the life of a project or a business where you need “all hands on deck”?  Yes, but in today’s world “the deck” can be virtual.

What is clear to me after all these years is that what makes telecommuting work or not work in a company is the personal integrity, responsibility and work ethic of everyone involved.  In my experience, if you treat people as responsible professionals, they will almost always exceed your expectations in what they can produce and create!

Now, I think I’ll go walk the dog.

Is Image Everything for a Startup?

What’s more important than your new company’s image and brand?

I talked to a client a few days ago about her daughter who is starting a new business.  She asked how much her daughter’s startup should set aside for a website.  They had been approached by a graphics company selling a “package deal”.  For $4000 they would get a logo, letter head layout, business card layout and a website template.  And that did NOT include the printing cost, website content or website hosting!

The marketing pundits will tell us that “image is everything”.  Some might say, “That it’s all relative or it depends upon the business”.  Others might suggest, “How you present yourself to your customer will determine whether or not your business succeeds”.  Still others might say, “If you are investing millions, then it makes sense to spend that kind of money to brand your business.  It is a small amount compared to the overall investment”.  A few thousand dollars might not sound like a lot when you are creating an image for your fledgling company.  After all, we all want the best for our children.

These are all valid points.  But, I don’t care who you are, $4000 is a good chunk of change.  Many successful businesses were started for a lot less than that.  In fact, most start ups are boot strapped by family loans or the founder’s credit cards and they simply don’t have that kind of money to spend.

Consider also that the brands that you know and love: Coke, Google, Apple, didn’t start out as a “brand”.  They started as a name.  They started as a company.  They started as a product.  They grew into a brand.  You can never spend your way to a brand.  Oh sure, big brands spend a lot but that kind of spending is aimed at maintaining a brand.  Without the product and the company, there is no brand.

You have to give your company and product a chance to develop into a brand.  That takes time.

A logo and brand are not critical for a startup company.  You know what is?  Customers and a quality product or service that customers value!  If you are a small start up that doesn’t have money to burn then every dollar you spend should be spent on bringing more customers in the door and creating or improving your product or service.

Most people won’t even notice your logo.  They certainly won’t notice that your  website doesn’t match your print brochure.  Even if they do, they won’t care.  The only thing they care about is what your product or service provides for them.  Once you are up and running, when you are stable and have more business than you can serve, then you can splurge on the image stuff.

These package deals used to be the norm.  I have many friends in the graphics industry whose “bread and butter” were package deals like this one through the late 1990’s and early 2000’s.  But, then came the Internet…

Fortunately for startups everywhere, there are now many alternatives available.

You can get a logo designed online for well under $200.  Just go to Google and type in “logo design”.

There are many companies that offer template websites and cheap monthly hosting.  Bluehost, Godaddy, Squarespace are just a few.   You can sign up at squarespace.com and in less than an hour choose a page template, upload your logo and start typing  in content.  All for about $8 a month.

Companies like VistaPrint and Americas Printer offer cheap, full color bleed-to-edge printing for professional business cards and brochures.

There are many, many other services online now that will help you create your company image for a fraction of what it used to cost.

I told my client to tell her daughter to save her money for what her business really needs.  When she has more customers than she knows what to do with, then she can splurge and upgrade her business’s image…until then, focus on what’s important.

It’s easy to get distracted when you are starting a new business.  But there is no return on investment for a fancy logo and website if they don’t bring paying customers in the door.  Businesses sometimes forget why they are in business: to serve the customer.  For startups, especially, it is important to stay focused.

Every dollar spent should be focused on bringing in more revenue and more customers or improving the products and service already offered.  When the business is thriving, there will be time and money to polish the brand and the image.  If the business doesn’t succeed, then it won’t matter how fancy the logo and brochure are or how much money you spent on them.

So, what’s more important than image?  For a startup business, almost everything!

Backing up your Blog, Part 2

In Part 1, I detailed how to set up an automatic backup for WordPress using a cron job calling mysqldump. This post has a slight twist on that method.

I recently had to set up a backup for a blog where this technique wouldn’t work.  The cron job would work and mysqldump worked, but whenever mysqldump was called from a cron, it resulted in an error: blocked because of many connection errors.

Normally, my first course would be to fix the underlying error, but in this case the blocking issue was only a problem for the cron backup and did not affect website performance.  Rather than figure out how to resolve the blocking issue, I knew that I could run the mysqldump from a PHP script and call that script from cron rather than trying to call the mysqldump from cron directly.

Here’s the PHP script I used:

    $version = 'live_12';
    $dbbackuppath = 'xxx';
    $dbuser = 'xxx';
    $dbpass = 'xxx';
    $dbhost = 'xxx';
    $dbname = 'xxx';

    $target_name = microtime();
    $target_name = str_replace(' ', '', $target_name);
    $target_name = str_replace('.', '', $target_name);
    $target_name = 'dbbackup_' . $version . '_' . $target_name . '.sql';
    $target_path = $dbbackuppath . $target_name;

    exec("mysqldump --user=$dbuser --password=$dbpass --host=$dbhost $dbname > $target_path", $out);

    echo("\n\ndone: $target_name");

For the real production code, all those variables at the top defining the file system path where the log will be stored and the database connection parameters are in an application config file.  I’ve included them inline here for completeness.

Basically this code creates a filename for the backup file which incorporates the application version number (to make it distinct from other backups saving to the same location) and the date/time the backup was run.  It then executes mysqldump using PHP’s exec command.

I’m not a big fan of using exec from script, but in this case it’s running in a non-public script and I’m using IP address filtering in htaccess to insure that this script can only be run by the server running the cron job.  It’s also saving the backup files in a location that is outside the web root path so these backup files cannot be retrieved from the server via HTTP.  Depending on what your site holds, it might be a very bad idea to make these backups publicly available even if they’re hidden.

With that script in place and after testing it to make sure it creates a backup file properly, you can automate the process using a cron job just like we did in Part 1.  The only difference is that in this case instead of running mysqldump, we use wget to hit the database backup PHP script.  To use wget, you just provide the URL of the script you want to load so your cron command looks like:

wget http://mydomain.com/dumpdata.php

While not quite as simple as using cron to call mysqldump directly, this method is easier to set up since you can test your dump script separately from cron.

Is there a better way?  Probably.  Give me feedback in the comments if you’ve got a more elegant way to handle automating backups of your site database.

 

 

 

 

3 Ways Cloud Services Can Help Your Business

Cloud services are a very hot topic right now, but many businesses don’t have a good understanding of what they are or how they could use them.

The cloud just refers to resources that are hosted on the internet.  If you use GMail or some other browser-based email, then your email is “in the cloud”.  If you use a hosting company to host your website instead of running your own webserver hardware, that’s in the cloud too.  As our internet connection speeds have increased, hosting files or accessing computers over the internet has become easier and more practical.  If you need a bigger hard drive or a new server, it may be cheaper and easier to use a cloud-based solution and let someone else worry about the hardware.

Here are three ways you can quickly start using the cloud to improve your business processes.

1.  Online Backups

You’re already backing up your work files, using a version control system, copying them to an external hard drive, burning to DVDs, right?  But all those backups are in the same place.  Having a second backup off-site is a critical part of having a reliable backup strategy.

One way to do this is to use one of the online file storage solutions that allow you to copy files to a cloud server just like you move files around your own computer.  Services like Dropbox and Box give you some free space to get started and allow you to pay for more if you need it.  Another option is Copingo which adds versioning and project management tools that help you share files and collaborate with others if you want to share your files among a team and not just back them up.

Another option for archiving your files to the cloud is to use a service specifically designed to make that easy.  Services like Carbonite will backup up your files automatically on a schedule and allow you to retrieve those files from any computer.

Carbonite is a fantastic service and is very easy to set up, but there is a monthly fee for not only the storage but the service.  It’s very easy and provides good support, but you pay for that convenience.  If you’re more inclined to work a bit to save the monthly fee, the open-source software Duplicati provides the same functionality as Carbonite and other commercial backup solutions.  It allows you to back up specific folders, include or exclude files by file type, and set schedules for both full and incremental storage.

If you’re using Duplicati, you still need to set up a place to store your files in the cloud.  There are many options, and some of the best in both reliability and price are provided by Amazon.  Amazon has a new service called Glacier which is designed for “cold” storage, files you want to store in the cloud but not access frequently.  The fees for storage and bandwidth are incredibly cheap for storing files and somewhat higher for retrieval.  This service isn’t the best choice if you want to host files for regular access, but if you just want a secure online backup, it’s perfect.  There are some concerns that retrieval prices could be very high under certain circumstances as discussed in this article at Wired, so it’s important to compare the terms of the service with how you intend to use it.

2.  Online File Hosting

Online backups are intended to be stored away and only accessed in emergencies, but sometimes you have files you need to store and access on a regular basis.  These may be files you want to share among a team.  If so, services like Dropbox, Box, or Copingo mentioned above are perfect.  If you want to share files with the world, you could just put them on your website, but often the bandwidth and storage size limits on your website hosting may cause problems if you’re providing big images or videos.

If you want economical hosting for keeping big files online, Amazon Simple Storage Solution (S3) is a great option.  It’s a little more expensive for storing files than Amazon Glacier, but it’s designed for fast and reliable retrieval, making it a viable solution for hosting big files that you want to be able to display on or link to from your website or elsewhere.

3.  Online Computers

File storage is important, but sometimes you need processing power too.  If your business involves having lots of computers working on data, cloud-based computing can be much more economical than buying and maintaining hardware.  Some services like Rackspace are tailored toward providing web servers, and they allow you to spin up a virtual server matching whatever specs you need in terms of processors, hard drive space, operating system and pre-installed software like databases.

Another option is Amazon Elastic Compute Cloud (EC2).  Similar to Rackspace, EC2 lets you spin up servers to meet your requirements.  Their pricing plan is particularly attractive if your needs fluctuate.  For example, if you do video processing or crunch big data sets for a few days a month, the EC2 service lets pay for what you need.  Their fees are based on processing time, so you pay less when your instances are idle and you can turn them off entirely when not needed.

Trivia:  Why is it called the cloud? 
When we draw network diagrams to design how systems are going to work, we represent the internet as a cloud-shaped blob.  If I’m designing a system that will transfer files over the internet between two locations, I’ll draw the network details of both ends but just put a cloud-blob in the middle to represent that the traffic is moving through the internet.  When it became practical to move services from our desktop computers to computers hosted out on the internet, it was a natural extension of our network nomenclature to refer to these as services hosted in the cloud.  So “the cloud” just means something is hosted out there on the internet somewhere, you don’t need to know where the actual hardware is as long as you have the internet address.

Backing up your blog

Everyone has heard that backups are important, but are you sure you’re backing up the data you really need?

If you write a blog or run a website of any kind, there’s probably a database being used to generate the pages that users see.  If you’re not backing that data up regularly, everything you’ve created on the site could be lost.  A few simple steps can give you the security and peace of mind that all the content you’ve created is save and can be restored if needed.

The first step is logging into your hosting account.  If you have a blog set up on a host like GoDaddy, DreamHost or Bluehost, you might not have logged into this account since you did your initial setup, but you should be able to go to the hosting website and get to your account settings.

Many hosts will refer to this as the cPanel.  Others will just refer to it as “My Account” or “My Hosting Account”.  Browse through your hosting account website to find the screen that gives you access to your databases. Screen 1 shows the option as it appears on the control panel at BlueHost and similar services and the option is called “phpMyAdmin” which gives you administrative access to your databases.

Screen 1

Logging into your MySQL database with phpMyAdmin, supply the username and password you use to access the database on Screen 2.  This is NOT your main account username and password.  This is the username and password used by WordPress to access the database.

Screen 2

When you’ve logged in, you’ll see a general information screen shown on Screen 3.  On the left it will have two items, the general schema database which is called “information_schema” in this case and your main database.  On the right there are tabs for performing different actions on the selected database.

While you’re on this screen, make a note of the URL your browser is displaying (underlined in red on Screen 3).  You’ll use this later if you want to automate the backup process.

Screen 3

Select your database on the left (circled in red on Screen 3, but yours will not be named “my_database”) and you’ll see the tables within your database listed on the left as shown on Screen 4.  The right side will also show the tables in the Structure tab.

Screen 4

Click the Export tab at the top, circled in Screen 5.  Initially, the radio button at the top labeled “Quick” will be selected and the page will be very short.  If you select the “Custom” option below “Quick”, the options on the page will expand as shown on Screen 5.  You can leave all of these in the default state, no changes are necessary, but if you want to limit what data is saved or customize the format, you have the options available.

When you click the Go button at the bottom of Screen 5, you’ll see a Save-As dialog allowing you to save the export file on your own computer.

Screen 5

After you’ve saved the file, you can log out of your MySQL database using the logout button at the top of the left panel or just close the browser window.

Automating the Backup

If you want to automate this process and save backups on schedule, go back to the control panel screen we used in the first step, find the option for “Cron Jobs”.  Cron is a time-based scheduler that lets you set up tasks that will be executed at specific times in the future.

Screen 6

At the top of the cron-job setup screen, there is an block to set up an email address which will be notified each time the task executes.  This email address, underlined in red on Screen 7, will probably be set to your main account’s email.  If it’s not set or you want to change it, use the “Update Email” input and button below it to set it to the email address you want notified.  You may be inclined to leave this blank because you just want this taks to run and not keep telling you about it, but in the beginning you need to get the notifications to make sure the task you create runs successfully (and receive helpful error messages if it doesn’t).

Screen 7

The next step is to set how often the task should run.  You need to make a decision based on how often your site is updated whether the backups should run weekly, daily or even hourly.  If you update every day and there’s a lot of activity on the site, you should choose daily.  You might be safe with weekly if your site is less active.  The “Common Settings” dropdown box circled on Screen 8 provides a shortcut for filling in the boxes below it.  For example, if you select “Once a day” as shown on Screen 8, the minute and hour boxes below it are filled in with zeros, indicating that it will run at midnight (0:00) and the day, month, and weekday are filled in with asterisks indicating that the task will run every day, every month and every weekday.  You can change the numbers in the hour and minute boxes if you want the task to run at a different time every day.  You can also change the other inputs to customize exactly when your task repeats.

Screen 8

The last step is to fill in the Command at the bottom of Screen 8.  This is the task that will be executed every time your schedule job runs.  This could be almost any task that will run from a Linux command line.  For our needs in backing up a database, we want a command like:

mysqldump --opt -Q -h myserver.myhost.com --user=my_db_username 
--password='my_db_password' my_database_name | gzip -v9 - > 
/home/myaccount/public_html/archive/_db_backup-
`/bin/date '+\%Y-\%m-\%d_\%H-\%M'`.sql.gz

Let’s go through that step by step:

mysqldump – this is the command-line program that comes with the MySQL database which will create an export file with all the table schema and data just like we did manually in the first few steps of this article (Screens 1-5).

–opt – this is an arguement for mysqldump that specifies certain outputs.  It’s shorthand for a collection of individual arguments and sets the most common outputs:  add-drop-table, add-locks, create-options, disable-keys, extended-insert, lock-tables, quick, set-charset.

-Q – this sets the quote-names parameter that will cause table and field names to be surrounded by quote marks in the output file.  This may not be necessary for your database, but it’s necessary in some situations and doesn’t hurt to leave it in.

-h – indicates that the next value will be the hostname of the server where the database is located

myserver.myhost.com – this is the server name of the server hosting your database.  We made a note of it earlier when looking at Screen 3.

my_db_username and my_db_password – this is your database username and password, the same ones you used on Screen 2.

my_database_name – this is the name of your database, the name that’s circled in red on Screen 3.

/home/myaccount/public_html/archive/ – this is the path to a directory where you want the files to be saved.  You may need to check your site’s FTP settings to find the root path (the /home/myaccount part).  You’ll probably want to create a new directory like “archive” or “db_backup” to store your export files in.  You’ll need to make this directory writable using your FTP tool.

The command up to this point, mysqldump –opt -Q -h myserver.myhost.com –user=my_db_username –password=’my_db_password’ my_database_name, creates the MySQL export file.  This is followed by the pipe character, |, that will send the output of the export to the next part of the command line that will save the file.

gzip -v9 will compress the output file into a GZ file, sort of like a zip.

-> is like the pipe command, it will send the output of the gzip command to the filename specified next.

The remainder of the command line specifies the file where the export will be saved.

/home/myaccount/public_html/archive/ – this is the path to a directory where you want the files to be saved.  You may need to check your site’s FTP settings to find the root path (the /home/myaccount part).  You’ll probably want to create a new directory like “archive” or “db_backup” to store your export files in.  You’ll need to make this directory writable using your FTP tool.

The next part is the filename you want to use within that directory:  _db_backup-`/bin/date ‘+\%Y-\%m-\%d_\%H-\%M’`.sql.gz

The file name will start with “_db_backup-” followed by the date formatted in YYYYMMDD_HHMM format followed by the .sql.gz extension.  Using the date command will provide a unique filename for each file that’s created by the scheduled task.

Fill in the command line with all these parameters set with the values for your database and click the Add New Cron Job button shown on Screen 8.

You might want to set the time for a few minutes from the current time (accounting for the timezone change between you and the server) so the cron job will run soon and you can check the output.  You’ll get an email indicating the success or failure of the task.  Then you can come back and edit the time to have it run sometime in the middle of the night or whenever traffic is lowest.

If everything has been set correctly, you’ll start to get backup files in the directory you created.  Now you just have to remember to download them and clear out that directory every so often so it doesn’t fill up and use all the space in your hosting account.

Many hosts will have a slightly different setup.  If your screens don’t look like the ones I’ve shown above, post a comment with info about your host and I’ll try to add details that will help you.