Software Engineering for Busy Experts

A professional development course from Thomas Kiley to up-skill your scientists, engineers and other domain experts with proven practices from the software industry

Writing code is now an essential part of all science and technology research and development1. Yet many of the scientists and domain experts have never received training on software engineering best practices, and are instead expected to figure it out. This results in slow and unreliable software development2.

Get in touch today to learn how to use software industry best practices to make optimal use of your expertise.

This course will teach your busy experts the industry standard techniques to write more reliable code faster. These techniques are recommended for all scientific software developers3 and support modern scientific best practices (such as the FAIR principles)4. I also provide on-going support to ensure the course provides the maximum benefit.

Email me at hi@tkiley.co.uk to discuss how this course can help your company or research team develop software effectively.

About Thomas

I have been writing code for ten years in a range of industries including science, technology, games and healthcare. In this time I have learnt how good software practices speed up delivery and increase code quality.

I am really motivated to use my experience of software engineering to help experts fulfil their technologies potential.

Please get in touch to learn how I can help you make the most of your expertise.

Photo of Thomas Kiley

Course Syllabus

The course consists of 4 seminars:

  1. Automated Tests
  2. “Good” Code
  3. Code Review
  4. Continuous Integration

These seminars take the form of a 45 minute presentation plus plenty of time for questions. Each of the seminars will feature plenty of practical examples to see how these techniques can be applied.

The seminars can be delivered in person at your office, via a video call or a hybrid approach.

I am happy to tailor the course to match your needs, experience and technologies.

Get in touch today to craft a bespoke course for your organisation.

I want to foster an on-going relationship after you have completed the course to help you put these tools and techniques into practice.

Get in touch today to learn the skills needed for effective software development.

Course Outcomes

Once you have completed the course, your developers will:

Seminar A: Automated Tests

Automated tests are a way to automatically improve the stability and accuracy of your software. This seminar will explain how to create tests, freeing developers up from manual testing to focus on their expertise.

Writing automated tests will eliminate new bugs and speed up collaboration.

Automated tests will speed up development, as domain experts won’t have to constantly test their changes by hand. My motto forged from years of practical experience is code that isn’t tested, does not work.

This seminar will convince developers of the value of automated tests. It will cover how to write tests, even for complicated code. There will be plenty of examples to help developers understand.

Get in touch today to start writing automated tests.

Seminar Syllabus

The seminar can cover:

  • What tests are.
  • Why tests are valuable.
  • How to write tests (including when it is tricky).
  • When to write tests.
  • Running tests.

Software & Technologies Used:

After this seminar, developers will be able to:

  • Write automatically runnable tests for new and existing code.
  • Use mocking frameworks to test code without interacting with production systems.
  • Use tests to accelerate their own development practises.

This seminar can be tweaked to use the languages and libraries of your choice. It can cover writing tests for code that resembles the kind of code you write to make the examples more relevant.

Please get in touch with me and we can customise this seminar to match your skills and desired technologies.

Seminar B: “Good” Code

Writing good code is necessary to ensure software can be efficiently developed over time. This seminar will give developers a large toolkit of techniques that will make your code more readable, testable and maintainable - the qualities of good code.

Good code allows future developers to understand and therefore improve software.

By applying some simple techniques you can ensure the code you write is readable, testable and maintainable. Code that has these properties will be more correct and easier for developers to work on.

Get in touch today to start learning how to write better code.

Seminar Syllabus

The seminar can cover:

  • A working definition of good code.
  • How to make code readable.
  • How to make code testable.
  • How to make code maintainable.

Software & Technologies Used:

  • Python - a popular programming language.

After this seminar, developers will be able to:

  • Identify problems in existing code that is making it hard to maintain.
  • Structure and write software in a readable, testable and maintainable way.
  • Apply software engineering principles like abstraction to increase code reuse and clarity.

I can review your existing code to focus on the techniques that will help you fix the kind of problems that you’re experiencing in your code base.

