@lscott3

Rails Developer

Laravel 4 and L4 Generators PHP Fatal Error

| Comments

I ran into this one today when trying to install the Laravel-4-Generators package:

PHP Fatal error:  Class 'Way\Generators\GeneratorsServiceProvider' not 
found in …

Turns out I was jumping the gun and blowing through the docs and not going through each step 1 at a time. To fix it you have to add

composer.json
1
2
3
4
"require": {
    "laravel/framework": "4.0.*",
    "way/generators": "dev-master"
}

to composer.json as normal and run composer update immediately after. What I was doing was running composer update after I added ‘Way\Generators\GeneratorsServiceProvider’ to app/config/app.php and it will throw that error every time.

Hopefully this helps.

Rake Db:migrate:down Not Working

| Comments

If running

rake db:migrate:down VERSION=timestamp
isn’t working, it is probably due to the initial migration not running correctly. I toyed around with several ways to fix this problem but what I found best was to force the current migration to pass, so that way we can rollback or migrate down correctly. The way I forced it was to remove all of the migration data from the migration and leave it blank like this:

blank_migration.rb view
1
2
3
4
5
class CreateAttributes < ActiveRecord::Migration
  def change

  end
end

Then I ran:

rake db:migrate

to get it to pass. After it passed I went back in the file and added the migration data. Now I can run:

rake db:migrate:down VERSION=timestamp

or any of the other rake db:migrate commands.

Use an Outside Mysql Database With Heroku

| Comments

It took me a while to find out how to use a different database on Heroku so I figured I would post it here and have it for further reference. I actually had someone ask me recently how to do this so it may be more of a common thing than I thought. Here it is:

heroku-db-config.txt view raw
1
heroku config:add DATABASE_URL=mysql2://username:password@ip.goes.here/data_base_name --app heroku-app-name

After you run that command your app will restart and you will be all set. One thing to notice is the –app flag on the end. If you are not using multiple environments (staging, production or others) on heroku you can leave that out. Another thing to note is the mysql2 segment in the command. I believe If you are using the mysql gem and not the mysql2 you would just use mysql.

Very simple, but it can be overlooked in their documentation.

Revamping the Signup Process

| Comments

During the last big wave of traffic to Copper I got an idea to modify the signup page. My idea was that I need to simplify the signup page allowing users to signup with just their email address. It’s not a new idea, and it has certainly been done before, but I believe the numbers support it. Here were some of my numbers for June

718 Visitors for the month of June.
674 Unique Page views on the main page.
203 Unique Page views on the pricing page.
19 Signups.

My thoughts are to test out another version of the sigup process. A more simplified and straight to the point process. I hold the belief that letting users go straight to the app and poking around will be beneficial to letting them see how it can incorporate it with their everyday workflow, giving them more reason to buy or not to buy. One of my fears with going this route is getting a lot of inactive users - tirekickers so to speak. I guess it isn’t really a bad thing, but what do you do with them? Suggestions?

With this new signup process plan I am will be removing the choice for a particular plan up front and just allowing everyone to trial the top tier plan for 30 days with just an email address and no credit card number. After 30 days if the user does not upgrade it will knock them down to the free plan.

To help with the conversion to a paid customer I will send an email reminder stating that their trial is going to end, prompting them to upgrade. I will also give visual clues within the app to show that they are on day X of 30 days of the trial with a link to upgrade their account.

When I get the second signup path in place perhaps I will A/B test my assumption and see which path leads to a higher conversion rate.

How I Got My First Paying Customer

| Comments

TL;DR I have finally completed my web app and with one paid customer down (yay!). Copper is a web app idea I thought of during my computer repair/consulting days. I saw an area that I thought was untapped and went for it. Here is the url: simplurl.com/copper

Hacker News Link: http://news.ycombinator.com/item?id=4080451

How the idea came about

