Can I bill the client for my time learning his system? [duplicate]

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty margin-bottom:0;







up vote
36
down vote

favorite
5













This question already has an answer here:



  • As a freelance web developer, should I bill for my learning curve?

    8 answers



I'm working on some bug fixes on web project for a client/friend. He has everything set up and working, but called me to fix a handful of bugs.



I've never used his system, I barely know how it runs, how it's organized etc and how everything works together. I'm going to need some time to understand this.



All this has to be paid for by him, generally how much time should be expected to understand his system? Is it uncommon to bill him for say a day or two if all I'm doing is understanding his system?







share|improve this question












marked as duplicate by gnat, Thomas Owens, scaaahu, yochannah, IDrinkandIKnowThings May 19 '15 at 21:50


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.





migrated from programmers.stackexchange.com May 18 '15 at 12:37


This question came from our site for professionals, academics, and students working within the systems development life cycle.










  • 6




    @Ewan I disagree tbh. I have worked at a blue chip where I was given 2 months to understand their system. There is so many variables to consider. However, you are right to say that OP needs to charge for his time.
    – ham-sandwich
    May 18 '15 at 11:57






  • 5




    "how much time should be expected to understand his system" - do you really expect the community here to give you an answer about a system unknown to them? It could be anything between an hour or a lifetime.
    – Doc Brown
    May 18 '15 at 12:09






  • 2




    You can (Should?) bill for everything the client is willing to pay for. Though it might be better to hide your "time spent learning how to program" inside something that looks better in the eyes of a paying customer...
    – AK_
    May 18 '15 at 12:18






  • 7




    @Yannis I would say there is a slight, but important, difference. The linked question is asking about time to learn certain generic technologies (like a coding language), whereas this question is asking about time to learn how to use a client-specific system. The former should not always be charged for, but the latter most certainly should be charged for.
    – David K
    May 18 '15 at 12:54






  • 3




    @TheWanderingDevManager Probably someone who, like me, had no idea that there was a freelancing SE.
    – reirab
    May 18 '15 at 20:41
















up vote
36
down vote

favorite
5













This question already has an answer here:



  • As a freelance web developer, should I bill for my learning curve?

    8 answers



I'm working on some bug fixes on web project for a client/friend. He has everything set up and working, but called me to fix a handful of bugs.



I've never used his system, I barely know how it runs, how it's organized etc and how everything works together. I'm going to need some time to understand this.



All this has to be paid for by him, generally how much time should be expected to understand his system? Is it uncommon to bill him for say a day or two if all I'm doing is understanding his system?







share|improve this question












marked as duplicate by gnat, Thomas Owens, scaaahu, yochannah, IDrinkandIKnowThings May 19 '15 at 21:50


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.





migrated from programmers.stackexchange.com May 18 '15 at 12:37


This question came from our site for professionals, academics, and students working within the systems development life cycle.










  • 6




    @Ewan I disagree tbh. I have worked at a blue chip where I was given 2 months to understand their system. There is so many variables to consider. However, you are right to say that OP needs to charge for his time.
    – ham-sandwich
    May 18 '15 at 11:57






  • 5




    "how much time should be expected to understand his system" - do you really expect the community here to give you an answer about a system unknown to them? It could be anything between an hour or a lifetime.
    – Doc Brown
    May 18 '15 at 12:09






  • 2




    You can (Should?) bill for everything the client is willing to pay for. Though it might be better to hide your "time spent learning how to program" inside something that looks better in the eyes of a paying customer...
    – AK_
    May 18 '15 at 12:18






  • 7




    @Yannis I would say there is a slight, but important, difference. The linked question is asking about time to learn certain generic technologies (like a coding language), whereas this question is asking about time to learn how to use a client-specific system. The former should not always be charged for, but the latter most certainly should be charged for.
    – David K
    May 18 '15 at 12:54






  • 3




    @TheWanderingDevManager Probably someone who, like me, had no idea that there was a freelancing SE.
    – reirab
    May 18 '15 at 20:41












up vote
36
down vote

favorite
5









up vote
36
down vote

favorite
5






5






This question already has an answer here:



  • As a freelance web developer, should I bill for my learning curve?

    8 answers



I'm working on some bug fixes on web project for a client/friend. He has everything set up and working, but called me to fix a handful of bugs.



I've never used his system, I barely know how it runs, how it's organized etc and how everything works together. I'm going to need some time to understand this.



All this has to be paid for by him, generally how much time should be expected to understand his system? Is it uncommon to bill him for say a day or two if all I'm doing is understanding his system?







share|improve this question













This question already has an answer here:



  • As a freelance web developer, should I bill for my learning curve?

    8 answers



I'm working on some bug fixes on web project for a client/friend. He has everything set up and working, but called me to fix a handful of bugs.



I've never used his system, I barely know how it runs, how it's organized etc and how everything works together. I'm going to need some time to understand this.



All this has to be paid for by him, generally how much time should be expected to understand his system? Is it uncommon to bill him for say a day or two if all I'm doing is understanding his system?





This question already has an answer here:



  • As a freelance web developer, should I bill for my learning curve?

    8 answers









share|improve this question











share|improve this question




share|improve this question










asked May 18 '15 at 11:44









Torra

28433




28433




marked as duplicate by gnat, Thomas Owens, scaaahu, yochannah, IDrinkandIKnowThings May 19 '15 at 21:50


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.





migrated from programmers.stackexchange.com May 18 '15 at 12:37


