Pay-What-You-Want-Development

'''The status of this article is first-draft; it might contain some original ideas that have not gone through refinement process of getting feedback from the intended audience (you). Give me feedback to help me improve the reading experience for the next reader (18.3.2015).'''

We software developers love our jobs and have passion for our craft. We code at the office, at home, at cafés for our employers, our friends ourselves. The unfortunate truth is that we need money to live, most of us would code for free if we wouldn't need money. We love building things and making the world better place for everyone with useful Internet-applications, cool Mobile-apps and OpenSource-contributions.

Software could be beautiful, but those sitting on money like to have things done in-time and they like developers who make compromises of with software beauty in order to meet the deadlines. Can't blame them, they are in the very same situation, because they need to do things in-time for deadline defined by a bigger boss.

Usually the existance of the deadlines lead to architecture rot, deprecated documentation and overall bad decisions, because customer doesn't want to pay for hard-to-understand concepts. They just want you to do something they can show for their bosses.

This is a serious problem caused by the ways we preceive work and non-work time; it excludes the passion for your craft, it dictates you to obey orders for 40-hours a week and then expects you to stop contributing to your customer project. This is so wrong! I want to be passionate about my customers, but if there is no money involved after the 40-hours a week, I will have huge priorization problem with my time usage. In ideal world, I would do regular work enough to earn 1,500€ a month and be a Pay-What-You-Want-Developer rest of the time. I even believe that I could earn more that way than I have earned as employee. Here is why...

How Pay-What-You-Want makes business sense?
When people are given the choice of pay what they want, they would take the products for free, right? This is what "capitalists" want you to believe, but we human beings are fair, not greed, by nature. In average people pay 70% of the price when given choice.

One Helsinki University professor told me about this eCommerce site, which has built algorithms to evaluate the optimal price for their products for a Pay-What-You-Want-model. You will define a classic price for the product, then you use Reinforcement Learning algorithms to generate a price for the product:

Pay-What-You-Want-Price = 1 / How Much Average User Pays * Classic Price

Then you create user specific prices. Then the eCommerce Web-site will evaluate each users behavior and makes Pay-What-You-Want-offers available to those who pay fairly and exclude those users who don't understand the concept of fairness.

This way you can build a very addictive shopping experience, which allows you to buy cheap, when you are short on money and pay fair when you have money.

You will be able to get much better customer loyalty and increase the amount of items sold from your inventory. This does not break the existing eCommerce business model, but can be extension of it. Even better, your customers don't need credit cards to get credit from you, which drops off the greedy credit card companies out of your "supply chain".

Okay, What Is a Pay-What-You-Want-Developer?
In a typical software project in 2015 the customer buys Sprints, certain amount of working hours, which are used to accomplish certain tasks. This is all good, except when customers priorities conflict software beauty (or other interests of developers, like learning a new technology, because it does something better than the old one).

Let's assume we have a software developer, who has a passion for good project documentation. He does 15 hours of work over the week-end to improve the documentation of customers project. The customer has a contract with the developers employer, by which all regular work costs 80€ / hour.

After the new documentation is done, the project manager informs that "unfortunatelu" one of our developers doesn't have a girlfriend, and has no friends either and he decided to fix your documentation for free over the weekend, because he was bored... Wops! He spent 15 hours for it, but we don't really care about money, because good documentation is a matter of passion for us... if you want to pay for it, we will reward him with a bonus that goes directly to his salary (of course the software developer and his employer are free to arrange this any way they want).

What happens next?

When the customer pays a good price
This is a signal that the customer has money and is willing to pay for extra work if they are done for good cause. The team working for the customer will evaluate what kind of Pay-What-You-Want-Projects would benefit your customer. NEVER ask the customer, because that might feel like you are taking control; suggest ideas at Sprint Planning and use the left-overs as a pool of Pay-What-You-Want-Project ideas. Use this pool for non-full time developers (or for whoever has time) who want to do Pay-What-You-Want-Projects and let them develop the projects and get paid for their passion.

When the customer pays what they want to pay
This is a signal that the customer understands the idea of fairness, but is not willing to pay full-price for these development efforts. Team should evaluate what kind of Pay-What-You-Want-Projects would be of huge importance for the future prospects of the customers business and make their decisions based on this.

When the customer pays a bad price
This is a signal that the customer either doesn't understand fairness, doesn't appreciate the efforts of the developer or has a bad financial sitaution. Either way this is a bad customer and you should reconsider your priorities with him, or at least the priorities of your Pay-What-You-Want-Developers.

'''If these guidelines were off the spot, leave a comment or let's have a chat (my LinkedIn profile is here), I want to learn from you, why my rationale is illogical so I can refine it. You can also check my You-Can-Help-Me page for further information!'''

