Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm currently having a newly started app company with a friend of mine. He's quite good at programming, and if I had to put him up against my own level, I'd say he would be right below it.

Right now however, we work on different projects. He gets customers through third party businesses that need something done, and I primarily generate income through the apps that I make.

We both agree that we don't want to work with businesses in the future, and that apps should drive the main income if possible. Right now, we are both secured as we have jobs second to our company.

However, it seems that we lack focus, consistency and a goal, mainly because we live far away and can't meet with each other that much. This means that it doesn't make sense for us to develop a single project together (which we would love to by the way). We've tried it, and it just didn't work out. It was cool and fun, but when the day had passed, I wouldn't be able to stop working on it, and would finish the project within a few weeks afterwards, leaving my partner "behind" in terms of understanding the project and keeping up to pace on its development.

We're both satisfied with each other's performance, and right now (by working on our "own" and individual projects within the company) we have a pretty okay cash flow.

But now we'd like your help to get us back together in terms of working on a single project together. We've tried stuff like version control and so on, but without much experience on the processes behind using it efficiently, we find that it has been hard for us to adapt the principle of "working at home", which would be optimal in our current position.

How and when should we plan and describe tasks? What tools can we use to optimize the process? Keep in mind that I'm a bit more experienced than he is in terms of programming and architecture. Lately I noticed that StackExchange uses Trello to work at home. We just don't know how to get that started and working efficiently.

share|improve this question
Splitting by features (as others pointed) + Having a team leader. –  SChepurin Feb 21 '13 at 19:09
what went wrong when you worked together? –  Keith Nicholas Feb 21 '13 at 20:36
add comment

closed as off topic by MichaelT, TMN, gnat, Glenn Nelson, Martijn Pieters Feb 21 '13 at 22:12

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

1 Answer

Collaborating with another person takes more discipline than working alone. And I'd argue that for the projects you appear to be talking about (where one person could feasibly get everything done alone) the overhead of working together might outweigh the benefits.

However, by working together on these lighter, low risk projects you will be able to focus more on the mechanics of your process rather than the technical challenge of programming the product. So that when a larger project comes along that REQUIRES you to work together, you've already got it down pat.

Trello is a simplified digital Kanban board. I'd recommend picking up a book on Kanban (David Anderson has written a great book on the topic). As well as a book on Agile/Lean Project management.

The key is to break down work into discrete features that will be delivered for the product and moving those features from "Ready" to "Complete" one at a time. A lot of people get caught in the minutiae of what a feature is and focus on things like, "Create a datalayer" the data layer is not a feature. Your users can't access a datalayer. A feature goes from the UI to the backend and is visible and usable by your user.

"Register for an Account" is a feature. "Find a nearby store that sells a product" is a feature. After you've identified your features, then you can break them down into the requisite tasks for "Completing" the feature.

Your friend and you can each take a feature and work on them simultaneously (I prefer this approach to You take the "UI" task for a feature and your friend taking the "DataLayer" task for the feature because it requires less collaboration if your work is independent). Sometimes one feature requires another to be completed. That's okay, when there's a blockage, pull another feature and work on that until the blockage is resolved.

That's the nuts and bolts of the process. The rest depends on you two being on the same page with regard to design and development approach so that your application has consistency throughout.

share|improve this answer
+1 for splitting by features, not layers. –  mike30 Feb 21 '13 at 19:02
But how do we describe the feature, so that we both know what it takes in the data-layer, and what it takes visually in the UI? Do we make a mockup of the UI first, for instance? Would that be a good idea? It's not something that requires a lot from us or takes time, since we both have a Surface Pro with a pen. –  Mathias Lykkegaard Lorenzen Feb 22 '13 at 8:30
It depends what level of comfort you have together. If you're on the same page, a one sentence feature description might be enough. I would say...especially for two, don't get to formal with your process. It's easy to communicate and bounce ideas off each other when it's just two. As (if) the team grows, you'll have to work harder to communicate the vision. That's where building a consistent approach comes in handy. Teaching new team members the approach is easier than reams of docs for a feature. –  Mike Brown Feb 22 '13 at 21:18
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.