Increasing development effectiveness by recognizing repetition

Development effectiveness determines how fast and efficient you can work as an engineer. The more efficient you can make your daily flow of development, the better your results will be.

If you know me, you know that I love automating repetitive tasks. I’m able to keep up with SwiftLee, my newsletter, SwiftLee Jobs, and RocketSim because I’ve automated a lot of tasks involved with these projects. I recognized repetitive tasks, automated them, and created time for myself to work on new improvements instead of not progressing at all.

Recognizing repetition as a developer

During daily development, we do a lot of repetition, although you might not always realize it. Some things might feel too small to be seen as repetition, but it can still have a significant impact if you optimize accordingly. To better explain what I mean, I’ll show you a few examples of what I found repetition in my daily workflow.

Deleting invaluable emails

You might wonder, what do emails have to do with development effectiveness? Well, that’s precisely why I want to mention this example. During our daily development, there’s a lot more going on than just writing code. I even wrote an entire article Speeding up development: a collection of tips on this topic as you can do a lot to increase development focus.

In other words, emails are part of distraction and take away valuable time, which you can use to develop new features of your app. I always start my day by reading through my new emails and often only reading 10% of the emails. I directly delete all other emails that include topics like:

  • TestFlight build completed processing
  • TestFlight build is waiting for review
  • Newsletters I didn’t subscribe for (a lot)
  • App Store Connect updates on apps I don’t work on

And many more! Deleting them every morning seems like not too much work and like a typical small thing not worth automating. Though, I believe it’s both repetitive works, taking valuable time, ├índ taking valuable focus away as you have to read them and validate whether you can delete them.

The solution is relatively simple. Open the preferences window of your mail application and set up filters to either automatically remove those emails or move them into a folder that’s not distracting you.

Applying mail filters makes me delete less emails manually every morning.
Applying mail filters makes me delete fewer emails manually every morning.

All the email rules I’ve set up make my mornings more efficient and result in the fact that I can start daily development again quickly. Whenever I encounter an email that I do not want to read, I update my filters or unsubscribe from the newsletter to increase development effectiveness for my future mornings.

Automate flows using apps

A topic to my heart! I’ve created many custom applications and API extensions myself to automate flows in my daily development routine. A well-known example is the weekly most popular articles tweet that goes out on Sunday evenings. I created a simple PHP script and connected it to cron-job.org, ensuring it executes every Sunday.

Creating development effectiveness using apps, services, and custom tooling can level up your automation. You can go the extra mile by customizing your automation which is sometimes required if you have specific needs. However, you can also decide to use tools like Raycast, Alfred, or Apple Shortcuts, which have built-in UI to automate flows visually.

To give you an example of what you can do for your daily or weekly routines, I’m going to show an example of the Bitrise automation I’ve created in Alfred.

You can use Alfred to automate flows for development effectiveness visually.
You can use Alfred to automate flows for development effectiveness visually.

The above image shows the workflows editor of Alfred, in which I created several workflows. The example shows automation in which I can type coyote TestFlight or coyote release which will trigger the flow behind the path.

The run script items allow you to execute any script you have. For example, running a bash script to trigger a build in Bitrise:

A workflow example for easily triggering Bitrise builds.
A workflow example for quickly starting Bitrise builds.

Before creating this workflow, I’ve had to perform the following steps to trigger a Bitrise build:

  1. Open the browser
  2. Navigate to bitrise.io
  3. Login
  4. Select the right application
  5. Trigger the right workflow from the right branch

These steps are time-consuming and error-prone since I could mistake picking the right branch or application. The new flow allows me to trigger a new build much quicker:

  1. Open Alfred
  2. Type in coyote testflight

You can imagine how this affects my weekly routine of development in which I don’t have to go out of my flow anymore for triggering a build. The best thing is that this is just an example. Once you know what you can do with apps like these, you’ll become better at recognizing repetition and automating common workflows.

Project-specific automation

Project-specific automation comes down to applying project configurations to automate repetitive flows within your IDE. For example, you could create custom search scopes in Xcode to skip test files while searching:

Xcode Search Scopes allow you to quickly find what you need.
Xcode Search Scopes allow you to find what you need quickly.

Search scopes are just an example as many features are allowing you to navigate faster within Xcode. You could look into Speeding up with Xcode Behaviors, or you can use features like Find Call Hierarchy to find what you need quickly.

Some features are even shareable within your team and increase team efficiency when working on the same project. An example is adding breakpoints to your GIT repository. Team efficiency is super interesting as the development effectiveness will multiply by the members in your team that benefit from it. I’ve been working all week on making our CI implementation twice as fast as that will mean our whole team can continue merging in PRs twice as quickly!

The latter is primarily possible due to using tools like Fastlane and Danger plugins to speed up code reviews. These tools often take a bit more time to set up but will payout in the end once your team becomes bigger.

Shortcuts as your secondairy language to create development effectiveness

Lastly, I want to briefly mention shortcuts that can be a second language during development. Sites like Shortcuts.design can give you an excellent overview of available shortcuts in your applications. Try and spend some time practicing shortcuts, as they can speed up your development workflow within the apps you often use. Sometimes, I pick a new shortcut and try to remember it during the day. You’ll see you will start to recognize them and find them more valuable over time.

When should I start automating for development effectiveness?

After reading through this extensive list of tips on increasing development effectiveness, you might wonder when you should spend time on automating repetitive tasks. Developers often think that it takes more time to automate a specific task than just performing it manually every day. There’s some truth to it, obviously, but it comes down to how often you think you’re going to need to perform a task manually.

For me, it’s also not only about time efficiency. Like the example of reading through emails and deleting them manually, there’s not only time involved. I have to use energy and focus on reading emails and validating whether I’m okay with deleting them. In this case, I can save both time and energy by automating deletion using email filters.

In other words, it’s a case-per-case decision you can make yourself. However, once you start automating more and more tasks, you’ll become faster at creating automated workflows, making it less time-consuming to develop new ones.

Conclusion

Development effectiveness can increase in many ways, but primarily through automating repetitive tasks. Once you become better at both recognizing and automating repetitive workflows, you’ll see that you become more effective in daily development routines.

If you like to prepare and optimize even more, check out the optimization category page. Feel free to contact me or tweet me on Twitter if you have any additional tips or feedback.

Thanks!