Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

After applying to multiple contracting positions, I landed a few interviews which I then was accepted to do the work. I am also a full time college student, but I do have about 25-30 hours free a week, so that isn't a problem.

My issue is how do I manage that time efficiently? One of the contracting position starts next week and I've already started one yesterday. How do you make your schedule to fit your clients to give them the most time a day and not get stuck in a narrow path of working for one until you "feel" done? My clients do know that I have other work, but I don't want them to think it'll affect their work nor do I want it to.

Also, if you can give advice about similar experience of things to look out for or how having multiple clients affected your quality of work.

I'm hoping this isn't too subjective or too specific, so comment regrading to that so I can fix it .

Thanks!

share|improve this question
3  
College is for taking classes and having fun. Money will come. Do not waste the best years of your life on what you will continue doing long after you stop enjoying sex. I would say - drop one of your clients, keep it simple. –  Job Dec 1 '10 at 19:04
5  
@Job: College, in most places, also costs money, and it is necessary to have money to live on in addition. Not all people have adequate money or support to go through college without working on the side. And I doubt I'll be able to do anything productive if and when I stop enjoying sex. –  David Thornley Dec 1 '10 at 19:09
    
@Job Oh I'm not wasting my time, that's what the weekends are for. Most of my friends go to college and work thereafter, so my week days are pretty boring when I'm not working or at class. Also the Fall semester is ending in two weeks, so I'll have even more free time. On a side note, I do need money to pay for college and the girlfriend :) –  Jesse Dec 1 '10 at 19:10
    
Doing some contract work now will save you from switching majors or careers later. –  JeffO Dec 2 '10 at 2:47
add comment

3 Answers

up vote 8 down vote accepted

Firstly, some ground rules that you will need to understand.

  1. Chopping and changing tasks during software development is particularly unproductive.
  2. Your ability to time manage depends on your ability to predict task timescales.
  3. You need to sleep.

Quite simply, you need to make sure that you only commit to deadlines that you can meet comfortably. When ever you do any work, time yourself. Not to try to do it against the clock, but so that you are aware of how long programming actually takes. That way you will get better at estimates.

Programming velocity is the number of hours predicted for a task divided by the hours it actually took. This number is not likely to be 1. An experienced developer with several years experience is quite likely to have a velocity of around 0.5. Calculate your velocity and use it to make sure you are not over committing your time, and are charging enough for your work.

If you manage your clients so that you are working for one client for a few days, perhaps up to a couple of weeks, and then switching client for a few days. they are quite likely to be happy. If they contact you for some extra urgent work, use your velocity to calculate when you are likely to be free, and just say I am expecting to be available on...

share|improve this answer
    
Thank you Ptolemy, I appreciate your time to help. Can you clear up something for me about managing the clients so that I'm working for them for a week or so a time? Do you mean to say to work for Client X for couple days and then Clients Y for couple days etc and then go back to Client X? I think my problem is setting up a schedule that I can stick to and to guarantee X amount of hours a week for a client. Hopefully you can clarify this for me. –  Jesse Dec 1 '10 at 21:20
    
I am assuming that your clients are going to pass relatively small tasks to you that will take a few days each to deliver. So set up an order book, as new customer orders come in, estimate the timescales, and then place it at the back of the queue. Forget about guaranteeing a fixed number of hours per customer, its more important to be able to give an accurate delivery timeframe. That will allow your customers to plan. –  Ptolemy Dec 1 '10 at 21:26
    
I guess I may have been too vague. The work I am doing are full scale web applications- nothing I can't do but are 4 to 6 months worth of work a piece. So I can't spend the first 4 months with my first client and then start the other. I'm looking at this as two part time jobs yet I'm in control of the when do I work for this client and take a break and start with the next. I guess this may come down to personal preference, but I'm sure there are some key things to take into consideration. Thanks! –  Jesse Dec 2 '10 at 1:23
1  
Think of it like this. You have 8-12 months of work to do. Now if you do it in parallel, both customers will be waiting for the 8-12 months. If you do it sequentially, the first customer will be waiting for 4-6 months and the second customer will wait between 8 and 12 months. Surely that's a better overall outcome? –  Ptolemy Dec 2 '10 at 1:34
1  
Depends on the detail of requirements and the methodology used. If he is going to spend a fair bit of time blocking on design, decisions and answers throughout the entire period then multi-tasking can make sense; but even very experienced programmers can get into trouble with this. –  Jeremy Dec 2 '10 at 2:00
show 1 more comment

Though it's possible to do what you plan to do, it causes a lot of stress. Things to look out:

  • Avoid doing on-call duty at all costs. Never become so important that one client might call you because they need you right now, forcing you to either hurry there or connect to their server trough 3G+VPN while really should be doing something else, like working for the other client or learning for your college

  • When you have to do estimates, be pessemistic. Generous timeframes help you when problems arise, at this job, the other or the college

  • Do as much as possible from home, to reduce travel time and be more flexible in when you work

  • Take care of your health. Step down if you notice early symptoms of burn-out.

  • Avoid doing on-call duty at all costs. It bears repeating.

share|improve this answer
add comment

Concern yourself with determining how much time can you devote to contract programming in general. Maybe keep track of it for a week and make adjustments until you can maintain a schedule.

Part of it will depend on how much overlap there is on what you're having to learn as you go along. You may spend more time tweaking something on Job A and it turns into a template for Job B. Not that difficult to switch from one to the other in this case, but dealing with a complex bug is different.

Find out what their expectations are on time-frames and don't try and guess what it will take to make them happy. If you think you are going to have a slow week (finals), let them know in advance. Mainly they will want to avoid unpleasant surprises.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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