How Pay-What-You-Want-Developers will benefit your business
Pay-What-You-Want-Developers will provide you many benefits. Pay-What-You-Want-Developers could be freelancers, your in-house developers or OpenSource-collaborators.

You can increase your profits
As with the eCommerce example, you can ask premium for the hourly price. Tell the customer, that one of your senior developers noticed that this project needed this and that and did it for free. This works in a similar fashion as Expedite Lanes in Kanban projects.

You can save money with improved Human Resource management
This way of working will offer you a lot of intelligence about customers, which you can utilize to move Human Resources to more profitable projects. You can also use freelancers to work on the Pay-What-You-Want-Project-Pool; even better, you can calculate safe price for an hour to pay freelancers who can work on their own risk for bonuses, which they receive if customers like their contributions.

You could start in-house product development projects and later build busineess upon them
If you have a lot of similar customers, you should rearchitect your customer projects for better reusability and for sharing the development costs. In the end this might become an in-house project that is built upon the domain knowledge of your customers; you could start a franchaise business for the in-house product and see if it flies.

You could participate better to OpenSource-contributions
This is related to another startup idea I want you or someone else to steal. OpenSource developers work for free now, but if we rearchitect the business models towards more donation based approach, more development time would be directed towards OpenSource-contributions (because less people would have to work for customers, because).

How this would work is that when an OpenSource-project is updated, the software projects utilizing it would receive a Pay-What-You-Want notification (this many hours / whatever measurement was spent to build this update, pay us what you want based on that information). I will update my startup idea to be stolen later.

'''If these ideas make you feel uncomfortable, leave a comment or let's have a chat (my LinkedIn profile is here), I want to learn from you, why my rationale is illogical so I can refine it. You can also check my You-Can-Help-Me page for further information!'''

Why Pay-What-You-Want Development Can't Work?
There are many reasons why Pay-What-You-Want Development can't work in reality. Here I have listed a few ideas, which are all realted to each other.

You haven't documented your architecture design decisions
If all the information about your projects is within the heads of your developers, it is nearly impossible for someone new, but competent, to start developing without reverse engineering the entire system. In a sense you should have simple install script, which runs human readable commands (human readable code, script and configuration is the extension of the implementation of good documentation).

Your architecture is not sound
One of the reasons projects do not have proper documentation about the architecture design decisions is that they were originally created by individuals, who do not understand the underlying architecture they are using; they do not make architecture decisions, instead they just code.

This creates vendor locks and high-development-cost software. When people just code, without architecture, they end up making naive assumptions about the code and write changes where it is easy. They skip all the learning for speedy short-term progress and do not care about the long-term business goals at all. Every developer should follow two principles: Even with these principles developers fail, because...
 * Make yourself obsolete as fast as you can (prevent vendor locks)
 * Take responsibility of your own mistakes (be "proud" about being less than perfect, this way you can learn)

Your customer has organizational challenges
Because many times the sales teams get their bonuses from short-term sales, they end up acquiring a lot of bad customers, who still have money to be sucked out. If your sales team can approve any customer, the shit might not immediately pour downwards, but the piss water is leaking from the holes of the bucket. Then there is piss all over the place and people don't wan't to go near the project untill the bucket is full and shit pours downwards in epic ways straght to the fan. Kaboom!

You should pay your sales team long-term bonuses. When a Sprint is over, the developers will rank the successfulness of the Spirint. You should also evaluate the quality of the customer relationship regularly. This should be the basis of the long-term bonuses given to the sales team; I would actually call them Customer Relationship Managers. Their bonuses are based on the monthly health of customer projects, not sales. If the health goes down, the company takes more money in and compensates the Customer Relationship Managers less. If the health is good, the company takes less money and rewards the Customer Relationship Managers better. If you can't make this happen...

You have been unable to recruit professional sales team
This means that your company is not good enough for professional sales team. In practice this means that you are billing your customers for failing projects. Lack of documentation is a symptom of bad software business values. If you do not have goodwill between employees and within your customer relationships, your business is unsustainable and ineffective. New cusomer acquisition is very expensive when compared to making long-term successful business with existing customer.

This is a very tough situation, because you need money to recruit good talent, but you probably do not have safe long-term profit revenues to invest in good talent. But, this is not rocket science, you could use your existing team to innovate what you could do in order to improve your customer relationship health and focus on the good ones and try to get rid off the bad ones. You could utilize risk taking freelance developers with partly bonus based contracts in order to generate information about the customer relationship like I have introduced here.

'''If this claim makes you feel uncomfortable, leave a comment or let's have a chat (my LinkedIn profile is here), I want to learn from you, why my rationale is illogical so I can refine it. You can also check my You-Can-Help-Me page for further information!'''