Agile and getting started
The Agile Manifesto turned 20 this year. While there is a lot to be said about the state of agile these days, let’s focus on how it helps get a project started amid uncertainty. As someone whose career for the past five years or so has been all about getting clients started with a new tech stack, it’s one of the more difficult things to do. It’s easy to get bogged down in planning and forget how or where to begin.
Remember the objective here is to learn something by doing, which hopefully can vault us up to the next plane of understanding so that we know what to build next. This usually means carving out the simplest set of stories we can that can get the juices flowing with the customer. It may be 90% wrong (hopefully better) but if it gets rid of some deadlock and starts generating more concrete stories after a sprint or two, it could be worth it.
Here are some examples of what to avoid (and I speak from experience):
Start with simplest scope possible
Not much else to say here.
Early use of complex and immature Technology
This one is self explanatory. You really want to stick with established technologies at this point. If accomplishing the business software objective really needs the brand new piece of tech or the old tech really is killing the team’s morale, perhaps this one can slide.
Not writing tests/pursuing TDD for the Early code you do write
This might be the most important. If you ‘cowboy code’ it without tests, you are robbing from the future just to knock something out. Once you get to the ‘next plane’, you will not have a set of tests to keep things working and provide you the flexibility to keep changing.
Project leadership (both technical and non-technical) out of touch with the real work
People involved in these efforts should understand the technology and roughly what’s involved. They will move much more efficiently and understand the risks and issues, which is really critical at the early stages.
At BSW Technology Consulting, we pride ourselves, although not perfect, on trying to strike the right balance when getting started.