It's nice to work on Green Fields projects. But most of us aren't that lucky! Most organisations have large legacy code bases to maintain. And the legacy applications, ugly as they are, are often what generates the revenue!
But legacy code bases are not easy to work with. Adding new features, or even fixing bugs, is slow and fraught with danger. Unexpected regressions are commonplace. Long testing cycles is the norm.
In this talk we will look at some strategies that can enable you to add new features to legacy systems faster and more reliably. We will examine where the hold-ups typically are, and what We will learn how to write cost-effective automated regression tests suites, and how to use unit testing as a way to document your legacy code base for future work, and improve its quality along the way!Add a comment
Behaviour Driven Development (BDD) is an approach than encourages teams and stakeholders in general to reason about requirements in terms of “executable specifications”, and focus on implementing features with demonstrable business value. BDD is more than just a development technique: in fact, it introduces a whole new dynamic to interactions between team members and stakeholders, a dynamic that increases communication, improves productivity and reduces waste. Through ongoing conversations between business stakeholders and team members, a team applying BDD principles will explore the business goals, capabilities and behaviour that the stakeholders need. They then propose features that the system will need to deliver these capabilities, and use concrete examples and counter-examples to explore and understand these features more fully. In this talk, you will learn about the principles and benefits of BDD for the whole team, how BDD works in practice, and how it affects the various team members in a project. Finally, you will discover the relationship between behavior driven development and automated acceptance testing.Add a comment
During the recent JavaOne conference, I was able to share how developers can put their Java codes up a notch by using functional programming and clean coding practices. Functional Programming puts the spotlight on what we want to get out of our codes rather than how we are going to execute them. With this in mind, codes are relatively easier to understand and are less error prone, due to the fact that the libraries do all the dirty work.
In this presentation, you will get to know about libraries such as LambdaJ and Google Guava which you can readily use to leverage your existing Java code base. Go on and make the first step on making cleaner, better codes through functional programming!Add a comment
This talk on Behavior-Driven Development at JavaOne has become a venue for me to emphasize the importance of communication through the software development value chain. Developers sometimes have a tendency to look past requirement documents and work through the code. Value is defined by the business, which is then translated by business analysts as functional and technical specifications and passed on to programmers for development.
Behavior-Driven development helps prevent the actual business needs from getting lost in translation down the pipeline. It changes the mind set where conventional tests are transformed to "executable specifications" and only value-adding features go down the pipeline. Traceability is achieved and effort is maximized in this setup.
This presentation also highlights various BDD tools available for use in both Java and other JVM languages. Advantages and disadvantages for each tool are also explored, giving teams a guide on selecting what can work for them.Add a comment
Last week, I was given the privilege of speaking at JavaOne regarding the fusion of contemporary Continuous Delivery processes and practices with the established and widely-accepted Maven release process. I spoke in detail about the similarities as well as the main differences, and how these techniques and methodologies can be combined to deliver iterations and releases that highlight the need for immediate and ongoing customer feedback, while also satisfying the need for carefully-tested and quality-checked product versions.Add a comment