NoSQL; honestly, it's a document store, cool. SQL (esp. Postgres/Maria) can do it as well. Checkout how Wordpress / every CMS stores user profile field names and values.
I did learn these but never really needed them. Would be a bit rusty on some.
pointers - because of managed languages / pass by ref semantics
sort algorithms - languages I used already had them
TDD and Test First - tried it for a while
AOP (aspect oriented programming) if anyone still remembers it
dependency injection containers - It’s a statically-typed language thing, but not really needed there either.
tree structures: b, b+, avl, etc. Languages / databases already had specific collections / indexes which implement these under the covers. Fascinating to know for performance characteristics tho.
bloom filter
actor model of computation
agent based programming - tried, but message passing overhead was too slow for my workload
Never actually put any of this into a production project except TDD. Have used other framework’s DI containers when they force it on me, but not my own.
Don’t get me wrong, over time I have learned a lot of low level details like: heap vs stack allocations, big-o of various collection operations, avoiding cache misses, flushing registers to memory, etc. Because managed languages are still leaky abstractions over the hardware they run on, I’ve bumped into some weird edges that caused me to learn it.
This one is interesting to me because there are things I wish I didn't have to know that I have had to know.
But here's the list of things I have never had to worry about (9 years):
Relational databases
CSS
Assembler
And for the things I have had to use:
Regular expressions
Big O
Trees/Graphs
Big/Little Endian
64 vs 32-bit programming
Threading... THREADING!
JVM tuning
Manual memory management
Now I'm sharing this list because I personally think the software industry is converging on web development. There is actually a huge world out there beyond web development where some of these more esoteric seeming things have mattered.
I'll look from a different angle. Do we need formal education in any programming concept to learn them?
SOLID principles, BigO notation, Docker and frenemies, functional programming, traits (PHP), most class inheritance stuff, schemaless structures (was in Pascal Records in the 90s), recursion.
I knew and was using them before I knew their names (except Docker&fr, we used to call them virtual hosts back in the day ;). Never really studied any of them, and I realized I already knew them when I studies them.
I'm a teacher and I know for a fact that it is better to not name concepts and structures until the pupil learns them by heart. And at that point, studying the concept becomes useless because the pupil is already aware of things. This doesn't apply to university level conscious studies of course.
So much this. As a self fought developer I know almost none of the names of the principles implemented in my work and I've been doing it for 18 years now.
Not knowing there was this AWS Function Step and instead, i have a fat function orchestrating what other lambda to call and when. But im alright with it (for now)
I'm a small business programmer. I love solving tough problems with Python and PHP. If you like what you're seeing, you should probably follow me here on dev.to and then checkout my blog.
Latest comments (46)
OOP :P
NoSQL; honestly, it's a document store, cool. SQL (esp. Postgres/Maria) can do it as well. Checkout how Wordpress / every CMS stores user profile field names and values.
Advanced CSS and making things look pretty.
I did learn these but never really needed them. Would be a bit rusty on some.
Never actually put any of this into a production project except TDD. Have used other framework’s DI containers when they force it on me, but not my own.
Don’t get me wrong, over time I have learned a lot of low level details like: heap vs stack allocations, big-o of various collection operations, avoiding cache misses, flushing registers to memory, etc. Because managed languages are still leaky abstractions over the hardware they run on, I’ve bumped into some weird edges that caused me to learn it.
business administration
This one is interesting to me because there are things I wish I didn't have to know that I have had to know.
But here's the list of things I have never had to worry about (9 years):
And for the things I have had to use:
Now I'm sharing this list because I personally think the software industry is converging on web development. There is actually a huge world out there beyond web development where some of these more esoteric seeming things have mattered.
Making (big) money.
I'll look from a different angle. Do we need formal education in any programming concept to learn them?
SOLID principles, BigO notation, Docker and frenemies, functional programming, traits (PHP), most class inheritance stuff, schemaless structures (was in Pascal Records in the 90s), recursion.
I knew and was using them before I knew their names (except Docker&fr, we used to call them virtual hosts back in the day ;). Never really studied any of them, and I realized I already knew them when I studies them.
I'm a teacher and I know for a fact that it is better to not name concepts and structures until the pupil learns them by heart. And at that point, studying the concept becomes useless because the pupil is already aware of things. This doesn't apply to university level conscious studies of course.
So much this. As a self fought developer I know almost none of the names of the principles implemented in my work and I've been doing it for 18 years now.
Not knowing there was this AWS Function Step and instead, i have a fat function orchestrating what other lambda to call and when. But im alright with it (for now)
UML modelling. It was going to be "THE THING" in the late 90s. I took a look at it and couldn't figure out how to make it work for my projects.
By the look of things 20 years later, neither could anybody else.