I don’t consider you a [Language] developer if you only know [Framework]

Gordon Forsythe
4 min readDec 28, 2017

The Interview Experience

At [company I work for], we’ve done a lot of interviews for developers, both front and back-end. One of the things we keep running into is “developers” who end up not knowing the basics of the language they supposedly use on a daily basis.

Let’s use PHP for this example. We normally start by asking about what the developer likes to work on to see what they enjoy, and then get into actual code. We prefer to have seen code ahead of time, in the form of a GitHub repository, but much of the time the developer hasn’t done much open source for many years, therefore anything they have has been outdated.

Our first code question is usually to write a simple value object class to hold a chunk of values for a certain thing. At this point we’ve also given an example of what the functionality of the code should do. Some times we have to iterate on terms for what to write: “Data Object”, “Value Object”, “Entity”, “Record”, “Model”, etc. At this point it seems like half of our interviewees will simply start writing functionality for the project instead of the data holder class we asked for. Whoever is doing the interview will sigh internally and start the hand holding process to finish out the interview by saying “no, what we asked for is a simple class to hold the values of the result of the thing we’re going to write after this.”

The fact that the developer can’t even write a simple class is usually a pretty heavy indicator that they’re a framework developer, not a language developer. The reason for this is that many frameworks give you CLI/console commands to generate basic code for you. That’s all well and good if you know what those classes are really doing and extending, not to mention being able to actually write them yourself. If you don’t know how or what those classes are doing, in my opinion you have no business using that framework (yet).

Learning a Language

Let’s say you want to learn and use some programming language. The first thing you should do is read about it, either from the documentation or read a book about the language. A good educational book for a language will not only teach you about the language, but will walk you through actually writing in the language so by the time you finish said book, you should be able to write small projects (like a to-do app or blog site) using the raw language by yourself. Do that. Build a few projects. Put them on GitHub. Join a local developer group for the language or an online developer slack/gitter/irc channel and ask for feedback!

Once you’re comfortable with the basics of the language (writing data structures, classes, basic operators, loops, etc), you can start using a micro-framework. A micro-framework will give you a basic structure for a project and a few helper classes for wiring things together. In the case of PHP, usually that framework will include a router, some sort of dependency injection container, and a way of gluing them together via controller or action classes. You still have to do the majority of the coding yourself or find libraries to do what you need to do. Using a good micro-framework will give you an excellent grasp of modern techniques and you’ll end up a much better developer than those who only know XYZ framework.

Now, I’m not saying you’ll be a genius by going this route. I’m not saying you need to write your own DAL or ORM or templating library. That’s all wheel re-inventing. What I am saying is you should understand what’s going on behind the scenes and not take functionality for granted. Having a grasp of what libraries and your framework are doing will also let you understand the inevitable issues when using that code, and either lead you to a better library or maybe fixing the library and submitting a PR.

You might also be thinking “so big frameworks are bad?” about now. That’s not true at all. Large frameworks can make it very easy to quickly generate applications. Again, I’m requesting that you understand what is going on in there. In the PHP world, a large framework example is Symfony. It’s pretty big, but it’s also very modular. In many cases, you can use a portion of the Symfony framework (like the console library) on their own or as a library in your own application. That’s a great way to get to know the code itself without jumping head first into the full framework.

The above also applies to front-end libraries & frameworks. The majority of front end stuff I’ve done lately uses Facebook’s React library. If a developer dove right into React without knowing a lot about JavaScript, they probably won’t be doing much more than building components that just mirror HTML. Once they have to actually start wiring in functionality or state management, it’ll be time to hit the books and actually learn.

--

--

Gordon Forsythe

PHP & JavaScript developer for 20 years. I’ve seen some shit.