Programming & Barriers to Entry

January 25, 2012

Nerd

I was thinking about how hard it is to get into various aspects of programming, and wondering why. I decided to jot a few of my own perceptions & personal hang-ups because I’m curious if these are common. 

Command Line Environments

I think of command-line as a necessary evil. Buy why? Breaking it down, I’m a programmer. I write code. In a sense, can’t you kind of think of what I do as a huge, compiled command-line environment (it’s a bit of a stretch, but bear with me for analogy sake)?

So why the aversion? I think I finally figured it out. Intellisense (or lack thereof).  Ctrl-spacebar is my friend. It’s what I’ve grown to love. Typing /?—>enter—>up-arrow—>space—>command-I-really-need is a bit of a PITA. It feels like a clunky waste of time.

Maybe my problem is that the majority of my command line experience has happened in the start—>run—>cmd window, which has caused me to think of it as a necessary evil? Is there a better environment? I don’t know. I haven’t had to know.

Maybe my problem is that because I started as a web dev, I never had to embrace creating a “quick & dirty” console app to try stuff out because I always had some test page with c# code-behind available as a test bed? Creating an API magically made me MUCH more tolerant of consuming APIs. Maybe the same would happen if I had grown up using console apps as my test beds?

Maybe my problem is that I just don’t think the command-line way? Caleb Jenkins swears by SmartGit. Maybe our brains just work like that (preferring nice ux experiences over command line experiences). Is it a trained thing? Is it something you just get used to & start thinking that way after practice? I don’t know.

What I DO know is that I’m now realizing my aversion has affected my enthusiasm to expand my horizons in certain areas. I’ve never tried Git. I’ve never pulled from GitHub. This is something I’d be perfectly fine with (we don’t use anything command-line at work), if it weren’t for 2 things: 1. the unabashed enthusiasm for Git in the programmer community (especially around open source), and 2. my belief that learning different approaches / languages / implementations / tools expands comprehension.

Ruby

Macs. That’s what I relate to Ruby. This is a HUGE barrier to entry for me because I don’t have a Mac, and I don’t see myself getting a Mac.

Don’t get me wrong – I have nothing against them. Macs are awesome. I came from a Mac. I bought a PowerMac when I started my graphics career in Photoshop WAY back in the day, but holy COW they’re expensive, and I have a family. I don’t see Mac ownership in my future, and my impression is that Ruby is written on a Mac.

“But surely you’ve HEARD that Ruby CAN run on Windows?”

Sure, I’ve heard that. But have you ever been around Ruby communities? I’ve seen a LOT of Ruby devs at Dallas Hack Club & CodeMash. Let me put that differently. I was one of the only devs in the room on a PC more than once. Macs. Everywhere. Barrier to entry in my mind.

Vim

From vim.org: “Vim is a highly configurable text editor built to enable efficient text editing.”

I LOVE what Visual Studio does for me to make me more efficient & resourceful without having to rtfm. It seems like 200 steps backward & zero steps forward to me, in terms of productivity potential.

Why in the world would I want to write code in notepad? That is all.

What is this ”Dallas Hack Club” you speak of?

Improving Enterprises sponsors a cool, not-your-run-of-the-mill user group meeting called Dallas Hack Club. In a nutshell, I’d say 12 to 20 programmers, on average, show up once a month to pair on a kata. It doesn’t matter what language you pair in as long as you & your partner are using the same language. I’ve paired in c# & JavaScript. Many (most) pair on their Macs in Ruby.

In my experience, it’s the scariest room EVER to walk in to for the first time (especially when you’re not even familiar with testing because that’s not something supported by your place of employment) but also the most rewarding. Not only have I found it to be delightfully mind-expanding, but the guys who run it (Matt Florence & Amir Rajan, creators of NSpec) are unbelievably helpful, open-minded & brilliant. Here’s a good example of their attitudes (they’re both this awesome):

image

Tweets that Caused this Post

image

I’ll be honest. I ignored Amir’s first Tweet, thinking Amir mistakenly directed it at me, as I’m not a Ruby dev.

After the 2nd one, I sent him this private DM (because God forbid I admit my ignorance like that in public haha):

image

