Ask HN: When is a programmer good enough to freelance?
I started coding about two years ago (Python/Django). I've been employed as a web developer with varying success. I built my own personal website as a learning exercise and it's about to be deployed. I'd like to freelance to earn some extra income, but the last thing I want is to take on a job I'm not ready for and deliver a substandard product. This profession doesn't seem to have established benchmarks--how do I know when I'm ready to take on a project on my own?
12 comments
[ 6.2 ms ] story [ 46.6 ms ] threadI think I'm good enough, but I'm pretty sure I'm far too slow. I do everything by hand and even though I use stuff like preprocessors and project templates it takes much much longer than what some people are able to hammer out with bootstrap, some modifications to it and a well designed workflow. I test everything and abstract as much as possible (e.g. only use raw SQL for performance rather than beeing lazy about writing models) and that only adds to the amount of time required to accomplish even the smaller stuff.
Among other things, I saved Christmas! (Way back in the dawn of the web, a little printing company in Iowa managed to get the christmas.com domain, and were printing letters to Santa for kids. They were getting creamed performance-wise. I helped get it runnable.)
For example a client might ask, "I want to a simple web app that does x and charges users a monthly subscription for access." Can you build out the functionality to carry out whatever x is and set up something like Stripe? If so, take the job, if not say you're booked and move on/forward them on to someone else.
Also keep in mind, if they knew someone better for the job, they probably wouldn't be talking to you (for example, your non-technical friend approaches you to build a simple webapp, you're probably the most technical person they know, if they knew a rockstar or whatever, they probably would have asked them instead).
Building basic sites ans blogs is easy, but say someone asked you to read data from an old database or connect to a payment backend that doesn't have a django plugin, could you write your own? You also need to be able to support every plugin you use if/when that plugin gets dropped by the author.
If your going to freelance I would get very familiar with your own cms and blog system so you know it inside out, or best yet, write your own from scratch, then you aren't maintaining other people's code.
My $0.02
I liked someone's suggestion of a fixed fee so you take the hit on learning stuff, but how do you counter the problem of feature creep in that case?
Frankly they won't care about the libraries you used or how you coded the app, but at the same time freelancers should be technically sharp enough to write maintainable code with proper version control and automated tests, but more importantly, programmers should be skilled enough to propose proper solutions.
Example: Given a problem that can be resolved with an in-app chat solution, that chat solution shouldn't be based on polling a SQL database. I've seen one in production and what happened after it was released wasn't pretty.
Example: Given a problem that requires multiple POS machines with their own offline data to sync on a central database, a solution shouldn't be based on installing full SQL databases with purchased licenses armed with massive stored procedures moving data around. I've seen one in production. Maintaining, both financially and technically, costs so much for both the client and for their in-house dev team.
Technical skills should come naturally because freelancing is beyond code, it's about business development.
Freelancing/Consulting isn't just about coding/designing but its more on knowing what your client actually wants/needs, educating them about your proposed solution, delivering that need, knowing how to deliver that need through proper communication, and making them go through a process with a tight feedback loop that is both pleasurable, emotionally and on paper, that would make them go back to you and/or refer you to others.
Most software out there are just CRUD apps, or as I would like to put it: glorified excel sheets. Other than delivering a standard website with Wordpress/Drupal as your solution, custom software and building on top of other poorly written custom software from previous developers will be your toughest challenge if your technical skills are still being sharpened. But if you feel your technical skills are sharp enough, you can already go out there and do something on the side :)
You can start small. Help a friend or relative and charge them. Get practicing on itemizing cost, project proposal, contract negotiation, collecting money, figuring out how to get paid etc. These are importance freelancing skills outside of just coding.