Twitter RSS

Let’s Make a Deal – The Importance of Contracts

Monday, April 20th, 2009

One of the first questions you must ask yourself if you are doing freelance work or running a small business is “will I use a contract?” Conventional wisdom indicates that you should always use a contract when entering into business with somebody else. Despite this advice, many freelancers or small business owners either do not use a contract at all or use one that doesn’t spell out the agreement adequately. Our company has learned the hard way that writing effective contracts is a must. In this article, we’ll look at some of the main reasons why using a contract is a good idea.

Getting on the Same Page

One of the biggest advantages of using contracts is it allows you and your client to get a clearer idea of what the project entails. It can be used to clearly define payment terms, the project timeline, and the expected project deliverables. Our contract actually walks through and describes in clear terms our web design process. There is no need to view contracts as a necessary evil full of legal jargon. Instead, view the contract as a tool that helps both parties stay on track.

Avoiding Scope Creep

‘Scope creep’ is the project management buzzword that describes the phenomenon of ever-growing project demands. A client starts off wanting a simple website with a shopping cart, and before you know it they’re requesting live chat features, a discussion forum, and user profiles. Scope creep can also take a more subtle, more sinister form. It may involve really little things like constant requests to upload a bit of content or a suggestion that involves making one more page for the site. But, even these minor additions to the project can add up and kill your time if you aren’t careful. If you have a well-written contract and design proposal, then both you and the client can clearly see the scope of the project as originally agreed upon.

Scope creep is not necessarily bad in and of itself, as long as you have a way to deal with it fairly. After all, it’s unlikely that the client is going to know exactly what they want right when they first begin the project, and they are likely to learn things along the way that might require a shift in strategy. It is not realistic to stick rigidly to an original agreement, because things change and evolve over time. But, a contract can help you to fairly and reasonably manage a change in scope. Make sure that your contract contains provisions that lay out the costs associated with any expansion of the workload or significant change in direction that may occur during the course of the project. If managed correctly, ’scope creep’ can actually be a good thing – allowing you to get paid for doing more work on a project you are already working on.

Provide Legal Protection

Unfortunately, we live in a litigious society, so the risks of some sort of legal action are higher than ever. Do you want to appear in court without a signed contract to defend your position? On the other hand, if you are trying to collect money on a completed project, do you want to be in small-claims court without a signed agreement in hand? Obviously, we all would like to avoid this type of nasty confrontation, but even if you would never take it this far, there is no guarantee that your client will return the favor. Protect yourself with a contract. As long as you follow your end of the deal, a signed contract will come to your defense.

Even if you never actually go to court, the mere existence of a contract can really help you out. Clients who are tempted to bail will be a bit more hesitant when they realize that they made a legal agreement.

Note that a contract also provides the client with legal protection. A contract should also ensure that you, as the designer, don’t bail on your client or treat them unfairly. Be sure to explain this benefit to the client when asking them to sign a contract. Many people tend to be suspicious of contracts and suspect foul play whenever they are used. This is a false conception, though, because a contract actually protects both parties.

Weeding Out the Bad Apples

Frankly, requiring a contract is a good way to filter potentially terrible client relationships. If a client is unwilling to sign a contract, this is a sign of trouble ahead. Rather than lamenting the loss of a project, celebrate the fact that you may have dodged a bullet.

One of the biggest lessons our company has learned over the years is that we don’t want every single client we can get. Just like clients are looking for a good fit with a design company, you should look for a good fit with a particular client and project. Perhaps you’re desperately strapped for cash, and this advice sounds a bit idealistic. However, the headaches, lost time, and frustration that comes with a bad client relationship are not worth it, and often aren’t profitable in the end anyways. It definitely won’t be profitable if they bail on you mid-project or refuse to pay. But if they sign a contract, it indicates that they take the project seriously and probably at least intend to pay you.

Why Not Have a Contract?

What are the main reasons for operating without a contract? Perhaps the biggest concern is that clients won’t like them, since they may view it with suspicion. This is particularly true for smaller clients – many big ones have a lawyer on staff to look it over (and big companies expect to deal with contracts). However, as I’ve explained before, a refusal to sign a contract is a strong indication of a potential trouble client. Also, if a client seems uncomfortable about signing, take the opportunity to explain the benefits of the contract. A good contract will actually protect them as well, and it will allow both of you to get a clear idea of what the project entails.

