Showing posts with label develop. Show all posts
Showing posts with label develop. Show all posts

25 September 2026

Fuzzy contracts are eating away your developer skills.

Older, widely used code rarely treats the Single Responsibility Principle (SRP) as a strict contract. Each method does roughly one thing, but the edge cases (nulls, mutability, memory, fallbacks) are decided case by case:
  • Date / SimpleDateFormat are mutable and not thread-safe.
  • List.of(...).contains(null) throws NPE.
  • Collections.unmodifiableList is only a view - changes to the original list still show through.
  • Integer.parseInt(null) throws NumberFormatException instead of NullPointerException.
  • Arrays.sort(a, null) silently falls back to natural order.
Each exception is small, but together they mean that names can't be trusted, so every piece of documentation has to be read. Documentation stops being clarification and becomes a list of exceptions you have to remember. Newer APIs are somewhat better, but lost trust is hard to rebuild. The old warning "always read the documentation" was never about good practice - it was about code whose names could not be trusted.
Current code is easy to write and read as long as it fits conventions, but whenever something goes beyond them, we see more errors and less clear code.
Conventions become harmful when they collapse multiple domains into one while only partially handling each of them. Later, developers mistake that partial pattern for the correct model; with time and popularity, it's taken as proper design.

16 February 2026

How to Handle 1700000000000000000000000000000000 Test Cases and Tests That Actually Matter

There are actual problems with how tests are used, so let’s look at the omitted aspects of testing. To get a sense at what I'm aiming at you can check how huge successful systems try to survive, see: Oracle Database 12.2 – 25 million lines of C code.

1 February 2009

Genesis of Programming

Wikipedia: Tower of Babel

1 At one time the whole earth had the same programming language and vocabulary. 2 As people migrated from the asembler, they found a valley in the land of Shinar and settled there 3 They said to each other, "Come, let us make libraries ." They had objects for stone and patterns for mortar. 4 And they said, "Come, let us build ourselves a language and a standard library with everything programmer can need under the sky. Let us make a name for ourselves; otherwise, we will be scattered over the face of the whole earth."

5 Then the marketing came down to look over the language concepts and the library that the men were building. 6 The marketing said, "If, as one people all having the same language, they have begun to do this, then nothing they plan to do will be impossible for them. 7 Come, let Us go down there and forbid them to create language so that they will not be able to create programs for all the platforms."

8 So the marketing scattered them from there over the firms on the whole earth, and they stopped building the language. 9 Therefore its name is called Babylon, for there the marketing confused the programmers of the whole earth, and from there the marketing scattered them over the face of the firms on the whole earth.