The idea for Copper came to me when serving as an “IT Guy” for several small businesses and residential customers. @dscotts3 and I would get called out to businesses and have to put out fires. Remembering what fires were put out and how they were put out became troublesome with more than a handful of customers. Yes, we had invoices with general descriptions on there but there was hardly any technical jargon or detailed descriptions/steps for repeat problems.

I searched for solutions and I could find ones for enterprise or ones that you had to setup and maintain yourself. I wanted something simple like our invoicing software Freshbooks. We could login see what was going on and get out, quickly and easily. No maintenance, no hassle, just getting the job done - afterall we had to take care of customers so who has time to build a solution or buy servers and keep a piece of software up? Not me!

So I thought why not build it myself?

Prior to Copper we (@dscotts3 and @joshliveslife) have had our fair share of products and product ideas. One being fairly successful in terms of usage - not really profitable and others just throwing ideas on the walls to see what sticks.

After doing several rounds of throwing junk on the wall and seeing what sticks I figured there had to be a better way to developing something that delivers value to people and they would want to pay us money for. Naturally we questioned other successful people and their answer always boiled down to hard work and a stroke of luck. I got tired of hearing that same answer over and over, everyone pretty much knows it takes hard work but the luck part is what really bothered me. I figured there had to be a more “scientific” way, so when I got the idea for Copper I told myself I would go about it in a different way. I wasn’t really sure how, but I knew it had to be different than just quickly creating an app then seeing no one use it.

I have the idea, but now what?

Soon after the idea hit me I called a buddy of mine that was doing the same line work (IT Consulting) and asked him about some of his pain points of tracking assets from client to client and what types of methods he used to keep the data organized. In a nutshell he told me that he would use anything from paper to spreadsheets. After this one phone call I felt validated as if this was enough data to go ahead and get started. Afterall this was far more customer validation than I have ever done before, and not to mention I didn’t even know anything about the term customer development.

I proceed to build out this project, and I start to get that feeling again as if no one will use this and starting product development at this stage is a waste of time, but I keep working anyway. One day while on Youtube watching Ruby on Rails videos (yes, I am a nerd…) I see a gentlemen by the Eric Ries speaking at RailsConf 2011 on the subject “Lessons Learned”. I watch the video, all 37 minutes of it, and instantly thought this is the way I need to go! I need to be lean and get through the feedback loop very quickly and I am sure I threw a couple more buzz words in there.

Honestly, the talk at RailsConf 2011 by Eric was the turning point. I got the answer I was looking for and it was customer development. We have product development cycles and customer development should be just as important.

So seeing that his book was a ways out and I had to wait for more information I said screw it and threw up a signup page: http://deep-dusk-189.heroku.com and posted my idea on Reddit. I also did a few rounds on Google Maps and Craigslist to grab contact information of other computer repair shops and technicians. I email all of them individually briefly explaining my idea and pointing them to the link to see if they would like to become beta testers for my app. After my rounds I end up with 20 signups in a week. A quick breakdown shows that Reddit alone gave me 8 and the rest came from me spamming. I received responses ranging from I don’t understand what it does to this sounds like a great idea sign me up.

So with the 20 signups for beta testers I feel I have a enough evidence that this idea is at least interesting to people. I start to get knee deep in the code again. As I get close to “launch” time (no hard date set, didn’t promise people anything) I get that feeling again as if I didn’t do enough validation and that no one will pay me for this app. I start to question what good is a signup page alone? The only answer I received is that people will signup for anything as long as its free and you don’t sell their email address.

So I read up some more on customer development and realize I need to actually talk to some of these people one on one. So I successfully reach out to 5 people - 2 in person, 1 by email, and the rest in the form of surveys. I tried to put them in scenarios and have them tell me about how they solve the problem currently. I also asked them about the current system they use and those answers looked like this - Most have in house/home-brew solutions and some use CRM systems to mange their client’s assets. At the end of the conversation or survey I asked them if they would be interested in my product and if I can contact them later and they all said yes.

