Coding today is a fun space for creatives.

As an entrepreneur and a programmer, I spend a lot of time learning web technologies. I decided to learn to program because I was greatly influenced by the amazing things the world has created with code. Ever since I was young, I was astounded by the idea that I could surf the internet, and how that put me in such a unique position in terms of my accessibility to information. I decided as I entered my high school years that I was determined to learn to code. I began watching videos, reading blogs, and reaching out to friends who I knew were excellent developers. Eventually, in my junior year of high school, we gained access to computer science courses. I was hyped. I entered a python course with my buddies and took the next step towards building cool shit. Little did I know, what I had been studying outside of class was extremely different than what was taught in class. I suddenly was very confused.

What I learned is that academic computer science courses focus on theory. My classes in high school taught us how to write algorithms, understand data structures, and apply object oriented paradigms to structure our applications. What cool shit was I was building in class, you might ask? We were instructed to recreate the game craps. Don't get me wrong, craps is a cool game, but this was not what I had imagined when I thought about coding. I had tons of business ideas, I had ideas of problems I wanted to solve, and I wanted to focus on creating. Quickly I was starting to dislike programming. I told myself to continue and to be patient.

Next year rolls around, and I start my Java course. You guessed it, more algorithms, and the language was a lot more difficult. In the meantime, I was sitting in one of my classes and noticed that many students had questions but were not speaking up. I thought to myself, "wouldn't it be cool if there was an app to ask questions anonymously in large group settings? What if people could vote on those questions so the administrator could filter those questions?" The high school version of me was quickly buzzing with excitement, thinking I had a brilliant idea. Plus, the concept seemed like a simple app. It shouldn't be that hard to build, right?

It wasn't. I built a basic version in my senior year of high school. But it began with me asking a lot of different questions. "How might I send data from my phone's browser to post a question so everyone can see it?" or even simply, "what platform can I develop this on that is extremely accessible, no matter the operating system?" I journeyed into a rabbit hole and began to learn HTML, CSS, and JavaScript. Soon I was learning Node.Js and using a library called Socket.io to pass data between the server and client. If you're curious to see the end product now, check it out. We have added a lot more features and content since its inception.

Something important to note, I discovered that working on your own project is an amazing way to learn new things, especially skills that are outside of the traditional curriculum. Second, I learned that it was a ton of fun. I could write an entire post on just this idea. Most importantly, I learned that for a creative who wants to build software as a service, or to begin to solve problems using this technology, knowing how to code is not enough.

As time goes on, programming languages become more and more abstracted. Going from Assembly code, to C++, and then to extremely high level languages like Python and JavaScript involves more and more layers of programming. Programmers today are using frameworks, microservices, tooling, cloud platforms, the list goes on. It sounds complicated, but in reality, you are reading API documentation and learning how to glue and to configure a lot of these web services together. School does not focus on these concepts. I argue that modern frameworks and tools are functioning at such a high level that programming in this way has become a field of study suitable for creatives different from the academic path for a traditional computer engineer.

Now before any serious software engineers get pissed at what I am saying, hold on a second. The role of engineers who understand theory at a deep level is extremely important. If anything, their importance continues to grow at a rapid pace. The progression of abstraction in programming has been led by engineers who understand how everything functions at a deep level. We've seen this in history already. An engineer invented the guitar. A creative picks up the guitar and understands the theory at a basic level, but the content that the creative can make is unique and powerful, yet couldn't have been possible without the abstraction.

This is why we see large companies developing services to make the developer experience more enjoyable. Examples include managed back-ends like Google Firebase, authentication as a service with Auth0, or managing email campaigns and automation with Mailgun or SendGrid. Creatives do not want to reinvent the wheel, they want to focus on building.

If you are a creative and are looking to build things, don't be scared of programming! The timing is right for you. Yes, knowing some theory is still important. I won't say that my computer science courses have not helped me be the developer that I am today. However, the progression of abstraction is still continuing. Companies like Zapier and IFTTT are making integrations and automation even easier, and the "NoCode" movement is making strides with platforms like Bubble.io, where people can create apps visually with minimal or no code! I haven't tried Bubble before, but I believe these are steps in the right direction. What do you think?

Sure, there are tons of issues that come with abstraction. Many argue that the NPM ecosystem causes bloated applications or a reliance on third party packages that you don't understand. Another example could be with WordPress. Using plugins from different developers can cause plugins to conflict with each other. Or an update to WordPress causes a plugin to break, and the developer has stopped maintaining it. While these are valid concerns, I strongly believe that industries are very aware of this issue, and are exploring models to prevent it. Open source is a very curious thing. Perhaps I'll write my thoughts on this in another article.

In summary, solving problems as an entrepreneur or creative with programming is becoming easier and easier everyday. You do not need to be extremely technical to learn how to build awesome projects. I think it is time to redefine what it means to be a software engineer. If you have questions or are interested in learning more about how to create apps, e-commerce, or any type of product with web technology, send me an email!

lucas@hellostudios.io