1

We have been strung along by an unprofessional software developer for almost a year past the expected completion date. Progress is slow, promised dates are never kept, communication is all but impossible, and the software is riddled with bugs and design flaws. Due to the nature of our arrangement, we have already payed for most of the software. Additionally, our contract is unfortunately poorly written (vague on expectations and due dates) and does not make it easy for us to take legal action. At this point, although we do not want to, we have no choice but to find a new software developer and move on. Here are a few things we are trying to figure out:

How can we ensure that we recover all the relevant code and assets used so far in the development process from the unprofessional software developer? Or is it even worth it to try?

What action (if any) should we take against the unprofessional software developer?

Should we hire a new developer to take over the project or start from scratch? Either way, where should we look for one?

How should we set up our new contract to avoid being taken advantage of again?

EDIT: After doing some research, the rate we were paying was not the issue. We were actually paying above market rates.

  • Why make the effort to recoup “crap code”? Go find a good (ie expensive) developer, get the job done in 3 months instead of 12 or 15 and next time pay for quality... – Solar Mike Jul 1 at 16:55
  • 1
    Oh well, I'm assuming you will have the entire code base after 5 minutes you asked (actually OP shouldn't even need to ask because they should own the repository). If not... – Adriano Repetti Jul 1 at 17:39
  • 1
    Definitely, even a professional developer can't make a reliable estimation without a detailed specification and an acceptance process in-place to determine when something is "done". Note that it's NOT easy unless you EXACTLY know what you need (and in my experience this does not happen often). The same external reputable professional might help you with this but you'll need to keep some flexibility. Did you consider to use a GOOD contracting agency? They're usually more expensive than a freelancer but with good ones you have many safeguards – Adriano Repetti Jul 1 at 18:13
  • 1
    You should consider that project management, business analysis, testing, etc are not skills that are any easier to just pick up and learn instantly than the actual software development - if you don't have those skills in house, you may be looking for a full-service software shop rather than a single developer. Even "really good" developers may easily fail in an environment without process or support. – dwizum Jul 1 at 18:13
  • 1
    @Helena The way it was set up is by "sprint". The sprint says what is going to be done and how long it is going to take. It also has a price breakdown based on the number of hours each aspect of the sprint should take. So the sprints are a fixed cost, but you can calculate hourly rate from them. – frustratedcompany4978 Jul 1 at 19:27
4

In a comment, you said:

no one at our company really knows what to be looking for

It sounds like you're a small company without sophisticated in-house vendor or project management (much less in-house software development) and you've contracted with an individual contractor as a way to complete a project.

While that is a very common scenario, and one that does often lead to success, it also commonly leads to failure. Usually, when these arrangements fail, it's not inherently because the software developer was bad at software. Usually, it's because there was lack of clarity in the surrounding processes. Namely,

  • Definition of a realistic, achievable scope
  • Requirements gathering and translation into a spec that can actually be developed to
  • Dealing with vague or uncertainty in the business's needs, which often only come out once development has started
  • A testing process that lets you validate that the software is acceptable (versus just, "here it is!")
  • A way to track, prioritize, and manage the bugs and additional requirements that come out during testing and during initial use
  • Some sort of a plan for how to "own" (maintain, update, deploy) the software once it has been finished.
  • And so on

Many contract developers are just developers - those types tend to work best with companies that have sophisticated in-house processes, and just need additional capacity.

Some contractors are also skilled at these other skills, and will naturally do these processes without you even realizing - essentially, playing the project manager and business analyst roles in addition to writing software.

What you need to do, as an organization trying to get software developed, is realize that there's more to it than sitting at a keyboard writing code. In fact, the code is often the easiest part - spanning the knowledge and skill gap between the business people and the software developer is often the hard part. Once this realization has sunk in, you need to make a decision: Will you try to build those capacities in house? If so, you can proceed to look for another "software developer" as a contractor. aaaaaa's answer addresses that route very well.

However, most smaller organizations don't have the desire or capability to actually manage software projects - in that case, you're probably better off looking specifically for a full-service software operation, which may involve multiple people playing different roles, or the rare multi-talented developer who can fill in on all of the above needs.

