The idea of the plugin RedmineUpwork and the initial work came from a good friend of mine. He runs his own agency for years now. For a long time he’s using Upwork to employ freelancers all around the world. The cool thing about Upwork is that it also covers the legal aspects of a cooperation, which can be very confusion when the participants are living in different countries. For project management, issue tracking, wiki-system and stuff like that, like a lot other small to medium size companies, he`s using Redmine.
His agency does mostly software and website development. When defining and monitoring a budget for these kind of projects you need to consider the following group of costs:
- Costs for development: person-hours of developer and hourly rate/costs of every developer
- Costs for Project management: includes hours for project management and rate of them
- Other costs: like costs for servers, testing environment… these costs are normally more or less fix costs
When you discover difficulties or bigger changes it will always increase the person-hours of developers so it`s very important to keep an eye on them.
Project controlling in the past
One very basic process in project controlling is comparing estimated and actual key data. The most important data is obviously time and money. Since we use Redmine for project management it makes total sense to use Redmine for controlling as well.
So let`s assume you already created a project in Redmine and within that, versions and issues including estimated time for each issue.
Normally a developer you hired through Upwork would either add their time to the issues in Redmine manually, you would do it by yourself, depending on the hours he tracked in Upwork or which in our experience happens most you don`t add time entries in Redmine at all.
These procedures result in some problems:
- The neceessity of manual work: You have to check for mistakes (and there will always be the one)
- Missing financial aspects: Still if you got your time in Redmine there`re no financial aspects included. That`s an important thing cause every developer can have different rates.
To solve these problems we used a big spreadsheet (sounds familiar? 😉 ):
Developer hours grouped by version or issue and multiplied with the hourly rate (which is different for every developer, like i mentioned earlier). We updated the spreadsheet in regular intervals. Well we planned to do that, and depending on the workload we had we did that sometimes more sometimes less regularly.
Here comes RedmineUpwork
Based on this we developed RedmineUpwork. A plugin for Redmine to import data from Upwork. Our goals were to avoid third party software as well as manual work and enable Redmine to give you a quick overview for financial aspects of your projects.
We kept is as simple as possible. Every developer has a Redmine User, which makes sense because they can update issues, add wiki-pages etc. It`s also possible to use just one Redmine User for all freelancers though you can`t separate them within Redmine later. The Redmine User gets assigned to a Upwork contract. All times belonging to that contract are getting imported in Redmine and saved as time entries. To automatically relate these time entries to issues the developer has to add the issue number to the memo within Upwork (manual assignment to issues is possible as well). The plugin imports the tracked time, the hourly rate and the actual amount of money.
As mentioned before we also added financial overviews for all projects as well as single projects. Which means with just one quick glance you see if any project is threatened. If so, taking a deeper look is just one klick further. Even the smallest units (the issues) can be monitored easily.
Sounds cool, right?! We saved a lot of time and nerves with RedmineUpwork, and stay focus on our core business.