7 ms·
Ethics for Freelance Programmers
- mcavaliere 11y agoI wrote up some thoughts on this topic since it's something I don't see often talked about.
- DebasishPanda 11y agoAgree with the points. While billing hourly & tracking time on my own I tend to keep going back to the timer application to pause or start for every small occasion, depending whether I am working on the project or doing something else, even if its for a minute or two, coz distractions are omni-present & I can not work on something straight for 60 minutes at a time. That actually increases my anxiety. So I much prefer to bill per work/project basis as a whole. One thing regarding ethics, sometimes a client will want to 'copy' a feature they saw on another website, including the visual feature as well. That makes me uncomfortable, I try to make variations of it, although I have never denied work for this reason. May be next time I will atleast object strongly when its a blatant copy.
- kohanz 11y agoI think using a start/stop timer is selling yourself short. Almost every programmer has ebbs and flows between thoughts and output (e.g. writing code). When I take a brief break from coding to check my e-mail or something, it's not like I stop thinking about the program I'm working on entirely. I don't think I would be nearly as productive over the long term if I just stared at my IDE for all hours of work. Often a solution to a bug that I was working on the previous day will come to me during a morning shower, and I think it would be ridiculous to bill for those kind of events. That's why I tend towards the conclusion that the breaks and what would be considered "observable, verifiable" work tend to balance out.
- fencepost 11y agoMore years ago than I like to think about while I was working corporate, I threw together something to track my active window titles. That may not work to track vim in tmux, but I'd you're doing anything with website development it should give you a decent overview (which may also surprise you and motivate you to change your habits).
- karlmdavis 11y agoOn Windows, Manic Time does a beautiful job of this active window tracking. I haven't found anything that does it for Linux, though.
- _neil 11y agoThere's tools for this like RescueTime. There's also Editor plugins like WakaTime that just track the time you spend on specific projects within your IDE. Not sure if they have vim options, though.
- tptacek 11y agoAn easy way to get out of the trap of having to intricately track your hours, and at the same time get paid more, is to bill by the day instead of the hour. All projects that you charge money for get a 1-day minimum. I've written a lot about this: https://news.ycombinator.com/item?id=4101355 https://news.ycombinator.com/item?id=4101355 https://news.ycombinator.com/item?id=8706929 https://news.ycombinator.com/item?id=8706929 https://news.ycombinator.com/item?id=3420203 https://news.ycombinator.com/item?id=3420203 (and, like a hundred more). I get a mail from a contractor about every other month telling me how much happier they are for having switched from hourly to daily. Daily should be your default. (Advanced skill: daily->weekly).
- jo909 11y agoI work for external clients, and when they get billed daily instead of hourly I just convert the hours into full days according to a 8 hour workday. If I worked lets say 80 hours on 20 days on their project, we bill them 80/8 = 10 days. Of course in those 20 days I also worked on other stuff, worked for other clients etc. It would seem totally unfair to me to bill them 20 days instead, so how would you handle this? Even when I only have a single client and do nothing else, it would seem unfair to count a full day if I worked longer or shorter that day. Unfair to me if I worked longer, unfair to them if I worked shorter.
- tptacek 11y agoDo you not see the broken incentive system here? The more efficiently you work, the less you get paid. Keep it simple. Write a proposal with an estimated number of days to completion and a total price tag for the whole engagement. This is not a fixed-price proposal, but it has the same look-and-feel as one. If you go over the number of days you estimated, you bill in additional day increments. If you go under by at least a whole day, you dock days. It does not matter when on the calendar or the wall clock you get the work done. This basic technique works just fine when juggling multiple clients. When you're managing multiple projects, don't deliberately bill people a full day for 2 hours of work (it is just fine to bill a whole day for 2 hours work if they're the only client you have during that day, and the project simply takes less than a day: you have a 1-day minimum), but don't obsess about tracking hours. Real clients, the ones worth keeping, care first and foremost about determinism. They want to pay a predictable amount of money for something to get done in a predictable amount of time, and that's it. They do not care about you minimizing the number of hours you bill, unless you ask them to care --- and a great way to beg a client to care about minimizing billed hours is to bill hourly.
- dopeboy 11y agoGood points Mike. "Be honest about what you can and can’t do." Yep. Got burned on this once in my short time freelancing. Got cocky and thought I could pull off implementing something in a technology I've never used under a fixed contract. Live and learn. "Question whether you’re building the right thing – within reason." I really appreciate this point. I deal with mostly non-technical clients who sometimes don't always know what they want. Being able to get to the core of what they're after and say no to things that would make me a lot of money but be useless to them is crucial.
- mcavaliere 11y agoThanks dopeboy. I think we've all gotten burned at one time or another for that reason.
- c_moscardi 11y agoTo me, the interesting bit here is that you have to be honest with yourself about your limits as well - and in particular, be very good about understanding those limits. I think in this instance, ethics and economic incentives align - your expertise is part of your value-prop to clients, and having a good grasp of your limits makes you substantially more valuable. You get things done on-time, with clear expectations set, and do a prompt and thorough job providing what you're being paid for. Personally, as a natural optimist, one thing I need to be especially careful about is not saying "yeah that's doable!" and setting expectations too high - it can potentially lead to a messy situation. That said, one of my favorite parts of freelancing is that I get confronted with new, unique challenges that I've never dealt with before - there's a balance to be struck here.
- mosburger 11y agoBack when I freelanced, I had the opposite problem (saying "no" too often), but I don't think it was my skillset or the project-type that was the problem as the author suggests. I have a real self-confidence problem that makes me pretty bad at freelancing. I've worked on that a bit, but in the end I ended up going back to FT work. I'd eventually like to give it another whirl if/when I can learn to get self-confidence where it needs to be.
- amelius 11y agoI'm wondering if there are freelancers out there who hire somebody to find new programming jobs for you?
- scmoore 11y agoI haven't tried it, but there are services like http://letsworkshop.com/ http://letsworkshop.com/ which are similar to what you're talking about.
- sarciszewski 11y ago> Clients pay us by the hour, and we tend to cost per hour more than permanent employees. My clients pay me by the day. You lost me already.
- V-2 11y agoWhile solid advice, this is not really specific to freelancing. Perhaps the freelancing model offers more opportunities to violate this code of conduct, but that's it. With some cosmetic rephrasing most of it would apply to developers with regular jobs just the same. Only your customer becomes your employer. Okay, we're not paid by the hour, but don't we still "owe it to the [employer] to not burn their money unnecessarily", and isn't it still true that "time on the phone with your girlfriend" isn't what one gets paid for? (I'm not saying anyone is supposed to, or capable of flinging code for 8 hours straight - obviously not, the boundary is a matter of common sense) Not to mention honesty, doing a good job etc.
- mcavaliere 11y agoI wasn't thinking about that while I wrote it, but yeah it's totally applicable for non-freelancers as well.
- V-2 11y agoYeah, I think so. But I agree that this sort of moral compass is probably more needed by a freelancer - more freedom, more decisions to make, so in this sense I can see why you'd qualify it as such, even if these guidelines are more universal...
- borng 11y agoUse something like the free http://rescuetime.com http://rescuetime.com or http://manictime.com http://manictime.com to track time spent. Highly recommended whether working for yourself or a client.
- sakabaro 11y ago"time on the phone with your girlfriend is generally not." Maybe avoiding gender specific comment, should be part of your ethics as well?
- quadrangle 11y agoYet another site where the content is nothing but static text, but it doesn't even show without JavaScript. Fix this.
- bdcravens 11y agoI use Freshbooks with the Chronomate add-on. It lets me start a timer, pauses during inactivity, letting me determine to keep/remove idle time, and easily start/stop. It lets me document time in small chunks, so that each of those chunks shows up as a line item. Not the only solution like this, but I've found this combination to work the best for me.