<< Almost Phished! Phony Ebay Buyer Email Scam | Home | LinkedIn - Blessing or Curse? >>

Scott Hanselman Knows 6 Things

posted @ Monday, July 09, 2007 11:09 PM

OK, so that might be the understatement of the millennium.  I'm not sure how many things Scott knows cumulatively, but I think he's fast approaching technological Nirvana.  He recently followed up Dare Obasenjo's post Three Things I Learned About Software in College by listing his 3 things, and then 3 more things he learned while NOT in college (he's always showing off).  I thought it was an interesting thread, and felt like chiming in. 

Long side story coming - please feel free to skip down to my 6 things!  First, let's get it out of the way that I was not a CIS major.  My high school "guidance" counselor gave me some profound advice that went something like this:  "you seem to get good grades in math - you should major in engineering, and here are some brochures of good engineering schools."  I thought she must know what she was talking about.  (Why wouldn't a late-50s woman with administrative experience be able to help a college bound junior make tough life decisions??)  After getting accepted to some pretty good engineering schools, I had a last minute freak-out that I was signing up for years of mechanical drawings, pocket protectors, and spending most of my waking hours in green and white, concrete-walled labs with machinery, computers, and white-coats.   I was obviously over-reacting a little, but the fact was I didn't know WHAT I was signing up for, and at 18, it seemed like engineering was an awfully geeky, non-creative job (yes, I have since changed my opinion, and if I knew then what I know now...  well, I'd probably be a surfer-geek like Rob Conery).  So, I went to school as a Film major, and enjoyed aspects of it, but as a commuter (another mistake - kids, get away from home!!!  PLEASE!!!) I never really felt like I found a community where I could work on stuff that inspired me.  So, I took a year off to regroup.  My dad got me a computer and hooked me up with this nifty thing called the "interwebs" and I was hooked.  I got into designing (I use that term very lightly - we are talking first generation web sites - animated GIFs galore) and building web sites.  I looked at switching my major to CIS, but it seemed like the only way to do so was to submit to 4 more years of schooling (I was 2 years in).  So, I kept my Film major, but filled every possible elective I could with CIS classes, got an internship at a web startup, learned Perl, Javascript, and Java.  By the time I graduated, I had fallen in love with programming, and become pretty disillusioned with the film making world. 

So.  3 things I learned about software in college (the film major's edition):
  1. There are 2 kinds of programmers:  those who get it, and those who don't - and unfortunately the latter group greatly outnumbers the former.  This is not news to anyone who gets it.  But it was a bit of a shock to me when programming came more naturally to me than it did 90% of my classmates who were CIS majors.  A continuation on this lesson is that being on a project with the latter group of programmers is horrible.  I often found myself asking my professor if I could turn in two projects - one that I did all by myself, and one that I did with my team.  The tough thing about the "non-getters" is that they just aren't ever going to get it.  So try as you might to help them, Don Quixote, you are tilting at windmills
  2. Learning to program is a never-ending series of paradigm shiftsI learned this in my first CIS class. I was staring at a homework assignment regarding pointers in C, thinking "what am I doing taking CIS courses!??!"  My professor, an Italian guy with a great accent, and told me pointedly, "Don't worry.  Soon, you will just get it."  I probably smiled feebly, but I was thinking "yeah right old man - if I can pass this class it will be the last CIS class I ever take!"  By the next class I was helping all the other students figure out what pointers were and how to use them.  It totally just "clicked" while I was doing the assignment - one second I didn't get it all - the next, I was having no trouble using them.  Many things in programming are like this - the chasm between ignorance and grokkage is deep, but narrow.  Make the leap, and you'll be over it in no time.  (note: many things in programming are also NOT like this!)
  3. If you get it - you don't need a CIS degree.  More succinctly - you will probably learn more of the day-to-day skills you use on your own than you do from a (college) text book or professor.  I learned a ton in the CIS courses I took - essential OO theory and data structures being probably the most implortant.  But I learned as much, if not more, in my part time internship hacking javascript and applets to do crazy things.  This is not to say that having a CIS degree doesn't give you a great foundation to build on, and can really save you when you've gotten in over your head and need to understand some low level operating system details or the "beautiful soup" that is TCP/IP.  I just think that if you get it, and - probably more importantly - you love it, you will be successful with or without a degree.

And 3 things I learned about software while NOT in college:
  1. The Non-Getters are everywhere.  After graduating college I turned down a job that would have paid me 60% more than the place where I had been interning was offering.  Part of the reason was probably that I knew I realized I didn't have the "corporate gene" in me.  But a big reason was that it was chock full of technically competent programmers who were just there earning a paycheck, hacking away at legacy corporate code.  Although I could barely pay my rent, I was THE programmer in a 4-5 person shop and was able to try all kinds of new ideas and learn new things.  (Not being able to pay my rent won out, though, and I hopped to another small shop after 6 months, at about what the initial "BigCorp" was offering.)
  2. Being THE Programmer is not all it's cracked up to beWhile it sure is easy to avoid the non-getters if you're the only chef in the kitchen, you'll soon begin to lament the emptiness of your spice rack, and smell new aromas wafting in from the outside world.  "If only I could whip up one of those," you'll say, "but alas, I wouldn't know where to start."  Or worse, you will spend days and weeks experimenting, but just not getting the recipe right (and eventually even small shops begin to notice your decrease in billable hours).  You will never learn faster than when you can surround yourself with a few more of the "get it" crowd.  They don't even have to be super-experienced (although that is a great benefit).  Even someone who is where you were 2-3 years ago, but is on the learning fast track, will inspire you and help you to grow faster and question what you've learned thus far.
  3. Engineering (and Programming specifically) IS a creative discipline.  I would have never believed that I could find a creative outlet of sorts in a screen full of code that could (almost) equal my other creative interests such as music and film.  But a beautiful piece of code, or an application, definitely can be compared to a great film, or a beautiful piece of music.  Every component can be thought of as an actor, or an instrument, that must play its part for the greater whole to succeed.  (full disclosure - if I could figure out a way to get paid similar money to play with musical instruments and Pro Tools for a living, I'd do it in a heart beat.  But, I'm sure I'd be just as frustrated that I couldn't work on my geeky ideas as I am now when I don't play my guitar for months on end.)
Wow, long post.  If you made it this far, you might as well post a comment, or link to your own 6 things!

Comments

  1. Scott Hanselman

    Posted on: 7/10/2007 1:02 AM

    # re: Scott Hanselman Knows 6 Things

    Great post! Long, but worth it.

  2. Brian Donahue

    Posted on: 7/10/2007 2:15 PM

    # re: Scott Hanselman Knows 6 Things

    Thanks, Scott! Yeah, I obviously didn't pay enough attention in my editing classes in film school! I'll be working on that :)

Your comment:



 (will not be displayed)


  Please add 2 and 7 and type the answer here: