Large companies traditionally have run software development projects so that after delivery, the project finished and the team dissolved. In the digital age, one might think the experience of running and delivering projects would be an advantage, but the legacy mindset and practices of corporate IT projects are actually a hindrance. Digital work needs to be ongoing, which requires a different management approach.
One of the most important things to pay attention to when writing software is how we name our symbols. Data and behavior should be named in a way that represents the essence of what we're trying to do. Naming affects understandability and reflects code quality, so use names that clearly communicate your intentions, and refactor those names when your intentions change.
Henry Ford, founder of the Ford Motor Company, was a captain of industry who revolutionized production. He also was one of the greatest influencers of the processes we call lean and kanban today. John Yorke believes Ford's ideas about process improvement made him a pioneer for systems thinking and agile software development.
For an organization transitioning to agile development, creating software architecture isn’t incompatible with your new processes. Consider the principles in the Agile Manifesto, involve team members who will be using the architecture in its development, and reflect and adapt often, and you will end up with an architecture that meets the needs of your team and your enterprise.
If you're familiar with pair programming, you know how much it can increase code quality and encourage developers to learn from each other. You should try mob programming—the same concept, but with an entire team of up to eight people and only one keyboard. It's a great way to explore new techniques and solve problems as a team.
When a company makes the move from software as a service (SaaS) to an API-first platform, a change in mindset is required. The successful transitions come from those who shift from features to flexibility. Technology teams should look to remove constraints and broaden the possibilities of their platform by constantly exploring ways to make their platform as flexible as possible.
Status accounting is following the evolution of a configuration item through its lifecycle. Using application lifecycle management along with agile helps prevent mistakes, but lets you have the minimum amount of red tape; the team achieves an acceptable velocity without being unduly burdened with too much process.
When developing products, features, and enhancements, you have to have your customers’ best interests at heart. “We’re not just creating software,” speaker Jeff Patton said. “We’re changing the world.” You need to better understand the people you’re building things for, and the only way to do that is to spend more time with them.
Software developer Laurent Bossavit delivered the second keynote presentation, about why we need to think more critically about software development. He began his presentation by saying his intention was to make you question what you know—or what you think you know.
It is possible to find a new, innovative use for a tool, but it’s much more likely that you’ll do better using the tool in the way its creators intended. And whenever you reach for a tool, check that it’s actually going to help solve the challenge you’re facing. This article explains why first and foremost, conversation is more important than a shiny new tool.