So that leaves me with a total of 25 people, 5 solid ones and 20 so-so ones. Way better than I have done before so this was a great sign for me. I set off to finish the app so I can get it out to these people as quick as possible.

Development hurdles

One of the biggest technical/personal challenges was only making the core app for V1. I had to keep telling myself this is the web and I can iterate and push to production anytime I see fit. From the customer interviews I’ve did I have a few features that I would like to integrate but they did not make it into V1. The good thing is that I only see the app as “incomplete”, customers and potential customers see it for face value (good or bad). So needless to say eventhough the app is launched that does not mean the work is done, developing or marketing. I will still have to fix bugs as they arise, support, and the biggest of them all getting the word out to potential customers.

Side notes

Before publically launching the app I reached out to the people that were interested to give them first pass on the app. I was able to get 1 of them to sign up and become my first paid customer! Not bad, def not 37signals money but I feel good knowing that there is some value in this app and at lease one does!

What’s next?

I am going to continue to make marketing initiatives to get it in front of more people. I plan to implement uservoice or something so people can leave feedback and tell me what sucks and what they would like to see next in the app. I also plan to do A/B testing with pricing once I get a nice flow of visitors to the site.

Authlogic Account Has_many Users Login With Subdomains

| Comments

I ran into a problem using Authlogic in an account has_many users with subdomains scenario. I made a bunch of accounts for testing purposes with the same email address and logged in under one. I started to use the system but realized it was not capturing the right id’s for the account and started to investigate why. I took a peek at the login process in the console and seen Authlogic was doing a LIKE operator during the sql query and that was causing it to pull the wrong login information. So, here is what I did to “fix” this and some documentation for myself when setting this up, just in case I run into this again.


My account and user models look something like this:

account.rb view raw
1
2
3
4
5
6
class Account < ActiveRecord::Base
  has_many :users
  authenticates_many :user_sessions, :scope_cookies => true
  
  # Other code by you
end

With those models set up in this fashion we can do stuff like this in the user_sessions_controller.rb file.

user.rb view raw
1
2
3
4
5
6
class User < ActiveRecord::Base
  belongs_to :account
  acts_as_authentic do |c|
      c.validations_scope = :account_id
  end
end
example_user_sessions_controller.rb view raw
1
2
3
4
5
class UserSessionsController < ApplicationController
  def new
    @user_session = current_account.user_sessions.build
  end
end

Which is nothing new. This is spelled out clearly in the documentation. One of the things it misses is that you have to modify your application_controller.rb file a bit to get it to work correctly. It should look something like this:

application_controller.rb view raw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class ApplicationController < ActionController::Base

  helper_method :current_account, :current_user # you may have others that go here too

private

  # I added this so that way I can just use current_account just like current_user
  def current_account
    @current_account = Account.find_by_subdomain(request.subdomain)
    return @current_account
  end

  def current_user_session
    return @current_user_session if defined?(@current_user_session)
  
    # This line here is the main thing that you need to add. 
    # Notice the current_account.user_sessions.find
    @current_user_session = current_account.user_sessions.find unless current_account.nil?
  end

  def current_user
    return @current_user if defined?(@current_user)
    @current_user = current_user_session && current_user_session.user
  end
end

With this set up Authlogic does a “LIKE” query on the data to retrieve the login information. This becomes problematic if an identical user belongs to two accounts, Authlogic does something wierd and doesnt pull the right account. We need the query to be more specific, like give me the user with this email, this password, and that belongs to this account (which is the subdomain in the url). If we could write something in the controller it would probably look something like this.

code_snippet.rb
1
2
account = Account.find_by_subdomain(subdomain)
@user = User.find_by_email_and_account_id(email, account.id)

The problem we run into is that Authlogic’s find_by_login_method override needs to be done in the model, which means there is no way to get the account id that is being represented by the subdomain. So I thought to use a global variable to hold the account id. Shown below is the full “solution”:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class ApplicationController < ActionController::Base

  helper_method :current_account, :current_user # you may have others that go here too

