Home
Notes
Topics around software engineering
-
Continuous Delivery
-
TDD
-
BDD
-
Micro services
-
Continuous integration
-
Extreme programing
-
Software design and archiecture
-
Fast feedback loop
-
Testing
-
Code review vs
Feature branching
For many years the central problem of version control systems was that they did not provide good branching tools. Actually branching wasn't the real problem, merging was. However without good merging, branching was really a pain. With the popularity of git marging and thus branching got a lot easier which lead to the made feature branching a lot more popular than before. However, feature branching also has drawback. In particular it has a huge tension with the idea of Continuous Integration and thus with Continuous Delivery.
Fast feedback loop
How to know your software works correctly?
We write software because we would like to make sure it does something useful without errors. The big question is of course how do we know our software works. Ultimately the question boils down to whether the user (customer, client, whatever word you use there) is satisfied. BDD Acceptance testing
Writing automated test
Intro
My name is Gabor
I help companies improve their development process.
I am especially interested in Python and Rust based projects.
How do you know that your code works?
Let's start by looking at this at the individual level. Later we'll see that the same ideas, same principles apply 10-folds when you work in a team and 100 folds if you work in a large organization, but for now let's focus on you. Let's say you write some software for yourself. Let's make it even more specific. You write a command line tool that takes huge log files as input, analyzes them, and prints out a report.
How do you know it works correctly?
You'll probably create a small version of the log file where you can manually verify the expected result. You run your program and you check if the result is the same as what you expect. It does not prove that your code works in all the cases, but this is already much better than if you have never actually checked it manually.
As you feed new copies of the log-file to your program at one point you might encounter a file for which your program crashes. Clearly you did not take account every possible input. So you dig in the code and the log file, find the source of the problem and fix it. You know that this problem was fixed because you
How do you know that you
At one point you might realize that there are edge cases in the reporting, so you might add