Six Months of Freelance

I’ve been doing various forms of web design and development for ten years, although it was mostly just a hobby or a business on the side. In 2005 I began working hard to set myself up for an eventual transition into doing this full-time. Ironically, I began doing this full-time when I was least expecting to, despite all of my work. It’s been six months since I made the transition, so I figured it would be a good time to share some of the things I’ve learned.

1. Always Follow Up

I always try to keep in constant communication with clients – it helps me keep the project fresh in my mind as well as theirs. Sometimes I follow up and they’re reminded that they still need to do something – like pay. It works well with clients, but even better with leads. When I follow up with leads it has that “reminder” aspect, but it also shows that I provide everyone the same level of consideration and communication.

2. Know Yourself

When I began working at home I would become focused on watching TV, stepping outside, eating, cleaning, going through old magazines, playing games, etc. I’m a person who really needs to separate work and home life, so I moved myself into an office. There is absolutely nothing to do in the office except work. I keep an ever-changing list of tasks for each project on a giant white board, and I really don’t have any standard way to track projects as they’re all so different.

This situation works well for me because I’ve learned that’s what my brain handles best. You may be more efficient and more productive working at home without anything written down. The key is to learn what works best for you and to adapt your life to accommodate those needs. Once you’ve found the best method to make yourself productive, you’ll really start seeing the work get done.

3. Play

You need to force yourself to stop working. Around 11:30 or noon I wrap up whatever I was working on and shut everything down and I play a game or surf the internet. It gets my mind off of work, gives me some time to have fun, and it really helps break up the day. Having something in the middle of the day to look forward to also helps me get to work in the morning.

If I convince myself that I can play for a half hour if I do several hours of work, I’m pretty eager to get started knowing I have a “reward” coming. Even to this day I feel guilty taking time to play because I know how much work there is. Now that it’s my business I’m much more concerned about how much money is coming in, and time is money. You just have to learn that a bit of a break is required.

4. Don’t Assume

I’ve always loved the saying ‘when you assume you make an ass out of ‘u’ and ‘me’”. Never assume that you know what your client wants, because you’ll waste time doing the wrong thing. Never assume that a quick and extremely easy change works fine and doesn’t require testing, because something that’s connected will fail and cause problems. Never assume that you don’t need a file, a document, or an email, because right after you delete it you’ll realize why you need it. This last point is the basis for the final tip…

5. Keep Everything

Keep every email, every attachment, and every document. Keep any password you ever have (securely of course), keep all of the materials sent to you for a project. Keep all of your files, and if possible, keep as many revisions as possible. Keeping this much information is a waste of time if you’re not backing it up.

For example, my data is backed up once a day to two machines – one machine at work and one at home. No matter what I need I have access to it, whether it’s a logo graphic someone sent me six years ago or an ftp username/password for a current client. Keeping everything just saves you a lot of time and energy if anything is lost, in question, or needs fixing.

Plus, it’s embarrassing to go back to a client asking for something a second time.

Anyway, it’s been a great six months! Here’s to another six!

Managing Yourself

It can be pretty difficult staying on task when working for yourself. First of all, you know that no one is going to lecture you about taking time for personal things and the office mood is pretty laid back. It’s always been difficult for me to sit in front of a computer knowing I have work to do when computers also let you play games and waste your time. Sometimes I feel like I’m just not in the mood to program, and this can be a serious issue when I haven’t even started a project yet.

Staring at the glow of a screen thinking about a large project looming over me can be such a motivation-drainer that I end up not starting the projects for days. Falling behind causes a serious amount of issues which are decent motivators themselves. A delayed project means:

  • Customer does not see milestones when they were expecting. Small delays are never an issue because clients actually expect a few of them, but when there are either too many delays they begin to get nervous about what’s going on. My goal is to never miss a deadline, and it’s important enough to have it’s own question in my project evaluation.
  • Delaying anything doesn’t prevent me from doing work, so it’s best to just do it now and then move on. It’s really the same amount of energy, it just takes some additional get-going attitude now.
  • Late work means my earnings are off schedule and payments may not be coming in when I expected. This causes problems with earnings and income estimates. If I end up wasting time not doing any work, then I’ve lost money as well.
  • Delays cause chain-reactions that can only be reversed by burning the midnight oil. If I estimate seventy hours in December but I end up doing thirty of those hours in January, that’s a decent chunk out of available work time in January. Anything originally scheduled to begin would also be delayed, and we repeat the process over.