Ruby for windows will work just fine? I’ve never heard anyone say that. Aww crap. I’m comfortable with not knowing all technologies. I have enough to learn around my c#-centric web stack bubble. Sure I want to learn more. I live to learn more, but I have PLENTY to learn without taking an interest in this perceived mac-environment language. 

“Embrace the Uncomfortable”

#3 from the “12 Resolutions for Programmers” that was going around Twitter this holiday season has really stuck with me. “Embrace the Uncomfortable.” I really, really like that one. There are so many barriers to entry in programming, that insecurities magnify to the nth degree. Every time I’ve thought of that line of advice during a crossroads, it has helped me to feel more empowered to make the harder decision, almost as if it’s a mission statement that gives me purpose for not retreating into competence.

Conclusion

I don’t really have a point (hence the weak section header), other than to expose some of my own perceptions & hope to be proven wrong =). I really enjoy stretching my mind around different paradigms. It helps my troubleshooting / problem solving skills & expands my tool belt.

Although I can definitively say I will not be choosing Ruby (or probably even coffeescript) to pair in at THIS Tuesday’s meeting, I can assure you I will be paying much more attention to, and asking more questions around “Why Ruby?”

And who knows, maybe one of my future posts will be on, “Why I chose Ruby to solve this business problem.” …or if nothing else, we might convince someone (Amir?) to submit a precompiler talk next year for Codemash entitled “A Ruby primer for C# Devs: Yes, you CAN do it on Windows.”