Please get in touch with me and we can customise this seminar to match your skills and desired technologies.

Seminar C: Code Review

A code review process improves code quality and shares knowledge amongst developers. This seminar will teach developers a system for efficiently reviewing code, focusing on what is important to improve.

A code review process will upskill your developers and improve the quality of your code.

Code review ensures that the code is understood by everyone. This is necessary to ensure projects can be developed over a longer time frame as teams change. It also facilitates organic sharing of coding best practices - ensuring new developers learn quickly on the job.

This seminar will cover all the advantages of a code review process. It will explain how to implement one, and then how to make the most of it.

Get in touch today to learn about how review code effectively.

Seminar Syllabus

The seminar can cover:

  • What a code review process is.
  • What to look for in a code review.
  • How to make your code easy to review.

Software & Technologies Used:

  • Gitlab - a widely used cloud tool for conducting code reviews.

After this seminar, developers will be able to:

  • Review each others code for ways to make it more readable, better tested or easier to maintain.
  • Share knowledge about the code and best practises through review comments.
  • Structure their own suggested changes in an easy-to-review manner.

Please get in touch with me and we can customise this seminar to use different platforms for conducting the review on so that it is easier to fit in with any existing workflows.

Seminar D: Continuous Integration

Continuous Integration (CI) is an industry standard approach to catch problems before they affect other developers and customers. This seminar will show developers how to set up a CI, and how to make it as useful as possible.

Continuous Integration allows developers to make changes confidently and efficiently.

Using CI is a cheap and easy way to increase the reliability of your software. Every change to the code is checked automatically, freeing experts up from testing changes by hand and to focus on their expertise. It helps developers work together, without breaking each others work.

This seminar will cover setting up a basic CI, and go into details of what a good CI system should do.

Get in touch today to learn how to get your CI up and running.

Seminar Syllabus

The seminar can cover:

  • What CI is and does.
  • How to set up a basic CI.
  • How to use a CI system.
  • Maximizing the value of a CI system.

Software & Technologies Used:

After this seminar, developers will be able to:

  • Set up their own CI to automatically test each change before it is merged.
  • Integrate existing manual and automatic checks into a CI.
  • Check their own changes won’t break other peoples work before submitting them.

Please get in touch with me and we can customise this seminar to match your skills and desired platforms.

Services

I offer a course covering the most important aspects of software development best practices, with the option to tailor any and all of the seminars to better meet your precise needs and technologies.

Get in touch today to discuss how your organisation can benefit from this course.

The seminars can be delivered at on-site, via a video call or a hybrid approach - whichever works best for you. I am based in Oxford, UK.

I also offer a flexible hourly or daily rate for after the course to discuss any on-going challenges you are facing.

I am deeply passionate about helping domain experts become better software engineers. Please email me to arrange a chat and we can discuss a format that works for you.

Citations

[1]: G. Pinto, I. Wiese and L. F. Dias, “How do scientists develop scientific software? An external replication,” 2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER), Campobasso, Italy, 2018, pp. 582-591, doi: 10.1109/SANER.2018.8330263.

[2]: Chawla D.S. Influential Pandemic Simulation Verified by Code Checkers. 2020. https://media.nature.com/original/magazine-assets/d41586-020-01685-y/d41586-020-01685-y.pdf

[3]: Dustin Heaton, Jeffrey C. Carver, Claims about the use of software engineering practices in science: A systematic literature review, Information and Software Technology, Volume 67, 2015, Pages 207-219, ISSN 0950-5849, https://doi.org/10.1016/j.infsof.2015.07.011. https://www.sciencedirect.com/science/article/pii/S0950584915001342

[4]: Lee G, Bacon S, Bush I, et al. Barely sufficient practices in scientific computing. Patterns (New York, N.Y.). 2021 Feb;2(2):100206. DOI: 10.1016/j.patter.2021.100206. PMID: 33659915; PMCID: PMC7892476. https://europepmc.org/article/MED/33659915