I’ve learned that I work best when I have things clearly organized and broken down. If I break down large projects into smaller chunks I find that the project is going to be easier to manage, and at the end I feel as if I’ve accomplished more. Here are some of the tricks I’ve used to manage my work time and motivate myself (most I’ve used for a long time but are more important now):

  • Organize. I purchased some standard charting tape and I’ve used it to create nine large boxes on a dry-erase board. Each project I’m currently working on gets it’s own box and I write down a list of my next tasks for each project. Every morning I highlight the tasks that I plan on completing by the end of the day with an orange marker. Once certain tasks are completed I erase them and write in the new ones. I keep a small section empty for quick notes. Having things written out in big letters and placed in a grid gives a very good visual idea of what work I have to do.
  • Give yourself enough work to last a few hours. Pick out some CDs or playlists that you can play straight through. They’ll act as a timer – once completed you can a fifteen minute break. Surf the internet, play a game, browse the iTunes music store etc. Do something fun so that you’re essentially rewarding yourself for doing that first chunk of work.
  • Have a lunch you can look forward to. A fresh, tasty lunch is a great way to break up your day. You’ll look forward to that meal all morning and knowing that you can have that once you’ve finished half of your list, you’ll work harder. You wouldn’t really be excited for a so-cold-its-hard-and-tasteless-sandwich-that-has-fused-together-ingredients now would you?

Starting a new programming project can sometimes be like an artist staring at a blank. If I haven’t really thought about how I should begin then it can be scary, and possibly can cause a delay. I need to force myself to sit down and think about how something needs to be done and how the specifics of any existing code/design will impact what I need to do. This is probably the most difficult part of most projects because I have no one to bounce ideas off of.

Sometime next year it may be necessary for me to a hire a junior developer, or at least sub-contract some work. Maybe then I’ll have someone to bounce ideas off of.

Personal Projects, 20% Time

Everyone who works online is typically aware of the famous “20% Rule” from Google. When I was working for TechTracker, Wells Fargo, etc, I was always jealous of the idea because I had so many ideas of my own yet no time to work on them. I still managed to throw together some of the ideas that would help me the most, and some have been fairly popular.

When I began running Botsko.net full-time I had to keep up some of those personal projects (Formsaver, Squibbles, etc). Now that I’m my own boss I figured it was time to work out a system similar to Google’s. Because these pet projects have the ability to either bring in revenue directly or by bringing my name to the attention of folks around the world, I figured it was important to give up some client-work time to ensure these projects continue.

While it’s taken a little while to get the corporate-trained instincts out of my system, I’ve really come to like the system. Google began using the system because they figured it would a) make employees happy by letting them work on their pet projects, b) stimulate employees to come up with their own ideas and solutions, and c) give folks a break from their actual work.

Working on Formsaver or Squibbles can be a nice break from client work and it gives me some time to focus on how I would solve a problem. I don’t need approval for it, I don’t need to worry about getting a lecture about using the company equipment for personal use.

A Common Sitemap

Google, Microsoft, and Yahoo have just announced that they will begin using a standard sitemap protocol. I’ve done a lot of work over the last two years designing various sitemaps, so now that I’ll be able to design one for everybody is a huge benefit to my clients. Not only are these three groups working together but they also decided to use the same standard – that’s a miracle.
Google’s Announcement

Microsoft’s Announcement

Yahoo’s Announcement

Luckily, the format they’ve decided on was previously Google’s, so adapting existing sitemaps to this new protocol will be painless. I’ll be updating my own sitemaps sometime soon – Botsko.net, MySquibbles, etc.

If you’re interested in creating or upgrading your sitemap, please feel free to contact me.

Users of the SCPM3 system will automatically receive a new sitemap generator in the next update.

Yay!

Attracting Traffic With Simple Preparation

In the beginning of October, Squibbles was officially one month old. While it’s been difficult attracting the target audience it’s intended for (because they’re parents, not all-day internet users) I knew that an upcoming holiday would mean a lot of those people would be searching the internet for something I could grab a share of.

