Programming rants

I work in cyber security. I do some programming but I'm not a professional programmer. I took some software design classes in university. Hated them. I love programming just not how enterprise programs are designed:

  • Backend web developers write wrappers around databases.
  • Frontend web developers write wrappers around wrappers around databases.
  • Most programmers don't really understand databases.
  • Programming is a craft not a science, and that's a problem. This allows for opinions not facts.
  • Programming in java is not fun, even with intellij.
  • ORM is an anti-pattern.
  • UML is shit. scrum and agile are a waste of time and resources for most teams.
  • I'm a programming motherfucker.
  • Libraries over frameworks any day.
  • Simplicity over complexity any day.
  • Functional programs are simple. OO programs are not.
  • Clojure is simple, Java is not.
  • You don't need design patterns for most programs.
  • You don't need static typing for most programs.
  • The most beautiful thing about UNIX is program composition through pipelines.
  • Filters can't be used for everything. sometimes you need monoliths.
  • Abstraction is not always the solution. see The law of leaky abstractions.
  • Most professional programmers are solving non problems.
  • Code documentation important only for critical parts (things that are not obvious), or to offer a high level view.
  • Tools matter. 
  • Textual programming needs to be replaced. this is not 1970 anymore.
  • IDA is a reverse engineering tool but it has capabilities that most IDEs don't have (XREF, Graph view...).
  • Using the command line is a waste of time, and doesn't make you look smart.
  • GUI's are far better than command line tools (for example magit for git).
  • The only thing command line tools offer is flexibility (pipelines) and repeatability (scripting), not talking about curses style programs those are shit.
  • I don't understand non relational databases.
  • Vi(m) is a meme that has been going on since 1976.
  • Composition in OO is broken. In functional programs functions are first class citizens.
  • In a functional program, a function or composition of functions solves a problem. In OO programs, you have 10 interfaces, 20 classes and a factory.
  • OO is not all evil, an example of beautifully designed OO language is ruby or python. I don't like how professional enterprise programmers solve problems.
  • I used SQLAlchemy ORM in python made it work like an active record ORM.
  • I don't understand data mapper ORM's.
  • Programmers design information systems, i.e systems that deal with data, yet they treat data as a second class citizen.
  • In clojure, there is no difference between data and code. Quote code and it becomes data, apply data it and becomes code. No marshalling or serialization needed.
  • I wish universities use SICP as an introduction to programming.
  • Unit tests should include security testing.