Another Developer, Another Hello World Post
Where would we be without cliché?
Well, at least I do. Gotta start somewhere though, right?
I’m a professional software developer with ~10 years experience.
I started out as a Java SE developer, with a 6 month bootstrap and some gleaming optimism. My first job was as deep-a-deep-end as I could find: Building a financial call centre platform in a massive JEE monolith, powered by JBoss, and I was absolutely out of my depth.
I spent long days in that office, combing through XML bindings and documentation. Breaking, fixing and then breaking some more code on my machine, desperately trying to pry the auto-magic secrets of J2EE out of my IDE and the codebase. After a grueling couple of months, I eventually found my feet. It was then I discovered my thirst for more.
I wanted to know more about this magical land of Application Servers and bindings, and once I had eaten all of the tasks I could get my hands on, an interesting opportunity presented itself to me. I jumped on it and was introduced to the world of microservices. It was here that I picked up Git, smaller J2EE servers like Wildfly and I even got to return to some JSE code (much to my protest: The EE container is a powerful abstraction layer and I remain unconvinced that abandoning it was the right idea).
During this time I heard whispers of a creature with buck teeth, blue fur and concurrency as a primitive type. It took time, but eventually I was exposed to Golang.
I immediately fell in love, and took up a posting where I started writing Go day in and day out. I built everything I could get my hands on in that tiny team. From RESTful backend services to applications running on an embedded linux platform, userspace bindings that interacted with the Netlink Kernel module and more. I was exposed to the low level electronics that had until this time eluded me (although I’ll admit Transistor to Transistor logic still scratches my head and I am by no means an expert or, arguably, even all that knowledgeable).
But something started to stick with me:
Programs must be written for people to read, and only incidentally for machines to execute.
– Harold Ableson
This is one of my favorite quotes from the industry, and is one of the primary reasons I became so deeply enamoured with Go.
Dependencies in Go are source code, not the obfuscated binaries I was used to; who’s magic was thinly alluded to by out-of-date documentation in Java. The code looked and felt mostly similar, and after sometime I too started to adopt the Go proverbs
A little copying is better than a little dependency
Don’t communicate by sharing memory, share memory by communicating
Clear is better than clever
– Rob Pike
I wasn’t sure I agreed with these off the bat, but in time Go managed to persuade me.
I went outside once. The graphics were good but the gameplay was lacking
I’m a hobbyist musician, an amateur rock climber and I enjoy public speaking (I know right? Join toastmasters!).
And now, I can add amateur blogger to that list. Hopefully, one day, I will adopt the Agile philosophy of “stop starting and start finishing” and improve in all these amateur fields of mine.
But for now, I have a keyboard and time to kill.
Welcome to the show :)