I've done a fair amount of that - some mistakes I've made -
1. Not getting money up front
2. Extending credit
3. Open ended meetings
4. Being insufficiently explicit about what is being delivered
5. Working on a handshake (seldom a problem with big clients actually) - get them to sign something
6. Not actually meeting in person at least once
7. Not being clear on who owns the code/technology (if you're going to do more or less the same thing for the person across the street then make sure to let the client know that they are getting a license (or something similar))
8. Scheduling meetings in their downtime, but your worktime
9. Not having a template, or even an idea of what a good referral would look like
10. Having a specified finish line - much more important for the smaller client than the larger ones IME
I didn't understand your point 12 at first but I think you mean that you should always write down in the invoice what you did for free so that the client is always in the loop about all the work you do (whether you bill for it or not). That makes a ton of sense. Easy for humble people to not think of. Better to keep everything in the open.
You can do twice as much work as you bill for, but if you don't somehow show the client it's all for nothing. You get no goodwill, which is typically what businesses are looking for when they do free work. I try to always show any extra work done and what it would have cost on the invoice.
I'm not the parent poster, but I have always found that, to an extent, the more detail you put on the invoice, the better. There are some people who seem absolutely compelled to say "but you only did x" if they only see one thing on the invoice, no matter how involved that one thing is. Next piece of advice is to fire anyone who questions the price (at least more than once maybe...)
Yeah, it's about setting and managing expectations. Small favours can help build relationships, discounts can help close a deal, and so on. Less relevant for larger clients, but may be necessary when working with smaller clients.
Writing it down can be the difference between the client thinking "I understand what you did there is a one-off favour and I appreciate it", versus the client taking it for granted as something normal and always expecting it in the future at no cost / discounted cost.
Yes, you don't negotiate from a discount. By putting this on there you're showing that they are already getting a discount; when they ask for more you'll be able to highlight the stuff you've already done for free.
> Invoice frequently, on schedule, like clockwork. Drop anyone who doesn't pay on time.
THIS. We bill monthly but sometimes I'll hold a project that isn't complete. BIG MISTAKE and my wife who's the CFO reminds my everytime she "finds" time logged from 6 months ago that was never billed. I'm better now, but the business world works on a schedule, your billing should too!
Detaching emotion from billing is important. Sometimes I would hesitate to bill because of a recent bug or miscommunication. Hug error on my part. Everyone gets billed every month no matter that status of your project. I also will bill some clients EARLY if I'm concerned, they won't pay or will balk.
Let's say I write some JS widgets and want to reuse them on multiple sites. What kind of license do you recommend? It's not open source, but is there a good boilerplate for this kind of thing? Or a question-tree like GitHub's pick an open source license, but for non-open source?
Don't mess with licenses. Just keep the copyright with the code in the project. They have your permission to use the widget (implied license, basically), so they're in the clear, but they won't be able to distribute it beyond what you've allowed, legally.
Everything about working with small local clients is a mistake. I'm sorry, but it is. If you must, be very clear about what done means. Be very clear about who is responsible for maintenance after your job is done. If you don't, you will still get calls 8 years later to update the prices on the website, etc. Invoice absolutely everything. If you feel like a client is trying to get away with something, use an invoice to clarify that they can do so at X cost. I once billed someone $30,000 for an website update. I didn't get paid, but I never heard from them again. And by all means, don't work where you live. Ditto re: family/friend/friend of friends. Just don't. No money here. I dunno, just everything about this clientele screams avoid to me, especially their near complete inability to understand how much education goes into being able to do the sorts of things we can do with software, and therefore unable to understand why it costs so much or why they should pay even a 10th of it. Trying to pull money out of a small business is often tantamount to teeth-pulling, and a very large majority of small business owners work for themselves because no one wants anything to do with them, so choose who you work for very carefully. Sorry to spook you. Can you tell I've enjoyed my time in this space?
There are very intelligent people out there who aren't software engineers or who don't work for Fortune 500s. The logistical challenges that go into operating a small e.g. grocery store probably vastly outweigh whatever a typical FAANG or YC startup engineer has to contend with.
People start businesses for lots of reasons, and if you've built a small business that's been around for more than several years, in a lot of industries, that means that you know how to work with people. The food business in particular is that way -- if you can't build good relationships with your suppliers and customers, you're dead.
I agree with your overall point that, if you're looking to optimize your payday, working with small businesses probably isn't the way. But it can still be fulfilling and reasonably lucrative.
It all probably boils down to you being of less value to smaller clients than to larger ones. Software and web are a force multiplier. They don't produce value on their own, they just increase what's already there. If a new, better website can get the client a 20% better conversion rate, or if a new software will decrease their costs by 5% - that can be dramatically different in CorpX and in Ma&Pa.
The multiplier itself can't be dramatically different - you can't write software that'll bring a 99% decrease in costs. But the base that you're multiplying can easily be 100x larger (10000%). That's the value you're creating, some part of which is your fair share.
So how to successfully sell to small clients? The correct answer is "en masse". The only way to make up for the difference in productivity is with numbers - you don't write custom software, you make a product and sell it to thousands and more.
Small clients simply should never work with service providers directly - they just waste time that'd better be spent by making a bigger client 0.1% more efficient. I know that's the opposite of what idealism would say, but it's true. The _smaller_ cost for society is burned out and pissed off developers. The real one is the opportunity cost of what they could have been doing instead.
I have spent a good deal of my career trying to figure this out. I love small businesses and not-for-profits (not to muddy the waters, but they pose similar challenges). I've reached the same conclusion as you. To a small business, every dollar is critical, so they are compelled to micromanage. Many small business owners are very smart, but not well educated, so they tend to lack some perspective and try to substitute their "street smarts," which doesn't work very well with technical/creative work. As much as I'd love to serve this market, I've never figured it out.
> To a small business, every dollar is critical, so they are compelled to micromanage.
We'd need to define 'small business' size, but more importantly, who you're working with. Working with the owner of a small business... every dollar effectively comes out of their pocket (at least, that may be the mentality). Working with a small business that has enough folks to have a team, they're more likely to have some actual budget to work with that isn't 'their' money. They have to achieve business goals and have money to spend.
Who you're working with and how small 'small' is are the critical factors, I've found.
Absolutely. I was talking about what would probably be called "very small businesses," in which I was almost always working directly with the owner. Probably in the range of 5-50 employees. 300bps has an interesting take on the size issue, elsewhere in the comments.
I've sometimes wondered why so many restaurants (even some chains) don't have any kind of online presence outside of a crappy HTML 'poster' that tells the world they exist. No delivery. No online orders. Seems like a missed opportunity.
Then I remember that it is an industry with tiny margins and remember my past work with small clients and come up with a similar list of thoughts that you have outlined here.
There are web firms that work solely with restaurants. I've lost a couple clients to them. The come in with a slick sales pitch, and sell restaurant owners on the idea that "their menu will be everywhere!". This particular example actually builds decent websites, but what sold my (former) client on it was their tech surrounding menu distribution. Where do these menus appear? No clue.
The "fabled" small biz move to Facebook happened 4-5 years ago and has since shift back. During that time, I'd hear warnings (much to my enjoyment) that my job would be in jeopardy. Things are shifting back now, hard. I've had clients stop posting to social media, and instead are reinvesting in their website, which they control 100%. The social media shine has warn off for small biz - it's just another marketing channel and one you don't control.
There is a lot to be said about small clients being disproportionately less lucrative than large ones. (Large ones are used to higher rates and additional pay for scope changes)
Getting past that, beyond what’s already been eloquently said by others…
1 - Be explicit in writing about favors. (“I am doing this beyond the contract because…”)
2 - If you turn a personal relationship into a business relationship, you may lose the personal relationship if the business side goes bad.
3 - Diversify so you can afford to lose any one client.
4 - Don’t be afraid to ask your worth. “Yes, $125/hr is fair, since it’s already a discount from the $150/hr that BigCo paid, and I have to fund my benefits and downtime” (Set your rate based on what else you would do with that time rather than by what they claim to be able to afford)
4.5 - Bump the rate dramatically for small chunks of time.
Meta-mistake that covers most small clients: Don't do business with people who are writing you a check out of their own pocket. Prospects that have a professional manager and a budget are a lot less hassle than Ed and Enid, who have to buy cheaper hamburger this month if they pay your invoice.
Related: Admin and client hand-holding eat all the things; consider having fewer/larger clients.
No matter what size your clients, don't sell one-off websites. Sell either a package of annual services or flat-out rent them a website you own.
Clients are never happier than at the moment of delivery; that's the time to ask for referrals.
You can almost never meaningfully raise your rates with a long-term client so start with high rates.
Related: There's no reason in the world every client needs the same rate. The same piece of work you do may solve a $50k problem for one client and a $5 million problem for another; why would you charge them the same?
I've seen some comments about providing as much detail as possible in invoicing, time tracking, etc. That's one way to do it but, in my experience, small clients want simplicity. Flat rate for a fixed scope, no time tracking and a one-line invoice.
I was a partner at a local web agency for 7 years. I have been running my own agency for 15 years. I've worked with hundreds of small local clients. I've launched hundreds of websites, small software projects as well as worked with these clients on marketing etc. I will be doing this for at least another 5 years. I'm successful, but I'm not rich. I work with my wife (who probably represents 65% of our revenue - she rocks), I've had employees in the past but currently don't and don't want them.
If you want to chat, drop me an email (email in HN bio)
1. Don't take on new services outside your wheelhouse just because "you can" which is common in tech.
2. Don't charge clients using confusing terms.
3. Get money up front, don't waste your time with people who want work on spec or propose weird payments terms.
4. Don't hole up and avoid your phone/email.
5. Don't be inconsistent. Have regular hours, pick up the phone, answer your emails and stick to it! Your local reputation will build and competitors will come and go.
6. Working with a board of directors or a website "committee" is ALWAYS a nightmare. Price accordingly.
7. Town/gov projects are a giant pain, but can mean solid recurring revenue.
8. Don't waste time on huge RFPs. The longer the RFP, the less time I invest!
9. Be weary of an entrenched local competitor who wants to "help you". I had a "retiring" competitor send me his worst clients and he didn't retire.
10. If your fees are low, the clients that hire you at that low rate will never accept a higher rate.
11. F*ck your NDA! Sorry this isn't Reddit, but avoid signing any and all non-disclosure agreements.
12. Having an office helps. We started at home, and for 6 years worked "virtually". Meeting with local clients was a pain so we got an office. Huge difference in perception. I still like working from home better, but having the space to meet and impress benefits greatly (you can charge more).
Final note: All my clients are business owners. It's really rewarding and enlightening to work with them. I learn so much, and teach them so much. The relationships I've made will last for years/decades. Also, after 21 years I can't wait to... not have clients!!!
9 is a weird one. That person could have sent you good clients for a commission or a return favour and ended up much better off than burning bridges like that. Unless they really thought they were sending you nice clients!
I think for him, "retiring" meant shedding work he didn't like, while retaining the work that was easy/lucrative. He actually has another full time job right now! Maybe this advice was too specific (it's happened only twice)
The following is my opinion. Others may have a different take on these ideas.
- Not charging enough from the start. Two clients accepted my rate way too fast.
- Giving time estimates for every piece of work rather than price estimates. Price estimates allow to you to charge for the value you provide rather than being limited to the negotiated hourly rate. Some tasks take a great deal of expertise and provide massive value but take only a short time. Don't bill them by the minute for that. Bill by value.
- Limit the number of changes they can make after completing a task or charge per hour after initial delivery. Some clients will take every opportunity to tweak something. It never ends. If that is happening on your (unbilled) time then your effective rate is falling with every new "quick change".
- Don't hand over work until the payment experience for a new client looks to be in good faith, regular and business usual. I've heard a few stories from friends about serial-exploiters who churn through freelancers trying to get most of the work done for free.
Be clear about the licenses / ownership of code you develop; a small business might not care but they still should. If you're developing their code do it hourly or by contract; if you're licensing them an instance of your code then you can invest more in it if you feel it worthwhile.
When I opened a consulting firm, the biggest mistakes we made were always about saying yes instead of no:
1. Taking on clients who did not have their shit together. They were always high maintenance, never satisfied with the work, and constantly trying to make huge changes.
2. Taking on work that was beyond our ability to deliver on.
3. The single biggest mistake we made was partnering with another firm who we let do discover and planning for us. They sent us over a client we were contractually obligated to do development work for, and two screenshots of a "website" and told to "have fun." IT WAS A NIGHTMARE.
We once had a client, after we finished their website, ask: "OK, so now how do I make money off this?" and I was like... dude... that is not our job. That is yours.
Another client had a really ambitious and fun project that included the need to develop 4g connected cameras and computer vision. I voted NO on the project. I felt like we did not have the expertise or the resources to take on the project in a way I felt comfortable with.
My partners disagreed, and I was out-voted. This is what incited me to sell them my share of the company and leave. Honestly I'm not really sure how that project went. Maybe it was fine, who knows.
In addition to the excellent points made by others, I would add:
1. Not using a real contract. Get something like hellobonsai.com if you don't have an attorney, but use a real contract. You're (probably) not going to end up in court, but if you do you will be glad you have a contract that lawyers understand.
1a. Not being very specific in the scope of work. The scope of work must be referenced in the contract, and you must keep it up to date by adding additional scope as appropriate. In case of confusion or dispute, you can always refer the client back to the discussion you had about the scope of work and remind them that they signed off on it (yes, make them actually sign off on it).
2. Not collecting a deposit up front. Depending on the size of the client, 50% of the first month's fees in advance might be appropriate. More might be smart, depending on the client. This is also a good qualifying step to filter out clients that only think they can afford your work. You then invoice as normal, with the goal of keeping the amount in retainer constant (FIFO for money). If you don't do this, you will eventually have to eat a $5k or $10k invoice that you need to pay your own bills. Better to use the customer's financial reserves than yours.
3. Working with very small local clients at all. Working primarily with very small clients is a very risky way to run your business. If you insist, the absolute bare minimum you must do is have a real contract and collect a significant deposit up front.
I once did some consulting work for a funded startup, for me it was the biggest contract I ever had (about $20k) and the project didn't really work out, but they didn't care and just paid my invoice. It was so nice to be treated like a professional.
On the other hand, small clients who paid $2k for something kept coming back with revision requests...
Bite your tongue. I have worked with a fair amount of small websites and they can be the most demanding of your time, so it is important to set expectations and boundries, but even when they ask questions or make requests that seem unnecessary, I'd recommend that you do not be flippant or condescending in your replies. When I was first starting my business, I did this one time with a very small client and it led to a small wave of cancellation from other, bigger clients.
Soft skills are more important than technical skills. Set the tone of the relationship from the beginning. Don't let the client gradually become your boss; chances are they are used to being in a leadership position and you are used to being an employee. This can quickly fester and have a negative effect on the outcome of your project.
#1 really resonates. I really actually like of like working for a less ludicrous rate and doing real work for real people and adding clear value.
but the lower the rate the more headache. the more arguments about billing. the more unpaid favors they try to pile on. the harder the deadlines. the more they insist that somehow they are being cheated. the more likely that their 'project' is really a random assemblage of half-finished stuff from prior developers they pissed off. the more likely they are going to 'pivot' and change the whole engagement or just disappear.
I have operated a web business for 6 years now, and a few clients of my company could be considered "small local clients". If you enter into an agreement to do work for these types of clients, you have to understand that they're likely to see it through the lens of a long-term relationship regardless of if you see it that way. They WILL call you post-launch for help, they will be reaching out to you for months and years to come to help them out with various tasks related to their site.
Knowing this, it's important to establish to the client from the beginning what your role will be post-launch. I have turned this into a lucrative source of (largely) passive income as I require clients to agree to at least a year of contracted monthly support. My contract is structured so that they owe the fee every month, regardless of whether they reach out for support or not. If you're thinking that most clients would never agree to this, I've yet to have a client that didn't. And the reality is most of the time they don't call for support, but the appreciate knowing that they can if something comes up.
This is a win-win, they get the peace of mind knowing that they have someone who will help then when they need it, and you turn that into a stream of (largely) passive income. (This works for large clients too of course).
1. Don't let the customer decide the deadline.
2. Don't accept to work for a fixed fee on code you don't own. It's per day or per week... and no promise.
3. Don't answer the customer outside your open office hour. Put some strict limits about your availability.
4. Rise your fee. As others already wrote here, the smaller the customer, the higher they will feel entitled about your work.
5. Have a written contract. Don't accept close you don't like because "we never use them".
6. Be annoying about the description of the job, and the definition of done.
Lot of good points already, but one that I've learned the hard way is never take on a "family" business as a client. You know the type of company where one brother is the CEO, another brother is the marketing director, random husbands and wives work for the company, etc.
I've never had a relationship with a family business last beyond the scope of the initial project. Things always fall apart because of family infighting, or because every business decision ends up being way too personal/emotional for them. It's never worth the hassle, trust me.
45% of my clients are family businesses. That's a huge segment of the market to ignore (at your own peril). Family businesses can be great because they can be honest with each other, and move quickly. They can also be insane, but so can normal clients. I've worked with over a hundred family owned, multi-generational businesses.
Be in tune with your local community. I get wind of problem clients AND problem partners or suppliers long before we're even on each others' radar.
Try and surround yourself with people you trust so when someone says "xxxxxx is super unprofessional" you know they're being legit and they're not just trying to cover their own back or running saboutage.
My main mistake was not paying attention to adjacent businesses and underestimating how destructive they can be. Who's in your office block? Who did you graduate with? Try and identify problem people in these groups and pivot away from them
I did this for a bit and gave up. While you have a lot of freedom doing this it's just really risky working with small local companies. They are highly sensitive to price. In contrast one of the easiest/chillest ways to contract is to do by-the-hour for small software companies. They are not as sensitive to price because almost any rate you charge them under some amoung (say $150/hr doing 20-30 hours/week) is less than they'd pay for an experienced salaried dev when you include healthcare and all other costs for fulltime employees. And they can drop you whenever and vice versa.
The big challenge I have is breaking into project-based work for good companies. Getting paid by the hour is easy and pays work but is really tiresome. You can't scale your work if you get paid by the hour. The only way to scale is getting paid by the project and taking more projects on (and eventually hiring people).
I did web design and hosting for several in the early 2000's back in the web 1.0 days. Don't wait on the customer to meet deadlines. I'd ask the customer to give me something for their 'about us' page, and it would never happen. So I just started writing them myself. It worked out much better.
Also don't leave anything to chance. Lay everything out explicitly. When the work is done, and they agree, then let them know that everything after this point is billable. Sign on it. You will get nickel and dimed to death otherwise!
Note: my income has never been dependent on local/small clients (small being <10 employees) such work has always been "extra income" for me or to build relationships with others.
I've fixed bugs for free (if I failed to interpret requirements or made a mistake) but otherwise I would offer change orders for anything outside the agreed scope. Depending on the changes or how they fit into the existing work, these would possibly be discounted or free, especially if they are made early enough.
That said, I've been solid and explicit in the agreed scope. This goes for every project or org/client, don't get me wrong, but I've found this is much more important with smaller orgs/clients.
Otherwise there are a lot of great suggestions already made elsewhere in these threads. I haven't really ever had issues getting paid. I believe having a clear scope and asking clarifying questions also builds a better relationship (which I think contributes to better engagements, reduces other headaches, and leads to referrals!)
For small internal tools make sure you understand the business domain. Learn as much as you can about the process you're writing software for. Prioritize error handling over looks.
Set expectations. Small businesses often expect you can do more for less. You're the expert you tell them how long something will take, don't allow them to set the expectation. Breakdown why it will take that sort of time.
Keep all solutions as simple as possible. If you have an internal tool that only one or two administrators use, then chances are you don't need user management. Have one password to secure the app, or make it a desktop app. Maybe you don't need a GUI to report on data, could a monthly report emailed from the system do the same job at half the development time?
The sales team will want reports on everything and can chew lots of time. Chances are management doesn't want this. Try to give data to them in Excel so they can manipulate the data.
The "working with small local clients at all is the mistake" part is already well-covered, so I'll add a secondary rule:
Don't custom-build complicated websites for small local clients. Just don't. Most of them won't be able to maintain it over time - 90% of the time, even if they think they need and can afford your bespoke solution, what they _actually_ need is a simple hosted wix or squarespace instance or equivalent -- it may not look exactly like they imagine, but they'll be able to modify it and improve it and actually keep using it. Your bespoke solution is going to fall apart the first time they tweak something and hit a trivial syntax error they're not equipped to repair.
Scale the complexity of the solution to the capabilities of the client who's paying for it.
My biggest mistake: Doing things for free as a favor because you are reluctant to charge . Even if it feels weird always get paid for your work. Your local plumber or lawyer also don't do things for free. You are running a business and not a friendship.
The other posts so far cover all the immediate mistakes I've seen first hand. If you can use new tech on these jobs it'll also keep your skills up. If you are banging out similar things with the same tech it can be stagnating.
I'd ask yourself if your goal is to keep working with small clients, or pivot to making products for this audience? It's good experience and satisfying to be doing what you are doing, but it can be limiting over the long-term if you are the one doing all the work with limited reuse. As life changes you may find that it's a struggle to work with small clients and having a product, or something that's largely a product, will help you be able to put things on autopilot.
Very early in my career, I found working with local clients can be vastly improved by having a detailed scope of work, milestones, expectations, and budget. Never enough detail. I found being local to clients creates a relationship very different from distant clients, and anything you can do to build trust, transparency, etc. ahead of the work, the better. The more detailed my scope of work, the less scope creep I had.
1. pay as you go (much more likely than a larger client to actually not have the money even though they thought they would, or to go out of business entirely with little notice)
2. they don't have as much experience with how tech projects go, so you need to manage expectations more