In the first week or so of October I collected a decent list of Halloween links including links to games, puzzles, recipes, and the obligatory pumpkin carving templates. It quickly entered the Google indexes because every few days the search giant checks out the site map file. A sitemap file is a specially-formatted file that tells a search engine which pages I would like it to index. Obviously, it takes me seriously as every single Squibbles page is now indexed. Squibbles was designed with SEO in mind. The URLs are very clean, the page titles are very unique and descriptive, and for the most part the site has valid xhtml.

On October 23 I saw an excellent increase in the amount of visitors, and I started getting several new user registrations (now the website is still an infant so these numbers are not mind-blowing in anyway, but they hint at what’s to come). I checked out my stats and sure enough Google had become my top referrer. My Halloween feature list was an experiment and it was very short, yet it was already bringing a lot more traffic through than I had anticipated.

This Halloween page was only two weeks old, yet Squibbles was already placing on the first and second pages for searches like “halloween puzzles and quizzes” and “printable pumpkin templates” respectively.

Lessons

The primary lesson is that if you do things the right way, things pay off. I’ve seen the success that a very small feature can bring when I anticipate which searches my target audience will be doing, and then tailor my content to meet those needs. I have an array of holidays coming up that will help me refine this technique. I will make sure I provide a wider selection of links, and I will continue to ensure that my titles are clear, my content is valid, and my site map file is complete.

Organizing Yourself and Your Business

It’s been quite an adjustment for me going from a full-time job with my web business on the side to a full-time job that is my web business. Few of the tools I used could handle such a work load, and it was less than a week before it became clear to me just how behind I was. When you’ve been running a side business for several years you can get by with an excel-based invoice, a single computer, and a single place to keep the relatively small amount of files.

The lack of structure, organization, and separation essentially hit me over the head. I figured I would document what I’ve managed to figure out thus far, who knows, maybe it will be helpful to someone else.

Organization

Four weeks of doing this full-time has tripled the number of clients, projects, emails, and phone calls I need to work with everyday. Clearly it was too much information to remember alone, so I’ve enlisted the help of several tools to assist me.

  • Gmail -I’ve been using it for a few years as my primary email, but I’m surprised at how easy email management is whether I have ten emails a day or a hundred. It’s spam filter works very well for me, and honestly Gmail is the most amazing email “client” I’ve ever used. I really enjoy the Google Maps feature – when clients send addresses to me I can simply click on a link to google maps, as Gmail scanned the email and found the address. However, I’ll soon need to begin downloading copies of everything, just in case.!
  • Google Calendar – An excellent application that does what I need it to.
  • Backpack – I’m still only using the free service, but I may soon need to upgrade. It really helps me keep a to-do list and notes, and having separate pages is nice. I currently don’t use the files feature as much as I like. Most of my files are emailed to me from clients, so Gmail has become the storage area for those (besides my local archives).
  • RapidFax – My fax machine was destroyed a few years back when a heatwave melted the toner to the gears inside. I wanted to avoid paper piles and I didn’t need a second phone line, so I went with RapidFax. For $9.95 per month you can send faxes from tons of popular file formats, and receive faxes to your email in PDF format. Very cool!
  • Wufoo – I’ve created a basic project evaluation for clients to fill out so that I can keep a close eye on my performance. As with backpack I’m still using the free service, but it works for now. In the future, I’ll write my own evaluation tool but I just don’t have time now.
  • KeepPass – I’ve used this to securely store my passwords for about two years now, but it’s even more important because I get all kinds of ftp, mysql, ssh passwords on a daily basis. It’s a small application that’s excellent at storing the information securely.
  • A plain old dry-erase board – I’m a kind of person who needs to write things out in a very temporary place. I use a 6×4′ dry-erase board to take meeting notes, draw lists of tasks remaining for the next day, etc. Writing a task down actually takes half the amount of work necessary to manage them in any online tool.

For some of you wondering – yes, I still do use my notepad generator.

In years past I simply managed my client work from Excel estimates and invoices, and I kept a basic record of everything in an embarrassingly ugly and poorly-written tool called Mango. I developed Mango as a very basic tool to help me keep track of clients, estimates, and invoices. Unfortunately, it’s still the only tool that handles what I want. My dream application would be one that handles:

  • Lead contact info.
  • Client contact info.
  • Tracks estimates and produces estimate documents based on a template I can fully customize. Associates an estimate with a lead/client.
  • Tracks projects and allows me to enter time spent and amount charged. It needs to be very flexible, not based on exact time-tracking or set-amounts.
  • Tracks invoices, and produces invoice document based on a template.
  • Tracks payment information, associates with project.
  • Reports on earnings per year, project stats, lead stats, estimate stats, and client stats.