private

  # I added this so that way I can just use current_account just like current_user
  def current_account
    @current_account = Account.find_by_subdomain(request.subdomain)
    return @current_account
  end

  def current_user_session
    return @current_user_session if defined?(@current_user_session)

    # This line here is the main thing that you need to add. 
    # Notice the current_account.user_sessions.find
    @current_user_session = current_account.user_sessions.find unless current_account.nil?
  end

  def current_user
    return @current_user if defined?(@current_user)
    @current_user = current_user_session && current_user_session.user
  end
end

class User < ActiveRecord::Base
  belongs_to :account
    acts_as_authentic do |c|
    c.validations_scope = :account_id
  end
  
  def self.find_user_and_account(login)
    find_by_email_and_account_id(login, $accountID) # we use the global here.
  end
end

class UserSession < Authlogic::Session::Base
  # Just telling Authlogic to use our method.
  find_by_login_method :find_user_and_account
end

class UserSessionsController < ApplicationController
  def create
    $accountID=current_account.id # Here is the global
    @user_session = current_account.user_sessions.build(params[:user_session])
    if @user_session.save
        redirect_to dashboard_url, :notice => "Login Successful!"
    else
      render :action => :new
    end
  end
end

I don’t necessarily think this is the best solution, but for now it is the band aid I need in order to get this particular product up and running. A fork or an in depth look is probably needed, or maybe it is designed this way and I am missing something either way if you can think of a more graceful way please leave a comment.

More to It Than a Signup Page.

| Comments

Taking a step back

After reviewing my actions thus far leading up to building the actual app I felt as if I did not have enough feedback from potential customers to even build what they want or if they will pay for it. I was guilty of reading a couple of books and only hearing what I wanted to hear. After doing research on customer development I missed the mark and basically built a signup page with a few screenshots on what the app could look like with no focus or reason. As stated in my earlier post I received signups (and I continue to receive them on that page) but what question does this signup page answer for me? That people have an interest in my app? Does that automatically mean that they will pay for my app? of course not. So I actually did some customer interviews.

Finding potential customers to interview is no easy task and it isn’t something that can be done in a day. You have to get creative in ways to luring them in to spend some time with you. You will get the occasional few that help out with little to no resistance and then you have others that just either ignore your request or make up some excuse. When asking people if they would help out and talk to me for a few minutes I tried to get them to commit to a in person interview and if that didn’t work I fell back to phone and if that didn’t work I had a survey made up to at least collect some type of data. As you can imagine the in person feedback was best but I think over the phone still does some justice and you can gauge how interested they are off of their voice.

The types of questions I asked were scenario based. I would put them in a situation and have them explain their behavior so I could see how they worked through the situation. I would throw in comments that would get them to elaborate on certain things but nothing that was like “Wouldn’t it be nice if all that was handled by this one app?” Only when they were finished I introduced my idea by saying “Well I am working on an application that would take care of x and y. What are your thoughts on that? How would it integrate with how you are doing business now?” I also made sure to ask them if I could contact them in the future to get their feedback on further steps within this journey and they were all nice enough to say yes. This benefits both parties because I now have a few solid companies I can rely on to bounce things off of and they will also receive benefits that others do not such as being the first to try out things and really having their voice heard in the molding of future releases of the app. I do believe I can start new relationships from the people who signed up via the web form but they will more then likely be via email or phone seeing how most of them are out of state.

Although I did not follow the rules of customer development to the T, I congratulate myself on actually starting somewhere, taking in data and realizing there is a gap in my plan. I am learning as I go and I am sure it will get easier/better with time and experience like all things.

So where does this leave me now?

I have quite a few people expecting to see a working version of this app. So I need to actually finish building it.

Making a Web App

| Comments

Idea

