Craig Risi
Software Architect | Writer | Board Game Designer
Cape Town, South Africa
Actions
A man of many talents, but no sense of how to use them. Craig could be out changing the world but would prefer to make software instead. Probably the reason why Nick Fury refused to take his calls. He possesses a passion for software design, but more importantly software quality and designing systems that can achieve this in a technically diverse and constantly evolving tech world.
Craig has over 20 years’ experience across the development, testing and management disciplines in a variety of software industries, but still feels he learns something new every day. It’s that continued change and evolution of the software industry which motivates him to keep learning and finding ways to improve. More than just playing with tech though, its people that make software come together – and so Craig believes in developing people and empowering them to make a success out of the software they build.
When not playing with software he can often be found spending time with family, writing, designing board games, or running long distances for no apparent reason. He is also a massive fan of comic books and Star Wars, so if you see him concentrating intensely, he is probably just trying to use the force.
Craig is also the writer of the book, Quality By Design, and writes regular articles on his blog sites and various other tech sites around the world. He is also international speaker on a wide range of different software development topics, though these experiences only make him even more excited about the future of the industry in South Africa.
Links
Area of Expertise
Unlocking Code Confidence: Building Effective Quality Gates in CI Pipelines
Letting your automated tests be the guardians for your quality success.
How do you know when your code is ready for production? At what point in time can you trust your automated tests enough to eventually deploy into production?
Companies make use of CI pipelines to help drive quicker execution of automated tests and ensure that code is of sufficient quality before deployment. Or at least that is what they are supposed to do. Too often, companies end up using CI pipelines to try and drive better software delivery but end up still delivering poor quality software into test environments and lose trust in the effectiveness of the pipeline process.
In this workshop we will have a look at the ideal structure of a CI pipeline and how to build the different quality gates into the pipeline to ensure that things like code coverage, security, automated test results and performance standards are all achieved before code is deployed to the different environments it is required. We will look at the structure of a CI pipeline, what the different stages mean and importantly how to enforce different metrics and targets automatically in the pipeline.
This workshop will start off with a talk about CI pipelines itself and the different quality gates that can be included to measure quality across the different stages before going into a more technical look at an actual CI pipeline in YAML code and then working to add the respective quality gates into the code through a variety of exercises.
This session will require some basic coding knowledge, but the focus is not on writing any automated tests, but rather in working with CI pipelines and using YAML as a base for the pipeline code. Even if an attendee is not keen in getting involved in DevOps pipelines having an understanding of quality gates in CI pipelines would still be beneficial.
Why Automation Fails
A look at years of industry research and experience as to why companies so often get automation wrong and what they can do to address these common failures
I think everyone agrees that test automation is necessary in a world which demands software delivery almost instantaneously. The truth is though that many companies are struggling to finding traction with their automation and end up falling back on manual tests because their automation kept failing them. Thankfully though we can learn from these mistakes and put into practice a variety of solutions that will help ensure your automation endeavours can be a success and meet the needs of your software.
As someone who has spent the last 15 years looking at different companies and how they build and automate software, I have learnt a lot of lessons on what can cause automation efforts to fail and how these challenges can be turned around for success. In this talk, I plan to provide some insights into automation failures of the past, along with solutions and recipes that can be applied to ensure this doesn't happen to others.
Unlocking Code Confidence: Building Effective Quality Gates in CI Pipelines
How do you know when your code is ready for production? At what point in time can you trust your automated tests enough to deploy into production?
Companies use CI pipelines to help drive faster execution of tests and ensure that code is of sufficient quality before deployment. Or at least that is what they are supposed to do. Too often, companies end up using CI pipelines to try and drive better software delivery but end up delivering poor-quality software into environments and lose trust in the pipeline process.
In this talk, we will have a look at the ideal structure of a CI pipeline and how to build the different quality gates into the pipeline to ensure that things like code coverage, security, automated test results, and performance standards are all achieved before code is deployed to the different environments. We will look at the structure of a CI pipeline, what the different stages mean, and how to enforce different metrics and targets automatically in the pipeline.
Trying to turn a cruise-liner like a speed boat
Many people are working for big corporate organisations wishing they could move a little faster. They often fear the threat that comes from start-up disruptors that are able to move quickly and drive the same level of development change as they do. There are ways though, of getting the bigger cruise-liner that are these big corporates to move quicker by not trying to steer it like a speed boat, but in embracing their own strengths and becoming a better ship navigator.
In this talk, I will share the challenges encountered and the strategies employed to foster a shift towards innovation and excellence in development and testing practices. It's not just about adopting new methodologies but understanding the existing corporate strengths and culture. I'll highlight how I navigated through obstacles, influencing a positive cultural transformation, and, in turn, contributing to the company's emergence as a powerhouse in the industry.
Attendees can expect to learn not only about successful strategies but also gain a deeper understanding of the intrinsic strengths of the corporate culture. The talk emphasizes the importance of embracing the existing corporate DNA to drive meaningful development, creating a harmonious blend of innovation and tradition. Join me on this insightful journey of corporate reform, where we explore the delicate balance required to turn a corporate behemoth into a dynamic and successful development and testing powerhouse.
The Benefits of Time Travel
Time travel has captivated our attention in main-stream media and entertainment for many years. We all wish we could travel in time to see our future and change our past.
It doesn't have to just be something we dram about. I’m here to show you that time travel is real, it’s just not in the way we think.
While we may not be physically capable of travelling between the pasts and the future, we can utilize data to understand the past far more clearly and use that to path our futures on a better trajectory. Data is the pathway to understanding where we have come from and the information we gather form it, leads to the decisions which allow us to not just make better decisions, but also see where our future is leading and be able to change it before we get there
And this is even more true in the realms of software engineering where we can utilise data in significant ways to have a big impact in how we approach and improve both our software design, testing patterns and human habits for the future to allow us to deliver quality software that has an impact.
This talk is both an informative look into the different information we need to travel to better time travel through our projects and applications and a high-level look at some of the technical things we can do to build these data-driven time travel machines.
The Benefits of Time Travel
Time travel has captivated our attention in mainstream media and entertainment for many years. And while we may not be physically capable of traveling between the past and the future, we can utilize data to understand the past more clearly and put our futures on a better trajectory.
Utilizing data in significant ways has a big impact on how we approach and improve our software design, testing patterns, and human habits for the future to allow us to deliver quality software that has an impact.
This talk does touch on technical aspects but is also fun and lightweight with a focus more on better understanding the types of data and lessons we can learn from it.
The outline of the talk will include:
- How we can approach learning from our past
- Examples of how we can work with data to provide these learnings
- Example of metrics and how to use them to improve testing and development in the future
Small Tests amuse great minds
Everyone wants to ensure they have great E2E tests and a high number of tests across the breadth of an application to ensure a wide enough test coverage. Quality can be best derived and delivered in an automated way if we instead focus on breaking down our complex tests into a higher number of smaller, less complicated tests.
This allows the team to achieve tests that can be more easily automated, are easier to maintain, and can be executed far more rapidly without needing to place the quality of the project at risk. The best part it can be done at scale and allows teams to execute tests across more domains and pipelines with a greater level of success and predictability – allowing testers to focus on more important aspects of testing.
The problem is knowing how to do this in a way that doesn’t jeopardize quality.
Root Canal Surgery
Improve quality in software is more than just finding and fixing defects. Rather it's a commitment to identifying the root of our quality gaps and working to rectify them.
The topics I plan to cover in this talk include:
- What is root cause analysis and why do you need it?
- Strategies for successful RCA triage
- Adequate mitigations for effort
- Classifying root causes effectively
- How reporting on RCA will lead to better decisions
Rethinking Unit Testing
There aren't many people that enjoy unit testing, but it doesn't have to be an inconvenience. Unit testing plays a vital part in ensuring the quality of software delivered and allows for better pipeline delivery. By learning how to write better unit tests, you can play a massive role in improving the software you create.
Unit tests also shouldn't be something that only developers get involved in but should incorporate the testing experts in the team too.
In this talk, I want to discuss the benefits of how this can improve the overall quality of the software development process, as well as provide guidance on areas to focus o to get the most out of your unit testing.
Outline of talk:
- Why unit tests are important
- Why testers should get involved in unit tests
- What areas are best unit tested
- Structures of what makes a good unit test
How to Become an Open Sourcerer
We live in a tech world filled with hundreds of tools all offering to be the next big thing on the market. However, while many of these tools are fantastic, they don’t always live up to the type and leave many companies never regaining full ROI from their investment in them. This is what has led many companies to focus on open-source tooling instead.
But making the move to open-source software is not a straightforward one, whether it be at a development, DevOps, or testing level. And so, in this talk, I will highlight the benefits and potential risks facing teams who are looking to make the move towards greater open-source adoption. It’s more than just utilizing tools though and there is a need for a specific skill set to achieve this too so I will also focus on some technical skills that can be developed that can help testers be better prepared for working with open-source tools and help prepare them teams for greater success.
How to Create Testable User Stories
Test-Driven Development (TDD) should be more than just a buzzword – it should be an integral part of your development process. This workshop is designed to empower participants with practical skills to create testable user stories right from the start, ensuring seamless integration of testing throughout the development lifecycle. Participants will leave with a toolkit for creating stories that support TDD and early testing.
How running marathons can make you a better developer
There are a lot of similarities bin the arduous journey to completing a marathon that you can learn from to improve the delivery and quality of your software.
As someone who has spent more than 15 years designing software and run over 50 marathons, I have found there are a lot of similarities and life-lessons that can be learnt from the hard and arduous journey to completing a marathon that could make you more successful as a software developer or tester.
From preparation to pacing to ensuring you are keeping the end goal in mind, there is a lot to be gained from running a marathon that can lead to better software. And who knows, my talk may just give you some tips to keep you fit and healthy too and one day inspires you to make the life-changing journey of running a marathon.
This is just a fun talk where I share my experiences across both long-distance running and software development and how running marathons has taught me valuable lessons that have made me a better developer. This is a lightweight discussion that is suitable for all types of people and does not go too technical.
Finding our tech leaders of the future
Leadership is a big buzzword in any industry, but one that is seldom understood. We should never underestimate the value that a leader can bring to any team though and how their combination of vision, report, and ability can make a difference. Similarly, a poor leader will leave a detrimental impact on your teams too, which is why it's important to identify and nurture the right skills that will help make your team a success.
Building Automated Quality Gates into your CI pipelines
How do you know when your code is ready for production? At what point in time can you trust your automated tests enough to eventually deploy into production?
Companies make use of CI pipelines to help drive quicker execution of automated tests and ensure that code is of sufficient quality before deployment. Or at least that is what they are supposed to do. Too often, companies end up using CI pipelines to try and drive better software delivery but end up still delivering poor quality software into test environments and lose trust in the effectiveness of the pipeline process.
In this talk, we will have a look at the ideal structure of a CI pipeline and how to build the different quality gates into the pipeline to ensure that things like code coverage, security, automated test results, and performance standards are all achieved before code is deployed to the different environments it is required.
A Guide to Effective Unit Testing
Unpacking the world of unit testing in a way that both testers and developers can understand and contribute towards, bringing both closer to the code and allowing for improved collaboration between developers and testers.
We talk a lot about the testing triangle and how we need to focus more on the lower level unit and component tests for most of our coverage. However, in my experience unit tests and how to effectively write them remains a mystery for many people and in this presentation I want to unlock the idea behind unit tests, how to write them in an effective way that ensures a high coverage, mitigates the need for too many higher integration tests and most importantly, makes them easy to read and contribute to for testers.
I want to share my experience as both a developer and a tester in highlighting the mind-sets of both and how through collaboration between developers and testers, software quality can be greatly improved through effective unit testing. The talk will discuss the different unit testing approaches, provide tips on how to write unit tests that catch defects early, reduce the testing load in a team, makes it easier for testers to contribute and cover things like mocking and coverage analysis to improve coverage and scope of unit tests.
Craig Risi
Software Architect | Writer | Board Game Designer
Cape Town, South Africa
Links
Actions
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top