I’ve tried several applications so far but nothing seems capable of what I want. There are several applications that do one of the three major sections – contact management, project management, and billing. I’m already using three different methods, so I don’t think I should take the time to move over to three separate applications, although I may need to. If anyone knows of a tool I should try, please let me know. Eventually, I’ll end up writing my own (again).

Legal

I’ve been doing a lot of reading lately about the legal aspects of running your own business. I revamped my project contract to be a bit clearer than before – I had never really needed it before so it was never an issue until now. I did a lot of research and even wrote a blog post that’s been sitting in my draft folder for several months. Maybe I’ll finish it and post it soon, now that it’s fairly complete. It was really important for me to define project scope, timeframes, client requirements, payment terms, etc. Several of the resources I list at the end of his post were helpful in writing up a contract.

It’s also going to be necessary to be sure my business follows the laws of my state (Oregon) and is properly recognized as a business. While I still have some investigation work to do, I think it’s best for Botsko.net to become an LLC. To put it simply, that’s the best type for people in this position, and from my work with Wells Fargo I’ve realized it’s the best for where I am right now. Plus, many of the clients I work with are also LLCs.

To file here in Oregon it’s going to be around $350-400 depending on which law firm I go with (Oregon filing fees included).

Someday I’ll need to get an employer ID number from the IRS because there may come a time when I need to hire someone to handle the marketing/administration aspects, however that’s quite a a ways down the road so it is not a priority right now.

Accounting

For the rest of 2006 I’m just going to handle it myself, but after that I’m going to get an accountant. I’ve realized that a lot of the things I pay for will now be deductible – trade magazines, books, supplies, machines, services, even the hosting costs for Squibbles and botsko.net.

It’s even more important to be sure I have a way of keeping accurate records for tax purposes, whether I have an accountant or not.

Systems

Now that I have a lot more data to store and protect, I have had to reorganize my folder structures. I keep a separate drive on my main machine with a folder called “botskonet”. Inside I’ve broken things out a bit. The important folder inside botskonet is called “Clients”. The client folder hierarchy is:

/botskonet/Clients/Client_Name/[Optional_SubClient_Name]/Project_Name

This system will help keep things organized even when I have thousands of folders in there, it will still be easy to find things. I took the same idea and applied to a new CVS repository (I know, I know, subversion is better). So my CVS repository for client stuff is essentially the same thing:

cvsroot/Clients/Client_Name/[Optional_SubClient_Name]/Project_Name

I suppose I would also like an application that could link up with CVS/Subversion and the filesystem, but now I’m just dreaming! The files are protected from any outside access and they’re all password-protected.

I still use Bugzilla for both internal software projects and client work that has reached a fairly mature stage. I’ve outlined some basic guidelines for myself that I’m still doing well with.

Resources

Here are my favorite resources that I’ve come across in the last month of research. I hope you’ll find them as informative as I did.

I found myself at this article by ParticleTree almost everyday.

Here are some others:

http://www.gyford.com/phil/writing/2006/10/26/a_beginners_guid.php
http://www.unixwiz.net/techtips/be-consultant.html
http://www.garrettdimon.com/archives/steps-to-becoming-a-freelance-web-developer
http://www.cameronmoll.com/archives/000643.html
http://37signals.com/svn/archives2/small_biz_101_how_to_get_started.php
http://www.sitepoint.com/blogs/category/selling-web-design-services/ (the latest entry has little to do with the topic, but the others are interesting!)
http://www.sitepoint.com/print/fire-your-boss-home-freelance
http://megillustrations.typepad.com/beetlegrass/2006/08/anniversary.html

Thanks everyone for reading! I am really looking to hear from you all. Until I feel it necessary to enable comments again (darn spam!) please send an email to botsko@gmail.com.

One Month In

One month ago today I left my web developer position with TechTracker and immediately began focusing on building up client work. I’ve been doing web work in some form or another for others since 1998, and while it began as a hobby business it quickly evolved into a way to make some additional cash.

