Wednesday, May 15, 2019

Force Proper Error Handling - via Checked Exceptions?

Forcing the calling code to handle the error right away is the correct approach, because it forces the programmer to think about the possibility of an error occurring. That's a key point. The fact that this clutters the code with error checking is unfortunate, but it is a small price to pay for correctness of operation.
http://www.lighterra.com/papers/exceptionsharmful/

Friday, May 10, 2019

Providing Rest Clients Nearly as Bad as Publishing SOAP Contracts

Even still, many developers and architects have continued to emotionally cling to the SOAP bad old days, wherein the contracts between a server and a client are to be well-defined and strictly-enforced. Semantically-versioned contracts is a common pattern, where the contracts themselves are held in a separate package, and compiled for consumption by consumers. Another is the published “ServiceClient” which exposes all methods and contracts for the consuming clientA to call serviceB. Both are architecturally troubling, because once more these contracts or clients are nothing more than another form of tight-coupling.
Once again, nobody moves unless everybody does, just not in as rigid a format as SOAP provided.
from: https://medium.com/it-dead-inside/isolating-your-microservices-through-loose-coupling-48b710e28de6

Overly Coupled Microservices

The rule of thumb goes that if a change to one microservice requires the redeployment of x number of other microservices in order for all of them to be successful, then the higher x is, the worse your architecture is.
https://medium.com/it-dead-inside/domain-driven-design-in-the-era-of-icroservices-de2be01821ed

Thursday, May 2, 2019

Waterfall better than Agile without Business Support

For agile to be effective, stakeholders and product owners have to change their behaviors and provide a conducive environment for the delivery team. Else, they should just stick with traditional waterfall because doing agile without reaping the benefit is sheer stupidity.
https://blog.gds-gov.tech/the-biggest-myth-of-agile-development-faster-cheaper-and-better-outcome-27c20a95978c

Wednesday, April 24, 2019

Everything is either a Service, Entity, or Value

First, remember that everything in your system is either a Service, Entity or Value. I didn’t make those names up: I learned them from Eric Evans in Domain-Driven Design.
https://blog.thecodewhisperer.com/permalink/when-is-it-safe-to-introduce-test-doubles

Tuesday, April 23, 2019

Fourth generation languages

Another is that trying to make a language syntax English-like often demands that the ``English'' it speaks be bent seriously out of shape, so much so that the superficial resemblance to natural language is as confusing as a traditional syntax would have been. (You see this bad effect in a lot of so-called ``fourth generation'' and commercial database-query languages.)
http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ar01s09.html

Sunday, April 21, 2019

Hardest thing in Software Engineering

The hardest part of the software task is arriving at a complete and consistent specification, and much of the essence of building a program is in fact the debugging of the specification.
Brooks -- No Silver Bullet

Thursday, March 7, 2019

OCP

In other words, the OCP says that you can always add new code to an object, but should never change the design of old code.
https://medium.com/@severinperez/maintainable-code-and-the-open-closed-principle-b088c737262

Monday, January 28, 2019

Microservices

A species would be a combination of roles [DCI?], instead of being characterized as an animal, which would not necessarily be the best description. At a larger scale, microservices are a very similar case [of composition instead of inheritance / ISP], they are pieces of a system separated by responsibilities, instead of being a great monolith.
https://hackernoon.com/solid-principles-made-easy-67b1246bcdf

Procedural vs OO

In any complex system there are going to be times when we want to add new data types rather than new functions. For these cases objects and OO are most appropriate. On the other hand, there will also be times when we’ll want to add new functions as opposed to data types. In that case procedural code and data structures will be more appropriate.
https://medium.com/mindorks/how-to-write-clean-code-lessons-learnt-from-the-clean-code-robert-c-martin-9ffc7aef870c