The idea spawned from my days of “fixing computers” for residential customers and small/medium sized businesses. The team was small (2 of us) and we pretty much winged all things when it came to organization. We would go from site to site taking care of issues ranging from installing software and fixing major problems with end user devices and some server stuff.

As we acquired more and more clients it became more of a challenge remembering client’s assets and the work that was performed on each visit. Sometimes we would go together, but not always, so that lead to asking the client what did we do last time when we were out here (lol). We tried Zendesk but to us the tickets just weren’t cutting it. Often it felt as if we were forcing the software to do what we want it to do and not using it on how it was intended.

After a good run with that business we canned it and reflected back on how much of a pain it was that we didn’t really have any organization with client’s assets and wondered if it would be beneficial to write a web app that does so. I think more and more to myself of how it would have been nice to have one place sorted by client with information that was important to us and that place be accessible from anywhere that has an internet connection. So it led to me to do some research and see what type of software offered such features and what type of cost was involved.

Researching the Idea

As you can imagine in today’s times it isn’t hard to find software to do what you want and this case wasn’t any different. The only catch was most of the software I found was for “Enterprise” level. The software for consultants was usually a watered down versions of the “Enterprise” level. Another crazy thing was that none of them had pricing readily available, and to try it out you had to schedule a demo with someone. In other words you had to become a part of their spam list so they can ask you 50 times on why you do not want to buy the software. So to start off its not looking too good on finding a pre-made solution but looking good for making my own solution.

Taking the research further I decide to ask others in the field on what they are using and if they are happy with it. I asked on reddit.com and here is the link to see what some said publicly: http://simplurl.com/it-question. As you can see the contenders are Connectwise, Kaseya, and Autotask. When I first seen these I felt intimidated because they seemed huge, successful, and offered way more than I can offer.

These companies used words and jargon that made your head hurt. Then I started to take a look at the feature list and realized that their offers are huge and bloated, and it is hard to tell what their core service(s) is/are. Some offer time tracking, invoicing, ticketing, remote management and more! On top of that most of these solutions are actual desktop apps and which I assume aren’t very mobile.

So I ask in google groups, find people on craigslist in other states than mine (Ohio), ask a few in person, and its amazing at how the answers differ when you ask the same question in different settings. Some of the answers out side of the top 3 names are spreadsheets, paper and Quickbooks. I start to feel as if I have enough information on if there is a market and think in terms of the Lean Startup and decide to make an MVP advertising that the app will be a free beta. The question I want answered is if people will even signup for such an app so I put out this http://simplurl.com/lscott-mvp.

Results

I return to the same places google groups, reddit.com, craigslist and start to spam people for signups. Here is my attempt on reddit: http://simplurl.com/reddit-signup. I receive 2 from craigslist and 6 from reddit within the first week with a very light push. With those results I am impressed so I start to build out the simplest version of the app I can to keep the hype going.

8 signups aren’t a lot in a grand scheme of things but my thoughts are I can really reach out to this small group of early adopters and get answers on the hows and whys to take for the next step. I could reach out to these people easily and personally. Other aspects are support, cost, and failure, with more people these issues are amplified. The more people involved the more support emails I have to deal with and if the app is a total failure the more apologies I have to send out, and the more people using the app the more I would have to pay for performance and servers.

Next I will share thoughts on why I think pushing a free beta isn’t ideal.

How to Prepare for a Website.

| Comments

It is rare that a successful business now days does not have some form of a website. Startup and small businesses realize that in order to be successful they need to have some type of online presence. However, getting that website created should not be taken lightly and should be prepared for. With a better understanding of what is needed by you (the client), the process can be a little less painless and you may even shave some time off of the project timeline.

Where do I start?

Have a sound business and marketing plan! In my beginning stages of web work I found myself spending too much time on developing a potential clients whole business rather than providing a web solution, or creating another way for them to generate income online. Getting a website is not the magical answer to all of your business problems. Some have the mentality that once the website is up business will take care of itself. From time to time I will review their web statistics to see how they are doing only to find out they have very few visits per month. What’s sad is that most of the visits come from them checking to see if they pop up in Google. Before considering a website you should know your business and know how a website will help boost your business. You should have a plan on how a website will work in conjunction with all of your other marketing materials.

