Writing software for a large part of my career so far has been more of a solo lone ranger on his laptop furiously punching the keyboard away. Somehow, I find that am the only guy working on a particular project except in cases where a designer has come up with the UI templates because I suck at the front-end.
Usually when I am stuck, I lean to stack-over-bro and sometimes IRC for help. It's incredible how supportive and very willing to help folks on these communities are.
I have discovered my work flow isn't any different from some of the developer friends I know. It's a common trend to see developers work in silos as opposed to the open office blocks common with startups in Silicon Valley. Most developers work as freelancers where they are hired on a per-project basis.
There are very few companies in Uganda that can afford or maybe need a dedicated team of in-house developers to work on their software. Most companies simply outsource their software to third-parties, buy off-the-shelf solutions or in extreme cases pirate!
This trend of being a solo dev has its pros; for one, I have learnt to solve problems by myself (mostly) but I must admit, I can't do without Googling for answers. Programming is really a logically flow of thoughts to solve a particular problems using computers. You are often trying to get the computer to do what you want. It's not a straightforward adventure.
In most cases, how you think and how the computer works and how it interprets your commands are often out of sync. Hence the myriad of compile errors and untold bugs one has to encounter. When I analyse my workflow, debugging accounts for 60% of my time, thinking is 30% and actual writing of code is just about 10%. That's just remarkable when you think about it, yet it's a profound fact.
With collaborative programming, I could probably reduce on the time I spend on debugging. With the help of a second eye or someone more knowledgeable in a particular language, errors can be spotted earlier and better solutions used. When am writing anything in PHP, I know I can ask a one Kasendwa just about anything because he is a PHP guru. I usually share screenshots, or code snippets via pastebin services my favorite being dpaste.dev. For bigger code blocks, we usually use bitbucket where we share code repositories.
I think coding can be more fun when it's collaborative and social. That's why github is very popular because it does just that. A number of companies have now introduced "pair-programming" which is "an agile software development technique in which two programmers work together at one workstation.".Now the two developers can be working on the same workstation or they can be in remote locations where they use real-time collaborative online code editors.
Studies have showed that pair programmers may complete a task faster than a solo programme. And when you pair an Expert with a novice, there are opportunities abound for the expert to mentor the novice by transferring his skills to him.
Even though am very much a solo developer, I heavily use git which is more popular with teams. I use it for version control and to manage development and production code. I intend to learn a lot more about Continuous Integration(CI) and Continuous Delivery(CD) which I believe are great strategies of developing software whether you are working solo or in team even though they benefit the latter the most. Besides should I get work in a team, the transition won't be too rough for me.
It's very likely that the solo African dev might trek his binary journey alone for a while. But if data costs come down and as collaborative development tools evolve, the solo dev might start at the very least working remotely with a team.