Somewhere in the overlap between software development, process improvement and psychology

Posts tagged “open source

Process vs. Tools

What’s more important: Process or tools?

I’ve sat through numerous arguments with people trying to work out whether process or tools are more important to their software development effort. The arguments go along the lines of:

Process Geek: Tools are just the things you use to do the process, the value is in the process. Let’s do a process first roll out.

Tools Geek: Tools are the things people actually use. Process is academic and is constrained by the tool features anyway. Let’s do a tools based roll out.

Sadly both of these are real life quotes from people I’ve worked around in the past. I won’t embarrass them by naming them because they’re both really wrong. For me the real value is not in the tools or the process but in the people. Process and tools are something that you add if the people need them.

Minimal Tooling

For me the best planning tool is a whiteboard. The best architecture and design tool is also a whiteboard. I like to capture some info about what I’m doing and how close I am to achieving my goals, some really simple measures. The best tool for that is probably Excel, despite my love of Open Source. Other than that I need to manage some lists of things like requirements (stories/use cases whatever), defects and whatever other bits the team thinks are important. They might fit on a whiteboard but typically we want to have some attributes on them, be able to sort them and link them. The one downside of a white board is the lack of drag and drop. I’ve used a few different types of smart board and active touch screens but none of them have really given me the smooth experience I want.

The one bit of tooling I really need is my IDE + SCM + Continuous Integration.

Minimal Process

This is potentially a can of worms if I go into things like process kernels and ideological arguments about different agile approaches and practice collections. There’s no such thing as a process silver bullet so for me though it’s all about the team and being effective. Teams need to:

  • Have Clear Obligations
  • Have Clear Business Priorities
  • Seize their autonomy
  • Have the relevant technical skills and resource availability
  • Be active in actually doing their work (seems obvious but it’s something a lot of processes seem to hinder rather than help)
  • Demonstrate visible progress (via working software not a tracking gantt chart)
  • Continuously improve themselves (because no way of working is perfect)

This list based on the 7 Habits of Agile Teams by Roly Stimson

So why go more complicated?

Unfortunately life is rarely simple. Many teams work in complex environments where a number of factors might make them choose to need more than this kind of minimal set including things like physical distribution; audit, regulatory or security constraints; cross-team interaction in system of systems environments, more people etc.

When faced with increased complexity it might be appropriate to add more powerful tooling or development practices. The more people involved in a project the harder it is to herd all of those socially complex cats into working together.

This is why ALM suites exist ranging from plugging together some open source bits like git, SimpleGit, jenkins, agilefant, bugzilla etc. to commercial vendor products like IBM Rational RTC (which does agile planning, work item management, scm and build in one tool) and other IBM Rational Jazz tools – it’s worth noting that you can also get RTC for free for just 10 users or for academic/research use on jazzhub.

Alternatively there’s Microsoft TFS for source control, work item tracking etc. tying together existing Microsoft stuff like MS Office, Visual Studio and sharepoint if you’re a more Microsoft focussed development house.

Of course you can also mix and match this stuff to a greater or lesser degree with various integrations. No toolset is a silver bullet however and each have their own problems.

So what’s my point?

My point is that process and tools need to reinforce each other, that both should be selected based on the needs of the team and the environment the team has to operate in. In the process vs. tools argument both lose out to the people. People in a development organisation create value, they just use tools and process to do it.

Advertisements

Social Business: Because people do the work

People, working together achieve business goals. Processes, plans and organisation charts don’t.

A group of people forming human relationships and interacting is often called a “team” but another equally applicable term is a “social network”. Add a common goal to do some work as opposed to sharing pictures of their latest cooking/pet/kid and you’ve got a bit of social business going on whether it’s recognised or not.

To get work done effectively you need teams to work together effectively and that means enabling the team to form relationships and collaborate together as a social network.  So how do you create an environment that fosters social networks focussed on achieving their goals and interacting with the wider organisation?

