What I Learned by Building PostgreSQL Support for Meteor for My Hack Reactor Thesis Project

      Today I came across an interesting essay by University of Virginia microbiologist Martin Schwartz titled “The importance of stupidity in scientific research”. In his essay, Dr. Schwartz described how important it was for PHD students and researchers to be comfortable with the unknown. He then goes on to describe coming to realization that he was threading new ground in one of his projects. There simply weren’t ready made answers or easy solutions for the problems he was having. Today, three weeks into my thesis project at Hack Reactor, I just had the same realization.

      I am part of four person group currently developing a Meteor package that will provide PostgreSQL support for Meteor. While working on this project, I’ve come across very new technologies and libraries which have not been around for very long and have been using them in ways that they have not been used before. So if I have a get stuck on a particular issue, or need to better understand a particular technology in order to implement a feature I have no other resources outside from my three group mates and the source code. I can’t google search how to create a dynamic PostgreSQL cursor that can be sent over DDP, or how to implement an ORM that encompasses both PostgreSQL and alaSQL, the answers to these questions and the problems that generated them simply didn’t have solutions yet.

      The lack of existing solutions for these problems is what made this project worth doing in the first place. I believe that in order to achieve true innovation one must step into a path that has not been threaded before. Now in order to truly understand the impact of this realization one must first realize that during my time at Hack Reactor I’ve had an enormous amount support. We spent the first half of the program with daily lectures ranging from how to popular JavaScript libraries to core principles of computer science. During this time we worked on some smaller projects to help us become more familiar with these libraries and to better develop our programming skills. During this entire process our cohort had three dedicated tech mentors who are brilliant senior developers and instructors with several years of programming experience and they were extremely useful with ready answers to all our questions. But as personal and group projects began there was a shift. While they could still point us in the right direction, and were able to provide us with some clarification on how to better use a particular tool they no longer had the same immediate answers. It was these moments that lead me to today’s realization.

      I believe that these experiences are at the heart of what Software Development truly is. The ability to solve complex problems with new and innovative solutions which are what differentiate great Software Developer from a mediocre one. But as more and more resources become available to us we get complacent and start copying and pasting code as opposed to developing our own solution. In my opinion, this is a bad habit that only reduces our value as software engineers. I’m not saying we shouldn’t reuse code. I am simply saying that the minute you stop thinking, generating new ideas, and solving new problems you immediately start to be left behind. And this thesis project has reminded me of the importance of it. Not only that it has reminded me how truly amazing it is to be creating something new, something that has the potential to be used by thousands of developers around the world.

Paulo Diniz