Another objection to contracts may be that they are too time consuming. Drafting up a contract for each client is a laborious task – and this time could be better spent doing actual design work. However, in reality, you can probably make a contract template that applies to most projects, and vary it slightly for each client as needed. And with plenty of online resources to help you, writing a good design contract shouldn’t be all that difficult. In part two of this article, I’ll go over some tips on what to actually include in a design contract and provide some more resources to make the whole process a lot easier.


Developing vs Programming

Thursday, March 26th, 2009

I’m a mediocre programmer, at best.

When I’m programming, I need 8 different tabs open with every reference site I can get for a particular language.  I google function names constantly, most of my debugging time is spent with dumb syntax errors, and I’m never going to be able to use Regular Expressions off the top of my head.

So what can mediocre programmers like myself do? Develop. I’m going to go over a few tips for good application development, and how to use development methods that can improve your programming, even if you lack superstar skills.

Project Management

There are too many different project management philosophies to mention here, and many of them are developed by very experienced and knowledgeable professionals in the industry.  However, project management and planning remain to be the biggest downfall for most programmers.  Many of these methods are made to apply to development teams, but you can abstract a lot of the ideas to individual projects.  Try to check out a few papers or books on the topic during your free time.

1/3 Rule

For most projects, I try to stick with the 1/3 rule:  spend (approximately) 1/3 of your time on planning, 1/3 on coding, and 1/3 on testing.  Many programmers expect to spend the majority of the project timeline writing code, and believe that good code will drive the project.  However, I have found that most worthwhile final products are created from development timelines that have actual coding as a minority.  This 1/3 flow can often take iterations for different portions of a project, where you plan, code, and test small portions and move on to the next section.  But you will often find dedicating time to plan properly will cut down on actual coding, and proper testing will save you time in the long run.

Start with Your User

I am a big fan of top-down development.  There are a lot of different theories about development strategies and methods, but I have found that for real world applications, the single most important aspect of any program is the interface.

With that in mind, I start my planning with laying out the interface.  Implementation of this idea can vary depending on the project.  For example, you may start with wireframes and a user flow for a web application.  For something like simpleCart(js), I started by listing every way in which the user would interact with the code, including function calls, div classes, and html layout for cart items. When you start your project by building out the interface first, you are ensuring that your program will adhere to the end-user functionality of the project.

Compartmentalize Functionality

It doesn’t matter whether you are a big believer in MVC (I am) or like procedural or object-oriented (I’m a OOP guy); you will find yourself improving your code by creating structure first, and then implementing code.  It is often beneficial to create functions (or objects) that relate to real-world goals or problems.  If you say to yourself, “I am going to need to store the current user preferences in a cookie,” you might want to create a function for exactly that.

By focusing on individual problems, it becomes much easier to create efficient code for that particular purpose.  In turn, you often write better code.  It also becomes much easier to debug; if you are having a problem storing to a cookie, you simply look at your ’store to cookie’ function.  Documentation also becomes extremely easy, as the purpose of your code becomes evident simply by looking at the function name.  I know this may be second nature to many developers, but it can’t hurt to mention it.

Abstract Data Storage

I’ve found that many projects outlast hardware, hosting, or storage implementations.  You may move your code to another server, decide to implement a different database system, or find that you outgrow your storage and need to keep data in more than one place.  In any of these cases, abstracting data storage and retrieval functions from the rest of your code will benefit you immensely.  Data storage is often the last part I consider for my project.  I often do most of my developing with two empty functions: load() and store(). They are usually the last thing I implement, as, in most situations, they are the least important to the functionality of your end-user.  It also becomes extremely easy to maintain consistency of your core functionality when switching to a new data implementation by simply altering these functions.

Conclusion

These are all very high level concepts, and it may or may not be clear how to actually implement some of them in your projects.  The overriding theme that I hope you can take away from this article is that every program looks the same from 10,000 feet.  Most great applications are built with the end-user in mind, and great development isn’t necessarily dependent on great code.  Please let me know if you guys have any other tips.


Tips and Themes from Future of Web Apps Miami

