We all need to start somewhere. Whether its building amazing software products, preparing a great meal, becoming a star athlete, virtuoso musician, what have you. Regardless of your goals, it’s a good idea to pick a good place to start. Start out with a good foundation of whatever your first principles may be and you stand a far better probability of being successful.
Think for a moment about an incredibly impressive musical performance. Doesn’t matter if its classical, jazz, rock, rap, funk, or whatever your pleasure. In all cases, there are a few people who’ve somehow been able to shine. I’ll bet that all have dedicated considerable time to honing their craft, have a good idea of the feelings/sounds/emotions that they want to convey. The timing is sound, dynamics fitting the sentiment, and technique something that you probably don’t even attend to. But they probably spent a lot of time honing their skills. The end result is a product (the music) that pleases the audience.
So, in following this path, I figured it best to not try and invent something new out of the ether. There have been many smart people who’ve come up with ideas well worth stealing (errr, I mean borrowing). As I reflect on this, there’s a lot to be learned and borrowed from the likes of Stephen Covey, Dale Carnegie, Tom Peters, Ram Charan, and tons of others.
When you think about people that have made a mark, whether it be in technology, the arts, public service, athletics, whathaveyou, I’ll bet that they all have one thing in common: they get and leverage their own first principles. Take for a moment, the musician that delivers compelling music. Doesn’t really matter if its rock, jazz, classical, what have you. They have mastered the right combination of pure technique, discipline, and perhaps most importantly, the ability to connect those with the emotional message that they want to convey. Leave any of those out and at best, you may end up with a pleasant (or really unpleasant) mess.
For me, the keys to success include:
• Begin with AN (I hesitate to say THE) end in mind.
• Approach everything with Enthusiasm and Confidence
• Know what you know. Equally importantly, know what you don’t know.
• Learn what you need to know. Keep learning
• Make and live by your commitments. This includes time and quality. Be sure that those commitments are sufficiently complete (don’t skip critical steps; don’t waste time on capricious requirements).
• Don’t waste time on things that aren’t useful (including low value repetition)
Yours could certainly be different, but I’d bet that there’s a pretty healthy intersection between your values and these. A lot of this isn’t unique to agile software development, it applies to many creative processes. Teams that are enthusiastic, committed, with the necessary skills are far more likely to excel. Skip any of these, and you eventually lose to someone else who is doing this. Stick to these principles (could be others) and you stand a greater chance of success.
First off, life within a team is always easier if there’s an agreed view of the high level goals. Those could be delighting customers, saving money, making people healthier, wealthier, wiser, what have you. That can provide a sense of purpose. It needn’t be, nor should be exhaustively prescriptive (for example, that field on the screen must be a specific shade of green with a definitely font and point size). In an agile world, the goals should be expressed at a high level, generally sufficient to guide the work. More importantly, they must be re-evaluated on a regular basis. Every end goal I’ve been associated has its own half-life. Be prepared to adapt.
Attitude is the lubricant of your development machine. The more people approach the work with the right balance of enthusiasm and confidence, the better things will go. Negative sentiments, rancor, or worse become sand dumped into the engine. I’m not advocating for some form of naïve, Pollyanna outlooks. This is a complicated world, things can, and often do go wrong. When teams embrace those changes and attack the problems with a positive outlook, good things are far more likely to occur.
Software development is knowledge work (duh). With that in hand, it’s critical that teams determine and regularly evaluate their perspective on the problem. This includes the requirements, technical architecture, process, and general environment in which they work. Seeking out and addressing the knowledge gaps is of equal importance. None of us are clairvoyant, and are best served by keeping an eye on blind spots. Take pride in your craft and build products that address all requisite “ilities.”
By making commitments that are reasonable and achievable, you can build a culture of accountability and success. The beauty of most agile approaches is that the commitments are broken into achievable pieces. If, for some reason, you miss a commitment, learn from the experience, and get better in future commitments. Get in the habit of making and delivering against your word. It builds confidence in yourself, and trust amongst your stakeholders.
Waste elimination sits at the core of agile. This can include technologies that emphasize concepts like Don’t Repeat Yourself (DRY), getting things right from the onset (don’t pile up technical debt), and sharing information as readily as possible. As a means to ensure that waste is limited, I like the concept of daylight being a great antiseptic.
There’s no doubt that life is going to throw a pretty regular series of curveballs. By figuring out those things that are your core values, your chances of success significantly increase.
What are your first principles?