When you first started programming you thought you would have to learn just a few things and you could build almost anything… You quickly learn that wasn’t the case and that you would have to always be learning.
Eventually you learned about objects and all the patterns you use to make a good system. You thought it would solve all your problems.
Then you heard about this thing called functional programming and started to learn about it. You started to get excited and wanted to tell everyone about it. You quickly found out people were not interested in it and you didn’t understand why.
Why would programmers reject something that would make everyones life easier? Why will the boss not even entertain the idea?
Don’t fear, I was there as well. I have been programming since 1999 professionally and learning since 1986 when my dad brought home a IBM 8088 and a PC DOS 3.0 floppy disk. I have loved programmer ever since.
Object oriented programming has been all the rage since I can remember. I can’t even remember how many books I read on object oriented design.
Then in 2015 I learned about Elixir and functional programming. My eyes were open to a better way. Easier to test, easier to read, yet I couldn’t convince people to design systems that way and I didn’t know why.
Don’t get me wrong I am not thinking it is the end all, be all, way to design systems but it is a big step forward from writing factory objects, using patterns, and jumping through hopes to design a testable system that changes so much it looks nothing like it did 4 years ago. If something better comes along I would start using that for sure.
So since I didn’t know why people didn’t want to learn functional programming I started to ask. What I found was most people just didn’t understand it and it’s advantages. Once I started demoing different ways we could build it instead of using inheritance, state mixed with functions and other advantages programmers around me started to get excited as well.
This blog, my newsletter, and my social media feeds are my journey to now teaching others. Showing programmers on my team is great but what if I could show the world.
Look I have strong opinions about programming and system design but I also love to listen to others and hear opposing points. I have no problems changing my mind. So if you watch or read anything I put out let me know in the comments if you agree or disagree and why. I want these things to all be open conversations.
In the end, it is about designing a system that can be maintained, changed without huge technical debt creeping in the system, and making the crazy deadlines that sales and product managers seem to set.