Monday, February 23rd, 2009

We all just spent a few dedicated days listening to talks and having long hard discussions about building web apps in Miami at FOWA. There’s so much to take away that it’s impossible and far out of the scope of this blog to cover it all here. However, we thought we’d share some of the bigger points that really struck us.

Build as little as possible to start.

If you build a massive app with 300 features, then your users may be stuck using what you’ve given them. However, if you launch your app or new feature with the bare minimum, then your users will use what you’ve given them and tell you what direction to go to make improvements. A great analogy brought up by Daniel Burka of digg is the story of an MIT architect. This architect built a building and instead of sidewalks outside it they just covered everything in grass. Then they came back a year later and got on the roof. They took a picture of all the wear and tear on the grass made by the foot paths of all the people going to and from the building and covered them with cement to make the sidewalks. Let your users pick the direction of your app.

The future of web applications is people.

This was a point brought up many times by multiple speakers. It revolves around the idea that we’ve started and built the web first, then we added people. We are going to focus greater attention on how to build the web more around people and less around technology. Facebook Connect is a huge example that seemed to be everywhere at fowa, including a presentation by Dave Morin on the topic. Facebook Connect is just an example of the broader concept – if you build an app that brings about a lot of new tools and tech for users than you need to learn how to make those tools and tech revolve around people, not their function. Build your apps around people, not just good function.

Be a skeptic.

Don’t ever think that because this tip helped person A it’s going to help you. Don’t listen to how this new tool coming out can really help person B and assume it can help you. Really, really think about the hundreds of tiny factors that made it work for them. Through that search you’ll find out what might work for you and you’ll see it’s nearly always somewhat different. Moral of the story, facebook connect is awesome but I don’t care (though lots of other people probably do). Atlas from 280 north brought a tear to my eye it’s so good, but I don’t think it’s going to work out for me as well as he made it seem it would. Percentage coupons work for 37signals but why on earth should I think it will give me the same results? Be careful of anecdotal tips, find out what works for you.

Twitter, WTF?

Seriously it’s gotten out of control. When I heard, “for the first time ever you can tweet to space” I thought, really? Is that surprising? Is twitter that old that we really view that as a breakthrough? I heard twitter said at fowa as much as I used to hear “web 2.0″ thrown around. Don’t get us wrong, we’re not knocking it. We even have our own twitter page to prove it.  However, we did see 10+ people within twelve feet of us using twitter at once (in fact, we started tweeting just to see how many screens we could see our tweet on). Google is not the Internet. Neither is twitter- and don’t forget that.

Recognize the value of what you are creating.

One of the first things mentioned at the conference by the opening speaker Jason Fried (of 37signals) was that web developers need to start charging more. Many of us feel that we have to develop an awesome web app and provide it for free to get anyone to even pay attention. Jason argued that it hurts the industry. Rather than succumb to this temptation, we need to develop sustainable business models. If we create something that is truly of value, there is nothing wrong in charging a fair price for that value. Free is dying, start making money.

Give people a reason to love you.

Consumers have more power than ever before. Not only do they have a growing number of choices, they have more information (and more potential influence over others) than in the past. If people are going to stick with you, they have to have a good reason to. And this comes back to truly caring about your customers. As Gary Vaynerchuk put so eloquently, “You want a marketing strategy? CARE!!!”

Design matters. A lot.

I tend to be a functionality guy. But the importance of compelling design was a theme that ran consistently throughout the conference. Delicious Library was offered as a telling example; this program made millions by taking something that could already be done (making a catalog with Excel) and giving it an attractive and fun interface. Even though functionality is important, at the end of the day we enjoy using things that are well-designed. Make your apps fun to use and good to look at, people lust for movie stars, not old fat balding men.

Overall Future of Web Apps Miami 09 was an excellent experience and we wouldn’t hesitate for a second to go back again. Great job to all the folks at Carsonified.


FOWA Miami next week!

Wednesday, February 18th, 2009

Ok everyone, we here at the wojo group are getting pretty excited for next week. On Saturday, we’re packing up our cars and driving straight through the night. We’re not stopping until we hit Miami. Why, you may ask? FOWA 2009!