Expect to spend money when having a website designed, developed, and marketed. (See my entry on “How much does an average website cost?”) Like all marketing or advertising it takes money, time, and consistency. With the right company alongside effective and creative use of your budget, you will be able to see substantial results. Clear your mind of cheapness, this is not an area where you want to find the cheapest solution, nor do you want to always go with the most expensive. Look for the most value, and take some time to understand what is valuable and what isn’t, always ask questions and do not assume.

Often I hear the story of how a potential client was ripped off by the last company and how very unsatisfied they were. I ask them what went wrong and the answer is usually we did not get what we needed. Then I ask them how much they spent and what their goals were/are, followed by who did it – and the price is always very minimal and the expectations are reasonable expectations but cannot be achieved on the minimalistic budget. If your budget is minimal search for other ways to leverage your business online until you are fully ready to submerge or see about completing the project in steps. What I mean is Step 1: Get an online presence that states where we are located and what we do. Step 2: find ways market the site online. Step 3: Provide a way for customers to buy online and so on. I think it is more so the web designer or developers job to provide ways for your project to be successful,  make sure you fully understand what you are getting, and keep your project within the scope agreed on by both parties.

Draft your content up front

Great designers design around content. The more content you have readily available for the designer the better. By having content up front the designer can think about different ways that the content can be presented. Creating content is also one of the most time consuming phases in the development process. Even if the designer comes up with a great design that both parties agree on you still have to have text, images, audio, video and etc… to fill it with.

I recommend thinking about each of the sections you would like on your website and what you want them to include. Your products and services sections on the website will either help make or break a sell so try and focus most of your energy on developing descriptive content for each of your services. Do not spend too much time on creating a beefed up “About Us” section. While some may care that you are a family owned business and been around since 1856 most just want to know how can you help, and how much is it going to cost.

Think about the frequently asked questions by prospective buyers. Can you alleviate some of these headaches or grey areas by having great content? Also, think about how can you persuade them that you have the best, most affordable, or most unique service or product around? Let your website do the qualifying for you by separating the tire kickers from the actual buyers.

Scour the web for examples

When looking for design ideas surf the web and take note of what you like and more importantly take note on what works. Designers are a dime a dozen but real web strategist are hard to find, so therefore eye candy is easy to get but putting the design to work is a little more difficult. Also, study the trends of your current industry and adapt and apply only the best and most relevant information or features to your new online home. Survey your customers or soon to be customers and let them tell you what would be a feature that would make life easier for them. Ask current customers what would have helped during the sales process. Would more information on your products help the buying process? What about a gallery of the custom work you have performed? It doesn’t matter what it is, just find out what will help your prospective buyers and play off of that.

Examine the websites that you frequently visit and highlight the features or the way that content is presented. Think about the sections that will change the most, will it be a news or events section that gets updated weekly or is it the section right in the middle of the home page that informs visitors of the special of the week?

Help the designer get inside of your head by selecting at least three websites that you like. Choose one that has the right blend of colors, choose another for the great placement of content, and choose another that has the functionality that you would like to see on your site. As you start to understand what you want it will be easier to pass the vision off to the designer. The examples that you select do not have to be from the same industry as yours, look beyond what the content is saying and use your selections as a guide for success.

Create easy to remember and relevant web domains

If your company name is difficult to spell, come up with alternatives or buy the domain names with the common misspellings and forward them to the real website. An example would be http://www.gogle.com when you click on that link pay attention to the URL and watch it change tohttp://www.google.com. Thinking ahead like this will cut down on the phone calls that go similar to this “I tried to go to your website but nothing came up” or even worse “I tried to send you an email but it keeps bouncing back”.

