Monday, October 20, 2008

The Benefits of Hiring a Part-Time Software Developer

Traditionally, part-time developers have filled maintenance roles or have been part of an in-house team at small companies with limited budgets. Whilst the most obvious and immediate benefit to a company is cost (having an in-house developer resource for 3/5 of the price) there are far more benefits to be gained.
Having worked in the software industry for over ten years I have a wide range of experience, from being the only developer at a small company to being part of a 140 strong team of developers in a large bank!

Small Companies

Often, due to budget constraints, small companies are forced to hire less experienced developers who are prepared to work for a much smaller salary. This has serious implications for the quality and success of the project. An experienced part-time developer will not only fit in with the budget constraints but they will add invaluable experience and productivity to the project. A good, experienced developer is many, many times more productive, makes far fewer costly mistakes and needs less time on research and development when undertaking a new task.

To summarize, a good, experienced part-time developer will fit in with your budget and deliver you much greater productivity than an inexperienced developer working full-time.

The Corporate World

Surely there's no room for part-time software developers in the corporate world? With big budgets and tight project deadlines, surely it wouldn't make any sense to have a part timer? Such a reaction is common amongst project managers and dev leads. But take a step back for a moment. Is that really the case?

How do you measure output?

Consider the nature of software development. It is not like other production jobs. Take for example a curtain maker. (I can speak from experience as I worked for my family's curtain business). Generally, physical tiredness is the only constraint on productivity. If it takes an hour to make one curtain, the curtain maker will be able to make 40 curtains in five days and 24 curtains in three days. There is a linear increase in output until the threshold of physical tiredness kicks in.

Many managers dismiss part-time software developers based on the same output expectation. Does the same linear increase in output exist in software development? Will you really get 24 units of output in three days and 40 units of output in five days?

Consider the following three areas: productivity, quality and morale.

Productivity

If a developer approached a team member and he raised his hand and said "Not now. I'm in the zone!" there would be an immediate understanding. Coders give reverential respect to 'the zone' as a time to be harnessed to the full.

Programming is an intense mental exercise. It's surprising how many people assume that computer programming is a mathematical discipline. Generally speaking, mathematical problems are solved the same way each time. Each problem is solved by applying a known formula. That being said though, how does your brain feel after two hours of maths? How about eight hours? Can you image doing maths for forty hours? Now bring this thought across to computer programming. Before you can apply a solution to a given problem you must first use your creative energy to think of the solution!

That's what makes 'the zone' such a beautiful time. Solutions flow freely and effortlessly and elegant code just gushes forth like a torrent in spring!

The opposite of this is not a happy time for coders. It's not uncommon for a programmer to stare at a problem for days on end in this state. Solutions are just not forthcoming and any code that does get written is ugly and clunky.

If I was paying money for code, I would pay more for four hours worth of code from 'the zone' than I would for four days worth of code otherwise. In software development, mental freshness is vital. It would not be an exaggeration to say that the difference in productivity between a mentally fresh developer and a mentally fatigued developer is tenfold.

Once mental fatigue has set in you can't just ride it out until it passes. The only remedy is to get out of the office and do something physical. Mental fatigue has a cumulative effect. Sure, you can get out of the office and go for a jog and you'll probably get some more work done in the afternoon, but sooner or later you will fall back into mental fatigue.

Imagine the positive effect it would have on a developer if they could spend part of their working week outside of the office pursuing other things that are important to them. Not only would they be out of the office but they would be working at completely different things giving their minds time to refresh and re-energize. You can imagine that when they came into the office, they would be ready for action!

Having experienced both part-time and full-time software development jobs, it has been my observation that the difference in productivity between a three day week and a five day week is negligible. However, the results swing even more in favour of a three day week when you factor in the next area: quality.

Quality

Two developers are assigned the same task, let's say a web page. Both of them complete the task in the same amount of time. Would you consider both developers equally productive? Perhaps, but will the QA team? What if the testers raise ten bugs against one developer's work and only two against the other's? Now do you view them as equally productive?

Bug fixing is one of the major risks in any software project. The best software houses understand that having less requirements per iteration actually increases output. Why? Because when a developer has less pressure they are far more likely to get what they are doing right the first time.

Consider the insidious nature of the bug-fixing process. A developer gets assigned a defect from the bug tracking software. It takes the developer on average at least an hour to understand the code that has the bug. Only then can a developer even begin to find a solution to the problem. That being the case, the developer who had ten bugs raised against their code has robbed the project of ten productive hours. That's more than a day of zero output. Even if the bug gets assigned back to the original developer, it still takes time for the mind to ramp up on that particular area of code.

So, what does all of this have to do with the benefits of hiring a part-time developer? Well, in the previous section we looked at the impact on productivity during periods of mental fatigue. The reality for professional developers is that you can't just disappear from the office for a few days and then return once the fatigue has passed. You are expected to produce work regardless. You can't just stare at a problem for days, you are expected to produce something during that time. So the professional developer is expected to grind out periods of mental fatigue and just push something out. The developer knows that the code is ugly and doesn't feel good about it, but they are left with no choice. They simply must have something to show for their time.

It is no stretch to say that the number of bugs raised against that sort of forced code will be tenfold more than those raised against code written in a state of mental freshness. Given that each bug costs the project one hour of zero output, this has a massive impact on overall output.

Mental fatigue is deadly to a project because often, in this state, the same bug will bounce back and forward between tester and developer over and over again. The developer simply does not have the mental energy to solve the problem completely. Often they will fix one aspect only to break another and this downward spiral can be devastating to a project.

Having examined the impact of quality, it is clear to see that mental freshness is imperative to meeting project deadlines.

Morale

It is hardly necessary for me to extol the benefits of morale to a team. However, consider the following key reasons why hiring a part-time developer will boost the morale of not only the developer but that of the entire team.

The first thing to consider is that most staff members have no desire to work part-time. And even if they would like to work less they are not prepared to sacrifice the extra pay. But, just knowing that the option is there if they need it would no doubt be quite reassuring to them. Furthermore, the fact that a company is prepared to hire part-timers speaks volumes about the companies' attitude towards its staff. This is the kind of company that the best and brightest want to work for!

Given that those desiring part-time work are in the minority, combined with the difficulty involved in getting part-time work, an individual must have a very important reason to want this. So, that being the case, imagine the impact on morale if a company forced full-time work on staff with different needs. Imagine the frustration of an employee who is forced to abandon a pursuit of great importance to their life. Do you honestly expect that employee to be highly motivated and have a positive influence on the rest of the team? Negativity can have a detrimental effect on the productivity of the entire team.

On the other hand, imagine the positive influence of an employee who feels fulfilled in life! Genuine cheerfulness is contagious. Often, when a staff member is highly motivated and excited about their work, it can rub off on the entire team. When a staff member shows up refreshed and ready for action, those around them feed off their energy. Sometimes, all it takes is one positive team member to brighten up the whole office!

Conclusion

A part-time software developer can be of great value to any software project! They are a cost effective option while at the same time injecting the team with great energy and enthusiasm.

Still not convinced? I want to hear why. Please leave a comment outlining your reservations. I will do my best to address your concerns in a future post.

I would love to get some feedback from other developers. Do you agree with the points I have expressed in this post? Are there other points I have not considered? Do you have anything to add? Please feel free to express your thoughts regardless of whether you agree or disagree with the points I have made.

--- o ---

If you are from Sydney, Australia and your company would consider hiring a part-time developer please contact me at dev.simond@gmail.com or view my resume.

Sunday, October 19, 2008

The Brick Wall

Having recently finished a contract I have started job hunting again. I have been programming for around ten years now and have good experience so, generally, I have no trouble getting responses back from my resume. Because of my experience recruiters are keen to get me in for an interview. But then I go and spoil it all by saying something stupid like... part-time work? Suddenly it's like I turn into an alien from outer space and a look of bewilderment comes over the poor recruiter. "You want what?"

I know that part-time programming work exists because I have been working a three day week for the past year and I have friends that are working part-time. The problem is that you first have to work full-time for the company and then slowly bring them round to the idea of part-time.

I'm convinced that more companies would take on part-time software developers if they considered the benefits.

What do you think? Have you ever wanted part-time programming work and had a similar response? Have you been successful in finding part-time work? If so, how did you go about finding it?

I'm keen to hear from other developers about their experience finding part-time work.

--- o ---

If you are from Sydney, Australia and your company would consider hiring a part-time developer please contact me at dev.simond@gmail.com or view my resume.