Skip to main content

Learning a New Language

Today I'm going to share something about myself that most developers probably don't want to admit about themselves, but I suspect I'm not alone.  If I'm not alone, this might be able to help someone, so here it is.

I find that the hardest part of learning a new language is starting.  I find that my competence in most languages follows a curve along time that looks like this.
This demonstrates that the really challenging parts of the language are early on.  When first starting out with a language, it usually takes me a crapload of time just to get to the point of a working "Hello World".  Now there are exceptions to that rule (Ruby comes to mind), but I find that this early time is important to my understanding of the language.  I am learning compiler/parser tricks and understanding little nuances like the need for semicolons, or that every method must be in a class (C# but not C++) even if namespaces aren't necessary to get the application to compile.

I'll admit, I find this slow progress time to be extremely frustrating.  I like to see the progression of my skills, and when I can spend 5 minutes in C# and learn some major defining principle or spend 5 minutes in assembly and learn whether to use a backtick(`) in a certain location it seems like very minimal progress and can grind on me over time.

That said, there are times, like now, when I'm in the zone of slow progress.  I'm ok with reading 10 pages of a book and typing 8 lines of code.  I feel like I'm growing as a developer in just as many important ways.  Still, it would be nice to writing some complex GUI and spending more time learning about UX tricks, but that doesn't make this less nice.  This is more of a zen coding feeling.  I'm very mellow as I read little lines of stuff and understand everything about them, wrapping my head around each side of everything before moving forward.  If learning == enlightening, then this could be considered a feeling of enlightenment.

Still, it's important that I note here that this feeling was not brought on by some mysterious magic.  I didn't drink some magic energy drink or sit under a tree for months.  This was brought on by something much simpler than that.  My home laptop has become unusable for some reason or another.  For the past 2 months I've been saving up for a new one, a really nice one.  It's exciting, but it's also painful.  I've spent 2 months unable to code at home, which is a big part of my release and so I've been stressed, pulling my hair out in agony thinking of the things I want to code.  After two months unable to code, unable to get that quick satisfaction, I've gained an appreciation for the slower, stable satisfaction of reading through books and coding small amounts in a new language.

Of course, any zen teacher would say that's the trick.  By taking away your instant-satisfaction you will suffer for a while until you gain an appreciation for slow, long-term joy.  Anyway, that's how I got myself to delve deeply into C++ and start really understanding it.  I'm hoping to gain a lot from it, given that it's the basis for two of the most popular languages out now: C# & Java.

For those of you struggling in the early part of that timeline.  Trust me, it gets better.

Comments

Popular posts from this blog

How to identify a skilled programmer during an interview

How does one identify a skilled programmer?  No company that has interviewed me could tell the difference between myself and other programmers they'd interview.  The interview process is truly a game of luck in this industry--on both sides.  Both the programmer and the company are basing their actions entirely on luck.

Companies have come up with numerous methods to attempt to discern a good programmer from a bad one.  The best tricks they have include a series of math problems, algorithms, problem solving technique tests, and even obscure programming questions, some without definitive answers.  As an example: Is there an authoritative source of information on the core principles that define object oriented programming?  I've heard everywhere from 3 to 7.  In a field of research about a synthetic concept, an authoritative answer is almost impossible to obtain.

Programmers were then forced to study to the interview.  Careercup is one of my favorite sites for this.  This almost …

When Is Software Done?

I have some very exciting news.  A piece of software I've been working on for over 2 years is released to the general public!  This is a little exciting if it were software I'd been working on for some big company.  It's very exciting because it's software I have been working on for my company.  That's right!  My company is ready to start selling software and start making money!

I'm not gonna use this blog post to talk about my company and what it does.  You can read about that in our press release.  Instead, I'm going to talk about the software industry and the concept of done.  Because, as with everything, it's more complicated than it seems.

Software is never really done
Actually that's a misnomer.  Software can really be done.  But done is sort of a quantum state--there and not there at the same time.  First and foremost, anyone can understand that software that works is complete.  If the software's purpose is to process a credit card, if th…

Managing Programmers

Working with other programmers is tricky.  That said, it's nothing compared to the job of managing programmers.  One of my favorite quotes about Perl is that (paraphrased) "a Perl developer is like a rockstar.  Now imaging having a bunch of rockstars in one room together and you will understand why you don't want an entire team of Perl developers."  It's not about Perl here though. What's important to understand is that any developer worth his salt is going to be like a rockstar.  And yes, there are a lot of professional developers out there who aren't worth their salt, but that's for another post another day.  Rockstar may not be the right term here, but think of it this way.  These guys are smart.  They may not be geniuses, but there's going to be things that they know that you don't and probably never will.

I've seen it more than once and it's not going to make some Product Managers happy, but I'm going to state a fact, an eleph…