Hi all
Newbie question.
I'm thinking of charging the customer by the number of lines of the code. What should I charge for about 100 lines of code?
Thanks for any help.
Hi all
Newbie question.
I'm thinking of charging the customer by the number of lines of the code. What should I charge for about 100 lines of code?
Thanks for any help.
GameJolt: https://gamejolt.com/@KasunL
Game Development Youtube: https://is.gd/XyhYoP
Amateur IT Blog: http://everything-geeky.blogspot.com/
(and, sorry for my amateur English)
I suggest sticking to some suitably low limit for the number of characters per line (80 is suggested by Python's PEP-8, but that's way too generous). Use extremely verbose names, forcing you to spill over statements across many, many, many lines in order to meet the character per line limit (Stroustrup suggests that remaining_free_slots_in_symbol_table is "probably too long", but he has no clue). Make sure that you use an indent style that will maximise the number of lines of code (Allman may be an option, but enhance it if you can). Avoid using generic algorithms and library functions in general unless you can count the standard library code in the line count. If feasible, rewrite the entire standard library from scratch so as to get paid for those lines of code. Include a clause in the contract to allow comments to be counted as code, then make sure to write exceedingly long comments (keeping to the character per line limit) that explain blatantly obvious code in meticulous detail (Doxygen-style tools can help).Originally Posted by geek@02
Or, you can charge based on your time to produce the work given your ability and availability of competitors, the value it provides, and what your customers are actually willing to pay.
Look up a C++ Reference and learn How To Ask Questions The Smart WayOriginally Posted by Bjarne Stroustrup (2000-10-14)
Forget that, just approach your potential client with something like "Look, I'm a reasonable guy - what is this worth to you?". Chances are their offer will be much better than you expected. And if their offer comes out too low, just come up with a suitable counteroffer based on what you think it's worth. Haggle, rinse, repeat...
Code:#include <cmath> #include <complex> bool euler_flip(bool value) { return std::pow ( std::complex<float>(std::exp(1.0)), std::complex<float>(0, 1) * std::complex<float>(std::atan(1.0) *(1 << (value + 2))) ).real() < 0; }
Not everything that can be counted counts, and not everything that counts can be counted
- Albert Einstein.
No programming language is perfect. There is not even a single best language; there are only languages well suited or perhaps poorly suited for particular purposes.
- Herbert Mayer
Thanks for the input guys.
No actually -- I'm fairly new to selling my work, and seems not having a good grasp on how to put a price on what I code. So, for the time being I thought I may asses the charge based on the LOC. I know it's a silly way of doing it, duh. But anyways. What do you guys suggest as the cost for a line of source code for a, say, a single level 2D shooting game? (Probably a silly question, but wanna know what you guys say..)
Last edited by geek@02; 10-15-2013 at 01:07 AM.
It's worth whatever people are willing to pay for it.
What's wrong with billing for you time? That's how most contractors work.
You should bill based on time not lines of code. KLOCs are a terrible way to judge programmer performance and charging based on them is equally as terrible.
Since your project estimates will be time-based you can easily calculate the total cost of a project if you know what you are going to charge per hour. Note that your time estimates in a consulting project should always be in total man hours. A normal work day is 8 hours but it is rare that you will ever have a full 8 hours to work due to meetings and other responsibilities and time sinks. It all depends on your particular business or environment and your chosen SDLC and development methodology (Waterfall, Agile, etc.)
Last edited by VirtualAce; 10-15-2013 at 10:49 PM.
You should bill based on hours spent as it was suggested. But this isn't as straightforward as it may seem. You should always have two concerns in mind:
Be fair to you
Be fair to your customer
Ideally you should provide your customer with the overall cost of the project before you start coding. This means you must do some ad hoc software analysis and produce some manner of proposal with an estimate of what you will charge the customer. I never charge for these ad hoc analysis. I consider them time well spent in winning a customer. But these proposals do include the time I will spend doing the real software analysis, once the project is approved.
Also ideally you shouldn't have a fixed hourly rate. I tend to charge hourly rates based on the complexity of the project. If I'm required to investigate and learn new skills, I tend to cut on the customer costs since I have benefited from the project in other ways than just the money I will make from it. Long running projects also have different hourly rates. I usually charge more for quick projects than I do for longer ones.
In the private sector, usually overcharging is more beneficial. I have lost customers to my attempts at being nice and understanding. There's simply this thought process in which businesses tend to be suspicious of cheap proposals. You should try to avoid winning a customer by reducing your charges. Remember you should also be fair to you. And in the case where you come up with a large figure that you feel may be too much for the customer resources, you should include in the proposal enough data to convince them why you are the right person to do it along with some kind of incentives, like free training or 1 year free maintenance.
The public sector is the opposite and frankly much harder to build proposals for. You will have to make an effort to reduce your charges to the bare minimum that justify the time you will spend on the project. The public sector works on strict budgets and they will always evaluate proposals on money. But you should never ever undercharge because there's no point in working on something that isn't just fair to you. It's best sometimes to just let go and let someone else take it. Although this does not mean you shouldn't deliver your proposal.
The nature of your project will determine if post-development services will be required. These are typically training and project maintenance. I usually give the first for free and I always charge the second. Training costs will depend on the number of people involved and the time required. I consider 2-3 weeks of training a fair personal expense that I shouldn't charge. But if those 2 or 3 weeks are entirely spent on the customer premises providing training to a large group of people, naturally that would change.
Maintenance is usually charged yearly (under contract) or by incident (no contract required). I only give maintenance for free when the project global costs are large enough to justify giving the customer an incentive. But only the first year or a set number of incident calls. Maintenance charges should be based on the type of incident. Under incident-based maintenance you should charge even when correcting bugs in your code. But the charge should be smaller compared to other type of incidents. If under a maintenance contract your best bet for a fair yearly charge is to charge between 1/5th and 1/10th of your development proposal (note that you should only engage in contractual maintenance for large and complex projects). As you gain experience, you'll gain a mind for the costs and time involved in maintaining your projects based on what type of code you wrote, the difficulties you faced, the type of customer you have and the project own nature. It will become easier to come up with better maintenance contracts. But initially this will be an headache.
Originally Posted by brewbuck:
Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.