This question came from our site for professionals, academics, and students working within the systems development life cycle.






marked as duplicate by gnat, Thomas Owens, scaaahu, yochannah, IDrinkandIKnowThings May 19 '15 at 21:50


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.





migrated from programmers.stackexchange.com May 18 '15 at 12:37


This question came from our site for professionals, academics, and students working within the systems development life cycle.









  • 6




    @Ewan I disagree tbh. I have worked at a blue chip where I was given 2 months to understand their system. There is so many variables to consider. However, you are right to say that OP needs to charge for his time.
    – ham-sandwich
    May 18 '15 at 11:57






  • 5




    "how much time should be expected to understand his system" - do you really expect the community here to give you an answer about a system unknown to them? It could be anything between an hour or a lifetime.
    – Doc Brown
    May 18 '15 at 12:09






  • 2




    You can (Should?) bill for everything the client is willing to pay for. Though it might be better to hide your "time spent learning how to program" inside something that looks better in the eyes of a paying customer...
    – AK_
    May 18 '15 at 12:18






  • 7




    @Yannis I would say there is a slight, but important, difference. The linked question is asking about time to learn certain generic technologies (like a coding language), whereas this question is asking about time to learn how to use a client-specific system. The former should not always be charged for, but the latter most certainly should be charged for.
    – David K
    May 18 '15 at 12:54






  • 3




    @TheWanderingDevManager Probably someone who, like me, had no idea that there was a freelancing SE.
    – reirab
    May 18 '15 at 20:41












  • 6




    @Ewan I disagree tbh. I have worked at a blue chip where I was given 2 months to understand their system. There is so many variables to consider. However, you are right to say that OP needs to charge for his time.
    – ham-sandwich
    May 18 '15 at 11:57






  • 5




    "how much time should be expected to understand his system" - do you really expect the community here to give you an answer about a system unknown to them? It could be anything between an hour or a lifetime.
    – Doc Brown
    May 18 '15 at 12:09






  • 2




    You can (Should?) bill for everything the client is willing to pay for. Though it might be better to hide your "time spent learning how to program" inside something that looks better in the eyes of a paying customer...
    – AK_
    May 18 '15 at 12:18






  • 7




    @Yannis I would say there is a slight, but important, difference. The linked question is asking about time to learn certain generic technologies (like a coding language), whereas this question is asking about time to learn how to use a client-specific system. The former should not always be charged for, but the latter most certainly should be charged for.
    – David K
    May 18 '15 at 12:54






  • 3




    @TheWanderingDevManager Probably someone who, like me, had no idea that there was a freelancing SE.
    – reirab
    May 18 '15 at 20:41







6




6




@Ewan I disagree tbh. I have worked at a blue chip where I was given 2 months to understand their system. There is so many variables to consider. However, you are right to say that OP needs to charge for his time.
– ham-sandwich
May 18 '15 at 11:57




@Ewan I disagree tbh. I have worked at a blue chip where I was given 2 months to understand their system. There is so many variables to consider. However, you are right to say that OP needs to charge for his time.
– ham-sandwich
May 18 '15 at 11:57




5




5




"how much time should be expected to understand his system" - do you really expect the community here to give you an answer about a system unknown to them? It could be anything between an hour or a lifetime.
– Doc Brown
May 18 '15 at 12:09




"how much time should be expected to understand his system" - do you really expect the community here to give you an answer about a system unknown to them? It could be anything between an hour or a lifetime.
– Doc Brown
May 18 '15 at 12:09




2




2




You can (Should?) bill for everything the client is willing to pay for. Though it might be better to hide your "time spent learning how to program" inside something that looks better in the eyes of a paying customer...
– AK_
May 18 '15 at 12:18




You can (Should?) bill for everything the client is willing to pay for. Though it might be better to hide your "time spent learning how to program" inside something that looks better in the eyes of a paying customer...
– AK_
May 18 '15 at 12:18




7




7




@Yannis I would say there is a slight, but important, difference. The linked question is asking about time to learn certain generic technologies (like a coding language), whereas this question is asking about time to learn how to use a client-specific system. The former should not always be charged for, but the latter most certainly should be charged for.
– David K
May 18 '15 at 12:54




@Yannis I would say there is a slight, but important, difference. The linked question is asking about time to learn certain generic technologies (like a coding language), whereas this question is asking about time to learn how to use a client-specific system. The former should not always be charged for, but the latter most certainly should be charged for.
– David K
May 18 '15 at 12:54




3




3




@TheWanderingDevManager Probably someone who, like me, had no idea that there was a freelancing SE.
– reirab
May 18 '15 at 20:41




@TheWanderingDevManager Probably someone who, like me, had no idea that there was a freelancing SE.
– reirab
May 18 '15 at 20:41










5 Answers
5






active

oldest

votes

















up vote
67
down vote













If it costs time, it costs money. The client should provide all the information needed to get started, including documentation of their system if it exists. From experience, it doesn't usually.



There are a number of variables here that both the client and the programmer need to take into account, although this list isn't exhaustive:



  • Quality of the code base (inc source code comments)

  • The size of the system

  • Test Cases covered

However, if it is only small bug fixes, you shouldn't need to learn the system. I would discuss the complexity of using unfamiliar systems and explain that you would need to time to investigate and debug the code that you would need to charge for. Your friend, who is in the business of managing a website, should definitely understand this.






