A Student’s Thoughts After (Almost) Two Months of Code Year

Earlier this year, I made a pledge to learn to code in 2012. Not only did I make the pledge, but I’ve kept the pledge, generally completing each weekly course within three to four days after its release.

I really am Codecademy‘s ideal student: an extremely competent non-programmer (did you read about how I made my iPhone app?) with a strong desire to learn to code. I’ve attempted to learn programming numerous times before (investing in books, online classes, and continuing adult education classes) without much success. But I’m willing and ready to put in the time.

Even with all the prior attempt to learn to code, it wasn’t until the Functions section of Codecademy’s classes that coding “clicked.” It all suddenly made sense. I finally understood why every class that I had attempted always recommended prior knowledge of another language. I understood where math and algorithms fit into the equation. I understood how a language’s ability to return 2 + 2 impacted a program.

As with any other skill, the more you learn, the more questions you have and the more you realize you don’t know. Codecademy has been fantastic for opening the door to learning to code (so they have succeeded in their goal) but I still see areas where I want to know more and don’t know where to find answers. Maybe these gaps will be filled as the year progresses, but as a student for two months, I wanted to share what I feel some of my thoughts thus far.

Why am I Learning JavaScript?

Codecademy is teaching me JavaScript. But why am I learning JavaScript? I know that courses teaching other languages are on the way, but why start me with JavaScript and not, say, Python? There are countless articles I’ve read about learning to code by starting with Python. The MIT OpenCourseWare class Introduction to Computer Science and Programming uses Python as the language to teach computer science concepts. When I talked to other coders about my desire to learn application development and mentioned starting with Python, the feedback was largely positive.

So why am I learning JavaScript?

Don’t get me wrong, JavaScript is definitely a language that will be insanely useful. And I’m sure the Codecademy team put a lot of thought into what language to teach first. But I’m not educated enough to know the strengths and weaknesses of different languages yet, so I’m just left confused. As I make my way concurrently through the Google Python Class, I’m left wondering Codecademy’s thought process.

How to Use Code in Real World

I’m following along with all the code lessons and projects. I’m understanding the concepts. But how do I actually use this code on a website? One of the very first things you learn at Codecademy is how to create an alert box or a prompt. If I, say, wanted to add an alert or a prompt to this website, how would I do that? Where would I put JavaScript? How would I call the code? How does that process work?

I understand that teaching real world deployment of code may go beyond the scope (or goals) of the class, but maybe Codecademy can point me in the right direction? Or create a bonus project where basic knowledge of HTML is required (or even briefly explained) and JavaScript is deployed. Or at least link me to an example of basic JavaScript in the real world.

I’m aware that the best way to learn code is to look at other people’s code. I often view the page source of websites I stumble upon to see how they work. I now view every link to a JavaScript project that’s posted to Hacker News. But most of this code is still too advanced for me. And I can sort of see how the language is being used in the real world by viewing the page source of websites using JavaScript, but even a lesson or two explaining exactly what I’m looking at would be extremely helpful.

Learning to Think Like a Programmer

Codecademy is great for walking me, step by step, through the process of building an application. The projects are especially great because functionality is added bit by bit until we have a large and functional project built from smaller bits and steps taught in the lessons. But I feel like too many of the answers are given away in the instructions. If I’m told to wite a function that takes a certain perimeter, I can do that. But if I was given a problem without being told which specific tools to use, how long would it take me to figure out that I need to utilize a function rather than an object, a constructor, a switch, or anything else? This is the difficulty of programming.

The Blackjack challenge was great because it challenged the student to think about which tool to use before actually using the tool. At this point in my studies, there is where I need the most help and practice. If even the instructions were hidden at first, in the same way that hints are hidden, it would give me more of a time to think about how to solve a problem. I can build an object or a class with no real problems; my coding errors usually result from syntactic mistakes and are usually easily caught and fixed. Where I really need help is thinking like a programmer.

My Brain Wants More

I’m always extremely excited for a new lesson on Monday, and then sad on Wednesday when I have no more lessons or projects to complete. I don’t know where to turn for more. Not just more lessons but more puzzles, more math, and more related brain exercises.

I’ve started taking the Google Python class in addition to the Codecademy courses. My girlfriend even humored my inner nerd and got me an Introduction to Algorithms textbook for Valentine’s Day. I’ve also been reading a bit through the MIT book Structure and Interpretation of Computer Programs (the full text is available online!).  But should I really be learning two different languages at this point in my studies? All these extra books and classes leave me feeling very unfocused. I have gone, in just two months, from knowledge of zero computer languages to learning computer science concepts with four different languages. I even attempted to start the Try Ruby course at Code School, but don’t feel ready to throw another language into the mix at this point.

