Welcome to the awkward stage of Intermediate Programmer

When I first taught myself how to program I entered what I would come to refer to as the “Middle School” of programming. I had just hit “programmer puberty” and I was brimming with knowledge but no idea how to apply it. So I went on a journey in search of a purpose; a way to use these skills I had learned. Unfortunately none of the books or tutorials I found where very helpful. None of them had this piece that I’m writing right now.

On this journey I bounced from programming language to programming language. I read forum posts and blog posts telling me that Python was slow so I should learn Node.js then yet another which would explain why Node.js was bad and assert that I should learn Go instead, or how real programmers use C. In my “programming youth” I was impressionable. After reading posts like this from people who I assumed were much smarter than me I would take the advice to heart and go learn whatever language they were extolling the virtues of. So I ended up learning A LOT of programming languages, and I never really building anything.

Now that I’m 13 years in I finally realized that there are no silver
bullets in software development. You will find yourself 50% of the way through developing a piece of software or solving a problem, then realize you need concurrency but you’ve been writing in Python. So you read some blog post about goroutines or complaining about the GIL and say screw it and switch to Go. Shortly after you realize that static typing is a real pain so you pick up Clojure which does concurrency and dynamic typing. Then shortly after that you’ll find out the JVM isn’t lightweight and Lisp is weird etc. etc. etc. until the rabbit hole never stops.

The point here is not that you shouldn’t choose the Right Tool For the Job™ but that most of the time even the right tool will still have parts that feel like
slogging through mud.

Please don’t think I’m discouraging you from picking up other programming
languages, I’m not. At this point in your journey it might be the best
way for you to learn, you can see more of how to do Functional Programming using Elixir, or how if done right concurrency is really easy such as in Go, or if you want to make interactive web applications you need to learn JavaScript.

My point is to say don’t switch languages because you were building something and it got to a point where it’s difficult, you’ll just be moving that difficulty to somewhere else in your program by switching and you’ll never master The Art of Getting Shit Done.

My final advice is never be afraid to read. Read the docs, read the source, read Stack Overflow. Googling how to do something and taking an answer from Stack Overflow does NOT make you a bad programmer or mean your stupid. Every developer does it every single day. If you ever see a programmer write a bunch of code without reading any documentation it’s only because they’ve read the documentation so many times they memorized it. Not because they just “think the right way”. No programmer is a literal wizard, and very rarely are they some kind of “super genius”.

Since we’re already dropping Jeff Atwood links in this post I’ll leave you with these two final notes on the subject Read the Source Luke and Good Programmers Never Write What They Can Steal.

Share your opinion, stupid or not! (But it probably is.)

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 )

Google photo

You are commenting using your Google 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 )

Connecting to %s