front end, programming

Humbled by Code

A few weeks ago, I started a 3-month intensive full-stack programming course at General Assembly. Full-stack is simply a fancy way of saying I’m learning web development and design (the “front end”) as well as server, application, and database programming (the “back end”).

I thought the first few weeks would be pretty straight forward. It’s been anything but. My mind has been stretched in many ways: first, by learning a lot of vocabulary and new syntax; second, by applying object-oriented and functional “paradigms” that string together disparate actions into a coherent body; and third, by thinking in a very explicit, step-by-step way so that the machine I’m working on can interpret my instructions. I’m amazed how tough this is for me, even though I’m writing very basic code.

So far, I’ve been exposed to primarily front end languages: JavaScript, jQuery, HTML, and CSS. Hard-core programmers don’t even consider HTML or CSS as code, but it looks like code to me when I’m writing it. I didn’t really know what either was before I started this course, but it’s pretty simple: HTML is used to “structure” a web page, while CSS allows a developer to “style” the page. Neither is particularly difficult to grasp, but manipulating pages and making them look good is both a skill and an art.

JavaScript, on the other hand, is a programming language. Many people confuse JavaScript with Java, but aside from sharing a similar name, they are pretty different. JavaScript is the language that powers the web: it enables webpages to have functionality. If a user clicks on something on your webpage, what happens? That’s JavaScript.

Front-end languages

It’s been fun learning JavaScript as well as jQuery – a library that simplifies writing JavaScript. JavaScript is considered one of the “lighter” programming languages to learn – and doesn’t carry the gravitas of learning something like C++ or Java – but it’s deceivingly simple. From what experienced programmers tell me, JavaScript has its quirks, but these quirks – when wielded properly – can produce powerful programs. In fact, according to a recent Bloomberg article on code, JavaScript is the world’s most-used computer language. Here’s what basic JavaScript looks like:

Simple JavaScript to create a sliding menu bar
Simple JavaScript to create a sliding menu bar

I struggle quite a bit when using JavaScript to manipulate the CSS and HTML of a page. Nonetheless, I’m astounded that in three weeks I’ve managed to write several programs, including:

  • A stopwatch
  • A calculator
  • A To-Do list
  • A game called ‘Snake’
  • A game of ‘Tic Tac Toe’

I won’t post these programs since I’ve received plenty of help from my instructors, peers, and online material. The code I wrote is also plain awful and riddled with bugs, so I don’t feel comfortable sharing these just yet. But as I continue to get better with programming, I look forward to sharing some of my projects on here.

Back to coding.

programming, technology

Hello World!

Welcome, dear reader!

This is a blog about technology, innovation, and change. I hope to take stock of what are some incredibly interesting times, both on a personal level and a global level.

On a personal level, I just finished my first year of b-school at Columbia. It flew by. Although I’ve been exposed to a lot of ideas, I haven’t really internalized all the great stuff I’ve learned. In part, I hope to use the space here to solidify some useful concepts by applying them – when appropriate – to the world of technology ventures.

It just so happens that I recently started to program at a coding school called General Assembly. I’m interested in technology but don’t have a computer science or engineering background. So I’ve decided to plunge into tech by learning some of the languages and frameworks that power the web: HTML/CSS, JavaScript, Node, Ruby on Rails, Angular, among others. In this blog, I hope to share, think through, and hone “granular” concepts that will initially seem difficult or novel to me.

But if I’m a business student, why am I learning to code? It’s a valid question, and one that was asked a lot by my classmates who are on their way to top consulting and finance firms. Here’s my take.

On a global level, technology is having an unprecedented impact. Of course, technology has always had a huge impact in the world. This time around, however, the ensuing change will be more diffused and profound than ever before.

Smartphones will account for over 50% of all cell phones within the next decade. A billion+ people who have never had access to a computer or been connected to the Internet will soon come online. This means that business models and industry structures in every corner of the world will be completely redefined. It’s already happening in the US. On balance, this is a good thing.

Today, most businesses outside the software industry consider technology an ancillary support function. Indeed, technology is often relegated to a musty “IT Department,” operating as a cost center. But the businesses of the future are baking technology into their core operations. Is Uber a transportation or tech company? Is Airbnb a lodging firm or a tech firm? The lines that divide technology firms and traditional businesses are being blurred – quickly.

Going forward, having a team of software engineers and UX designers will become the business norm. To be effective, future business leaders must be able to communicate, challenge, and empathize with their developers. Understanding the flow and logic behind the codebase will become as important as being able to read and analyze financial statements.

Too many outside Silicon Valley still find these assertions to be outlandish. My hope is that this blog helps you think otherwise.