Programming & Barriers to Entry: More Thoughts

February 1, 2012

Learning, Nerd, User Group Meetings

I’ve never seen a turnout at Dallas Hack Club like this past Tuesday night. What an awesome & diverse group of developers. Pairing languages included Ruby & C#, and even an F# & a (first time at Hack club) SmallTalk pairing.

13ghf73lds

As fascinating as Hack Club Meetings always are, the different languages made the demos even more fascinating (after coding for a couple of hours, each pair demos their approach/solution). One demo was done in a SmallTalk IDE (because, as we learned, Smalltalk doesn’t lend itself to pasting code into Gist or Pastebin for the demos, like the other languages).  Although I’ve heard Smalltalk mentioned in reference to someone’s programming past, or citing parts of its historical influences, I’d never seen Smalltalk syntax or the Smalltalk IDE before. Super-interesting.

My first dip into Ruby

I have a “What’s this Ruby thing all about” itch I’m trying to scratch, but I clearly could not even think about pairing in it at this stage, so when I arrived, I asked Greg Vaughn if I could play 3rd wheel & watch him pair while I tried to wrap my head around it.

I decided to install Ruby. Here’s how that went down:

Thoughts in my head (be sure to read it with a big echo): “Didn’t I see a Tweet from @AlanStevens that he used Chocolately to install Ruby? I’ve been meaning to catch a session on Chocolatey.. isn’t it supposed to be like NuGet for your Windows OS? I wish I hadn’t missed that session at Codemash – I wonder if it was taped? I really need to listen to that Herding Code about Chocolatey. Hrm. I’ll look into that

Me: “Has anyone used Chocolately? How do you install it?”

Another Hack Club attendee: “I think through NuGet

My echoey thoughts: “Through Nuget? Do I have to create a project to install Chocolatey then? That’s how I access the non-command-line NuGet.. hrm, let me try that. Ooh getting that code smell I’m going down the wrong rabbit hole… back up, just do the installer. Ok, that was easy. It says it’s installed. Ok… ummmm

Me: “So, now what? How do I run it or open it?

Wow, that was a REALLY hard question to say out loud. This clueless person I’m projecting is NOT a persona in my comfort zone.

Greg Vaughn: “What IDE do you like?

Me: “Visual Studio.

Greg: “I think there’s an extension for Ruby

So we floundered through that for a few minutes before someone recommended the 30-day trial of RubyMine by JetBrains. So I installed RubyMine, went to the HackClub dropbox & opened Greg’s “rover.rb” file. During this time, I asked Greg many questions to get my head around all of it.

Me: “Um ok, now what? I hit the little green “play” button in RubyMine & it said no errors.

Greg: “Oh the only output you’ll see is from the tests. Go to command line & browse to the folder & type “rspec rover.rb.

Me: “It says rspec is missing. Did you copy all the files up to the dropbox?

Greg: “It’s a (Ruby) Gem. You have to install it. Go to command line & type, ‘gem install rspec’

My echoey thoughts: “Wow, that was easy. Seriously, that’s all I had to type? Interesting. Hrm. this is taking a while though.

Me: “It’s just sitting there.”

~4 different Ruby devs: “Yes, it just sits there & takes a while sometimes.”

My echoey thoughts: “Ok, it’s done. I’ll try the ‘rspec rover.rb’ command again.”.

Me: “Greg, it seems to have run this time, but I don’t’ see any results.

Greg: “You have to add –f d for ‘full debug.’ That runs test and prints full test results, instead of just the ones that failed. Hold on. I’ll add an .rspec file with that in there.

Me: “Ok, \? isn’t working. How would I figure out what switches to use on my own?

Greg: “Ruby came from Linux. They use -–help. \? won’t work.’”

My echoey thought: “Seriously? WTH. Why am I doing this to myself? Hrm. I didn’t come from command line anyway. Maybe this is normal or maybe I’ll have LESS baggage as a result? Let’s see how this plays out.

Greg: “There. I added the .rspec file so just run ‘rspec rover.rb’ again.

So of course, I had to open the file to see what was in it because I was curious. It was just called .rspec. Lo & behold, it was literally just a text file that had “-f d” in it. (I then inquired on what the .idea folder was that had 7 files in it, including a .name file, an .iml file & 5 .xml files, and was told that was a RubyMine thing.)