8 Comments on “Programming & Barriers to Entry”

  1. Jeff Says:

    Great post! I your points were spot on, and I feel the same way with all the languages and environments I’m not familiar with.

    Reply

  2. Greg Vaughn (@gregvaughn) Says:

    I see this as two primary development mindsets. There’s the unix-y mindset embracing command line and intense individualized customization (I’d hate cli without my tweaked tab-completion). The unix-y mindset brought us open source, www, agile etc. Then there’s the windows-y mindset embracing gui-apps that you never need to leave and curated standardized features. The windows-y mindset has earned a lot of money for a lot of businesses.

    The ‘barrier’ you see is more philosophical than tool driven. Things get interesting when unix-y and windows-y meet.

    Reply

  3. Latish Sehgal Says:

    As a programmer, I think whatever can be automated in my workflow, should be. The more you automate, the more productive you are. After all, time is the most precious commodity. Any time that you can save from mundane repeatable things can be devoted to learning more interesting things, or with family and friends.

    Writing commands or batch files for the command line might not as intuitive as C# in VS, but you have to do that just once. Once you automate something you will get its benefits for a really long time. Also, there are a lot of options. Cygwin is much more powerful and feature rich than the vanilla windows command prompt, or perhaps you can use Powershell and reuse your .net knowledge. That can even get you intellisense (http://stackoverflow.com/questions/1494607/can-i-get-intellisense-in-powershell). I am trying to be a Cygwin person myself, because I want to develop my cross-platform skills.

    +1 for Git (or any other DVCS like Mercurial). For me, this again ties back to faster speed (because you commit locally instead of over the network), and ability to keep on working (viewing diffs, history) even when you are not on the network. There are a lot more reasons to use Git and Dave O Hara is speaking at the C# SIG in Feb about it in case you interested.

    Macs have awesome hardware. Are they overpriced? Yes. But I tend to compare by value provided rather than the cost of a commodity (especially since I spend anywhere between 60-120 hours a week on my computer). If you do not like the Mac OS, you can run Windows just fine on a Mac. But, you do not need a mac for working with ruby. You already mentioned this, but Amir does all his ruby work on windows. I know a bunch of other tweeps who do this as well.

    Have you looked at the VsVim or Viemu extensions for VS? You do not have to step out of VS to take advantage of the Vim workflow. The regular Vim editor would be a replacement for Notepad, not for Visual Studio (though some hardcore people do that). Vim has a learning curve, and I forced myself to adopt it since I do not have a Unix-y background. I am still a beginner level user, but I love it and I refuse to work without it. I even use the Vimium extension in Chrome.

    Matt and Amir are easily 2 of the smartest folks I know, and you can’t go wrong in hanging out with them. Kudos to you for embracing the uncomfortable. I know it is a really hard thing to do, and need to do more of it myself.

    Reply

  4. Mike (@moran742) Says:

    Great article. I wanted to comment some on your observations on Ruby. Your thoughts on Ruby and the Mac world certainly ring true. Try watching any of the countless Ruby and/or Rails videos on the web, and I doubt you will find one that doesn’t have a presenter with a MacBook Pro open sitting on a lectern. I flip between Mac and Windows almost every day. I like them both and they both have their strengths and weaknesses. I learned Ruby on Windows. It was easy. I used the awesome Ruby installer from RubyInstaller.org to get started. Let me say how easy that was and what a GREAT job those folks have done of lowering the entry barrier to Ruby for Windows users.

    On the flip side, I recently upgraded to a new MacBook Pro, and spent a hellish few days getting Ruby installed. Macs do come with Ruby pre-installed (1.8.7), but who doesn’t want the latest and greatest? So I learned RVM, and finally got going only to find issues with RVM and permissions/Gems down the road. And apparently I’m not alone…just check out the comments on this simple tutorial aimed at Ruby newbs: http://net.tutsplus.com/tutorials/ruby/singing-with-sinatra/

    Back to the drawing board I went. Later I was introduced to rbenv and ruby-builder and within a minute was up and going with the latest version of Ruby. The issue I have is that I spent countless hours trying to update Ruby on my Mac….so all those devs you see using their MacBooks are definitely not eager to fess up that Ruby development on a Mac can, at times, be less than ideal.

    There can be a lot of noise in the Ruby community about the “latest and greatest”, which is extremely distracting to those just learning. Between writing tests, using GitHub, and what database is the most trendy at the moment, it can be downright exhausting. But you have to tune that out. You don’t need to know how to use Git from the command-line, you don’t need a Mac or TextMate (Don’t get me started), and you don’t need to know MongoDB or the latest testing suite.

    So what do you need? An inquisitive mind, discipline, and the willingness to experiment. On Windows, you need Notepad and Start > Run > cmd > Enter. Try working through something like Learn Ruby The Hard Way by Zed Shaw (A guy with a lot of common sense) or Everyday Scripting With Ruby by Brian Marick.

    I hope you give Ruby a shot on Windows. It is really a pleasant experience. I know it’s intimidating to show up at a meetup with the only windows laptop, but don’t be afraid/ashamed of doing so…the code: puts “Ruby is awesome” works the same way on Windows as it does on a Mac :)

    And for all the jerks on Macs…._Why used Windows XP as a development platform…so that’s all I got to say about that.

    Reply

  5. Maggie Longshore (@MaggieLongshore) Says:

    Awesome post. I’ve done the ruby koans on windows a few times (first at CodeMash of course) and that’s proven sufficient for me to pair with a ruby dev on a kata as I have at a Code Retreat. Of course the more your pair, attend presentations that use ruby, etc. the more you pick up. I often attend our local ruby brigade to soak up knowledge.

    Don’t let not having a mac hold you back. I do not have one and also do not see me spending that much to buy one. I do not feel inferior when I pull out my big clunky windows laptop in a room full of macs. I like my laptop and Windows 7 and C# – besides I have so many cool stickers from CodeMash on it;)

    Reply

  6. Barry Forrest (@bforrest30) Says:

    Interesting post. I’ve put together some of my observations -> Programming & Barriers to Entry – Improving.Me http://bit.ly/xTSimC

    Reply

  7. Brandon Pugh Says:

    Great post! You echoed my sentiments exactly, except for part about vim since my first programming course C programming on Unix and I was hooked ever since. I would also recommend using VsVim for Visual studio as way to get the best of both worlds.

    My first ever community event was the Code Retreat this past December and it was definitely a bit intimidating but so worthwhile and now I’m hooked and looking forward to my first Dallas hack club meeting this Tuesday. I’ll be at least one other C# dev there since I’m also in a position where I don’t get a lot of practice with unit tests and feel like that should be my first focus.

    Anyway, its always nice to get that “glad I’m not the only one” feeling.

    Reply

Trackbacks/Pingbacks

  1. Programming & Barriers to Entry: More Thoughts « Truncated CoDr's Blog - February 3, 2012

    […] 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 […]

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: