7

I work as an independent developer. I find it difficult to test functionality of a feature and test code. As project goes complex, I loose focus resulting in each feature partially developed. I want to know how to write test cases, manage smooth workflow and handle features effectively and while remain focused?

2
  • 3
    Why should that be any different for a freelancer than for an employee?!?
    – user281377
    Commented Mar 23, 2012 at 12:05
  • 1
    @ammoQ - Having worked as a solo programmer from home, worked in interdisciplinary teams and worked in larger programming focussed teams, I can say that each of these environments provides very different challenges and opportunities.
    – Mark Booth
    Commented Mar 23, 2012 at 16:16

3 Answers 3

6

Scrum, agile, and Test driven development techniques aren't just for big teams or big companies, they can help on freelance projects too.

Creating a backlog of requirements/user stories can help focus on what needs to be done and when it needs doing. For each iteration you can decide what you want to achieve and how much time you want to dedicate to it. Try to strike a balance between keeping yourself busy and avoiding biting off more than you can chew though - both extremes can be demoralising.

If you feel yourself getting bored or losing focus, try switching to another user story. Remember that it is often the case that a change is as good as a rest. With a good DVCS like git or mercurial you can easily switch contexts by switching branches. When sets of features are ready at the end of a sprint, merge them together and you have a sound basis for the next iteration.

Finally, TDD can really help focus the mind on what you need right now (YAGNI) and it strongly encourages you to write your code with testability in mind. It takes me about the same time to write code using TDD as it takes me to write without it, but with TDD subsequent debugging, re-factoring and regression testing are all much cheaper and can be done with much more confidence.

1
  • +1 for TDD. It seems that strict red/green/refactor would particularly help keep the asker from jumping sideways in his projects. If he can't get client buy-in for status meetings, I'd recommend Rubber Ducking regular status meetings.
    – Chris Bye
    Commented Mar 23, 2012 at 17:12
4

Staying focused while working on your own, be it personal projects or freelancing, is certainly a challenge. Here are some tips for what I'd try to consider (and use myself whenever I'm dealing with these kind of projects):

  • Try to mix boring tasks with more interesting tasks. If you find yourself doing a lot of CRUD tasks and alike, consider distributing them more over time.
  • Keep a backlog of work items, and one backlog of bugs, preferrably prioritized.
  • Don't aim for perfection. Build a basic version of the application first, and then improve it.
  • Try to avoid distractions. Go working to a room which is seldom visited. Use the time when you're alone in the house, perhaps early mornings when everybody but you has already left or even better evenings when everybody but you is already asleep.
2

In addition to what Andiaz said:

Increase modularity in your project.

Keep doin the unit-testing in parallel to your development work

Use a versioning software like they do in big companies. (Dont know if these softwares have free versions)

Decide and follow your own procedure for development process. Keep doin reviews.

One suggestion: Read some Software Eng. book, like Pressman.

2
  • 2
    Version control is (should be) used in all companies by now, not just big ones. And yes, many of these, such as Subversion, Git or Mercurial, are open source. Commented Mar 23, 2012 at 12:04
  • @PéterTörök Yeah, true. The way I meant 'Big' is what it seems bigger than a freelancer ;)
    – OnkarK
    Commented Mar 23, 2012 at 12:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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