Overview of prices for Python/Django software development.
Price for web development with Python/Django vary from $5 to $300 per hour. In this article, I'll try to show what affect the range.
Risks and prices
It's important to understand how much prices depend on risks a developer takes. The price of the same developer could vary from $100/hour to $20/hour, depending on the way you work with him and how you share risks.
Let's start with an example. Imagine a customer has an idea of the site that allows anyone to rent out his bike and takes a small fee for it. Assume a customer has some background in IT and tech, but not a programmer himself.
There are three typical models of work with developers for him then:
The first way is a fixed-price project,
where a customer has a fixed price he should pay for the project completed. In that case, he puts all the risks on the developers. Obviously, programmers will include them into the price.
There some examples of the risks for developers to face while programming your project:
- Scope creep. Customer changes his mind on the scope of the project in the middle of the project and it will require remaking a lot of connected parts in the codebase, and then a customer can do it again. After that, a customer will realize that some moments are not well thought from the start, for example, it seems that site should require sms confirmation by the person that wants to rent out a bike before building up the trust to him. And a customer will ask it to do for free.
To avoid such risks developers will often require a detailed list of features to stick and a schematic picture of each page on the site.
It should be mentioned, such a document will also save lots of time of a client. All these discussions and adding new functionality take a lot of time and energy, when they are dealt with in the middle of the project.
Wrong estimate. When a developer estimates the project for you, most probably he did not do exactly the same project before. So he has to guess a bit how much something will take. And there is a quite high probability that while estimating something important will be missed. For example, a developer finds a nice library that should help to locate users by their zip code, and he thinks that it will play well with his code. But in reality it can happen that this library will not work when just connected, it will require a slightly different version of the framework you use, and now a poor developer has to go and understands the whole library and fix the issues. And thus from 3 hours, it turns into a 2 day work. As such extra work will be not paid, it will significantly harm motivation. The reality is that 80% of the software projects are not done within the time planned for it.
Mistunderstanding. There is big chance that some things are understood in different ways by customer and developer. For example, for a customer it's assumed that while signing up with Twitter account users photo should automatically appear in user's profile. For a developer, it's typically extra work that should be discussed, and when he plans and estimates the work it's just not there. Of course, when a customer explains it as a "bug" after task completion, developer has to do it, but it's perceived as an extra unplanned effort.
Bugs, there always bugs in software. It usually takes at least 20% of whole project time to fix bugs made in the process of the development. In case of a fixed-price project, all the bugs should be fixed for free. However, there are some hard cases when bugs appear in the code that is out of the developer control. Say, you have an integrated external part of the code, it works ok, bug after 2 weeks of work the third part changed some endpoints and developer has to investigate the origins of the issue and fix it. Typically, it's impossible for developers to be responsible for such cases and they prefer to ask for extra money for that or simply leave you with an unfinished project.
In that case, you pay fixed price for the whole project. It's the highest rate as a lot of risks are included into price
The second way, named time and materials.
It's when a customer has a rough estimate from a developer and you both assume that you are free to change anything in the process of the development, but you must pay for every hour spend by a developer on the project. Prices are typically lower, but the risks explained above are shared with you. You pay for bugs, for any moments not included into the original estimate, but you'll improve lots of the things while development. In almost 100% cases customer undestands the project better while development and wants to improve the original task set.
In that case, you typically pay hourly or daily per progress. It's a middle rate as risks are shared.
The third way, Customer just rents a team of developers
and fully manages them.
In that case payment is monthly based. It's the lowest rate possible in all ways of work because customer cares about all the risks. However, it also gives the biggest flexibility and control.
Expertise and prices
To develop a good product developer should implement some logics. Before the implementation, a developer should understand it. It's very convenient to work with a developer or project manager that have already worked in the target industry. It takes less time to explain the feature, less chances for misunderstanding. It's extremely important when a customer is not expert in the industry too. In that case, a well-educated team will suggest a lot of improvements and point out the pitfalls that could indeed ruin the project. Also, it decreases the development time. When at least once a developer faces some specific problem in the area, he has the knowledge how to handle it. It prevents bugs and speeds it all us. Experience of the development team in some specific industry is called expertise. Such services usually cost more, as the team has already invested time to became experts in a specific industry.
Another case of expertise influence is expertise in specific software of library. A good example is Swiss-based company Divio that charges $250-300 per hour. They made a big contribution to the Django world. They wrote two widely used Django packages. The first one is django-cms initially most advanced CMS written in Django. Lots of people use it, and it is obvious that they will work with it faster than anybody else because they have created it and know all the details. The second one is django-oscar, it's kind of Magento in the world of Django. Here they also charge a lot, but they also know it the best.
Location and prices
We live in unequal world dived by borders, where people in different places earn a significantly different amount of money for equal tasks done. It's true for the physical world. However, for the software development it's not so crucial because the level and experience of the developer is what actually influences his payments. There is still inequality, but not so drastic. And that inequality is usually connected with real reasons. There are following qualities that affect the price: programming level, the English language level, soft skills (be able to communicate freely), responsibility and honesty. The big issue is that one small percentage of people have a high level of concentration and responsibility that allows working remotely without issues.
Say you want to hire a remote developer and you want to manage him fully. Firstly, let's specify the level of seniority. For example, we are looking for a strong Python developer with 5 years of experience and relevant education sphere.
Let's check the following locations:
- San-francisco, USA - $120 000 / year - $10 000 / month
- Barcelona, Spain $45 000 / year - $3750 / month
- Kyiv, Ukraine. $30 000 / year - $2500 / month
- Sydney, Australia. $75 000 / year - $6250 / month
- London, UK $60 000 / year - $5000 / month
- Berlin, Germany $50 000 / year - $4150 / month
- New-Delhi, India $6000 / year - $500 / month
Parts of pricing
- Long term work vs short-time projects
- Linkedin as a way to get expenses to programmers
- Sales, Preparing Specifications, Planning Architecture, Frontend, Backend, Deployment, Maintenance, Support