How to get your team organized with 5$ per month

Some time ago I had a pleasure (no irony intended!) to start working in a company with no established developing process at all. There was no issue tracking, no communication tools, no code hosting…nothing (nothing but a Russian Bitrix system, but it doesn’t count, since it’s awful and nobody was using it). Now I want to share with you one of myriads of possible approaches. As it happens we pay only 5$ per month to make it work.

How to start?

First of all you’ll need a webserver. We decided to pick up the cheapest DigitalOcean droplet which is available for exactly 5$ per month. You can pick Linode or any other server, where you’ll be granted full root access. DigitalOcean comes with a fancy possibility to create a Redmine-Droplet in just 55 seconds, this is just what we did.

Where to host code?

Trust me, even if you have just one developer you better start using version control. Github is the most common service just to do so, however if you can’t afford sharing your code with the community you got to pay for private repositories. A wide known alternative would be Gitlab, which not only allows you to host the service on your own machine, but also doesn’t charge you for creating private repositories if you continue using on-demand version. I didn’t manage it to install Gitlab on our 5$ droplet (maybe I’m just not gifted… maybe it has something to do with recommended RAM size of 2 Gbyte and two unicorn worker units to be able to handle http requests – 5$ droplet got only 512 MB RAM), so we’re using private on-demand repos. However if you manage to install gitlab on your machine the following routine will be much easier, since pulling from Gitlab won’t requre any hooks as it will be on the same machine as Redmine itself.

How to connect them?

You’ll probably don’t want maintaining two systems at a time. This is where so called hooks come in play. You can try and install https://github.com/phlegx/redmine_gitlab_hook but for me, although I set up (at least I suppose so) everything correctly, it didn’t work.  What I did instead was following:

  • create an ssh-key on your server, where redmine is hosted (since chances are you won’t be able to copy the key to your clipboard you’ll need to send the file to your local machine first via scp
pbcopy < .ssh/id_rsa.pub
scp your_username@remotehost.edu:foobar.txt /some/local/directory
(I never know how to connect to my local PC, so instead I connect to remote machine and download the file)
For example - scp root@192.168.0.1:/.ssh/id_rsa.pub /directory_created_for_the_key
  • now comes a tricky thought – since Redmine hooks only its local repos but your local environment is another one, we need a workaround. As depictured below you need to set up your remote origin as gitlab
git remote add origin git@gitlab.com:your_project/your_repo.git
then you push using 
git push -u origin master
Gitlab Redmine connection visualization
Gitlab Redmine connection visualization
  • To keep your Redmine repo up-to-date, you’ll need, first of all, to create one (on the Redmine server) – simply git init /home/redmine_projects/project1
  • Create a cronjob – nano /etc/cron.d/sync_repos
  • Repeat the line for each repository (app should be the owner of the repository. In our case it is “root”)
    */5 * * * * app cd /path/to/project.git && git fetch origin && git reset --soft refs/remotes/origin/master > /dev/null
  • Wooosh! You’re done! Now every push will be visible just 5 minutes thereafter in your Redmine repo-tab.
Now your repo on the server where redmine is installed is always up-to-date (with a 5 minute delay).
Now your repo on the server where redmine is installed is always up-to-date (with a 5 minute delay).

Peopleware by DeMarco and Lister

If there is one core sentence that could summarize whole book, it would be – even in the IT field most problems arise around people, not around technology. And you can solve those problems by addressing at people’s issues, not implementing another METHODOLOGY. This leads to the main concept of peopleware – caring for your team, trusting them and creating best conditions for creative work.

Well, it’s clearly a pity, that I read this book that late in my path as a PM, in fact if you want to join the journey, make sure to read it first! Don’t even bother reading further my summarization since it will be all like how great this book is. And indeed it is.

Simply said, just read this book and skip my post.

If it’s so simple, why are a lot of projects failing, why can’t we just make this book a METHODOLOGY, a standard for every IT company out there? Well, because it’s unpleasant. A hell lot of managers (including myself) love to operate with numbers, measure story points, velocity, team performance because they trust numbers more than feelings. You can explain a number, but in most cases you won’t be able to explain a feeling. And your boss won’t accept a feeling either. And your team won’t provide you any numbers, like – hey, I’m feeling down today because the loudness level raised by 20%, thus, lowering my productivity by 15%. And and and.

You should care about your people and create or try to create best possible environment for them (simply try to rhyme peopleware with peoplecare). Because there is no mass production in such an intellectual field of work. Coding is not like working along an assembly line. You will need a “flow”. It’s not trivial to get into the flow-state, it takes some time and every interruption will force you to leave the state.

If you need the shortest summarization of the book, here we go – find right (means qualified) people, infect them with your idea, create best possible conditions for their work, leave them alone.

Here are few total no-go’s that no one should ever do to his/her team:

  • Huge open spaces – no, no, no and again no. When your brain is working you need silence. That’s as simple as it is. People listening to music or other environment’s sounds can work too, but they can’t create new, alternative solutions, they can just do their routine work.
  • Engulf your people in beaurocracy  – just think over it – do your really need a daily report? If you answer is ‘yes’, think again. And again. And then again. If the answer is still ‘yes’ you haven’t found the right people you can trust.

Why do you even mind mentioning short phone calls and furthermore call such distractions evil? Are you out of your mind?

Do you like math? I bet you do, at least numbers, since we all love numbers. Let’s say there are two employees, both instructed to do one task, consisting of several sub-tasks and few random phone calls. Let’s even assume they require same amount of time to carry out the work and need approximately about 5 minutes to adjust between some interruption with just one slight difference – we will place a phone near the first employee while leaving the second one completely exposed to silence handing out the phone to him at the end.

[bs_row class=”row”]
[bs_col class=”col-xs-6″]

Subtask 1 – done in 5 minutes

Subtask 2 – done in 5 minutes

Subtask 3 – done in 5 minutes

Subtask 4 – done in 5 minutes

Subtask 5 – done in 5 minutes

Adjusting time – 5 minutes

Phone call 1 – 5 minutes

Phone call 2 – 5 minutes

Phone call 3 – 5 minutes

Phone call 4 – 5 minutes

Phone call 5 – 5 minutes

[/bs_col]
[bs_col class=”col-xs-6″]

Subtask 1 – done in 5 minutes

Adjusting time – 5 minutes

Phone call 1 – 5 minutes

Adjusting time – 5 minutes

Subtask 2 – done in 5 minutes

Adjusting time – 5 minutes

Phone call 2 – 5 minutes

Adjusting time – 5 minutes

Subtask 3 – done in 5 minutes

Adjusting time – 5 minutes

Phone call 3 – 5 minutes

Adjusting time – 5 minutes

Subtask 4 – done in 5 minutes

Adjusting time – 5 minutes

Phone call 4 – 5 minutes

Adjusting time – 5 minutes

Subtask 5 – done in 5 minutes

Adjusting time – 5 minutes

Phone call 5 – 5 minutes[/bs_col]

[/bs_row]

Holy cow – 95 minutes vs. 55 minutes – that’s an increase of almost 100%!

Now imagine what happens when a phone is always in reach of your employees’ ears (even if they don’t have to answer it directly, for every call you can add some adjusting time. Additionally, by all means 5 minutes is a value suitable for a very professional employee, for your more-than-average protege you may increase this value by 100%-200%.