I had this idea for a web service. I’ve hired a programmer through Reddit. I did few mistakes managing this project, and ended up paying him $960 and getting nothing in return. I’m posting this as a ‘Note to self’, hoping I won’t repeat those mistakes again. To be fair, I asked (neutrino) to tell our story from his point of view, and this is how he saw it.
The Honest Mistakes of a Passionate Developer and How to Avoid Them
In this article I’ll be outlining the mistakes made by myself while I worked on a project with Shabayek. Both myself and Shabayek worked hard together on this, more than likely a lot of the work by both of us went unnoticed to the other. The aim of this article is to help you avoid these mistakes, and so in turn avoid the problems we encountered.
I’m going to be as honest as possible, some parts of this will be hard to stomach for both myself and Shabayek but I’d like to think this will make for a better experience for you, the reader. Some problems will hopefully be solved by openly identifying them, others will benefit more from an open discussion with solutions being agreed upon. I hope this article can help facilitate this.
The story begins
March 2013, Shabayek contacted myself via Reddit about building a site powered by WordPress that would offer to sell tweets to subscribers. A user would register, enter his / her Twitter credentials, and then allow the website to post on his / her behalf. The tweets will vary from quotes to stats and news. In doing so, a busy social accounts owner can keep his / her followers entertained, while he / she attends to more important stuff.
As I haven’t developed a similar project before, we set out on an hourly rate ($30/hour). As this idea was considerably new to me, I asked for an R&D session of 5 hours. Shabayek wanted the infrastructure to be dynamic, allowing for adding more social networks support in the future, namely Facebook and Linkedin. This was uncharted waters for me, I had lots to learn in the process.
Can you hear me?
I’m going to start with the biggest elephant in the room, communication. You could probably view communication as one of mankind’s greatest inventions.. In the age of the Internet it’s even more important, and there’s multitudes of tools and inventions at work to make communication possible and more easier. The big question is, which ones to use.
eMail is lifeless
Shabayek and myself communicated over email, a perfectly acceptable tool and definitely one that I’ve used successfully on countless projects. I think this can be done better though. eMail is great for initial contact and even continued contact, but once development is underway, a more transparent method would be better. The problem I found myself facing was wanting to avoid sending emails with bad news about various problems and obstacles I faced in development. Honestly, who enjoys sending emails with bad news?
A Reflection on perfection
This is where I made a big mistake. Instead of quickly outlining the issues, I delayed notifying Shabayek and worked even harder fixing them, but given the nature of development there was nearly always another issue. So the good or bad news was delayed even further! This built up a pressure I had to face each time I worked on the site.
No matter how many hours I put in, Shabayek wouldn’t know unless I told him, or showed him the work, of which a lot of the time I did neither, stupid I know! Smaller, more frequent updates in an organised manner would help towards fixing this. Important thing to learn from this; Always keep your client informed. They need to know exactly what’s happening. Obvious I know, but case in point.
Keeping the ball rolling
Momentum in a project is important, it keeps the energy of everyone involved fresh, once delays start to happen this stagnate. This was once again my fault. I’d exams coming up and Shabayek was kind enough to delay development, something I was grateful for. After finishing exams, I had to move out of my dorm, which meant more days without internet connection or working on my computer. I left Shabayek totally in the dark, not knowing where I was, or what I was doing. But looking back now this was a bad idea. We should have parted ways for the current project, on good terms with the possibility of working together again in the future. This was a bad beginning for the project early on.
“Measuring programming progress by lines of code is like measuring aircraft building progress by weight.” – Bill Gates
A screenshot is worth a thousand emails
Shabayek kept on asking me for a Beta 1 date. He wanted to show my development result to potential investors, aiming to get some funding which would allow for hiring more developers to push things further. I could’ve taken few screenshots of my screen, my admin panel, and the code lines I kept on adding up, but I didn’t. In not doing that, Shabayek started to lose faith in me.
“The trouble with programmers is that you can never tell what a programmer is doing until it’s too late.” – Seymour Cray
Importance of specs
Spend time on writing down the specs. They’re vital to knowing when a project is on track or not. Everyone involved needs to know exactly what’s involved for this to run smoothly. This should be in a central shared document available to everyone involved and working on the project. Without this, it’ll be near impossible not to hit some form of a road block.
Even acknowledging that the specs are incomplete and could be changed would help. Though once this is the situation all must be prepared for the total changes to sections of the site, and workload. There could be unknown repercussions depending on what’s changed. The time required for work depends on what’s in the specs. The more detailed your specs are, the better.
“Good design adds value faster than it adds cost.” – Thomas C. Gale
Like what any other developer would tell you, this project needed more time than what I’ve estimated for it. My bill shot up to 32 hours, with no beta or semi-working version of the service in sight. I couldn’t tell either know how long it will take me to reach such a stage. Once again, I stopped updating Shabayek on my progress. The deeper I dug into the available functions and plugins, the more I discovered that this project is not as simple as it sounds, needing a dynamic platform and a small team of developers. Shabayek, on the other hand, did not want to keep on paying for a project that has no end in sight. Not updating him regularly played its role in making Shabayek put an end to this unfortunate project. He walked away with nothing but a paid bill of 960$.
I hope you’ll benefit from reading this account of mistakes, I think it goes to show even when two parties are working hard to a common goal, that it can easily seem to be a failure.
Signing off, Darren M.
“Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.” – Linus Torvalds
Side note: “Don’t Pay the Ferryman” is the title of a famous song by Chris de Burgh from the album The Getaway. It was produced in 1982.
[Photos credit: Flickr]