I’m basically stuck, because I want to learn more, but I don’t know where to turn. I want puzzles to solve, algorithms to figure out, and a forum to discuss my questions with other Codecademy students (much like the invaluable Q&A section for each lesson and project). This problem may be solved son since  Codecademy is opening up their system to allow programmers to create new classes. However, for the moment, I have a strong desire to learn more and no direction about where to turn.

Codecademy Spoiled Me

Finally, Codecademy has spoiled me rotten. They walk me through concepts, step by step, and let me physically try each step as I’m learning it. Their website shows which lines in my code have errors. Their Q&A help section is amazing, and helped answer my questions every time.

Other courses, such as the Google Python class, now seem cumbersome with all the pausing and switching back and forth between my video player and the terminal. With my textbooks, it’s easy to think I understand a concept and then be completely lost when it’s time to try it out. Or to get lost trying to search the internet for answers when I’m not even sure what question I should be asking.

Codecademy really is changing the way people interact and learn to code. It really has opened a whole new, exciting world for me and made me want to learn more. I also recognize that Codecademy is still in its infancy, and will only grow and become more feature filled over time.

So, thank you Codecademy, for all you’re doing. I can’t wait for more.

★ Permalink to A Student’s Thoughts After (Almost) Two Months of Code Year

Notes to Myself

I’ve been writing myself inspiring or funny notes before going to bed ever since getting myself a large whiteboard a couple weeks ago.

Over the past few days, I’ve really thrown myself in headfirst at Codecademy. Suddenly, seemingly out of nowhere, something inside of me just clicked. It all started making sense. The code started getting retained in my memory. Programming was no longer big and scary, but something I was able to tackle. Something I’d be able to master with enough work.

Tonight, my message to myself is in Javascript (and I’m quite proud).

★ Permalink to Notes to Myself

Forcing Entrepreneurs to Take Time Off: Different Perceptions of Time

There is a great column by Meg Cadoux Hirshberg in the Febuary 2012 issue of Inc Magazine about Entrepreneurs balancing work time with vacation time and spending time with their families. She writes:

The problem isn’t that entrepreneurs find so much family time onerous but that they and their families have been experiencing time differently. Most company founders charge ahead at warp speed, grappling with one huge challenge and momentous decision after another…Consequently, when entrepreneurs take months off from work, they are transitioning not just from fast to slow (slower, anyway) but also from making things happen to experiencing life as it naturally unfolds.

While numerous studies show that taking an extended vacation increases productivity, it just never seems to be the right time to take a break. Entrepreneurs often have multiple projects running at the same time, all progressing a different rates, so there’s always a sense of anticipation and forward movement. When removed from a work setting, the result is not necessarily a sigh of relief. Rather, it’s a feeling of loss. The rushing sensation of time and the ability to influence its course is gone.

It’s the constant feeling of being right on the cusp, right about to accomplish something big. That’s a force powerful enough to warp time. It’s not about refusing to take a sabbatical, but literally feeling like you haven’t been working as long as you actually have. When you’re doing something you love to do, time flies.

★ Permalink to Forcing Entrepreneurs to Take Time Off: Different Perceptions of Time

I Can’t Wait for Facebook Search

As I’ve mentioned before, I’m a firm believer that Facebook is going to enter the search market within the next year. This was all but confirmed this morning when Zuckerberg accidentally(?) leaked a (blurry) image of the (potentially) new Facebook wall. See that huge search bar across the top of the screen? Yeah, me too.

I really think that Facebook has a solid chance of taking a good share of search market, and it’s not just because they have 800+ Million users who spend an average of 8 hours per month using Facebook (that’s four times as long as people spend on Google).

Facebook has something really unique to add to the search market. They have information about what people are reading and what people are sharing. This is extremely valuable information. Facebook can rely on real human interaction with information rather than mathematical formulas based on data usage.

For years, Google has based their search algorithm around links. The assumption is that quality content will have a lot of other content linking to it. The more links a website has, the higher up it goes in the search result. And the more links to websites with the links, the more weight those links carry. This is the (simplified) formula that allowed Google to grow to the behemoth it is today.

But this system is easily gamed. Anyone with a few bucks can get an article spinner and mass link submitter, and, with a little bit of research and work, get a website to the front of Google. While we can argue the ethics of such practices all day long, the fact remains that Google can be gamed and people will come up with new ways to trick Google every time the search algorithm is tweaked. This is because Google is based on math and people will always be able to come up with complimentary math to arrive at their desired results.

