Freelance Principle for Programmers

English Version 

Pay based on time

  1. For your own health, don’t work over 8 hours per day.

Pay based on product

  1. Make sure you understand what the user need. If what the user need is not practical, I mean, if it can’t be implemented easily by programming, don’t take it.
  2. You must ask the user to pay you 5$ to verify if he really wanted to make a product or not.
  3. Do not accept those project that has mess code and un-unified components, because it will take tons of time to put garbage code together and make it running. But the user thinks it is easy, which will make you feel annoyed.
  4. Then you could start to split the needs into a need list (If the user have a need list, that’s also OK).
  5. For that need list, for each need, there has to have a price for it. Whenever you finished one need, the user should pay you with that price. (You could record a demo video -> send it to user -> user confirm -> user pay you -> you send or not send the un-complete code to user)
  6. Once the needs list and price table is confirmed, nobody can change it. (If user wanted to modify their needs, they can wait the software development finished, then go through the custom process, which will charge independently)

Chinese Version

  1. 项目一定要调研得很细,分清哪些能做,哪些不能做,不确定可行性的宁愿不做,需求不明确的宁愿不做!

  2. 代码混乱,组件不统一的项目,不要接,不然客户认为很简单,实际上要把垃圾代码拼起来、跑起来就得耗费一堆时间。浪费生命。

  3. 所有项目必须有预付款(成本价,我指程序员生存所必需的钱),不然宁愿不接!

  4. 项目要谈好 功能-价格表 再做。每一个 功能点(feature),对应一个价格。每完成一个 功能点,客户就得给这一部分的钱。具体流程:先录屏 该功能点,发给用户,等客户付款,再把 半成品代码 发给用户。

  5. 需求一经订立,直到全部完成,不能修改。若要修改,需要走 “软件定制化流程(单独收费)”。