There’s a common superlative you hear, especially if you’re in the aspirational period of a high school Guidance Counsellor meeting, where you’ll hear “Anything’s possible!” And as you grow up, you learn to sort of filter out that sentiment. You learn there are limits, you learn there are things in the universe which seemed obvious, but really presented hidden meanings. Maybe you learned this literally and ran into a sliding glass door. It happens.
Learning limits is an important method of survival, but becoming a slave to those limits can turn you from living to coping. It can do more harm than good.
If you’re a software developer, you’re in a lucky place, because almost anything you can imagine is possible. Yes, there are limits to what hardware and software can currently do, and there are limits in what they can do eventually, too. But far and away, what is possible with a computer is quite limitless.
If you accept this, then new things start to become quite clear to you. You begin to see software as an illustration of your thought, as a way to explore the logic in your head. In a book you can write what you’re thinking, but in software you can express not only what you think, but you can see how that thought holds up to scrutiny. This is a small and simple truth with vast and curious implications. It means your thoughts can not only be heard, but explored, by generations both present and future.
When you don’t accept possibilities of software, you become limited in the world as it currently exists. We have so many inventions in software which exist merely because the inventor didn’t know they weren’t impossible.
When asked how he had invented graphical user interfaces, vector drawing, and object oriented displays all in one year, Ivan Sutherland replied “Because I didn’t know it was hard”. He had no preconceived notion of what was possible, so there was no hinderance. He just invented what he felt he needed in order to express his ideas.
Bill Atkinson infamously didn’t know overlapping windows were hard, but he invented them anyway. As an early Apple employee, Bill was one of the visitors of the famed Xerox PARC visits where he observed early versions of the Alto computer. He thought he’d seen a system with overlapping windows, so when he had to design a graphics system for the Mac, he had to build those too. Little did he know, the Alto never had overlapping windows to begin with. He had invented them because he was under the impression they were possible. Imagine!
Software today exists with much already established before us, but we’re still in the Incunabula stage. We’re still establishing the rules. Although there might appear to be much precedent in how something works, the truth is we’re in the very early stages. The rules are mutable and many are still yet to be written. We’re at a point where it’s critical to continue to explore new ideas, even if there’s only the slightest tinge of possibility, more often than not it turns out to be not only possible, but a superior approach.
Don’t ever let what you think you know dictate what you feel might be possible.