In 2001 I forced myself to keep up to date with the latest and greatest and managed to turn that knowledge into some basic web work. I formed a few relationships with marketing companies and graphic design firms, and suddenly found the business growing. In 2004 I really began paying attention to how well it was working out, and I began the first steps of planning to make it my full-time job.

In early 2006 it was clear that I was fast approaching the level necessary to sustain me full-time, but I was turning down a lot of work because I was working a full-time job, supporting a family, etc. I worked for several months revamping my website, forming a professional image, and trying to prepare myself for the eventual flip.

It came much earlier than anticipated, and the opportunity was a surprise. I began devoting my time to pulling in additional clients and I began working to forge new relationships with companies that would provide recurring work. It’s now been one month since I began and I’ve surprised myself with how much opportunity was out there.

I’ve gotten some excellent work and the variety of it has been enjoyable, and I’m about to begin some larger projects which will be nice. I’m beginning to figure out what type of project schedule works best and I’m slowly adapting to running everything full-time rather than just here-and-there. The technology and the development aspect is the easy part, it’s keep everything organized that’s the problem.

For seven years the work has been tightly integrated with my personal life because it was so minimal it didn’t matter. All of a sudden my leads, clients, estimates, projects, and invoices have snowballed into this giant mass of stuff. I realized right away that my existing methods of organization and project management were about to become seriously wiped out of existence.

Now that things are rolling along a bit I’m going to be posting more work-related entries. I may even need to separate this blog, one for personal and one for work. Right now, the News link on botsko.net leads to this work category only, however I’ll need to customize the rss feed so that it only pulls this category as well.

My future posts on work will be more technical and more enjoyable for clients and fellow developers. Next on my list is to share what I’ve learned about this type of work in the last four weeks.

The Other Way Around

Before taking my current position at TechTracker, I said that CSS development was easier than PHP programming. CSS development is my task for TechTracker, although JavaScript and PHP work happens here or there. My first few Botsko.net projects for 2006 have been more programming-based than the design-based projects I was working on in Fall 2005. It’s become clear that programming is much easier than CSS.

Programming is like a puzzle. You need to figure out where each piece goes and if it doesn’t work, it doesn’t work. You’re trying to put a square shape into a round hole and it doesn’t work that way. You’re solution is obvious – either change the circle to a square or a square to a circle. It’s pretty black and white and the only reason I could spend two hours trying to figure out why it won’t work is because I forgot a character somewhere.

CSS is like trying to put together a three-dimensional puzzle when you can’t see the edges of the other pieces. You can easily follow the logic in your programming because you can see what’s going in and what’s coming out of each step and programming doesn’t change because of the web-browser you’re using.

Developing something in css depends on what version of the CSS standard is used, what browsers support it, and what browsers have bugs when one item is combined with the next. There are several hundred ways of defining styles, and even multiple times in multiple files. It’s hard to keep tabs on where each element is getting its styles from.

Oh well, both are still better than WF.

PC works again!

The replacement power supply from HP showed today, so I performed some PC-surgery and the pc is in recovery now. Now, I need to find a way to sync all of the stuff I temporarily placed on the laptop back with the stuff left on the old PC. Maybe a good time for a reformat?

Nah, like I have that kind of time.

Hypothesis, Experimentation, Development

I’ve found that development is beginning to remind me of middle school science. Every once in a while something comes across my plate that I don’t see any way to accomplish. But before saying no right way (and before saying yes), I sit down and think about what needs to be done. To repeat an over-used cliche, I need to think outside of the box.

Recently at work, I’ve come up with a few hypotheses as to how something could be accomplished. I setup a small test folder and come up with the code for what I think it will take. Like middle school, I begin an experiment to find out if my educated guess was good or not – exposing the unknown attributes and exploring the interactions of elements (like chemicals). The result are tested in several control environments, i.e. various web browsers, different situations, etc. Then, I document the results.

The only thing my science teacher did that my coworkers do not do is make me write up a paper. I simply show them my results and they get excited, no grading necessary. If it works it works, if not I either did it wrong or I tell them it’s impossible.

It isn’t entirely the math in math class that you need when you get older (you need to know how to do your taxes, but you don’t need the quadratic equation on a daily basis). It was the fact that you had to learn about patterns, and how structure can affect the results. Numbers appear to be so simple yet they are used to explain everything around us, so you need to know how they relate to each other. It’s the same with programming – you cannot write a program without an understanding of order and logic.