The answer to that question is variously termed “Enterprise 2.0” (which I hate), “Social Enterprise” and “Social Business” which is a little ambiguous as it could relate to a business incorporating internal social awareness into it’s ways of working but it also refers to businesses who are aware of their interaction with their external community. Both of these meanings are based on the same awareness, only the direction of attention is different.

Any business can be enhanced by enabling people to work well together through cultural changes, process (ways of working) changes and supporting tooling. Image a world where:

  • You have an idea to improve your business capability, talk to your work mates who are sitting near you about it who help you refine the idea a little
  • You post the idea on a general ideas list within your organisation adding some tags to relate it to general topics
  • Other people in the organisation react to your idea based on finding from a tag feed, an activity stream, their relationship (work or social) with you etc.
  • They comment on your idea adding relevant experience and knowledge
  • Someone else IMs (Instant Messages) you about the idea and adds some useful thoughts
  • The idea has formed into something that sounds like it might be worth the company investing some time in, you promote the idea to a company backlog.

So far none of this feels like “work” and yet a network of people are forming around an idea that improves the business adding their expertise and opinions, collaborating on and for the business.

  • The idea gets given some time to investigate so you create an online project area, inviting the previous contacts to have a look and interact
  • You decide to have a meeting to look at the various ways forward for the idea, two team members are remote so they video conference in
  • You blog the meeting minutes to the project area so other interested people can add useful insights
  • During the lifetime of the project various team members post status updates and blogs about the progress, customers and users interact directly through face to face discussion, virtual discussion threads, vote on requirements etc. while the team continuously radiates progress and quality information in an open transparent fashion.

This part was definitely work but socially aware collaboratively work making use of a range of technologies to enhance the team’s way of working.

This is an example of social business, and one which I’ve had for real with one of my clients. You might already have things like wikis, a blogging platform, micro-blogging, social group areas, project areas etc. in which case integrating them and driving cultural change through soft practices to “allow” individuals to interact in a trusted collaborative environment might be necessary.

Alternatively you might have none of these things, but don’t worry you can get them for close to nothing as there are several excellent open source solutions for each of the technology features mentioned, in fact some open source packages (Social Business Software or SBS) can do most if not all of the above!


Ngrams for nerds

Pictures that are worth 500 billion words!

Google Ngram Viewer shows graphs of how many times words or phrases have occurred in a set of 5 million books over the years. They’re a really interesting way of seeing trends in information and relative importance between words. It’s free and easy so check it out.

Here’s some I recently ran that I found interesting. I ran most of them from 1950 onwards and  the info only goes up to 2008.

Comparison of programming languages

Programming Languages

Ngram link – When looking at this you’ve got to mentally remove the baseline Java and Pascal references from the 1950 as they’re about coffee, islands and mathematicians. Interesting to see Java so dominant.

Programming paradigms

Programming Paradigms

Ngram link – I found this one really interesting. Compared to the others in my query “structured programming” had a lot more books written about it. I wonder how much this is a reflection of the rise of the internet… these days although there are lots of programming books the primary source for learning a language is online material?

Methodologies

Methodologies

Ngram link – I was a little surprised to see RUP so much more prevalent than agile but then I did have to add “software development” to the term to avoid including the bendy and stretchy. Also as with the previous one I suspect that there’s a difference here between a vendor driven process with supporting books and a more open source philosophy on agile as a generic umbrella for methodologies, and therefore more online sources. As Ivar Jacobson says: “No one reads process books

Shareware, Freeware and OSS

Shareware, Freeware and Open Source

Ngram link – This one speaks for itself 🙂 I wish I could have worked out how to add “expensive vendor products” to the query!

User Stories vs. Use Cases

User Story vs. Use Case

Ngram link – Ah yes, this argument again. Interestingly this dominance of use case over user story in written books correlates with query stats between user stories and use cases on by blog and the ivarjacobson.com site. Personally I think they’re both great and complimentary, I often use them together on software projects.

Windows vs. Linux

Windows vs. Linux

Ngram link – Yep, Linux beats Windows at every turn.

More Ngrams!

For more fun with Ngrams watch this very funny video explaining this stuff