For those of you who are a less of a geek than I, FOWA is the Future of Web Apps Conference. It is one of many wonderful events that Carsonified puts on every year.  We will have the pleasure of spending 3 days in downtown Miami, attending workshops, presentations, parties, and fraternizing with the ‘web-developers A-list’.

We are going to try to keep all of you updated from the conference this year, using this crazy thing called ‘Twitter’.  So, check out twitter.com/thewojogroup next week (Feb 22-24) for updates, pictures, and stories from FOWA Miami 2009.  

And for those of you lucky enough to be going to FOWA also, we’ll see you there!


Top Ten Free Business Apps for the iPhone

Monday, November 24th, 2008

The app store is one of the greatest selling points of the iPhone. There are literally hundreds of apps already available (including hundreds of free ones!), with more being added every day. Apple’s device is already a great productivity tool, but there are also some additional applications that can really help you and your business succeed.

So without further ado, here are the top ten (free!) apps not to miss for your business needs.

1.) PageOnce

Access all your accounts from one app.

Access all your accounts from one app.

In order to make this app work, you’ll need to get an account at PageOnce.com- but no worries, this is free too. PageOnce is a useful site that allows you to view many different accounts on one page. This can range from social sites like Facebook to email accounts. However, the real use for PageOnce from a business perspective is the ability to add financial services accounts to the page. It supports more than 6,000 financial services- including credit card accounts, bank accounts, and investment accounts.

The most useful aspect of the app for the business owner is the ability to check bank account and credit card information easily right on your phone. Whether or not you use the PageOnce website, having one-click access to your bank balance and recent transactions is really handy.

2.) iProcrastinate Mobile

Easy task management.

Easy task management.

There are plenty of to-do lists and project management applications for the iPhone, but most of the best ones cost money. Not so with iProcrastinate Mobile. This terrific application gives you a slew of features without being overbearing or difficult to use.

First, you create your own groups to categorize your tasks. Adding tasks is quick and easy, but you have plenty of options to work with. You can set the due date, write a brief note about the task, and set the priority. You even have the option of adding steps to your tasks. Plus, you can add team members from your contact list to tasks.

As if this weren’t enough, iProcrastinate Mobile has a couple other features that make it practically irresistible. First, the ability to create “smart groups.” You select which categories you want to aggregate, and you can create a group that will show you all tasks that are due within the time period you specify. I’ve made a “Due Today” group so I know what needs to get done immediately and a “Due This Week” group so that I can do some more long-term planning. The second really great added feature is the ability to email your task list, either to yourself or to anyone else.

iProcrastinate is also really easy to use. When you want to delete an item, simply ’swipe’ it and delete it. If you are looking for a certain task, type in a key word in the search bar at the top of each category page. You can also color code different types of task for easier viewing.

Finally, one of my favorite features of this app is that it displays the number of due and overdue tasks from the home screen. This allows me to easily see how far I’m falling behind with all my tasks. Depressing, but useful.

3.) Wordpress

Easily access your wordpress blog.

Easily access your wordpress blog.

If you built your company blog using Wordpress, as we have, then you may want to get this nifty little application. Adding blogs is really easy, and you can manage all of them (if you have more than one) from the same interface. You can write a new article or edit existing ones, including the tags, categories, and status. Although it will not usually be practical to write your blog entries using your iPhone, it can’t hurt to have the ability. It’s most useful for looking over articles and making quick fixes while you’re on the go.

4.) Box.net

Take documents with you on the move.

Take documents with you on the move.

Accessing your spreadsheets, presentations, and other documents while you are on the move can be very useful. Box.net provides an convenient way to access, share, and collaborate on your business documents. You just set up an account at the Box.net website (don’t worry, you can get a 1 gig account for free). It’s a breeze to upload your documents and share them with others as well. The app is clean and easy to use as well.

5.) IM + Lite

Although instant messaging is often the bane of productivity, it can also be an extremely useful tool for business. There are several possibilities to go with here on the iPhone, but I would recommend IM+ Light. I’ve had several problems with the AIM application, and the IM+ app offers some extra great features. Most important, it allows you to use several different services, including

  • AIM
  • Google Talk
  • ICQ
  • MySpace IM
  • Yahoo!
  • Jabber
  • MSN Live Messenger

