Software Engineering
When a test fails, you should be able to begin investigation with nothing more than the test’s name and its failure messages —no need to add more information and rerun the test.
Effective use of unit test frameworks and assertion libraries (JUnit, Truth, pytest, GoogleTest, etc.) serves two important purposes. Firstly, the more precisely we express... See more
Effective use of unit test frameworks and assertion libraries (JUnit, Truth, pytest, GoogleTest, etc.) serves two important purposes. Firstly, the more precisely we express... See more
Test Failures Should Be Actionable
More than reading popular books on Design Patterns, two things that helped me write and structure a large codebase better were
reading a lot of good open source codebases (with similar stack)coding and collaborating a lot on the same codebase
I understand the importance of reading general-purpose design patterns, but they might not suit your... See more
reading a lot of good open source codebases (with similar stack)coding and collaborating a lot on the same codebase
I understand the importance of reading general-purpose design patterns, but they might not suit your... See more
How to get better at writing and structuring a large codebase?
- Solution : Apply the Single Responsibility Principle - each microservice should focus on one single capability that it masters.
- Benefits : This specialization makes microservices easier to comprehend, test, scale, and upgrade. It's like having a coordinated team where each member excels at their role.
- Pitfalls : Violating this principle leads to
Muaath Bin Ali • Microservices Design Principles
We ship early
We constantly review the scope of a project and work toward a v0, not a v1.
That means identifying the most crucial part of a functionality , and pushing the smallest pull request possible to make that happen. In fact, a PR should always be optimized for the speed with which we can merge it in.
We constantly review the scope of a project and work toward a v0, not a v1.
That means identifying the most crucial part of a functionality , and pushing the smallest pull request possible to make that happen. In fact, a PR should always be optimized for the speed with which we can merge it in.
How we ship new features · Resend
Why is Continuous Delivery for ML/AI hard(er)?
Since the challenge is not new and many valid solutions exist targeting traditional software projects, is there a reason to treat ML/AI systems any differently? Consider these three core challenges that are endemic in ML, AI, and data projects:
Since the challenge is not new and many valid solutions exist targeting traditional software projects, is there a reason to treat ML/AI systems any differently? Consider these three core challenges that are endemic in ML, AI, and data projects:
- Development and debugging cycles are more tedious due to
How To Organize Continuous Delivery of ML/AI Systems: a 10-Stage Maturity Model | Outerbounds
The book Clean Code introduces three laws of TDD [1]:
So, the tests are written before the production code. This leads to the developer... See more
- Write a failing unit test first before you start writing production code.
- Write not more of a unit test than is sufficient to fail.
- Write not more production code than is sufficient to pass the currently failing test.
So, the tests are written before the production code. This leads to the developer... See more
How to Write Clean Code in Python
Whenever you write a log, it’s important you choose the correct log level.
I personally mostly use ERROR, WARNING, INFO, or DEBUG (yes there are a few more).
Log levels TLDR
I personally mostly use ERROR, WARNING, INFO, or DEBUG (yes there are a few more).
Log levels TLDR
- ERROR: Parts of the flow failed, we want to send alerts to our on-call for this failures.
- WARNING: Doesn’t necessarily point to a failure, but an unexpected behavior that should
Logging practices I follow
For high-priority tasks , like designing the main user interface content or creating content for a major product launch, you might spend 10–20 hours a week. These tasks need detailed planning and close collaboration with your team.
Medium-priority tasks , such as updating help center articles or creating content for minor feature updates, might take... See more
Medium-priority tasks , such as updating help center articles or creating content for minor feature updates, might take... See more
It’s time to upgrade from “hard-working” to “highly efficient”
- Requirements (or constraints) : What does success look like? What can we not do?
- Methodology : How will we use data and code to achieve success?
- Implementation : What infrastructure is needed in production?