O'Reilly logo
live online training icon Live Online training

Efficient Software Development

Applying automation to improve coding time

Topic: Software Development
Sebastian Daschner

Automation can help developers do their job more efficiently. Join expert Sebastian Daschner to explore best practices for using your computer more effectively—and discover how to implement these principles in your daily work. From automating boring, repetitive tasks to minimizing context switches to effective keyboard usage, you’ll learn tips and tricks that will help you complete repetitive work as quickly as possible so that you can get to the fun part of writing new code.

What you'll learn-and how you can apply it

By the end of this live online course, you’ll understand:

  • Why automation is one of the most important principles in computer science
  • Why you should maximize the time you spend on your keyboard
  • Effective usability and keyboard concepts
  • How to get more of your setup to minimize repetitive tasks and maximize thinking time

And you’ll be able to:

  • Automate repetitive tasks that are part of your work
  • Use your editor and IDE more effectively
  • Detect and tackle inefficiencies in your daily work routines
  • Use the command line in a pragmatic, efficient way

This training course is for you because...

  • You’re a software developer who wants to work more efficiently and spend less time on tasks that aren’t that fun.
  • You work with a programming language, and you know how to write code.
  • You want to become more productive in your job.

Prerequisites

  • Basic understanding of programming
  • Basic / normal efficiency when typing (touch typing)

About your instructor

  • My goal is to spread knowledge in enterprise software development, to educate engineers and to solve problems. I strive to make software development more effective and ultimately more enjoyable.

    I've been working with Java enterprise software development for many years. As Java is an open platform where anybody can participate, I've been helping to shape the future of Enterprise Java by serving in a variety of expert and standardization groups. I was honored by being given the title Java Champion by a group of Java leaders.

    I'm a Lead Java Developer Advocate for IBM. My role is to share knowledge and educate developers about Java, enterprise software, and IT in general. I believe that teaching others not only greatly improves their situation but also educates yourself. My goal is to focus on how concepts work and why specific solutions are needed, and only then how they are implemented.

    Besides my developer advocate role, I support clients with workshops and tailored consultation engagements, by applying expert knowledge and experience with a high claim in software craftship.

Schedule

The timeframes are only estimates and may vary according to how the class is progressing

Introduction (20 minutes)

  • Presentation: Automation; using the computer correctly; communication bandwidth; keyboard concepts of applications; keyboard shortcuts
  • Group discussion: In which programs do you spend the most time? (Choose your top five.)

IDE and editor shortcuts and refactoring features (15 minutes)

  • Hands-on exercise: Identify your favorite IDE shortcuts and refactoring features
  • Group discussion: Where’s the balance between knowing IDE shortcuts and manually using menus?
  • Q&A

Live templates, context-aware suggestions, and code generation (10 minutes)

  • Hands-on exercise: Find three potential boilerplate candidates for defining live templates in recent code files
  • Q&A

Break (5 minutes)

More tools for automation (10 minutes)

  • Presentation: Macros; program automation; CLI versions; plug-ins
  • Q&A

The Unix command line (20 minutes)

  • Presentation: Core features; composing; piping; subshell
  • Hands-on exercise: Identify command-line commands that you’ve used
  • Q&A

Automation with shell scripting (40 minutes)

  • Presentation: Overview of automation with shell scripting; shell navigation and autocompletion; shell aliases, suffixes, and custom shortcuts
  • Hands-on exercises: Identify things you use in another program that could be used in the command line (automation points); identify small shell actions that you manually type over and over again
  • Q&A

Break (5 minutes)

Using the operating system effectively (5 minutes)

  • Presentation: Operating system integration; UI and window management
  • Q&A

Using the keyboard more effectively (30 minutes)

  • Presentation: Context switches; physical movements; why the keyboard makes sense; keyboard devices; mechanical switches; alternative layouts; ergonomic setups; the keyboard home row; context switches
  • Group discussion: Keyboard versus mouse usage for different type of tasks; keyboard devices, ergonomic setups, and work environments
  • Q&A

More on automation, tests, and continuous delivery (15 minutes)

  • Hands-on exercise: Identify the tasks you’re doing manually every day

Wrap-up and Q&A (5 minutes)