Why should you read this article? I've built a SaaS all by myself and needed time for tasks other than programming, so I needed to become efficient.
I know a thing or two about developer productivity.
Pomodoro works! But for developers, the typical 25 min is not enough.
It can take up to 10 min just to warm-up and get into beast-mode.
So do whatever it takes to not get interrupted for 1hr, then get off the chair, do 10 pushups or squats.
Rinse and repeat.
Yes, having a high-level view of what your task entails will help you.
Because... there are fewer chances of hitting roadblocks and starting over.
Because... once you have a clear view of what you need to do, you can get the hard things first so everything falls into place at the end.
Not shaming the JS, Ruby, or Python folks. Those are great languages and they can get your product started very quickly.
But as you reach even as little as 10K lines of code, it will become very hard to keep it all in your head. So why not trust our oldest friend... the compiler?
Use TypeScript with very strict settings. Python with type hints. Ruby with Sorbet.
If you are fancy and know what you're doing, go for ReasonML or PureScript.
Avoid fake strongly typed languages like... you know what we're talking about.
Documentation has very low ROI at the beginning of a product/company. Because there are high chances of pivoting. Because there are very few people to share it with.
As soon as you hit a team of 10, docs are important.
But keeping your stuff in GitHub wiki is detrimental to your productivity. Contrary to popular developer belief, markdown in git repositories is not a productive way to share and contribute to team documentation.
Here you can use Notion, Google Docs, Confluence. Or why not, just use Archbee my product. It has some cool features for developer documentation.
This is a huge time drain, and we hate to write unit tests. Unless you're Uncle Bob.
Ditch classes wherever you can. Classes are for suckers. Sorry, but it's true.
Write pure functions with a single responsibility. Coupled with a tough programming language, you should be ok with just a few unit tests.
But write tons of integration tests. Test at the UI level with Cypress. That will make sure everything from the UI to the Database is hit, so you can have more confidence you're shipping ok code.
In my opinion, unit tests are one of those things you should take the Pareto approach with.
To have as many of those 1h pomodoros as possible, you need to shift your approach to one that's more asynchronous. Write more docs, cancel more meetings, stay off the team chat. Certainly don't spend time organizing JIRA tickets.
What would you add?