The customer should be with you at every stage of the development process. If you’re working from home, that might be creepy, so a daily email with all the work you’ve done should suffice. This will save you many future headaches since any issues will be highlighted as early as possible.

You should also give your customer access to the app’s Git repository and to your project management system. (Don’t have one? Trello is wonderful!) If they don’t know how to use those tools it’s a good time for them to learn. Those skills will certainly come in handy for future projects (hopefully managed by you).

Some customers will not show interest in the project, replying late and generically to your questions, not making any decisions. Fire them. If they’re not invested in their own idea, there’s no reason why you should be, either. (No, money is not a good reason. Working with these people would be painful, so have some self-respect.)

#18: Defend your decisions

(Designers probably already know about this one.)

The customer’s the one paying you, but you’re the expert, so don’t be shy and let your voice be heard when it comes to making decisions about the software. If they don’t listen, make it clear that you won’t be able to guarantee the quality of your work. Smart people should get out of your way at this point.

When you’re on a plane, you don’t tell the pilot how to fly it because you don’t know anything about planes. The same goes for software development. Just because your customers use a computer doesn’t mean they’re seasoned engineers.

#19: Know what you (don’t) know

It can be hard to acknowledge what you’re worth, but it’s extremely important to be confident about your skills. How can you expect clients to trust you if you don’t trust yourself in the first place? If you think you’re very good at something, prove it and scream it. They’ll hear you.

This also works the opposite way: you should definitely be aware of all the fields where you lack knowledge. Since software development has become more widespread and accessible we’ve witnessed the birth of countless jacks-of-all-trades. These people proclaim themselves experts in every possible technology when, actually, they know a little of each one. They’re mediocre and they’ll never stand out, which means they’ll never be hired by important customers.

I know it’s tempting to undercharge. Something is better than nothing, right? Well, it isn’t. Every time you undercharge, you make life a little bit more difficult for the rest of us, because our customers are going to except lower rates.

You should charge your customer for the value you provide rather than the work you do. Developing a small web app might not seem much to you, so it might feel weird to charge thousands of dollars, but think about all the money that customer is going to earn/save using your software. Isn’t it worth it?

Of course, you shouldn’t defraud your customers either. It’s not cool at all, once again it damages all of us and they are probably going to find out sooner or later.

Charging is a tricky task and you’ll have to costantly adjust your rates, but eventually you’ll develop an instinct for it.

#21: Pick your projects

There’s an awful lot of developers out there that will accept almost every possible project, even the most boring ones. They don’t really care about what they’re working on as long as they’re paid. This results in poor results (I swear I didn’t do that on purpose) and lowers the standard for all other developers.

The fact is, designers are not the only creatives out there. Our job requires inspiration, too. Of course it’s possible to work on a boring project, but it’s not the same thing, is it? You have probably experienced this feeling where every line of code is painful to write and read, no matter how beautiful. You can’t really see the purpose of it. More often than not, this happens because your customer can’t see it either.

I suggest that, before accepting a project, you ask the customer about their vision. If they can’t articulate it, or if it seems boring or poorly thought, fire the customer. There’s no shame in refusing a project. Actually, it’ll allow you to develop a taste for beauty. On the other hand, if the vision excites you, get right on board. You’re probably in for some fun and satisfaction.