The key is, recognize there's likely more to what you're looking for than just someone to write code, and you need to either resource those needs in-house, or pay for them as part of your contract.

  • Wow, thanks for the detailed answer! We have tried to do some of the things off your list, but I think you are right that we will need to look for an operation or developer that can fill some of those roles for us. I really appreciate your taking the time to break down what we need to do so well. – frustratedcompany4978 Jul 1 at 18:18
  • 1
    Think of all the skills involved in building a house. If you want a house, you don't just call up a carpenter and ask him to get started. You call an architect or at least a general contractor who operates as a full-service builder. Software is largely the same. You need someone playing the roles of architect, general contractor, and so on. – dwizum Jul 1 at 18:27
2

How should we set up our new contract to avoid being taken advantage of again?

It seems you are looking for legal advice, which is off-topic here. But what can help is getting a proper project management and fixing other process issues you have (not programmer's fault). That includes, but not limited to:

  • write specifications, including functional specs (more on that in Making Things Happen: Mastering Project Management)
  • have quality control (testing, including unit testing)
  • write schedules with the developer, and cut features in order to ship on time
  • in general follow The Joel Test

When hiring, write up a decent contract (talk to a lawyer), use market-rate wages, and communicate the expectations to the programmer beforehand.

  • For some reason I can't upvote, so thank you for the information! We are a small company, so I will need to learn how to do those first two things. Any recommendations on where to find an explanation or tutorial? Thanks again. – frustratedcompany4978 Jul 1 at 17:12
  • @frustratedcompany4978 two books i recommend is "Making Things Happen: Mastering Project Management" and "Peopleware". Joel Spolsky wrote a lot. But you have to embrace that root case is within your company, not with this particular programmer. – Oct18 is day of silence on SE Jul 1 at 17:15
  • Thank you! I will definitely look into those. I agree we have definitely made some mistakes throughout the process, but the developer is at fault too. They will not respond to emails or phone calls, and when they decide to contact us, they tell us that they will have X ready by the end of the day only to not communicate with us again for weeks. – frustratedcompany4978 Jul 1 at 17:18
1

How should we set up our new contract to avoid being taken advantage of again?

If you are making custom software, you are in the software business whether you want to be or not.

Hire an in-house developer manager or CTO. We cannot tell you if you need to start from scratch or keep going with what you got, but a good developer can. As you've discovered, software management is a full-time job. You need at least one person in-house to ensure things are running smoothly, and setting technical expectations.

As you've likely found out technical management is extremely difficult to outsource.

When you interview for this in-house position ask questions like

1) How much experience have you had working with out-sourced developers?

2) Have you ever had to fire a contractor? Why? How did you ensure you got all the deliverables agreed on?

3) How were contractors paid? - Most contractors I know are paid by the hour and submit an invoice. Once they've proven themselves, you can guarantee hours. There is no "up front" money.

4) Have you ever had to start over on a project because of code quality? What made you decided you had to start over? Most developers have restarted a project before. Look for answers like "When I saw a global variable storing user state, I knew the code was useless". If they can explain an obvious design flaw, then it was probably a good reason.

Should we hire a new developer to take over the project or start from scratch? Either way, where should we look for one?

I'm going to assume you have no trusted developers in-house. Your best bet is to go with a recruiting firm. Make sure they can help you filter candidates. It'll cost more, but it sounds like you have no in-house expertise. Without expertise, there is no way to differentiate good developers from 'fast-talkers' with no skills. Hence, finding the right recruiter is paramount.

Focus on a good managerial hire with coding skills.

How can we ensure that we recover all the relevant code and assets used so far in the development process from the unprofessional software developer?

The easiest way is to pay for a GitHub account and tell your current developer to switch repos to the new one. Have the developer show up and show the code working on a laptop your company owns. This is what I've done with contractors.

  • Thank you so much for such a detailed answer! That's a lot to unpack, but it is all great advice. I especially appreciate the GitHub idea. I didn't think of that, and it sounds like a great solution to that problem. Thanks again! – frustratedcompany4978 Jul 1 at 18:58
  • @frustratedcompany4978 - remember to upvote and accept the answer – sevensevens Jul 1 at 21:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.