Basing a search algorithm around what content is being shared completely avoids these pitfalls. Getting people to share an article is infinitely more difficult than accumulating backlinks for a website or article. While SEO blackhatters may try to create a large number of Facebook accounts to share a single page, this would be a much more time consuming task and extremely easy to catch and stop.

If you’re worried about Facebook search results being tainted by the uninformed masses, you may be thinking a bit too small. Real quality control can emerge from any sort of content sharing, in the same way that I mindless ant can create an intricate nest when part of a colony. When done correctly, social search will show only fully vetted information and not simply a timeline of lolcats or misinformation.

Social search is a different philosophy of search, that can enrich the search ecosystem with a new way of exploring information. It can bring real competition to Google by doing things differently, and serving unique and relevant information that rivals Google’s results. No other search engine has been able to find this balance thus far. In providing a viable alternative to Google, it will force Google to improve their algorithm in brand new ways. The world of search will improve.

I’m not advocating switching completely to Facebook’s search once it’s live. In fact, I think that would be incredibly detrimental. Value will come from using multiple search platforms, reading and exploring information, and extracting value. As long as Google doesn’t eat it’s tail with trying to mimic Facebook (*cough* Search Plus Your World *cough*) the Internet will be a better place with Facebook search.

★ Permalink to I Can’t Wait for Facebook Search

Charting the Future of the Web

A wonderful article on nil&far proposes an answer to the pressing question of where the Internet is heading:

If you want to know what’s next for the web, look at where the interface is changing.  Listen for where non-technical people say, “There is too much going on!  Who can make sense of it all?”  That’s exactly the cry the founders of companies like Pinterest, Evernote and Tumblr are answering.  These companies mark the dawn of what I call the Curated Web.

We’re witnessing the Internet turning completely upside down. What used to be singular content broadcast to many is now becoming a plethora of content curated for one.

It’s all about the individual’s experience and finding ways to harness tons of information into an easy-to-swallow pill of personalized information.

But how far is too far? Facebook is doing this by customizing newsfeeds to give priorities to certain friend’s updates. Google is doing it by rolling out Search Plus Your World. Both provide custom tailored experiences from large amounts of data. Both also leave out tons of other valuable information.

The challenge of the future will be finding the sensitive balance between making sense of all this data and avoiding content censorship.

★ Permalink to Charting the Future of the Web

Google Flailing Wildly as Facebook Nears IPO

Facebook could be filing the papers for its initial public offering as early as next week. Many analysts are arguing over Facebook’s possible $100 Billion valuation and the company’s potential for future growth. All while Google is hunched in a corner, teeth out, and growling.

On January 10th, amid much controversy, Google announced Search Plus Your World. In addition, Google now requires all new users to sign up for Google+. Google is also revising their privacy policy, allowing all their separate apps to share your information. Those are a lot of changes in a short period of time.

While Google and Facebook are two completely different companies in terms of user experience, they’re actually extremely similar in a business sense. Both make their money off of advertising to users. It is often forgotten that Facebook and Google are not products made for users. Instead, users are just a part of the product that’s being sold to companies.

By this token, both companies take two separate approaches to providing experiences and retaining users. Google is all about serving people the information they want. Facebook is about the social discovery of information.

The crux of the argument, then, is which approach is more valuable?

Judging by Google’s recent changes, Larry Page believes that social discovery of information will monetize better. Search Plus Your World gives your Google+ friends a say in your search results. Having every Google app talk with each other, as per the new privacy policy, provides more of an incubated, Facebook-like, experience. There are even rumors that gmail and other apps will soon be aspects of Google+, in much the same way that messaging is part of the Facebook experience.

In my opinion, Facebook has only begun to monetize their user base of >800 million active users. The next big step for Facebook will be entering the search market, becoming a direct competitor to Google. A search engine based on most shared pages rather than most linked to pages will provide a completely new experience, and would definitely steal a significant portion of Google’s market share. Users already spend a large amount of their time on Facebook. The introduction of a build in search, one that provides an alternate search experience (rather than a reproduction of Google’s search algorithm), could be bad news for Google.

Google is making the wrong move by becoming more social. They should be focusing more on being open and serving unbiased search results. The threat of Facebook search is very real (I predict that it will roll out within a year of Facebook’s IPO) and Google is flailing in response. Google should be focusing on ways to differentiate themselves from their competition, not mimicking them.

Google, it’s time to man up, stop trying to copy Facebook, and focus on the user.

★ Permalink to Google Flailing Wildly as Facebook Nears IPO