Tuesday, August 8, 2017

Reify your dreams

After long hours of brainstorming and hair pulling, I finally arrived at the second most important decision in my life: what should I name my company? the first most important decision being should I propose to my girlfriend back then. No matter how you decide to tackle the subject; I could have taken Darwin's approach when he was deciding whether to propose to his cousin or not: Take a pencil and a piece of paper and weigh all possible consequences, and only then choose the most gratifying one. So much for an algorithm for happiness. Luckily, my first decision of getting married to that person turned out to be a good one, and it required a leap of faith. That same mindset is the one I tried to establish when deciding on the name of my company when I started freelancing. Isn't coding after all about taking someone else's or one's idea and making it concrete? That is my friends what Reify means exactly according to Merriam-Webster's dictionary. (some computer science aficionados might realize that it also refers to a concept in type theory where a concrete type representation is available at runtime, as opposed to no runtime type representation like in Java generics erasure). There you go, I had to throw in a little bit of technical stuff :-)
But Reify is for me more than a verb, or some computer science jargon. It is filled with emotions and memories. Memories of how supportive my wife was when I was just in the beginning of my career when I abruptly lost my job because of the 2008 financial crisis. And while I'm still emotional (please don't leave at this point), I'm also grateful to my mom who taught me how to excel at reading at age 5, to my father who financed my studies and persuaded me (in his own stubborn way) from switching my major when pursuing my master's degree, not to mention my two boys who teach me every day that simple things in life count for much more than meets the eye.
Reify is also a concretization of more than 10 years of sweat, blood, and tears. Aside from several part time positions during my bachelor's degree as a library technician, teacher assistant, and lab assistant, my first position was in the realm of microcontrollers. Then I moved to Network management solutions, and finally enterprise applications. In spite of the apparent differences, there is one common thread among all of these: requirements and deliverables. Software engineering is all about the efficient management of these, from the detailed level of a method name or member variable to the smile you bring to the product owner when the application runs without major incidents on the production environment.
As I advanced in my career, I realized that I needed less and less to be told what to do. Until one day, it just hit me: why can't I just be my own boss? but the contracting game is, however, not a single variable equation. It is, on the contrary, a multivariable one. And I have to confess that just as businesses look for talent, talent also looks for business. So while each party can fully focus on their end of the deal, TopTal provides the ideal platform for connecting the two and keep it flowing.
To make a long story short (I could go on forever :-)), I am really looking forward to joining Software Developers Community at TopTal, and I hope that this post will help me speed up my onboarding process.



Functional Java: Hate the player not the game

We've all heard it over and over, Java 8 is not really functional programming. I admit that features like tail call optimization, closu...