CxO’s often ask why didn’t we see this coming when their LOB applications start to break down. The easy answer is you overlooked inherent aspects of the software development life cycle (SDLC).
Software has a natural tendency to age over time. At a certain moment, incremental maintenance projects will make no sense anymore and modernization programs are investible.
Software is subject to the laws of Maintenance Crisis:
- Software matures through usage: running in a production environment the smallest remaining bugs will be found over time.
- Law of continuous change: change will make software progressivity less useful over time until the cost for maintenance is greater than the cost of replacement.
- Changes introduce more complexity as structure (architecture) will deteriorate over time: unless the structure is changed or complexity is lowered.
TFS is now almost 10 years in the market. For every new release Ed Blankenship, Martin Woodward, Grant Holliday and Brian Keller update their book “Professional Team Foundation Server”.
Some developers think TFS is only or equal to the Visual Studio IDE but TFS supports so much more:
- Version control
- Code quality assessments
- Branching and merging
- Project management
- Continuous integration
- Automated unit testing
The book covers all aspects of a software development cycle. Being a software architect and team lead this book has become a trusted companion!
Advice from 97 experts combined in one book full of wisdom is the one-line summary for “97 Things Every Programmer Should Know” by Kevlin Henney.
The book focusses on all aspects of software development.
The topics it covers are:
- Bugs and fixes
- Build and deployment
- Code guidelines and code layout
- Design principles and coding techniques
- Domain thinking
- Errors, error handling and exceptions
- Learning, skills and expertise
- Nocturnal and magical
- Performance, optimization and representation
- Professionalism, mindset and attitude
- Programming languages and paradigms
- Refactoring and code care
- Reuse versus repetition
- Schedules, deadlines and estimates
- Teamwork and collaboration
- Tests, testing and testers
- Tools, automation and development environments
- Users and customers