Inspiration: Things I believe · GitHub
- Make it simple, then make it even more simple.
- We're paid to think, not write code.
- Articulated your thoughts with others.
- Always retrospect on what could have gone better.
- Avoid sunk cost; past isn't prologue.
- Any task can be understood, broken down, and solved.
- Good isn't the same as good enough.
- Getting paid is good, learning is even better.
- Expand your knowledge beyond code. Learn different things. Have hobbies, and close relationships.
- Get a good night's sleep, challenge yourself physically, nourish your body.
- Seek out oppositional perspectives.
- Strong opinions weakly held.
- Don't work in isolation. Share your ideas.
- Read many books.
- Keep good company.
- Protect your time. Don't let the priority of others derail your efforts.
- Get up early.
- Always be kind.
- Gauge your audience. Some need encouragement, others need a challenge.
- Software is not about code, it is about people.
- Team needs come first.
- Hire those better than you.
- Prioritize trust and alignment.
- Teams own outcomes, not code.
- Team members who don't align with team objectives should be shown the door.
- Embrace healthy discourse.
- Listen.
- Success lands on your team, failure lands on you.
- Leadership sets the precedent. Actions speak louder than words.
- Always over-communicate.
- Delegate. Empower your peers. Set them up for success.
- Clearly understand the why. Communicate this over and over again with your peers.
- Who you promote is what you encourage.
- You can't please everyone.
- People over process.
- Process can and should be modified to meet the needs of the team.
- Keep meetings to a minimum. Make meetings shorter. Have a clear goal and agenda.
- Always question past assumptions.
- Be willing to try new things.
- Whatever you're doing, start with the customer in mind.
- We're here to deliver value to the business.
- Deliver as often and as quickly as possible.
- Automate.
- Acceptance environments are a smell.
- It's better to deliver something imperfect that nothing that's perfect.
- TDD/BDD is an exercise in up-front thinking.
- Up-front thinking results in better design.
- Business logic in the system requires tests.
- Tests should strive to test behavior, not implementation.
- Automate. Routine is for computers, originality is for humans.
- Test as close to production as possible.
- Tests /are production code/.
- Understand the different types of tests. Keep them in your toolbox, use where appropriate.
- Production systems should be monitored appropriately.
- There's more to monitoring than tracking stats; spend some time understanding how it works.
- If alerts aren't actionable, delete them.
- Monitoring starts with the customer's experience.
- Most new tech is bunk; vet with caution and clear intentions.
- Be realistic.
- CS fundamentals and engineering generally don't change much over time.
- Tooling choice is generally more pertinent to the specifics of the team.
- Code is a liability, not an asset. Aim to have as little of it as possible.
- Test are your documentation.
- Algorithms have their place. Generally the way we reason about problems is more important.
- Build for an ignorant future self.
- Optimize for change.
- Be skeptical about over the top-design. Simple primitives will generally do the trick.
- Push back on requirements that seem excessively complex; you're the advocate for technical simplicity.
- A better system is often a smaller, simpler system.
- Favor a system that allows change over validity.
- You probably don't need microservices. Be aware of the costs.