Written by Alex Tenn, iXperience '14 (Coding), Yale University '16
The most powerful thing in the world is an idea. The second most important thing is having the tools to realize that idea. The ability to code has made realizing an idea, an often indomitable task, easier than ever before.
A few weeks ago, Arthur Gillis, the former CEO of Protea Hotels, spoke to iX and in his talk mentioned two types of individuals: the dreamers and the "Christopher Columbus" types. Dreamers are those who plan but lack the operational competence to execute their goals and the Columbuses lack strategy. When Columbus left Spain, he didn't know where he was going. When he arrived in the New World, he did not know where he was. When he returned to Spain, he had no idea where he had been; he was strategically weak. This dichotomy mirrors the initial life cycle of an idea - without a process to develop and improve, ideas are like the dreamers and can never become anything more. Similarly, having a strategy without an idea to pursue is equally ineffective.
Before embarking on a transcontinental trip of my own, iX encouraged me to brainstorm an app to address a problem for which I had no previous background with and no operational know-how. The prompt was to propose an idea which would have a positive social impact in Africa. I struggled to conceptualize an app worth pursuing. At the time I knew nothing of Africa. I had never been to the continent, and I knew nothing substantial about the individual economies and cultures. Lastly, I knew nothing about web development. I stepped back and instead brainstormed around my personal concerns and leveraged my interests in engineering, math and economics to solve a problem. With the guidance of several international friends, I honed my idea into a microfinance app that would serve a useful purpose when put in the scope of Africa and submitted it to iX. At this point I had a primitive idea but still no framework to realize the goal.
The four week course, which culminated with a final app design project, taught me how to transform my own ideas into a tangible product. It also allowed me to see through the lens of the dreamers and the Columbuses. Throughout the course, there were many times while working on daily exercises or my final project when I could picture a desired functionality but didn't yet know how to implement it. There were also times I achieved the desired result without fully grasping the line of code I had just written. But coding isn't only about learning machine syntax; in that sense it’s merely a tool.
It has taught me how to break tasks into their most concise steps and then tackle each one of those steps individually until the desired behavior is reached.
Take for instance programming a game of tic-tac-toe which was one of our first week exercises. Before programming the board or even the Xs and Os, you must first consider how to store user input. Should I use an array or a hash? Next, how do I know if someone wins if I store values in an array? This is agile development, and this philosophy is how I've learned to bring an idea to life through code.
Through agile development I was able to break down my idea and the associated tasks into their most primitive versions which helped create a roadmap for development. By identifying the tasks and answering the questions surrounding that task, the logic was completed and all that was left was to translate it into code. I created a minimum viable product which I presented to IX and then, as with agile development, had to re-factor, then continue to add new features, all while adhering to this minimalist philosophy. While it is often easy to succumb to complexity, this process provided me with clarity and made my objectives easier, which made coding fun! As a mechanical engineering major at Yale, I had been exposed to technology and several programming languages but had never been encouraged to develop my own ideas into products.
There's a scene in Inception between Leonardo DiCaprio's and Tom Hardy's characters during which they discuss the nature of an idea. Eames, Hardy's character, explains that "you need the simplest version of the idea in order for it to grow naturally in the subject's mind". My time in South Africa spent learning and interning has allowed me to realize code as a tool to breathe life into my ideas through a process of distilling and improving. It's a very subtle art.