As a developer, I use (and have used) many tools to improve my productivity, outcomes, and to basically make my life a little easier on a day to day basis.
In this post, I will briefly mention the ones that I think have brought more value to my career and why.
Table Of Contents:
The Team
Github Actions
The goalkeeper, #1
, a CI/CD system that is able to catch problems before reaching the users. Easy to setup, easy to scale, easy to understand. The ability to cost $0 for public repositories, or for self-hosted runners.
Main usages includes:
- Running tests/checks on PRs
- Ability to distribute builds
Some substitutes could be: Jenkins, or Bitrise.
SwiftLint
With #4
on the t-shirt, SwiftLint, a tool to enforce the team’s conventions for styling. The easiest way to avoid extra comments on PRs just talking about indentation.
SwiftFormat
On the other side of the defensive line, with number 3
, SwiftFormat. With minimal set-up effort, a great way to automatically format the code to ensure it’s consistent across the codebase.
DangerSwift
#2
on the back for DangerSwift. Another great defensive tool, it can perform some basic checks on the PRs before, it can comment on PRs, or even block the merge if the rules are not met.
A substitute for this tool could be a good pre-commit hook, but we know that developers can by-pass those.
Monitoring Build Times
Wearing number 6
, not a tool in itself, but the BuildTime is the player. A great way to be a little bit more defensive, is to constantly monitor the build time of your app, your modules, or even a particular method.
You can find information about this on this article.
FastLane
#5
has to go to FastLane, the tool that makes everything else easier, most of my automation is made (or is facilitated) by this tool.
Linear
With #8
, the fastest member of the team, Linear. From all the project management tools I’ve used, this one is by far the one that feels faster. It doesn’t over-complicate things and is as easy to understand as it gets.
Some substitutes could be: Asana, Github Projects, or Jira. But those would need to try harder during practices to make it to my starter-11.
Figma
The go-to tool for designs, it gets the t-shirt #7
. Not much to say about this one, no real substitutes right now.
Slack
Number 10
for Slack, the collaboration tool. Without this team member, everything else would fall off. Can make you win games if used right.
RocketSim
A great scorer with the #9
, RocketSim, a tool that gives your simulator super-powers. Great to enhance PRs by providing videos, and before/after screenshots.
A great scorer substitute is ProxyMan. Helping to capture, debug, and mock HTTP network request. Really useful to make sure all the scenarios are handled.
Notion
Finally, with #11
, Notion, this is where all the documentation should live. Really helpful for design docs, team collaboration, feature documentation, edge cases. If used correctly, Slack communication becomes far easier, as you could point people to Notion docs when they ask for specific questions.
Manager (DT)
Me (or you, in your case). You are the manager of the team. You give the directions and specify to each player what to do. You are the responsible on the wins, and the person to blame on the loses.
ChatGPT
Finally, the assistant manager
, ChatGPT. Whenever you need some assistance, it will always be there to ping-pong with you.
Substitutes
Some subs for the team, that were not mentioned so far:
- Sourcery: Code-gen for protocols’ mocks.
- Bors: Merge bot queue for PRs.
- OpenAPI: Standard Interfaces for APIs. Useful in combination with code-generation tools.
- Postman: Useful for quickly testing APIs.
- Tuist: A tool to generate Xcode projects in a consistent way.
- Periphery: A tool to identify unused code in Swift projects.
- Learning your shortcuts
Let me know what is your starting 11
! What am I missing?
Related Articles
- SwiftFormat
- SwiftLint
- GHA: Cloning Private Dependencies
- GHA: Self-hosted runners
- GHA: Run unit tests in PRs
- GHA: Deploy builds
- Improve your build times.
- The Definition of Done
- Use Periphery to find unused code