When you reach the edge, the trick is to use your experience

Sometimes you have to listen to yourself first.

PHP is the webs most popular language on the web. Some insist that is it not a programming language at all but a scripting language. It doesn't matter to me as long as I can do the work I want. I learned PHP like everyone else, by reading a tutorial from an author that was just one function ahead of me. It didn't matter that we were all clueless, the important thing is that some people where teaching and others were learning.

A few years into this process I considered myself a competent programmer, with still a lot to learn. This was all I needed to work in the field. Today I still use PHP and I have unfortunately discovered all the hate that happens in the programming community.

There are those who will tell your favorite language sucks and that X is the way to go. You are not a real programmer unless you do embedded system for years. I was lucky to focus on learning for years before I stumbled on those people. Trust me, it is luck because great people let these fools run arbitrary code in their head all the time.

As I became more involved in online communities, the narrative became increasingly clear that my confidence and sense of accomplishment were unwarranted. PHP was a terrible language, and PHP developers were terrible programmers. JavaScript was a terrible language, and JS developers couldn't perform asymptotic analysis to save their life. Web developers don't have degrees and it shows in their code. Drupal/Wordpress developers are an absolute joke. Web developers never took a compilers course, so they don't understand just how easy their "jobs" are. Web developers are overpaid for how little they know. Web developers have everything handed to them. Web developers have never had to manage memory or make hard decisions. Web developers have no knowledge of data structures or algorithms. Web developers are not real programmers.

It's true, I didn't take a compilers or operating systems course. It's true, resources for web development are so abundant I can almost always find the answer to any problems I encounter. It's true, languages like Python give me most of the data structures I'd ever need for free.

I eventually concluded that these people were right about me. I wasn't a real programmer. I had deceived myself this entire time. I was a phony - an impostor.

Those opinions about web development eventually became my own. Web development is easy, web developers are the lowest of the low, web developers don't understand just how easy they have it.

As I incorporated these ideas into my mindset, my confidence was shattered. Consequently, my next objective became overwhelmingly clear: Get out of web development so I can feel like a real programmer again.

A few days ago, I had use my own advice. What do you do when you reach the edge of your technology and can't implement something? My advice was to look for the right tool to solve the problem. This made sense. If you are a JavaScript developer and came to a point where you can't get any further implementing a feature, the logical thing to do is to use flash for that particular feature because they say flash does give you access to more features on the machine.

There is an issue with this however. Implementing a feature in flash requires you to learn ActionScript, I am all in favor of learning new languages without bias, but is it really necessary? It can be an option, but did you exhaust all of JavaScript and couldn't find a solution? These days I find that all languages are powerful enough to do basically everything. Sticking to a single language is very common, it all depends on your problem solving skills.

I've used Nodejs before and it was very easy to create a quick two way realtime connection between client and server. It has even become the cliche "hello world" tutorial for Nodejs. Having worked as a front end developer for years, I feel very confident using JavaScript, but I can say the same about PHP. So last week I was trying to implement realtime communication for a prototype I am working on, I decided to go with PHP. I didn't ask for opinions, I didn't ask for help, I just tried.

It wasn't as easy as copying and pasting some code here and there and downloading the right library, but at the end of the day it worked. I used sockets, which are available in every languages these days, and just like that I built my prototype.

“If you know how to solve a problem, coding is only a matter of how fast you can type in your favorite language.”

It doesn't mean you should never learn a new language, you just have to focus on solving problems and push yourself a little. Sometimes it makes sense to switch languages to solve a problem, but it depends on the project, the learning curve, and if there are obvious benefits.

One thing to put in mind is, just because everyone say they do things a certain way doesn't mean you should do it too. Chances are they aren't doing it either. Most people will tell you to use Node for your chat client, but none of them used it beyond the hello world tutorial.


Comments

There are no comments added yet.

Let's hear your thoughts

For my eyes only