Another direction that you may take is to think of a relevant keyword, keyphrase, or if you only deal locally use your city or state in the combination. Find out what you are most sought after and use that. If you have two strong points try and combine them if they are not too long. For example a pizza shop in Columbus, Ohio may use http://www.GreatPizzaColumbus.com or an organic pizza place may use http://www.OrganicPizzas.com. The idea is to make it easier for the potential customers to get to you.

Domain names are fairly cheap and it never hurts to be safe than sorry. If your company name is easy to remember you may choose to use a location based URL and your company name. Remember, there is a fine line between being safe and being a spammer so be careful and do not go crazy on buying domain names two at max should be enough for most.

With this preliminary work done up front I am confident that your project will go a lot smoother and your web development company will know that you mean business when you step into their office. Understand that most small businesses and especially startup businesses are usually way unprepared and you will be ahead of 90% of the people seeking web development.

How Much Does an Average Website Cost?

| Comments

This is a question that is often asked by businesses that are trying to price out companies for web design and development. Before we get started I want to note that there is a difference between website design, website development, and web marketing. The differences are listed below:

  • Website Design - creating the overall layout, design/look and feel of a website. Developing the flow of how a page will look or where the content of the site will be placed.
  • Website Development - Taking the website design and bringing it to life via HTML/CSS and/or other web scripting/programming languages. Also, website development is the process of adding additional functionality to an existing website such as eCommerce, content management systems, and etc…
  • Web Marketing - taking the designed and developed website and promoting it via the web. Using outlets such as social media, Search Engine Optimization (SEO), Pay Per Click, and etc…

These services are usually intertwined when a company or person is explaining that they need web work done. With that out of the way let’s go into the reasons why web companies/freelancers charge what they charge and how they come up with their price.

How is price determined?

There are many aspects to consider when pricing out a project, but the main one is time. A freelancer/web firm will listen to you (the prospective client) explain the website of your dreams and from there they will base the price around what was discussed.

Some things that will increase the price are, the time frame in which the project is to be completed, support, consultation, or detouring from the original scope of work.

Other factors that go into creating a price quote for web services are the amount of resources, experience, and knowledge of the professional(s). The more value that can be offered the higher the price quote will be. For instance freelancers are often only equipped to perform one or two services while a team of web professionals are prepared to deliver in all areas.

Solutions such as templates, website builders, or other out of the box services can be priced fairly cheap due to the lack of customization.  Also, note that some of these services have recurring monthly or yearly fees.

How will I be billed?

There are a couple of common ways to bill; one is to require half up front and half on delivery of the project. Let’s say that the grand total of your project is $2000.00 before any work could be initiated you would be required to put down 50%. The other 50% is due after the agreed upon scope of work is completed. Other variations can be a 50% upfront, 25% on first set of deliverables, and the final 25% on project completion.

Another way is to be billed hourly. Being billed hourly seems to be the less popular way when getting a website developed. Most of the time billing hourly comes into play when providing advice or after a project runs longer than expected. Monthly fees usually occur with web hosting packages or if you agree to some type of maintenance plan.

What does the standard website package come with?

This will be based on what you have explained to the professional and what they can offer you. If you express that you need a website redesign you will get website design. If you say that you need to rank higher on Google or Yahoo then web marketing will be the primary focus.

As stated before each scenario and each company or freelancer is limited to the skills that they have acquired. Generally speaking if you have no website at bare minimum you should be offered a domain (www.yourwebsitename.com) and hosting package (to keep your files and make them visible by visitors). Although, the company that you choose to take care of your web project may not have in house servers they usually know or work closely with a web host.

Should I budget for my web project?

The answer is yes, however if you have never had a site developed before it may be wise to ask others website owners how much they spent on their website. Ask others how the process went and what items/materials you need before you go calling every web company in town. Keep in mind that websites should be built with room to scale with the growth of your company, unless specified otherwise. Today your need may only be to have an online location to display information about your products or services and tomorrow you may need to provide a way for your customers to order online. A well thought out website will be able to handle this transition.

