Things they never taught in Kindergarten

Things I Don’t know as of 2018

Inspired by Dan Abramov, I wish to make a formal confession about all the tech stuff I still don’t know after coding professionally for almost exactly 20 years. This is on the heels of the tech confession discussion in the #CodeNewbie community and right around my 20th anniversary of becoming a professional programmer. The following is more of a knowledge wish list than a formal confession of how stupid I still am. But know this… I am still stupid and there’s so much obvious stuff that I wish I currently knew. (…or is it know??? For eg. Grammar!) As I get older I realize there are soooo many things they failed to teach me in Kindergarten! Above all, I wish I was better at the classic tech interview leet coding data-structure/algorithm thing and I list that first. My actual skill set is so deep and wide in so many areas but still these other skill sets have eluded me over the years and I remain a newbie even 20 years in…

* Algorithms/Data Structures: I totally suck at interviewing! I can do quick sort and maybe marge sort. I can tell you how to build a hash table, but that’s about it! Many of the interviews I’ve been on seem to require extensive understanding of these topics which infuriate me because I suck at it! I also hardly ever use this knowledge in practice and feel you can get so much value out of other aspects of software development which are never prioritized or even considered during the “tech interview”.

* SSL – SSL might as well stand for Slippery SLope because my knowledge cuts off right after “it is used in combination with http and email protocols (SMTP?)”, and “…port 443 is used for https.” I know I usually have to install a bunch of SSL/crypto dependencies when setting up any server or build system that uses SSL and that these dependencies do some sort of magic hashing and message digesting but that’s ‘bout it!

* CSS/SASS/LESS/Pre/Post processors: I tinkered with CSS a few times here and there but if you ask me about these modern tools or how to do animations I’d be mostly lost.

* GraphQL: I took a course on React full stack which used this tech extensively. I hobbled through the course and finished it but I still don’t know how any of GraphQL works. The course I took had tons of bugs do to version differences, most of which I actually fixed as I took it. At the end, I was no more smarter than I was at the beginning.

* OAuth: I understand the concepts of OAuth, I’ve worked extensively with projects that required it, but I still feel like I need a separate class or set of instructions to come up to speed.

* Ruby/Rails: My Ruby experience has been relegated to a handful of command line Ruby scripts I wrote a few years ago. I am currently working through tutorials to learn Ruby and Rails. I feel like I am sooo overdue.

* Python: I should be shot for adding this one! I’ve actually taken a two week course on it and developed entire solutions with it! I wrote and maintained an entire test framework and suite with Python and gave my Cozmo bot a personality using it a year ago. Somehow, every time I start anything Python related I have to go back to “Hello World”. This is not so with any other programming language from Java to Obj-C to NodeJS/Electron/JavaScript to C++!

* Kotlin: I intended to write a book on Kotlin for Android some years ago but life got in the way of my mastering or spending any time with this technology.

* Real Time streaming: I wrote a few programs trying to master UDP and converted one of them to TCP after realizing how much I didn’t know about UDP. I would absolutely LOVE to become a network programming expert!

* Network Stack: At one point I tried to think about possibly contemplating my writing a DNS server. Don’t ask why! It just seemed cool at the time, never mind the fact that I have zero knowledge of network topology! I know the basics of how computers resolve IP addresses via DNS and DHCP, but I would kill to really understand the low level conversation that happens as clients babble back and forth over the network. I’m talking about reading raw SMB, really understanding how LDAP works, writing my own proxy server, etc.

* Kubernetes: There’s been so much talk about Kubernetes and I feel like I never get to play in any reindeer games!

* CORS/XSS/CSRF tokens: I just did a deep dive on this topic today so I really can’t include it anymore, but only hours prior I couldn’t tell you the difference between these terms or why you would use one and not another.

* OpenGL – I read some blog article many years ago (about a decade now) which illustrated how to do OpenGL-ES on iOS v3 and it was the coolest thing! I got my first black triangle then everything went dark. I haven’t touched OpenGL in any form since.

* DirectX/Metal – You might as well lump in DirectX, Metal and any 3D rendering concept because I suck at all of these. There is the basic 3D rendering APIs on iOS that I used to be really good at but I can’t even remember the name of the API now since it’s been about 10 years. (I think it was Core motion? Core something or other…)

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s