I’ve been doing contract work for about two years now, and over this span of time, I have discovered some little tidbits of information that I think would be beneficial to anyone who is currently thinking about embarking into the world of contract iOS development, or who is currently involved in it but having difficulties getting the work that they wants. Mainly what I want to show though, is what mindsets are easy to develop within a developer that need to be quickly suppressed if you are to have any success and joy in contract work.
Mindset #1 – I’m a Monkey
I once read on a blog someone say, “If you pay peanuts, you’re going to attract monkeys.” What did he mean by that?
When going into contract work, I think one of the most difficult things to decide is how much you’re going to pay. It becomes even harder when you go to a site like Elance, or freelancer.com, and see that some people are charging as little as $10 an hour. That can make you say to yourself, “Man, people are charging that little. I can’t charge much more than that.” You have to remember though, YOU ARE NOT A MONKEY!! People who are looking for a developer that charges something like $10 an hour, are willing to pay peanuts, and the only ones who are going to apply for those jobs are monkeys. You don’t want to work for someone who wants a monkey. That’s why you have to completely disregard these other people charging such low amounts, and simply charge what you feel you are worth.
Charging more also makes sure that these people who don’t understand all that goes into an application, won’t even look at you as a potential prospect, which is a good thing. You don’t want anyone like that even speaking to you about a contract, because if you go through with it, you’ll be in misery. So charge a high enough number that will only attract those who truly understand all that goes into the iOS app development process.
Which leads me to my next mindset to avoid.
Mindset #2 – I’m not that good of a developer, so I can’t charge much
It can be easy to feel this way, especially if you are somewhat new to development, or simply new to contract work. But before you start to sale yourself too short, here’s a couple of things to remember. When it comes to contract work, people are paying for an entire package. This includes, whether or not you work well with others, your communication skills, and whatever background and experiences that you have to offer. So, for example, if you’re a good communicator, you should remember that about yourself, and your hourly rate should reflect that. If you finish projects, that should be noted. Actually, finishing projects is huge. Many developers out there don’t finish contracts and projects, and people get irritated about that, so if you’re known for finishing what you start, that should definitely be reflected in your hourly.
Also, realize that as a developer you probably have more skills than you realize. I remember when I was putting together a resume to submit to some jobs, I had my brother proof read it, and I remember he started telling me to add all these skills that I forgot that I even had. Skills that I had developed from years of doing personal projects. So don’t forget about these things. If you built something for your own personal use, or maybe you started an open source project, or contributed to one, realize that these things give you credit as a developer, and you should charge accordingly.
Just as a side note, the average rate for iOS contract development is approximately $100 an hour. So do not sale yourself short.
Mindset #3 – If I charge too high, people may get frustrated with my work
I have noticed in my time as a contract developer, that there are some people who are simply always irritated, no matter what you do, and some who simply love everything that you put out, and it has nothing to do with your hourly rate. Some people are just anal, and others just aren’t. So don’t feel like you need to charge less to make people happier with your work. If your work is good, than a reasonable person will be happy with it, but an unreasonable person won’t be happy with anything. And also, remember, if someone hires you for a lower rate, it isn’t because they’re okay with getting an inferior product. If you go to a clothing store and see some shoes on sale for $15, you’re happy not because you feel like you’re going to get a pair of shoes worth $15, but because you feel that you may have just found some shoes worth $60, but that you only had to pay $15 for. If the shoes fall apart in a week, you’re going to be upset whether they cost $15 or not. However, if you pay $100 and the shoes last for 10 years, you’re going to be happy that they lasted so long, and not care that you had to fork out some extra money. Same thing with development. If you put out quality, reasonable people will be happy, no matter the price. But how do you know if someone is truly a reasonable person to work with?
Mindset #4 – I shouldn’t ask too many questions, besides, I’m better than all the other developers
You can find out a lot about a person from just speaking with them. For example, say you want to start a contract and the potential customer says to you, “Yeah, all the other developers just couldn’t finish this.” These words should ring inside of your head. “IT’S A TRAP” (General Ackbar) If someone says this, it’s probably because this potential customer has some issue. If they’ve had ten developers in the past not finish a product, chances are it’s because of something on the client’s side. Maybe they don’t pay when they’re supposed to, maybe they want massive amounts of work done for free. It could be a number of things. But find out before you agree to anything. Ask them why the other developers didn’t work? How many developers have they tried? Where did they find the developers at? You can find a lot of information just from some good questions. Don’t feel like the other developers didn’t work because they were all subpar, and none of their programming senses we’re that attuned to your own. This is simply pride before a crash. Chances are, most of them were decent developers but the problem lied with the customer.
Mindset #5 – The customer wants a set price, so I should just give it to him
Think this way, and you’re heading down a world that you do not want to be in. Customers have billions of ideas, and chances are, they will want you to implement every last one of them, slowly, and painstakingly. I doesn’t matter what they say that they want, the truth is, generally speaking, they’re not completely sure until the project starts. It doesn’t matter if they say, “All I want is a hello world app, and I’ll pay you $2000 for it.” That may seem awesome, and sometimes, that’s all they really want. But other times, after you finish, you show them the app, you click on a button, “Hello World” appears on the screen, and then they ask,
“Can I see the world’s response?”
“The world’s response, what do you mean?”
“Well we’ve said hello to the world, shouldn’t the world say something back?”
NO!! It shouldn’t!! Now you spend the next 3 days arguing with the customer about this foolishness, and the next week working on something stupid. Now of course, this is clearly ridiculous, but do realize, people will have some pretty crazy request, and if you have simply a set rate, you could be asking for a heap of trouble. With that said, I do know of some people who have found great contracts at set prices and they’ve loved it. So don’t feel as this is a one size fits all scenario. But be very, very, very, very, very careful when deciding to do one of these contracts, because you may become their slave. So please be careful with this, trust me!
Mindset #6 – If the customer says I’m horrible, he must be right
I know that in the world of sales people say that the “customer is always right.” But that’s not always true. What I mean is that, if the customer says that this project is taking way longer then it should, and it’s because you’re not working fast enough, and there’s other developers out there who can do this job better than you, and your work is sloppy, and they’ve never seen such horrible, sloppy, and unprofessional work. They’re probably over-exaggerating! Maybe you do see some truth in what they’ve said, but as humans, we sometimes have a tendency at times to see only negatives, even within ourselves.
Don’t let this discourage you though. You are a professional. If your work is a sloppier than you like, than apologize, but don’t feel like you’re a sloppy worker. If you see need for improvement, than by all means make the adjustments. But don’t ever forget, programming is all about moving forward, and getting better at your craft. Learn from every experience, but don’t let every experience get you down. Always look at the positives of your work, and always strive to master your strengths, and build on your weaknesses. But I cannot stress enough, don’t let negative comments like these destroy your self esteem as a developer. “Do not put faith in every word.”
Generally, customers get very angry because he’s upset about something else that has nothing to do with you. Maybe his boss is pressuring him to get this done, or he’s broke and is running out of money and is stressed out because the app is proving to be expensive. Whatever the case, just keep moving forward. Whenever I get criticism, I simply try to find what in it I could actually use to make myself a better developer, and then I just take some time to have a good laugh at how angry we as humans sometimes get.
Also, do not respond in kind, that never works. All that happens is you either burn a bridge, or you have a more stressful time for the duration of the project. Instead, make peace. It’s funny how I’ve had customers go off on my work, I respond nicely, and then their praising what I’ve done for them. “An answer when mild turns away rage.” You’ll realize that you can quickly turn a situation into your favor with some well thought out words.
Mindset #7 – I trust them, we don’t need to have this in writing
Bad idea. It’s not a matter of trust, it’s simply a matter of forgetfulness, and unintentional misunderstandings. The problem when something is not in writing, is that sometimes you or the other person may forget something that is absolutely crucial, and it’s funny how often people will forget issues dealing with pay when it comes time to pay or be paid. And like I said, it’s not intentional most of the time. People just forget, that’s why you have to have everything in writing. That throws away all issues that may arise due to a lack of memory of the terms. So every time you make a change, make that change in writing. This can be as simple as sending an email addressing the new terms, that way both you and the customer will always have something to look back on.
It also fights against misunderstandings. Sometimes you or the customer explain something, you agree, but then when you see it in writing you realize that you had no idea that that’s what the other person was saying. This happens all too often. That’s another reason to write things out, so that you and the customer can make sure that you agree on what was proposed.
Mindset #8 – I’m sure the app will be done soon, no need for deadlines
Do you get the point from the image? You need deadlines in order to make sure that there is consistent progress, and that the app finishes at a reasonable time. Some customers can have a tendency to ask for changes forever. You want to make sure that you and the customer knows when the app should be done by, in that way you can put a lid on indefinite changes, and not create your own never ending story.
Well this is just some tidbits that I thought my fellow iOS contract developers could benefit from. If you have any other suggestions you would like to see on this page, feel free to write a comment.
iOS contract work can be a wonderful experience, but it can also be a very difficult one. So please, use the information that I’ve put on this blog. Tailor fit the information for your specific circumstances. Unfortunately, much of what I’m writing I have experienced in my time doing contract work, but I’ve learned much from it. So no matter what happens, keep going at it, and enjoy coding.