You don’t have to be a big company to need an information technology strategy.
Since I’ve started my little enterprise I’ve been playing with various tools around the web that provide the communication, organization, and sharing infrastructure needed to work effectively as a virtual team. Depending on the type of project, the types of tools can vary, but for a software development effort (including most web development) you need at least a place to share code. Then you probably want some sort of planning tool – to capture goals and milestones. And then you probably could use something to capture your shared understanding in more detail – someplace to record design decisions, operating principles, core requirements, architectural assumptions, etc. Oh yeah, you probably want some way to have real-time discussions – the phone might do, but gets expensive when your peers are many time zones away – so some kind of IM usually works.
There’s more of course, but you get the idea.
It’s perfectly possible to use email mostly for the majority of this stuff. But after a while (a short while if you’re me) it gets old and you look for something better. And since one of the core assumptions of my practice is that extending your business to the web – using web-based tools and capabilities as part of your core business process – is not only profitable, but easy, demonstrating this in my business is a practical necessity.
The problem is, there’s a lot of options. The field seems to comprise a lot of pure-plays and a small number of integrated solutions. For example on the source code management front you have a multitude of pure-play providers – github, bitbucket, beanstalk, cvsdude, etc. And a little higher up the stack we have assembla, launchpad and others that provide not just source repositories but also issue management and other related project management tools.
So here for my own edification I list what I need to provide a comprehensive software and design project management and collaboration toolset that can be used internally by my employees and partners, as well as externally by customers to participate in design, track progress and submit feedback (bugs, issues, tickets, etc). In the next few posts I’ll describe what I can discover regarding available tools and how they stack up against my requirements and budget.
Requirements
First I should describe my business. I work with small businesses to develop their information technology strategy and assist them with technology integration. The high level activities here are:
- finding and engaging customers
- information collection, organization and analysis,
- proposal generation (recommendations),
- project definition, and
- project management
Or, looking at it from a business process perspective:
- marketing activities – tbd
- pre-sale activities – requirements collection, research and analysis, proposal / recommendation formulation, presentation
- post-sale activities – project definition, resource acquisition, project management, maintenance and operations, support, billing, payments
Much of this should be visible to both the technologist and the customer, however some things may need to be private while being prepared (e.g. proposals). Also, many activities will be collaborative, and teams will be very dynamic. Generally producers should be able to set who can view/edit documents they create or information they store. Most documents will be edited by multiple parties and some level of versioning or history must be provided to allow for accountability and failsafe copies.
Here’s a quick list of capabilities/tools/processes that need to be provided or provided for:
- Contact Management (dex? or something like it)
- Proposal Generation Tools (templates, checklists, etc)
- Document Review Tools (for collaboration – wiki probably suffices though)
- Version Control (for all project artifacts)
- Issue Tracking (Trac is nice)
- Document Repository (webdav, versioned)
- Project Management (project definition and tracking)
- Time Management (time entry)
- Collaborative Documents (wiki)
- Design Review and Feedback (especially for web and graphic design – ??)
- Content Management (customer facing, brandable, customized)
- Blogging / Journaling (wordpress? or simpler custom alternative)
- Proposal Automation (beyond templates and checklists)
- Billing and Invoicing (collecting funds)
- Payments (paying vendors)
- General Workflow (tieing things together, automating business rules)
And of course if we have all these, we’d also want:
- Fault tolerance, scalability, and high availability (nuff said)
- Identity managed consistently between apps/tools
- Minimal repetition of information or process
- Ease of use
- Strong, flexible, and easily understood security model
More later…