CheatsheetYou can print this page to PDF.
What this is about
Management and Planning
When running a business, decisions made must be in its best interest. When working on a hobby, you can do whatever you feel like on that morning.
Keep your head down and focus on the business, not on reputation building.
You need to operate at near maximum, but not quite, for very long.
It comes from owning the transaction and being difficult to replace.
It should be very flexible to changing requirements.
The more your ability to collect money is impacted, the higher the priority.
Do not plan prematurely plan for contingencies and split your focus.
This will help you keep track of original reasoning when the feature was built and allow you to see if the circumstances have changed enough to further develop something.
You are not looking for the same things and you cannot offer the same things.
You should consider it a key task and put in effort.
It's better for everyone to know what's happening.
Gathering as much correct data as possible, constantly reviewing decisions and being able to tell signal from noise.
Here are some mistakes to avoid when assigning ownership of numbers.
It's one of the most useful tools and will be used for due diligence as well.
Things that aren't working should be removed and not maintained further.
It almost never pays off.
Three approaches to handling changes that users might not be happy about.
Lessons when designing the product.
Half-ass one thing many times.
Because that means you didn't spend time on something that isn't useful.
Don't ask an accountant about routing algorithms.
When you are observing users interacting with your app, they take on a different persona
Listen closely to their feedback because they are actively looking for a solution to a problem.
Help the user do what they want, or make the user do something you want. Try to do mainly the first.
It makes you build poorly thought out and potentially wrong things.
They should be given a similar level of attention as your external users.
That way main user data won't be polluted, but you'll still have a window into what the admins are doing.
Instead of redesigning standard features, pick comparable role models and copy theirs.
Software is a supporting component in a process that accomplishes something useful more efficiently than others.
In particular, consider whether new things you're working on can destroy what you've already built.
Sometimes creating the opposite interaction can have an even more powerful effect
That dashboard would show all and only the information and actions that they need.
Make sure that you know all the benefits of what you're selling, not just what you intended.
To effectively communicate with your team and customers, you must learn the correct jargon and use it consistently.
They're not just about control but also a tool to design a simpler and less error-prone product.
Include the ability to select start and end dates, period lengths, and the number of periods prior and following.
The principle of polite software is a great cheatsheet while improving your product design skills.
You're likely not innovating on tech but rather on the underlying process. So you should hire for people familiar with your niche and tools.
Using a static analysis tool that scans for vulnerabilities is a great help for this.
It's much easier to build it in step with the platform rather than having to backfill later.
Premature optimization might be the root of all evil, but performance often means just not being lazy.
A central place where you can trace errors, track their progress and easily identify regressions becomes valuable very early on.
It's a pre-requisite in some cases, a nice to have in others, but it also gives you better bang for your buck when it comes to hosting.
Docs are useful but will quickly take a back seat. Using tools that generate as much documentation as possible automatically are essential.
These are some common attributes that we've found to be useful to include in many models.
It is important for UX but also removes the need to think about them during implementation.
Build in tracking for things in advance even if you think you won't use them because data is the first step towards developing something new.
Store and sync derived columns that are frequently accessed or that you need a historical record of.
Often the ideal structure involves three levels: system, group, and individual. The setting should be picked up in reverse order.
Don't only avoid magic numbers but avoid constants entirely.
It's just needs setting up once and is useful for a few different things.
That way you will be able to track incoming and outgoing from the start, immediately be able to reconcile, give finance a proper insight and make due diligence easier down the line.
Make a robust import feature that can be used for different entries.
Use a library for exporting your index views to XLS or CSV.
It will be very helpful as a central store of operational knowledge that survives team changes.
This ranges from being able to edit individual order values to being able to perform tasks on users' behalf.
Their features are nearly identical, they all have advantages and disadvantages. Pick the one most of your people are familiar with.
Features that are used frequently, impact sales or are complex should be rolled out in phases rather than to everyone at once.
One part should be the migration while the other implements the functionality. They should be deployable independently.
So you won't needlessly invalidate large parts of your cache
Make sure that duplicate actions aren't destructive or that they cannot be done in the first place.
Instead of querying the stats first, join it with the rows that you have to have.
You can track stats independently and not have to keep adding columns to the main operation models.
Implement a re-usable structure that can be used for different models.
Ways to contribute
A loose roadmap of what I'll work on next