The rest of the time was spent looking at the Ruby syntax for a while, before moving a row back to look at the CoffeeScript kata Matt Florence had done but I hadn’t run because when he tweeted this gist a few days prior, this is what happened to me:

My echoey thought: “What is a gist? Oh It’s on Github. I must need to pull it down with command line [barrier to entry – red flag]”

It turns out Gist is really just a good online clipboard to paste & share code, much like pastebin, but I didn’t know that before Tuesday’s Hack Club. I clicked on it anyway & was greeted with these comments at the top of the gist:

# node, jasmine, coffeescript, and rake installed/configured using

# steps outlined at this website:

# http://brizzled.clapper.org/id/117/index.html

 

# gem install guard

# gem install guard-shell

# guard init

# then put the following in GuardFile

# guard :shell do

# watch('.*') {`rake`}

# end

My echoey thought: “? ? ?

I then listened to some Ruby devs discussing one of their real-world problems at work that had to do with the best way to parse an xml file or a dom in Ruby. We all have those questions. Yay.

Some Perception Changes:

The great responses on my previous post made me take a harder look at the many, many Macs in the room. I think all but Greg’s were actually running Windows. I had no idea.

Working through the initial, intimidating Ruby install with people around me who could help guide me through enabled me to feel like now I actually could run Matt’s sample with the comment instructions pasted above. Progress!

One More Surprising Finding

Someone I haven’t talked about is Greg’s Ruby pairing partner, Richard. (All I know about him is his first name because he’s not on Twitter =P) His story was quite interesting. The reason he got into programming Ruby was to become a better software tester. Wow! I’ve known testers who learned a bit of SQL for DB testing, but never any who learned a programming language for software testing.

That kind of blew my mind, to be honest. It made me really think about the people I love to work with the most. Then it made me think of people I’ve enjoyed working with the least, and remembered a Business Analyst I used to have to pull data for ALL THE TIME because she refused to learn anything other than Excel (“if they’re not paying for it, I’m not learning it” – seriously? Even if it can make your life better & you can stop making others write queries & create exports for you? Sigh.). She’s the reason I learned in ~2002 there was a 65,000 row limit in a single Excel Worksheet. No one should have to know there’s a 65,000 row limit in Excel.

Mad props to Richard for stretching so far beyond just learning standard QA tools to the extent that he’s actually attending Dallas Hack Club to practice Ruby & do code katas. How inspiring & very cool.   

Quick Note on Git & Command Line

Tonight (Thursday after the Tuesday Hack Club meeting), I was able to attend David O’Hara’s talk on Git at Dallas C# SIG, and I have to say, it was very compelling. He did an excellent job of thoroughly explaining Git fundamentals & concepts. Fortunately, Shawn Weisfeld was there taping it, so I’ll update this post with a link to David’s talk when it’s posted to UserGroup.TV.

Watching how fast David FLEW through that console was impressive, but his enthusiasm for Git was inspiring. Watching someone who’s as great at public speaking as David is always fun, but seeing great speakers talk about a topic they’re passionate about is a pure joy. He seriously LOVES Git.

I can honestly say I’m starting to feel less… I don’t know if intimidated is the right word… much less repulsed by command line after this week’s meetings than I ever have before.  When I got home, I then got into a discussion with my husband about how he felt the same way about command line years ago, until he had to learn Unix for his job & even his eyes lit up talking about how much he just loves it & feels at home in it.            

Exposure & Opportunities

Mike(@moran742)’s message in response to my Programming: Barriers to Entry post really resonated with me. He said, “So what do you need? An inquisitive mind, discipline, and the willingness to experiment.

Different people learn in different ways. There’s nothing I love more than to be surrounded by people who know more than I know. The exposure to amazing, diverse & knowledgeable people who are so very helpful that the tech community makes available is incredible.

Learning that it’s ok not to know everything is powerful. Discovering the support in the Tech Community for those who try is motivating. Although I’m sure it would take me working in these technologies for my job to become prolific, I’m surprised at how fast I *am* warming up to & feeling comfortable with these areas that I’ve avoided for so long. In a few hours, I went from, “whoa no way” to “I could / I can.” Who knew Embracing the Uncomfortable could be so interesting, fun, AND rewarding? But for now, I will put my full, swollen brain to sleep. It needs to digest this stuff & prepare for more.

