As you know I work as freelance programmer, I have handled many kinds of projects, you can see the list of technologies which I am offering on my services page and some sample products which can tell of what I am capable to do on my products page. As you can see, I have left some technologies, like PHP, due to the poor budget on many of those projects and messy code that I have seen on them. Since PHP lacks some tools like static analyzers and style checkers, most PHP projects cannot ensure good quality.
My set of rules on handling projects and jobs related to programming are mainly related to payment methods, rates, methodologies and who is hiring me. So, non serious proposals are not handled by me. If you come telling me that you need a web page, just forget hiring me, I will not attend you, because I develop applications, not web pages.
- refuse fixed price projects
- Every software project without a well defined specification and clear requirements, is subject of changes, handling fixed price project is subject of spending unpaid work hours. So, my rates are monthly and hourly, depending on how is agreed the payment method. Fixed price projects which does not have a very consistent specification and requirements, will not be handled.
- refuse projects with the wrong technology
- As PHP projects, they will be refused. I cannot handle projects that cannot be properly integrated with other tools and languages that do not have strictly necessary tools like static analyzers and style checkers. PHP, Node JS and similar ones which has that kind of lacks, will not be accepted.
- refuse projects where I did not made the estimation
- Every software where I did not have made the estimation will be refused, I cannot handle projects where the estimation is not subject of concise methodologies like PERT. So, your compromise is not my compromise if you have made the estimation.
- refuse projects without version control
- Every project where you are not using version control, will be refused. I cannot stay sending tarballs with my code, creating messy products, everything should be properly branched and tagged on each milestone.
- refuse projects without issue tracking
- Every project should be using issue tracking software, agile or not, but I need that kind of tools to track each development stage, where everything should be clearly specified.
- refuse projects without continuous integration
- I cannot work with projects where you are not properly checking the code. The code should stay clean from its origin, with the proper style and avoiding common errors.
- do not work with novice programmers
- I do not work with novice programmers which are not capable to read a specification and they are not able to handle some basic stuff, like server configuration, command line tools, server administration, and the proper knowledge of the environment where are you working. If you want me as tutor or mentor, just hire me as tutor or mentor, it is a separate job.
You must have all those points in mind before hiring me or calling me for a project proposal. Those rules were created due to some failed project — two to be more precise.