The Cloud, infrastructure as code, federated architectures with APIs, and anti-fragile systems: these are technologies for developing software systems that are rapidly coming into focus, claimed Mary Poppendieck. Systems are moving towards the cloud, and APIs are replacing central shared databases and enable the internet of things. We need to develop anti-fragile systems which embrace failure.
People stopped seeing the need to define the architecture or do software design due to incorrect interpretation of the agile manifesto, argued Simon Brown. Many software developers don’t seem to have a sufficient toolbox of practices and the software industry lacks a common vocabulary for architecture. A good architecture enables agility with just enough up front design to create firm foundations.
Good engineering practices are the tools that help agile teams to deliver shippable products. Although many engineering practices have proved to be effective, they are not as widely used as they should be. Agile anti-patterns like the software testing ice-cream cone, accumulating technical debt and functional silos prevent teams from delivering a potentially releasable product.
Increasingly, software developers have the ability to not only maintain and architect code, but extend their expertise to providing direction to the business. By using domain driven design, developers can discover customer behaviors and recommend practices that change the nature of the business.
After working with many different teams, Greg Young has found that they often are drastically over-engineeringing in their projects. Teams start to work on 9 month projects, but by thinking on the problem from another perspective they may be able to deliver 95% of the value in just a few weeks, Young claimed in his keynote at the recent DDD eXchange conference in London.
InfoQ interviewed Diomidis Spinellis, author of the books Code Reading and Code Quality, about finding and fixing errors in software, principles for debugging software and how to improve the effectiveness of debugging, how to write code that requires less debugging, and what managers can do to support error prevention and handling.
The Software-Centric Systems Conference explored new technologies, trends, and experiences in developing complex software systems. InfoQ spoke with Rob Howe and Martijn Rutten, two members of the program committee, about the main challenges that software development is facing, technology developments, driving innovation, and deploying agile to improve process reliability and deliver value.
Software industry pioneer, prolific author, researcher, consultant and photographer Edward Yourdon died on January 20, 2016
Uncle Bob proposes an oath to software programmers as other professions have, considering the importance of this craftsmanship.
There is a positive correlation between diversity and financial performance and in an inclusive workplace, employees are more engaged which is crucial for retention and performance says Regina Chien. Having a diversity of thought and life experiences is going to help engineers create the best products.
Software architecture is a process; a sequence of strategic design decisions mapping specification and business goals to architecture design, and a thing; a set of views produced by the process that address different stakeholders, Michael Stal states describing how to define a software architecture.
At the GOTO Amsterdam 2015 conference Mary Shaw talked about progress towards an engineering discipline of software. She explored what it means to have an engineering discipline, how far we have progressed toward having one for software, and what can be the next steps.
Introduction to the concept of Empathy Driven Development.
Testability must be explicitly designed in the system said Peter Zimmerer from Siemens AG. Test architects should drive testability and collaborate with architects, designers and testers in using good design and engineering practices. At the QA&Test 2014 conference Peter gave a tutorial about design for testability for embedded software systems.
There are several recent posts and discussions dedicated to a fairly common approach to software development: Fear Driven Development.