The end is here

Ok, I have finally reached the end of the Flatiron School curriculum, and I’ve saved my last of seven FS blog posts to commemorate the occasion.

Looking back, it’s been a great journey and I’m amazed at how many new things I’ve learned and the range of skills I’ve picked up. I’d say I’m pretty happy with this list of knowledge I’ve acquired:

  • ACE Computer Camp
    • BASIC
    • Java
    • C++
  • Stanford University
    • Java (cont’d) – algorithms and data structures
    • C – machine architecture (registers, I/O, basic assembly language), memory models (pointers, memory allocation, data representation), compilation (stack frames, semantic analysis, code generation)
    • Systems (processes, file systems, networking)
    • Mathematical Foundations of Computing
  • Flatiron School
    • HTML and CSS
    • Ruby (procedural and OO, Sinatra, Rails)
    • SQL, ORM
    • JavaScript (React, Redux)

And proud of my portfolio projects:

  • Star Wars Comics
    A command-line interface for exploring Wookieepedia’s list of canon Star Wars comics.
  • PetSitter
    A proof-of-concept app for scheduling sitters for your pets!
  • Subway Scheduler
    Again, a proof-of-concept app for storing your favorite addresses in New York City and for finding the best public-transit route between them. Uses Google Maps’ Directions API.
  • Subway Scheduler (JS)
    The same as the last one, now with JavaScript. Dynamically changing pages, oh my!
  • NYC Renters’ Toolkit
    All the information a renter needs about their home in New York, all in one place. Uses the vast trove of publically available data at NYC Open Data.

I was particularly happy with the last project, which combined all I’d learned at Flatiron with my passion—gleaned from my wife, who represents low-income people in the Bronx in their eviction proceedings—for keeping people safe and happy in their homes. I was emotional when I received the following tweets from Finley Bomer-Lawsome (former Business Development at Flatiron) and Avi Flombaum (Co-Founder, Dean, and Chief Product Officer there):

What programming language should you learn?

When I started my career in programming, I was 10 years old and enrolled in a summer computer camp called ACE. I didn’t get to decide what to learn, I followed a strict curriculum: BASIC, Java, C++, with a little HMTL thrown in on the side.

If you’ve made the choice to become a programmer today, though, it seems like it would be so difficult to figure out where to get started…

And man, there are a lot of ways to go about figuring that out. If you search “What programming language should I learn,” you’ll probably find cool images like this one:

Image: http://carlcheo.com/startcoding

Or, you might come across people with very strong opinions like this one on why you should only start with JavaScript. There are also a lot lists, such as “The 9 Best Programming Languages to Learn in 2019,” or “Best Coding Languages to Learn in 2019” (hmmm… such similar titles!). You might even find a quiz!

All those things are going to pose a lot of questions to you about what kinds of projects you want to work on, what field you want to get into, or even how much money you want to make. And of course, those are all very important considerations to make.

I feel like one thing often gets lost, though, when thinking about real beginners: what kind of learner is he or she? How is a true beginner really supposed to know whether they want to get down into the mallocs and pointers with C or abstract everything away with Python and Ruby? Doesn’t it depend on how his or her brain works? I feel like it was good for me to work from the ground up, abstracting as we went, probably because I really like knowing the how and the why of things. Others probably don’t care about that and just want to get to the cutting edge as fast as possible.

I could be way off here, but there needs to be a better way for us to help programmers get started than just telling them what the “best languages” are. And I don’t know what the answer is here, or how to do this practically, I feel like we need to take a closer look at where a beginner is coming from, not just where he or she wants to go.