Why your software sucks and what is the "Secret Weapon". Also,
algorithm complexities refresher, functional programming, including
Scala and Clojure, concurrency and lot of humor.
What does your programming day look like?
The article describes problems in software design and explains
why almost every system nowadays look like "Big Ball of Mud".
There are seven real patterns in software design:
- BIG BALL OF MUD
- THROWAWAY CODE
- PIECEMEAL GROWTH
- KEEP IT WORKING
- SHEARING LAYERS
- SWEEPING IT UNDER THE RUG
caps preserved due to original article
And our favorite phrase:
It works, so why fix it?
Classic article by Frederick Brooks, Jr.
Object-oriented programming? Artificial Intelligence? Expert systems? Time-sharing?
Graphical or Automated programming?
Nothing helps you.
The most radical possible solution for constructing software is not to construct it at all.
Demotivating, but helpful.
This is inspiring one.
Brooks told "There is no Silver Bullet", but Paul Graham reveals "The Secret Weapon".
The article is success story of startup called Viaweb.
Chosen technologies were so good, that allowed Viaweb to compete with all similar startups.
Our secret weapon was similar.
We wrote our software in a weird AI language, with a bizarre syntax full of parentheses.
As you probably understood, it was Lisp.
Plain algorithm complexity cheatsheet. Contains time and space complexities
for common algorithms and datastructures.
Did you know that recursion is just syntactic sugar over higher-order functions?
I am not using Scala and prefer Clojure for rapid protyping, but find such articles
extremely useful when learning new language. Just exploring the code shows that Scala is
the powerful and expressive language.
P.S. I am on half way to publish "99 Clojure Problems".
Great pictures. This is nice intro to concurrency and overview of some common cocurrency problems.
Clojure is exciting language with great concurrency capabilities:
default immutability, atoms, refs, agents, promises, futures and software transactional memory.
This article is an introduction to them. Check out the 2nd part
This is the video screencast of Gary Bernhardt's talk.
An object plus an object is actually…. Not A Number!
We touch humorous side and this article (reddit thread) not about programming, just jokes.
Q: What does the "B" in Benoit B. Mandelbrot stand for?
A: Benoit B. Mandelbrot.
In fact, some of the jokes related to programming.
There are only two hard things in Computer Science: cache invalidation, naming things, and off-by-one errors.
Some of them a bit stupid, but still fun.
How many surrealists does it take to screw in a light bulb?
Definitely, worth to read!
Source: Mykhailo Kozik