The Software Practice Advancement Specialist Group of BCS The Chartered Institute for IT - is noted for its successful annual conferences that provide practitioners a rich programme of workshops, tutorials and presentations, over multiple days and streams (the SPA Conference in June 2017 in London ran three parallel streams over three days).
The SPA conference has been valued by practitioners and generates a healthy surplus that supports year-round monthly evening events in London and a free showcase event - Mini-SPA, away from London. Mini-SPA provides a taste of Software Practice Advancement to a broader audience and includes sessions from SPA conference, as also complementary sessions around the broader theme of software practice development.
This year's Mini-SPA, hosted in Leeds, showcases six nuggets - three taken directly from the SPA conference, two from other events abroad that have been complementary to the SPA conference theme and a session that provides overview of advancement in software practice over the last decade.
The event will benefit a broad audience - software practitioners, professionals working with them, clients/consumers of software practice, students and academics. A couple of sessions will feel more technical and a couple will give a taste of the workshop environment at SPA conference.
The tutorial environment at SPA conferences is usually much more engaged and involved with longer sessions. Mini-SPA though will give delegates a taste of the learning and good practice exchange opportunity SPA conference provides, with many delegates attending the annual conference on a regular basis. It is also our intention to record sessions from this event and make some of these available to an even wider audience online.
Tea and Registration 0930-0950
Introduction by Chair 0950-1000
First Session 1000-1145
Advances in Software Practice - Reflections & Lessons from the Last Decade
Immo Huneke 60 min
Immo has been a veteran of Software practice, a regular participant in SPA conferences and host/organiser of SPA monthly London events with a rare insight into how software practice has evolved over the years. This session is his personal reflection on what have been key aspects of Software Practice over these years, how practitioners have defined-understood-perceived the disciplines, whether and how it has advanced over the years and what patterns, inventions, innovations, re-invention and repeating of certain time-tested principles is emerging.
Goal Setting, the Agile Way
Will Jacobs 45 min
Setting goals is a sure-fire way to improve, right? Whether it's getting fit, learning new things, or progressing in our career, there's always something we can set our sights on, call it a goal and start running full-speed towards it. But you know how it goes. You start out with a lofty goal, good intentions, and lots of energy and motivation... and for a while everything works out. But new habits are hard to make, old habits are hard to break, and more often than not you'll find yourself procrastinating, forgetting or just plain quitting on your commitment.
In this session, I will talk about setting meaningful goals, and how to stand the best chance of achieving them. I'll look at why setting goals is helpful, how to choose your goals, and how to set yourself up with a plan of attack. I’ll also show how many of the practices and methods we use every day in Agile development can be applied to the practice of goal setting and goal fulfilment. I'll be looking at questions like these:
- Are big goals better than small goals?
- Are some goals better for you than others?
- What priority should you give to each goal? (The most important task is not always what you think it is)
- How do you beat the procrastination demons and get stuff done?
- How do you give yourself the best chance of sticking to your commitments?
- How do you stay motivated throughout?
- What happens to your goals as time goes on, and your situation changes?
Second Session 1230-1430
Performance Test Driven Development in Virtual Time
David Wei 45 min
Test driven development (TDD) can give us a lot of information about functional correctness of a software system, but the way it is generally used currently cannot give much information on the performance characteristics of the implemented system. We typically do not find out about performance problems until the whole system is tested together, or worse, when it fails in production.
In this session we introduce new techniques for constructing unit tests that allow us to explore performance characteristics and detect problems before deploying the software. We can use virtual time to run performance experiments without waiting for real time to elapse, so we can get the fast feedback we are used to from the TDD cycle.
We will explain the techniques and provide some exercises for participants to try them out using our new tools. The tools and techniques present are based on adapting academic performance modelling and measurement work to a more practical context, allowing developers to harness it in their day to day development process.
Visualising Connascence to Drive Refactoring
Radu Gheorman 75 min
Connascence is a way of describing the coupling between different parts of a codebase. And because it classifies the relative strength of that coupling, Connascence can be used as a tool to help prioritise what should be refactored first.
Recently (particularly through the work of Kevin Rutherford) connascence in code (as originally described by Page-Jones) has become a topic of discussion and a mental device to help us think about and prioritise refactoring.
Can we build automated tool support for this? If we could, how could that help us to identify different types of coupling and possible refactoring targets in our code?
This session will present our latest work on extending the ideas of Rutherford and Page-Jones and implementing tools to help developers. Helping them to navigate, assess and refactor Java code by identifying and visualising connascence.
Third Session 1445-1645
Empowerment Through Collaboration
Alex Zananiri 45 min
Do you want to work in an environment where everyone respects, trusts and values each other? I know I certainly do! IT professionals have some of the most creative minds on the planet. We are constantly solving problems and trying to think of ways to improve. So how can we encourage creativity, if we can’t voice our ideas? Whether you call it a discussion, small-talk or even jabber, the power of conversation should never be underestimated. There are many ways to collaborate, but are we doing these effectively? Throughout my career, I have noticed that some of the hardest issues would have been solved sooner if we, as a team, had collaborated earlier and more often.
Team Work – Do these words frighten you? We all have vastly different experiences when it comes to working in teams: some experiences more positive than others. It can be difficult to see the light when people struggle to understand or appreciate the value of collaboration. It can feel like fighting a losing battle at times, this feeling can spread through a department, making work a tiresome place to be. Let’s put an end to this!
This talk shares my experience of how positive collaboration has helped me to gain trust and respect from my colleagues, whilst establishing great friendships along the way. I will discuss how effective collaboration has helped our development team thrive. I don’t claim to be an expert, but I fortunately have experienced both sides of the coin. I will be highlighting some key processes, that if used correctly can have a great impact on your team, not only for your efficiency, but for your happiness too.
Microservices: the tip of the iceberg
Giovanni Asproni 75 min
What does it take to get to a system where I can create a new service in just a few lines of code, and live with the result? In the transition to microservices, it’s critical to consider, and provide support for, the whole lifecycle of a service. Except that now it’s a fleet of services where there are just too many to manage by hand. This talk will discuss some of the technical and organisational infrastructure that makes microservices work in practice. The goal is to share with the audience experiences working with microservices and give them some hints and tips on how to proceed if they are considering the use of microservices for their own projects.
We will touch on the most important technical, organizational and process related aspects, e.g.:
- Start from a monolith or directly with microservices?
- Fundamental system properties: testability and supportability
- Dealing with failures
- Team organization: feature, component, or something else?
- Requirements streams and teams
Conclusion by Chair 1645-1655