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.
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.