1
Here are some things I have already studied:
- Calculus
- Differential, Integral, Sequences and Series, Vector (partial differential equations, gradients, Lagrange multipliers)
- Statistics and Probability basics
- normal distributions, hypothesis testing ("rejecting null hypothesis"), combinations/permutations
- Linear Algebra
- matrices, vector spaces
- Abstract algebra concepts from my studies in Functional Programming
- monads, monoids, higher order functions
- Discrete Structures and other CS stuff
- proof theory, set theory basics, logic, boolean algebra, graph theory
- Computer Science
- Deterministic Finite Automata, Grammars, Turing Machines (and Chomsky hierarchy of languages)
- Fractals, Cellular Automata
- Algorithms and analysis of algorithms
- alternative number system: base 2 number system (binary)
Recommend me something new!How can we take such claims seriously? Most things do not improve our productivity THAT much. However, some things truly do.
Let me give some examples of things I think truly have "dramatically improved" my productivity.
- testing, specifically integration tests
- memory safety (garbage collection, borrow checker, etc.)
- version control (git, etc.)
- closures and lambdas
- unix pipes and the idea of composing larger programs out of smaller ones
- Chrome debugger when working with javascript
- I hesitate to say "debuggers" in general because I actually think GDB didn't "dramatically" improve my productivity back when I programmed in C. And I don't even use a debugger at all when I program in python. But the Chrome debugger has numerous features I use all the time.
Now let me give some examples of things that didn't really live up to the hype, in my opinion: - static type systems
- could be a small win but I don't find myself "dramatically more productive"
- TDD
- IDEs
- some IDEs are better than others, but I have yet to experience a dramatic increase in productivity simply by using a new IDE. Text editor + terminal is pretty strong tbh.
- serverless architecture
- I could see the argument for scaling concerns, but at a smaller scale I don't see a productivity boost compared to a monolith Rails/Django app
- classes and class-style OOP, inheritance
- I haven't written a class in a long time, and I haven't used inheritance in a REALLY long time. I just don't think these are huge wins in most cases. Note that I'm not even advocating for FP here. I program in a procedural style most of the time in all honesty.
I'm not trying to start a flame war, so don't worry about it if you disagree with my particular examples. I was just trying to illustrate what I am getting at. I'm looking for things that TRULY increased your productivity. Not just kinda/sorta. If you are on the fence about something, it wasn't significant enough! I'm looking for things that are obvious. Things that noticeably slow you down if you didn't have it. Things that you can't live without.Thanks! I look forward to seeing the replies.