Determine what you need your site to do for you - do you need to inform others on the services or types of products that you sell? Do you need to sell items online? Do you need to create an online community revolved around a theme or set of topics? Write out how a website will help leverage your business, or if you are doing business solely on the web explain in greater detail the process on how you will make money or see a return. A brief explanation is always nice to hand over to a web specialist so that they can have a little guidance and understanding on what is valuable to you, also it will let them make suggestions based on what has worked for previous clients.

Show me the numbers… what can I expect to pay?

If you are like me you want to have a general idea on how much something cost so you do not have to waste time on calling around only find out that you are not prepared. So, I have put together some generic numbers to help illustrate how much you should expect to spend. Keep in mind that these prices are not in relation to any one company they are just the ranges of what I have seen or heard. Also, remember that each firm/freelancer charges differently, you may have to pay all up front, half, 25% or make some type of deposit to get work started.

On with the prices!

Simplistic Brochure Website (next to no functionality/no dynamic content) This is a great place to start out at if you have never had a website created before. Typically the services included are a custom web design and HTML/CSS coding to bring the design to life. If anything such as a contact form, animation(s), or anything extra outside of the design and development scope you will be charged extra. Remember these are the lowest prices I have seen or heard of, I am not claiming that you will receive superior craftsmanship at these prices but it will certainly get you a website.

Freelance price: $200.00 + Web firm price: $1000.00 +

Expert Advice: Always strive to have work done by the most professional and service friendly. The higher price does not always reflect skill or more importantly people skills. A lot of my clients are ones who have made a switch from a company that never answers the phone or doesn’t do what they are supposed to do. Dig deeper than the portfolio, do not ignore it just dig a little deeper and see how he/she handles business.

eCommerce Website (add/edit/delete products or information) eCommerce websites can and should be used in addition to your physical store front. The only difference is that the physical more than likely closes at night and the online location stays open day and  night - year round. When looking to get an eCommerce website built you should consider the ease of use (adding/deleting/editing items in the inventory), stability, and how well does it integrate with your current site (assuming you have one).

Freelance Price: $750.00 + Web firm Price: $4000.00 +

Expert Advice: If you do not have a $4000.00 plus budget I would suggest going with a freelancer or student. Start out small and upgrade! It makes no sense to pour tons of money into something that you have no idea on where it will lead you. If you are a start up company focus on bringing in revenue first and come back and get the bells and whistles. However, make sure that you will end up with a professional and presentable site; no one will buy if the site doesn’t look legit. Remember, money doesn’t automatically go into your bank account if you spend $4000.00 bucks on a website. Evaluate where your business is now and think about where you would like your website to help take it in the near future.

Interactive Website (add/edit/delete content, publish articles, visitor engagement) Interactive websites are websites that keep your attention and have you coming back hourly, daily, weekly, monthly, etc… These sites are ones that display your favorite celebrity gossip, catch up on sports scores, or watch funny videos online. These sites are database driven and heavy on the dynamic content. Because, these sites are reliant on a database and require heavy back end programming the price sky rockets. Also, these sites are often found by search engines and have a way of self marketing themselves based off of their content.

Freelance Price: N/A Web Firm Price: $10,000.00 +

Expert Advice: If you have never had a website built before I would suggest looking for free or low priced alternatives. There are plenty out of the box solutions that will get the ball rolling, you can always upgrade later. Also, if you are just starting out on the web creating or finding fresh content may be overwhelming at first. Sites like these tend to snowball and turn into a frequently visited site, unless you have tons of marketing dollars to back it up.

No matter which way you plan to go always think ahead and be prepare yourself for the amount of time and money you may have to put in for your business to take that next step, or to serve your customers better and faster. As I stated earlier in this article evaluate where your business is now and think about where you would like your website to help take it in the near future. Define your goals up front and be sure not to over or under do it and if you are not sure, always get a second opinion.