share|improve this answer






















  • Yeah, you're right. There isn't really too much to understand. This is the first project I've worked on freelancing. Had to do it, or end up homeless. Anyway, I sort of feared it would be some huge system. It is, but there's only one repo I need to work on and I've pretty much found where a few of the bugs are happening. Thank you for your reply :)
    – Torra
    May 18 '15 at 12:16






  • 7




    If there are source code comments, the next question is - are they up-to-date with the code itself? The only way to really know is to analyze it. This is why few/no comments (but great naming and well-crafted code) may be preferable.
    – Michael Durrant
    May 18 '15 at 12:26










  • @MichaelDurrant Good point! Thank you for your contribution.
    – ham-sandwich
    May 18 '15 at 13:10






  • 3




    `if it is only small bug fixes, you shouldn't need to learn the system. "shouldn't need to" means "will not have to if the system is well written," not "will not have to." There are many instances where small bug fixes requiring understanding significant parts of the system. If ham-sandwich agrees and modifies the answer I'll upvote, since the rest of the answer is excellent.
    – Gordon Gustafson
    May 19 '15 at 2:28






  • 2




    @MichaelDurrant: This is why I prefer detailed commit messages to comments - you know the context of when they're added in the sequence of changes.
    – R..
    May 19 '15 at 2:42

















up vote
33
down vote














All this has to be paid for by him, generally how much time should be
expected to understand his system? Is it uncommon to bill him for say
a day or two if all I'm doing is understanding his system?




In order to fix the bugs, you need to understand the system. (Or at least you should understand the system.) In order to understand the system, you need to spend time. You deserve compensation for that time.



You need to carefully craft your estimate/contract so that both you and the client understand these assumptions, and come to a mutual agreement on the compensation.



You need to do this before you start working.






share|improve this answer


















  • 3




    Potential caveat: not if you could be reasonably expected to be familiar with the system (because it's so common, whatever). e.g. You call the computer repair guy to sort out some flashy-cursor malware issues; you don't expect to be billed for his time becoming accustomed to your OS.
    – OJFord
    May 18 '15 at 15:50










  • @OllieFord The system isn't common. It's bespoke. 2 of the systems use a framework, which has made it easier, but the main one is a bespoke system and pretty large - and not a very well developed one at that.
    – Torra
    May 20 '15 at 9:50

















up vote
11
down vote













I don't see this anywhere but in comments, so I'll flesh it out:



You should bill for time understanding his specific system. The installation, how the applications interact, etc.; things that are specific to his company or project.



You shouldn't bill time for learning general things - like, say, how to program in C#.NET - unless it's discussed ahead of time. Things that you would normally be expected to know before being selected for the project, for example.



Since you say it's a friend, you might reasonably undertake to do something that's a bit outside of your normal skillset to help a friend out; I would consider then what things the average developer would know in order to be qualified to be hired for the position, and either make it clear to him that you're going to be spending time (and billing time) to learn new protocols or languages, or that you decide to consider it a learning opportunity and not charge for it.






share|improve this answer




















  • I took the job because I am competent with the given languages. That side of things there's no issue. But to be given a lump of bespoke code, with no documentation, or code comments, and asked to "figure it out" is really the challenge. I'm making moves though, much of the code has been documented and I'm understanding it much more than I did yesterday.
    – Torra
    May 20 '15 at 9:52










  • @Torra - One I have been given far to many times myself. I feel your pain. And too often its a dead language that I never put on my resume to avoid getting tasks like this.
    – IDrinkandIKnowThings
    May 21 '15 at 21:57

















up vote
3
down vote













So in my experience there are two parts to this:



  1. Spend some time with the client, allowing him to take you through the bugs, taking as many notes as you can (steps to reproduce, functional areas etc). This could be charged, but I'd maybe give this as a freebie.

  2. Investigation time. Agree a set time (say a few hours/half day) paid, that you use to investigate the issues. From this you can get a handle on how much KT/further investigation you need, so can prepare a real costing for rest of the work. You could (if practical) fix small issues whilst doing this if it's obvious which will show you aren't just charging time for the sake of it.

You probably won't need full KT for bug fixing (new work may be different), but don't be afraid to pad estimates for risk, unknowns, lack of tests etc, the cost is likely to be much higher to both of you if you get it wrong.






share|improve this answer




















  • Like @JoeStrazzere's answer alludes to, this emphasizes the need for establishing a good working relationship with the client.
    – mskfisher
    May 18 '15 at 13:43

















up vote
2
down vote













The answer is "yes", but how you charge that time is a more complicated question.



If you're charging them by the hour already, the simplest solution is to include the hours needed to familiarize yourself with the system. Be upfront about this, and ask them for any documentation or help they can provide to make this part go more quickly. Set up a schedule with your friend, with the understanding that everything on the schedule will be billed. Document this as well - especially if you're going to be reporting it on your tax return for this year.






share|improve this answer



















    protected by Elysian Fields♦ May 18 '15 at 20:56



    Thank you for your interest in this question.
    Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).



    Would you like to answer one of these unanswered questions instead?














    5 Answers
    5






    active

    oldest

    votes








    5 Answers
    5






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    67
    down vote













    If it costs time, it costs money. The client should provide all the information needed to get started, including documentation of their system if it exists. From experience, it doesn't usually.



    There are a number of variables here that both the client and the programmer need to take into account, although this list isn't exhaustive:



    • Quality of the code base (inc source code comments)

    • The size of the system

    • Test Cases covered

    However, if it is only small bug fixes, you shouldn't need to learn the system. I would discuss the complexity of using unfamiliar systems and explain that you would need to time to investigate and debug the code that you would need to charge for. Your friend, who is in the business of managing a website, should definitely understand this.






    share|improve this answer






















    • Yeah, you're right. There isn't really too much to understand. This is the first project I've worked on freelancing. Had to do it, or end up homeless. Anyway, I sort of feared it would be some huge system. It is, but there's only one repo I need to work on and I've pretty much found where a few of the bugs are happening. Thank you for your reply :)
      – Torra
      May 18 '15 at 12:16






    • 7




      If there are source code comments, the next question is - are they up-to-date with the code itself? The only way to really know is to analyze it. This is why few/no comments (but great naming and well-crafted code) may be preferable.
      – Michael Durrant
      May 18 '15 at 12:26










    • @MichaelDurrant Good point! Thank you for your contribution.
      – ham-sandwich
      May 18 '15 at 13:10






    • 3




      `if it is only small bug fixes, you shouldn't need to learn the system. "shouldn't need to" means "will not have to if the system is well written," not "will not have to." There are many instances where small bug fixes requiring understanding significant parts of the system. If ham-sandwich agrees and modifies the answer I'll upvote, since the rest of the answer is excellent.
      – Gordon Gustafson
      May 19 '15 at 2:28






    • 2




      @MichaelDurrant: This is why I prefer detailed commit messages to comments - you know the context of when they're added in the sequence of changes.
      – R..
      May 19 '15 at 2:42














    up vote
    67
    down vote













    If it costs time, it costs money. The client should provide all the information needed to get started, including documentation of their system if it exists. From experience, it doesn't usually.



    There are a number of variables here that both the client and the programmer need to take into account, although this list isn't exhaustive:



    • Quality of the code base (inc source code comments)

    • The size of the system

    • Test Cases covered

    However, if it is only small bug fixes, you shouldn't need to learn the system. I would discuss the complexity of using unfamiliar systems and explain that you would need to time to investigate and debug the code that you would need to charge for. Your friend, who is in the business of managing a website, should definitely understand this.






    share|improve this answer






















    • Yeah, you're right. There isn't really too much to understand. This is the first project I've worked on freelancing. Had to do it, or end up homeless. Anyway, I sort of feared it would be some huge system. It is, but there's only one repo I need to work on and I've pretty much found where a few of the bugs are happening. Thank you for your reply :)
      – Torra
      May 18 '15 at 12:16






    • 7




      If there are source code comments, the next question is - are they up-to-date with the code itself? The only way to really know is to analyze it. This is why few/no comments (but great naming and well-crafted code) may be preferable.
      – Michael Durrant
      May 18 '15 at 12:26










    • @MichaelDurrant Good point! Thank you for your contribution.
      – ham-sandwich
      May 18 '15 at 13:10






    • 3




      `if it is only small bug fixes, you shouldn't need to learn the system. "shouldn't need to" means "will not have to if the system is well written," not "will not have to." There are many instances where small bug fixes requiring understanding significant parts of the system. If ham-sandwich agrees and modifies the answer I'll upvote, since the rest of the answer is excellent.
      – Gordon Gustafson
      May 19 '15 at 2:28






    • 2




      @MichaelDurrant: This is why I prefer detailed commit messages to comments - you know the context of when they're added in the sequence of changes.
      – R..
      May 19 '15 at 2:42












    up vote
    67
    down vote










    up vote
    67
    down vote









    If it costs time, it costs money. The client should provide all the information needed to get started, including documentation of their system if it exists. From experience, it doesn't usually.



    There are a number of variables here that both the client and the programmer need to take into account, although this list isn't exhaustive:



    • Quality of the code base (inc source code comments)

    • The size of the system

    • Test Cases covered

    However, if it is only small bug fixes, you shouldn't need to learn the system. I would discuss the complexity of using unfamiliar systems and explain that you would need to time to investigate and debug the code that you would need to charge for. Your friend, who is in the business of managing a website, should definitely understand this.






    share|improve this answer














    If it costs time, it costs money. The client should provide all the information needed to get started, including documentation of their system if it exists. From experience, it doesn't usually.



    There are a number of variables here that both the client and the programmer need to take into account, although this list isn't exhaustive:



    • Quality of the code base (inc source code comments)

    • The size of the system

    • Test Cases covered

    However, if it is only small bug fixes, you shouldn't need to learn the system. I would discuss the complexity of using unfamiliar systems and explain that you would need to time to investigate and debug the code that you would need to charge for. Your friend, who is in the business of managing a website, should definitely understand this.







    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited May 18 '15 at 14:13









    Community♦

    1




    1










    answered May 18 '15 at 11:56









    ham-sandwich

    499614




    499614











    • Yeah, you're right. There isn't really too much to understand. This is the first project I've worked on freelancing. Had to do it, or end up homeless. Anyway, I sort of feared it would be some huge system. It is, but there's only one repo I need to work on and I've pretty much found where a few of the bugs are happening. Thank you for your reply :)
      – Torra
      May 18 '15 at 12:16






    • 7




      If there are source code comments, the next question is - are they up-to-date with the code itself? The only way to really know is to analyze it. This is why few/no comments (but great naming and well-crafted code) may be preferable.
      – Michael Durrant
      May 18 '15 at 12:26










    • @MichaelDurrant Good point! Thank you for your contribution.
      – ham-sandwich
      May 18 '15 at 13:10






    • 3




      `if it is only small bug fixes, you shouldn't need to learn the system. "shouldn't need to" means "will not have to if the system is well written," not "will not have to." There are many instances where small bug fixes requiring understanding significant parts of the system. If ham-sandwich agrees and modifies the answer I'll upvote, since the rest of the answer is excellent.
      – Gordon Gustafson
      May 19 '15 at 2:28






    • 2




      @MichaelDurrant: This is why I prefer detailed commit messages to comments - you know the context of when they're added in the sequence of changes.
      – R..
      May 19 '15 at 2:42
















    • Yeah, you're right. There isn't really too much to understand. This is the first project I've worked on freelancing. Had to do it, or end up homeless. Anyway, I sort of feared it would be some huge system. It is, but there's only one repo I need to work on and I've pretty much found where a few of the bugs are happening. Thank you for your reply :)
      – Torra
      May 18 '15 at 12:16






    • 7




      If there are source code comments, the next question is - are they up-to-date with the code itself? The only way to really know is to analyze it. This is why few/no comments (but great naming and well-crafted code) may be preferable.
      – Michael Durrant
      May 18 '15 at 12:26










    • @MichaelDurrant Good point! Thank you for your contribution.
      – ham-sandwich
      May 18 '15 at 13:10






    • 3




      `if it is only small bug fixes, you shouldn't need to learn the system. "shouldn't need to" means "will not have to if the system is well written," not "will not have to." There are many instances where small bug fixes requiring understanding significant parts of the system. If ham-sandwich agrees and modifies the answer I'll upvote, since the rest of the answer is excellent.
      – Gordon Gustafson
      May 19 '15 at 2:28






    • 2




      @MichaelDurrant: This is why I prefer detailed commit messages to comments - you know the context of when they're added in the sequence of changes.
      – R..
      May 19 '15 at 2:42















    Yeah, you're right. There isn't really too much to understand. This is the first project I've worked on freelancing. Had to do it, or end up homeless. Anyway, I sort of feared it would be some huge system. It is, but there's only one repo I need to work on and I've pretty much found where a few of the bugs are happening. Thank you for your reply :)
    – Torra
    May 18 '15 at 12:16




    Yeah, you're right. There isn't really too much to understand. This is the first project I've worked on freelancing. Had to do it, or end up homeless. Anyway, I sort of feared it would be some huge system. It is, but there's only one repo I need to work on and I've pretty much found where a few of the bugs are happening. Thank you for your reply :)
    – Torra
    May 18 '15 at 12:16




    7




    7




    If there are source code comments, the next question is - are they up-to-date with the code itself? The only way to really know is to analyze it. This is why few/no comments (but great naming and well-crafted code) may be preferable.
    – Michael Durrant
    May 18 '15 at 12:26




    If there are source code comments, the next question is - are they up-to-date with the code itself? The only way to really know is to analyze it. This is why few/no comments (but great naming and well-crafted code) may be preferable.
    – Michael Durrant
    May 18 '15 at 12:26












    @MichaelDurrant Good point! Thank you for your contribution.
    – ham-sandwich
    May 18 '15 at 13:10




    @MichaelDurrant Good point! Thank you for your contribution.
    – ham-sandwich
    May 18 '15 at 13:10




    3




    3




    `if it is only small bug fixes, you shouldn't need to learn the system. "shouldn't need to" means "will not have to if the system is well written," not "will not have to." There are many instances where small bug fixes requiring understanding significant parts of the system. If ham-sandwich agrees and modifies the answer I'll upvote, since the rest of the answer is excellent.
    – Gordon Gustafson
    May 19 '15 at 2:28




    `if it is only small bug fixes, you shouldn't need to learn the system. "shouldn't need to" means "will not have to if the system is well written," not "will not have to." There are many instances where small bug fixes requiring understanding significant parts of the system. If ham-sandwich agrees and modifies the answer I'll upvote, since the rest of the answer is excellent.
    – Gordon Gustafson
    May 19 '15 at 2:28




    2




    2




    @MichaelDurrant: This is why I prefer detailed commit messages to comments - you know the context of when they're added in the sequence of changes.
    – R..
    May 19 '15 at 2:42




    @MichaelDurrant: This is why I prefer detailed commit messages to comments - you know the context of when they're added in the sequence of changes.
    – R..
    May 19 '15 at 2:42












    up vote
    33
    down vote














    All this has to be paid for by him, generally how much time should be
    expected to understand his system? Is it uncommon to bill him for say
    a day or two if all I'm doing is understanding his system?




    In order to fix the bugs, you need to understand the system. (Or at least you should understand the system.) In order to understand the system, you need to spend time. You deserve compensation for that time.



    You need to carefully craft your estimate/contract so that both you and the client understand these assumptions, and come to a mutual agreement on the compensation.



    You need to do this before you start working.






    share|improve this answer


















    • 3




      Potential caveat: not if you could be reasonably expected to be familiar with the system (because it's so common, whatever). e.g. You call the computer repair guy to sort out some flashy-cursor malware issues; you don't expect to be billed for his time becoming accustomed to your OS.
      – OJFord
      May 18 '15 at 15:50










    • @OllieFord The system isn't common. It's bespoke. 2 of the systems use a framework, which has made it easier, but the main one is a bespoke system and pretty large - and not a very well developed one at that.
      – Torra
      May 20 '15 at 9:50














    up vote
    33
    down vote














    All this has to be paid for by him, generally how much time should be
    expected to understand his system? Is it uncommon to bill him for say
    a day or two if all I'm doing is understanding his system?




    In order to fix the bugs, you need to understand the system. (Or at least you should understand the system.) In order to understand the system, you need to spend time. You deserve compensation for that time.



    You need to carefully craft your estimate/contract so that both you and the client understand these assumptions, and come to a mutual agreement on the compensation.



    You need to do this before you start working.






    share|improve this answer


















    • 3




      Potential caveat: not if you could be reasonably expected to be familiar with the system (because it's so common, whatever). e.g. You call the computer repair guy to sort out some flashy-cursor malware issues; you don't expect to be billed for his time becoming accustomed to your OS.
      – OJFord
      May 18 '15 at 15:50










    • @OllieFord The system isn't common. It's bespoke. 2 of the systems use a framework, which has made it easier, but the main one is a bespoke system and pretty large - and not a very well developed one at that.
      – Torra
      May 20 '15 at 9:50












    up vote
    33
    down vote










    up vote
    33
    down vote










    All this has to be paid for by him, generally how much time should be
    expected to understand his system? Is it uncommon to bill him for say
    a day or two if all I'm doing is understanding his system?




    In order to fix the bugs, you need to understand the system. (Or at least you should understand the system.) In order to understand the system, you need to spend time. You deserve compensation for that time.



    You need to carefully craft your estimate/contract so that both you and the client understand these assumptions, and come to a mutual agreement on the compensation.



    You need to do this before you start working.






    share|improve this answer















    All this has to be paid for by him, generally how much time should be
    expected to understand his system? Is it uncommon to bill him for say
    a day or two if all I'm doing is understanding his system?




    In order to fix the bugs, you need to understand the system. (Or at least you should understand the system.) In order to understand the system, you need to spend time. You deserve compensation for that time.



    You need to carefully craft your estimate/contract so that both you and the client understand these assumptions, and come to a mutual agreement on the compensation.



    You need to do this before you start working.







    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited May 20 '15 at 11:06

























    answered May 18 '15 at 12:46









    Joe Strazzere

    223k106656922




    223k106656922







    • 3




      Potential caveat: not if you could be reasonably expected to be familiar with the system (because it's so common, whatever). e.g. You call the computer repair guy to sort out some flashy-cursor malware issues; you don't expect to be billed for his time becoming accustomed to your OS.
      – OJFord
      May 18 '15 at 15:50










    • @OllieFord The system isn't common. It's bespoke. 2 of the systems use a framework, which has made it easier, but the main one is a bespoke system and pretty large - and not a very well developed one at that.
      – Torra
      May 20 '15 at 9:50












    • 3




      Potential caveat: not if you could be reasonably expected to be familiar with the system (because it's so common, whatever). e.g. You call the computer repair guy to sort out some flashy-cursor malware issues; you don't expect to be billed for his time becoming accustomed to your OS.
      – OJFord
      May 18 '15 at 15:50










    • @OllieFord The system isn't common. It's bespoke. 2 of the systems use a framework, which has made it easier, but the main one is a bespoke system and pretty large - and not a very well developed one at that.
      – Torra
      May 20 '15 at 9:50







    3




    3




    Potential caveat: not if you could be reasonably expected to be familiar with the system (because it's so common, whatever). e.g. You call the computer repair guy to sort out some flashy-cursor malware issues; you don't expect to be billed for his time becoming accustomed to your OS.
    – OJFord
    May 18 '15 at 15:50




    Potential caveat: not if you could be reasonably expected to be familiar with the system (because it's so common, whatever). e.g. You call the computer repair guy to sort out some flashy-cursor malware issues; you don't expect to be billed for his time becoming accustomed to your OS.
    – OJFord
    May 18 '15 at 15:50












    @OllieFord The system isn't common. It's bespoke. 2 of the systems use a framework, which has made it easier, but the main one is a bespoke system and pretty large - and not a very well developed one at that.
    – Torra
    May 20 '15 at 9:50




    @OllieFord The system isn't common. It's bespoke. 2 of the systems use a framework, which has made it easier, but the main one is a bespoke system and pretty large - and not a very well developed one at that.
    – Torra
    May 20 '15 at 9:50










    up vote
    11
    down vote













    I don't see this anywhere but in comments, so I'll flesh it out:



    You should bill for time understanding his specific system. The installation, how the applications interact, etc.; things that are specific to his company or project.



    You shouldn't bill time for learning general things - like, say, how to program in C#.NET - unless it's discussed ahead of time. Things that you would normally be expected to know before being selected for the project, for example.



    Since you say it's a friend, you might reasonably undertake to do something that's a bit outside of your normal skillset to help a friend out; I would consider then what things the average developer would know in order to be qualified to be hired for the position, and either make it clear to him that you're going to be spending time (and billing time) to learn new protocols or languages, or that you decide to consider it a learning opportunity and not charge for it.






    share|improve this answer




















    • I took the job because I am competent with the given languages. That side of things there's no issue. But to be given a lump of bespoke code, with no documentation, or code comments, and asked to "figure it out" is really the challenge. I'm making moves though, much of the code has been documented and I'm understanding it much more than I did yesterday.
      – Torra
      May 20 '15 at 9:52










    • @Torra - One I have been given far to many times myself. I feel your pain. And too often its a dead language that I never put on my resume to avoid getting tasks like this.
      – IDrinkandIKnowThings
      May 21 '15 at 21:57














    up vote
    11
    down vote













    I don't see this anywhere but in comments, so I'll flesh it out:



    You should bill for time understanding his specific system. The installation, how the applications interact, etc.; things that are specific to his company or project.



    You shouldn't bill time for learning general things - like, say, how to program in C#.NET - unless it's discussed ahead of time. Things that you would normally be expected to know before being selected for the project, for example.



    Since you say it's a friend, you might reasonably undertake to do something that's a bit outside of your normal skillset to help a friend out; I would consider then what things the average developer would know in order to be qualified to be hired for the position, and either make it clear to him that you're going to be spending time (and billing time) to learn new protocols or languages, or that you decide to consider it a learning opportunity and not charge for it.






    share|improve this answer




















    • I took the job because I am competent with the given languages. That side of things there's no issue. But to be given a lump of bespoke code, with no documentation, or code comments, and asked to "figure it out" is really the challenge. I'm making moves though, much of the code has been documented and I'm understanding it much more than I did yesterday.
      – Torra
      May 20 '15 at 9:52










    • @Torra - One I have been given far to many times myself. I feel your pain. And too often its a dead language that I never put on my resume to avoid getting tasks like this.
      – IDrinkandIKnowThings
      May 21 '15 at 21:57












    up vote
    11
    down vote










    up vote
    11
    down vote









    I don't see this anywhere but in comments, so I'll flesh it out:



    You should bill for time understanding his specific system. The installation, how the applications interact, etc.; things that are specific to his company or project.



    You shouldn't bill time for learning general things - like, say, how to program in C#.NET - unless it's discussed ahead of time. Things that you would normally be expected to know before being selected for the project, for example.



    Since you say it's a friend, you might reasonably undertake to do something that's a bit outside of your normal skillset to help a friend out; I would consider then what things the average developer would know in order to be qualified to be hired for the position, and either make it clear to him that you're going to be spending time (and billing time) to learn new protocols or languages, or that you decide to consider it a learning opportunity and not charge for it.






    share|improve this answer












    I don't see this anywhere but in comments, so I'll flesh it out:



    You should bill for time understanding his specific system. The installation, how the applications interact, etc.; things that are specific to his company or project.



    You shouldn't bill time for learning general things - like, say, how to program in C#.NET - unless it's discussed ahead of time. Things that you would normally be expected to know before being selected for the project, for example.



    Since you say it's a friend, you might reasonably undertake to do something that's a bit outside of your normal skillset to help a friend out; I would consider then what things the average developer would know in order to be qualified to be hired for the position, and either make it clear to him that you're going to be spending time (and billing time) to learn new protocols or languages, or that you decide to consider it a learning opportunity and not charge for it.







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered May 18 '15 at 16:24









    Joe

    8,0322046




    8,0322046











    • I took the job because I am competent with the given languages. That side of things there's no issue. But to be given a lump of bespoke code, with no documentation, or code comments, and asked to "figure it out" is really the challenge. I'm making moves though, much of the code has been documented and I'm understanding it much more than I did yesterday.
      – Torra
      May 20 '15 at 9:52










    • @Torra - One I have been given far to many times myself. I feel your pain. And too often its a dead language that I never put on my resume to avoid getting tasks like this.
      – IDrinkandIKnowThings
      May 21 '15 at 21:57
















    • I took the job because I am competent with the given languages. That side of things there's no issue. But to be given a lump of bespoke code, with no documentation, or code comments, and asked to "figure it out" is really the challenge. I'm making moves though, much of the code has been documented and I'm understanding it much more than I did yesterday.
      – Torra
      May 20 '15 at 9:52










    • @Torra - One I have been given far to many times myself. I feel your pain. And too often its a dead language that I never put on my resume to avoid getting tasks like this.
      – IDrinkandIKnowThings
      May 21 '15 at 21:57















    I took the job because I am competent with the given languages. That side of things there's no issue. But to be given a lump of bespoke code, with no documentation, or code comments, and asked to "figure it out" is really the challenge. I'm making moves though, much of the code has been documented and I'm understanding it much more than I did yesterday.
    – Torra
    May 20 '15 at 9:52




    I took the job because I am competent with the given languages. That side of things there's no issue. But to be given a lump of bespoke code, with no documentation, or code comments, and asked to "figure it out" is really the challenge. I'm making moves though, much of the code has been documented and I'm understanding it much more than I did yesterday.
    – Torra
    May 20 '15 at 9:52












    @Torra - One I have been given far to many times myself. I feel your pain. And too often its a dead language that I never put on my resume to avoid getting tasks like this.
    – IDrinkandIKnowThings
    May 21 '15 at 21:57




    @Torra - One I have been given far to many times myself. I feel your pain. And too often its a dead language that I never put on my resume to avoid getting tasks like this.
    – IDrinkandIKnowThings
    May 21 '15 at 21:57










    up vote
    3
    down vote













    So in my experience there are two parts to this:



    1. Spend some time with the client, allowing him to take you through the bugs, taking as many notes as you can (steps to reproduce, functional areas etc). This could be charged, but I'd maybe give this as a freebie.

    2. Investigation time. Agree a set time (say a few hours/half day) paid, that you use to investigate the issues. From this you can get a handle on how much KT/further investigation you need, so can prepare a real costing for rest of the work. You could (if practical) fix small issues whilst doing this if it's obvious which will show you aren't just charging time for the sake of it.

    You probably won't need full KT for bug fixing (new work may be different), but don't be afraid to pad estimates for risk, unknowns, lack of tests etc, the cost is likely to be much higher to both of you if you get it wrong.






    share|improve this answer




















    • Like @JoeStrazzere's answer alludes to, this emphasizes the need for establishing a good working relationship with the client.
      – mskfisher
      May 18 '15 at 13:43














    up vote
    3
    down vote













    So in my experience there are two parts to this:



    1. Spend some time with the client, allowing him to take you through the bugs, taking as many notes as you can (steps to reproduce, functional areas etc). This could be charged, but I'd maybe give this as a freebie.

    2. Investigation time. Agree a set time (say a few hours/half day) paid, that you use to investigate the issues. From this you can get a handle on how much KT/further investigation you need, so can prepare a real costing for rest of the work. You could (if practical) fix small issues whilst doing this if it's obvious which will show you aren't just charging time for the sake of it.

    You probably won't need full KT for bug fixing (new work may be different), but don't be afraid to pad estimates for risk, unknowns, lack of tests etc, the cost is likely to be much higher to both of you if you get it wrong.






    share|improve this answer




















    • Like @JoeStrazzere's answer alludes to, this emphasizes the need for establishing a good working relationship with the client.
      – mskfisher
      May 18 '15 at 13:43












    up vote
    3
    down vote










    up vote
    3
    down vote









    So in my experience there are two parts to this:



    1. Spend some time with the client, allowing him to take you through the bugs, taking as many notes as you can (steps to reproduce, functional areas etc). This could be charged, but I'd maybe give this as a freebie.

    2. Investigation time. Agree a set time (say a few hours/half day) paid, that you use to investigate the issues. From this you can get a handle on how much KT/further investigation you need, so can prepare a real costing for rest of the work. You could (if practical) fix small issues whilst doing this if it's obvious which will show you aren't just charging time for the sake of it.

    You probably won't need full KT for bug fixing (new work may be different), but don't be afraid to pad estimates for risk, unknowns, lack of tests etc, the cost is likely to be much higher to both of you if you get it wrong.






    share|improve this answer












    So in my experience there are two parts to this:



    1. Spend some time with the client, allowing him to take you through the bugs, taking as many notes as you can (steps to reproduce, functional areas etc). This could be charged, but I'd maybe give this as a freebie.

    2. Investigation time. Agree a set time (say a few hours/half day) paid, that you use to investigate the issues. From this you can get a handle on how much KT/further investigation you need, so can prepare a real costing for rest of the work. You could (if practical) fix small issues whilst doing this if it's obvious which will show you aren't just charging time for the sake of it.

    You probably won't need full KT for bug fixing (new work may be different), but don't be afraid to pad estimates for risk, unknowns, lack of tests etc, the cost is likely to be much higher to both of you if you get it wrong.







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered May 18 '15 at 13:02









    The Wandering Dev Manager

    29.8k956107




    29.8k956107











    • Like @JoeStrazzere's answer alludes to, this emphasizes the need for establishing a good working relationship with the client.
      – mskfisher
      May 18 '15 at 13:43
















    • Like @JoeStrazzere's answer alludes to, this emphasizes the need for establishing a good working relationship with the client.
      – mskfisher
      May 18 '15 at 13:43















    Like @JoeStrazzere's answer alludes to, this emphasizes the need for establishing a good working relationship with the client.
    – mskfisher
    May 18 '15 at 13:43




    Like @JoeStrazzere's answer alludes to, this emphasizes the need for establishing a good working relationship with the client.
    – mskfisher
    May 18 '15 at 13:43










    up vote
    2
    down vote













    The answer is "yes", but how you charge that time is a more complicated question.



    If you're charging them by the hour already, the simplest solution is to include the hours needed to familiarize yourself with the system. Be upfront about this, and ask them for any documentation or help they can provide to make this part go more quickly. Set up a schedule with your friend, with the understanding that everything on the schedule will be billed. Document this as well - especially if you're going to be reporting it on your tax return for this year.






    share|improve this answer
























      up vote
      2
      down vote













      The answer is "yes", but how you charge that time is a more complicated question.



      If you're charging them by the hour already, the simplest solution is to include the hours needed to familiarize yourself with the system. Be upfront about this, and ask them for any documentation or help they can provide to make this part go more quickly. Set up a schedule with your friend, with the understanding that everything on the schedule will be billed. Document this as well - especially if you're going to be reporting it on your tax return for this year.






      share|improve this answer






















        up vote
        2
        down vote










        up vote
        2
        down vote









        The answer is "yes", but how you charge that time is a more complicated question.



        If you're charging them by the hour already, the simplest solution is to include the hours needed to familiarize yourself with the system. Be upfront about this, and ask them for any documentation or help they can provide to make this part go more quickly. Set up a schedule with your friend, with the understanding that everything on the schedule will be billed. Document this as well - especially if you're going to be reporting it on your tax return for this year.






        share|improve this answer












        The answer is "yes", but how you charge that time is a more complicated question.



        If you're charging them by the hour already, the simplest solution is to include the hours needed to familiarize yourself with the system. Be upfront about this, and ask them for any documentation or help they can provide to make this part go more quickly. Set up a schedule with your friend, with the understanding that everything on the schedule will be billed. Document this as well - especially if you're going to be reporting it on your tax return for this year.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered May 18 '15 at 15:10









        Zibbobz

        6,68752453




        6,68752453















            protected by Elysian Fields♦ May 18 '15 at 20:56



            Thank you for your interest in this question.
            Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).



            Would you like to answer one of these unanswered questions instead?


            Comments

            Popular posts from this blog

            What does second last employer means? [closed]

            List of Gilmore Girls characters

            One-line joke