Last weekend I spoke at devSpaceConf in Alabama and wen’t to a terrific talk by Chris Keathley about programming languages and Turing Completeness.
While I have never had a fascination with the actual computer science behind programming languages, what I did think was particularly interesting was Chris’ love for code. You could just tell when he spoke that he loved programming languages, how they worked, how each new one that he learned only added value to every language he used.
Why did I think that was so fascinating?
Because that’s almost the exact opposite of how I feel about coding. I look at the languages and tools that I use as tools. That’s all they are to me, a tool to turn ideas into products. The best tool for the job in my opinion is whichever one that I am most comfortable in, whichever one that I can code the fastest in, whichever one will get the product to market sooner.
Last week I pushed a commit to the project I was working on where I replaced a flexbox layout that was behaving extremely strangely (it honestly seemed to be a bug in flex) with a table based layout.
“OH MY GOD, YOU USED A FRIGGIN TABLE!?” is most likely what more than half of you reading this are thinking right now. In fact, I bet some people just dismissed me as a programmer and closed this page.
But you know what, that’s fine.
Because there is room for both of us here. There are many many types of programmers in the world, but I think they boil down to two different types. Rands had an amazing article on these two types called Stables and Volatiles, which is one of my absolute favorite pieces on programming in general.
While Rands describes these two types as Stables and Volatiles, I like to call them something a bit simpler:
Those that care about code more than product and those that care about product more than code.
It is very important to note here that neither is better than the other. In the early stages of product development, it’s nice to have a “hacker” that just throws code down to make something work and ship it. In later stages of product development, it can be better to have programmers that care more about stability and cleanliness of code.
Many articles about programming online tend to tell you exactly how you should do your job.
And honestly, that’s just a load of horse shit.
You should be the developer that you want to be.
Embrace the way you feel about programming. Because if all you are doing is listening to other people, you will never be able to find what you truly love doing.
If you find yourself encountering a problem with flex and want to use a table so you can ship, just do it! If you feel that your product should have unit tests, explain to your boss why you feel that way, and start writing unit tests.
The funny thing is, is that I can see Imposter Syndrome stemming from this problem. If you’re reading all of these blog posts on how “you’re doing it wrong” of course you’re going to start thinking that you aren’t a good developer. So you need to step back. You need to stop caring about every little thing that other developers are doing and start worrying about how you can better yourself in the way that you enjoy.
I’m not saying that you should stop listening to what other people are talking about, it’s always nice to stay informed. But what I am saying is that developers have a tendency to think they are 100% right 100% of the time about how they program. Take everything with a grain of salt, and then form your own opinions.
React might be the cool new framework, but if you’ve never used it, should you accept everyone else’s opinions and go “full React” in your next project? Heck no. Take the time to try it out, play with it a little bit, maybe it doesn’t actually jive with you.
PHP developers tend to get a lot of hate, but some of the best (and fastest) developers that I know program in PHP. Sure it’s not new, sure it’s not sexy, but it works for them and they like programming in it! Who am I to tell them that “they need to switch to Python or Node instead?” If you’re happy and knowledgable in a language, then more power to you!
I’ve worked at 3 companies in my programming career so far. The first was a great fit for my developer type, but I had issues with upper management. The second wasn’t as good of a fit for my developer type. And now that I’m at Ionic, I feel like I’ve found somewhere that values my hacker/business personality and puts it to good use.
Sure, there will be jobs that “require” one type of developer or the other, but don’t be afraid to switch to find a better fit for your personality. If you’re a hacker, embrace it! If your code must be perfect and tested, embrace that!
Embrace the type of developer that you are, and don’t let someone else try to persuade you that your type is “wrong.”