Firstly, apologies if this is something that is easily googleable - if it is, I
have been unable to discover the correct keywords to search for.
Here's the situation: I'm currently the only coder for what could be considered
a startup in the UK. We've been developing a web-app for use in a specific
industry that makes peoples jobs a lot easier, and although up until now we've
been bootstrapping, money is starting to roll in.
As such, we're going to be looking to hire a few more coders in the near
future. In addition, we've got a few more ideas that we'd like to get started on
in the near future.
Since it's just me at the moment, development process is pretty simple. We're
currently a linux shop, and our current product is written in Python. We (I) use
git, and we have a trac install as well.
This is all well and good, but the way we're doing things right now kinda
depends on me knowing the entire stack. If and when we bring more people in, I
don't want to end up either putting people in a position where they need to know
how everything is set up to get anything done, or in a position where I've
hacked together a bunch of shell scripts for the purposes of trying to
streamline some stuff.
So here's what I'd like some advice on, and what I'd ideally like to set up:
Firstly, we'll need a network. New developers should be able to start working
with tools that they're comfortable with as quickly as possible. I prefer a
linux environment for development, but I'd prefer not to mandate it. Ideally,
I'd like to find a way to set up a network of mixed-os machines that all get
automatically backed up over the network. I know that there are multiple ways of
accomplishing this, but I'm not too familiar with any of them, or their benefits
/ drawbacks. I don't want to dictate editors, or OSs. I'd prefer not to dictate
as much as possible as far as programming languages go (but frankly, this would
probably be more of a function of the other developers than not).
Secondly, if we're going to be having multiple projects going on, possibly in
parallel, I'd like to find a way to streamline the creation of all the stuff
that needs to be done to support those. Creation of a bugtracker instance,
source code repository, commit access, etc. Something where we can see progress
made on individual projects from a central location, and where we can create a
new project in (preferably) a small number of steps - mostly giving it a name,
and clicking a button. We're not planning on focusing on one "type" of project,
either - our current project is a web-app, but we have some ideas for
desktop-apps, phone-apps, and at least one hardware project we'd like to work on.
We don't expect to have a very large team in the near future, at the most I'd
say 4 or 5 other developers, but I can't rule out the possibility that somewhere
down the line we'll expand further than that.
I'd prefer to not have to pay a monthly subscription fee, and also to keep
stuff on an internal network, but if there's something that is really great for
this stuff that is either not free, or hosted externally, I'd be willing to look
at it.
I'm willing to roll my own automation-glue stuff, but I need to get a handle on
just how much I'll need to write. I don't want to reinvent the wheel here, and
it seems like this is the type of thing that's been solved over and over
again. Unfortunately, I've never been part of a team of coders in real life (I
moved from doing individual freelancing, which mostly consisted of fixing other
peoples broken codebases by myself, to doing this job), and I'm finding it
rather hard to find good information on setting up stuff like this.
How do those of you who are working in small (or not so small) development teams
manage stuff like this? Anyone here with experience designing internal
development networks that would like to share some expertise? Recommended
reading?
Edited for formatting