Not a whole lot of bells and whistles for this app, but support for multiple services, ease of use, and less bugs than other offerings (in my experience) gives the nod to IM+ Light.

6.) BeamME

Send your contact info to anyone, at any time.

Send your contact info to anyone, at any time.

Business cards are really a big pain. They are easy to lose, inconvenient to access, and hard to transfer. The idea behind the BeamME app is to get rid of business cards altogether. Using this service, you can quickly beam your contact information via text or email to whoever could use it.

Signing up is a breeze. You just pick your address book entry (or create one if you don’t have one of yourself in the address book), and you’re ready to go. You can edit your account info at any time. Once you have a card made, you’re ready to go. You can now send your card information via phone or email to whomever you please.

If you choose to send your card via phone number, then the recipient will receive it in a text and will have to go to the rmbrME website to get your contact info. This is a decent solution but ultimately sees a tad inconvenient. The best way is to send the card via email. The recipient can see your contact info easily right in the email, or they can download your vCard and add it directly to their address book.

There still might be something to be said for the traditional business card, but the BeamME app can certainly come in handy if you need to get someone your contact info. The app is simple, clean, and easy to use.

Send via text or email.

Send via text or email.

7.) Fring

Mobile VOIP.

Mobile VOIP.

We do many of our business conferences using Skype, a free VOIP (voice over IP) application I highly recommend. I discovered Fring when I was looking for a way to join the Skype conversation directly from my phone. As long as you are connected with wi-fi, this nifty application allows you to access your account while you’re on the move. Another advantage: calls are completely free if you make them with Skype.

8.) Bloomberg

Worldwide market indexes.

Worldwide market indexes.Detailed information on individual stocks.Create and track your own portfolio.

Whether you invest in the stock market or not, it’s good to know the state of the market and the economy. While the iPhone comes with a native stocks app, it really doesn’t get the job done. A much better solution is the free offering from Bloomberg. You get up to date reports on all the major markets- Dow Jones Industrial Average, NASDAQ, Nikkei, and many more- from all around the world. You can also look at detailed reports of individual stocks, and you can select your own portfolio to quickly monitor the state of your favored stocks. Even better, the Bloomberg app comes with a terrific news section so you can stay informed on the state of the economy.

The app also looks slick, is easy to use, and loads quickly, making it the easy choice for tracking the financial world.

9.) iXpenseIt Lite

Mobile expense tracking.

Mobile expense tracking.

If you’re looking for a mobile expense recording solution, iXpenseIt is the way to go. Remembering why you spent $23.19 at Wal-mart two months ago can be very difficult- so why not record it on the spot?

This app allows you to do pretty much anything you could want. Set your budget, and track how well you are doing. Entering an expense item is quite easy, but you also have a lot of options. Enter the dollar amount, the type of expense (business or personal), place it in a category and a subcategory, specify the date, the method of payment, the vendor, append a note, and take a picture of the receipt. Categories, subcategories, vendors, and expense types can be edited so that you have the options you want.

Once you’ve entered your expenses, you can easily view your data with a number of displays (summaries, bar charts, and pie graphs). Plus, quickly email your data to whomever you choose, either in HTML or CSV format.

One big limitation of the free version is it only allows you to input 10 expenses. If you use it frequently, you’ll have to email yourself the results often to keep track of them. However, having such a limitation does greatly reduce the utility of the application. There is a paid version that allows you to input unlimited expenses, which may well be worth your money if you are attracted to the idea of mobile expense recording.

10.) iTalk Recorder

Simple voice recording.

Simple voice recording.

It’s always good to have an audio recorder with you. You never know when you will want to log a meeting or a good idea that pops in your head. But nobody wants to carry around a clunky recording device. That’s where iTalk Recorder, a free app created by Griffin, comes into play.

The interface is wonderfully simple. You just name your recording (if you want, you can always rename it later), pick your preferred audio quality (good, better, best), and press the big button. You can pause and then resume recording as well. You can easily listen to the different recordings on your iPhone and you can append notes for easy reference later.

Finally, you can head to the support site to get iTalk Sync, a simple program that allows you to easily drag and drop audio recordings from your phone to your computer desktop.

Did I miss something? Leave a comment and let me know if I left a deserving app off the list.