And that, my liege, is how we know the earth to be banana shaped. –Sir Bedevere

imageimage

6 Comments on “Programming & Barriers to Entry: More Thoughts”

  1. Ivan Towlson Says:

    Nice article. I get the same tension between the ‘make me feel like an idiot for not knowing I needed to type “cat ‘-L -rXz’ >bar/.baz”‘ barriers and the ‘wow, well now I’ve got it working, look at me, ma!’ feeling when you crest the last hill and the vista finally unfolds before you. ‘Embracing the uncomfortable’ is a great way to put it. I just did a summer school in comics: it was uncomfortable for me because I can’t draw, but I was put in a situation where I had to anyway, and it was so liberating. Drawing is still uncomfortable for me, but it’s a discomfort I now enjoy embracing, and that’s a tremendously enriching feeling. Without the summer school I would never have overcome that barrier.

    “I’ve known testers who learned a bit of SQL for DB testing, but never any who learned a programming language for software testing.”

    Heh. I started out in the UI design world, but I kept getting thwarted because the engineers didn’t understand what I was asking for or chose to misinterpret it. In the end I learned C++ (this was the era of MFC) in order to build working prototypes for them to follow. And that, my liege, was the end of my career in marketing…

    Reply

    • TruncatedCoDr Says:

      What an honor to get your reply, as it was actually your Hanselminutes episode that introduced me to the term, “Polyglot Programmer,” and had quite a profound affect on me. I think I’ve probably listened to it at least 6 times so far :-)

      How interesting that you came from UI design. I’d love to learn more about your journey into programming if you’ve blogged or spoken about it. I find those stories so very interesting.

      (If you haven’t heard it, Ivan Towlson, @ppog_penguin, lives in New Zealand & worked on Web Workbench, an extension that integrates Less, Sass & CoffeeScript into Visual Studio.

      C#, F#, Ruby & JavaScript were all used to create Web Workbench because the Sass compiler is written in Ruby, the CoffeeScript compiler is written in Javascript, and they wanted to just host them instead of rewriting them for guaranteed Fidelity with the original compilers.

      To improve performance with syntax highlighting & Intellisense in real time, they wrote their own parser / highlighting engine using F# because of power of ASTs (abstract syntax trees).

      Ivan has a GREAT blog post on “Polyglot Programming – Some Lessons Learned

      Reply

  2. Greg Vaughn (@gregvaughn) Says:

    The pedant in me wants to correct a couple of minor things, but I won’t :-) They don’t detract from your honest writing showing your enthusiasm and trepidations. Thanks for sharing.

    Reply

    • TruncatedCoDr Says:

      Please, by all means, correct me.

      I recently heard someone say “look for a mentor no more than one or two levels above you because they remember where you are.” I found that to be very interesting advice (although clearly, I don’t follow it :-P) because I am horribly guilty of assuming that once I’ve crossed an understanding threshold, somehow everyone else understands everything I now grok, no matter how hard I might have found a concept at the time. I am hoping to look back on my posts in the near future & laugh because I will understand these languages and concepts so much better than I do now.

      I wrote this purely to try to share, remember & to learn. If I’m not exposing my ignorance & perceptions to learn, I might as well just pack up my laptop & get some sleep, so PLEASE, in the spirit of learning, feel free to clarify & correct me :-)

      Reply

  3. Greg Vaughn (@gregvaughn) Says:

    You’ve got a great attitude. I learned long ago that one of the hardest, but most empowering things to say is “I don’t know, would you explain or show me?” Ignorance and stupidity are vastly different, and anyone who doesn’t realize that is stupid.

    rspec -f d is not “full debug”. It’s actually a shorthand for –format documentation. Very minor point.

    I was also going to have fun with the 65,000 row limit of Excel. It’s actually 64K, right?

    While I don’t dispute that I may have been the only Hack Club attendee running Mac OS X, the ratio would have been reversed in other contexts, such as Dallas Ruby Brigade. There it is likely that anyone without Mac hardware is probably running Linux on it. Ruby on Windows is still quite niche, but it’s a growing one and a great way to reduce the barriers to entry for Windows developers.

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: