Generalization vs. Specialization in Programming

in programming •  7 years ago 

Web programming has the depth and challenge that has kept me busy all my life and, I hope, into old age. I couldn't image doing a rote-memorized job for too long (unless it's mowing lawns -- that's my dharma).

I dabbled in a lot of things growing up (much of it outside the classroom). There's always been a consistent boredom with anything outside the arts and creativity endeavors. Of course, my grades suffered as a result. Teachers didn't seem to appreciate when I could excel exceptionally at subjects I liked, while completely tuning out other subjects. Schools strive for that "well rounded" student.

Then the Internet rolled into the homes of the masses, and I was hooked. Never in my wildest dreams when I was coming of age did I think I could make a living from this thing, have gobs of fun, and not get bored.

Ever since then, the Internet became my therapy. In times of loneliness, the net is there. In times of creativity, it is a canvas. Without judgement, it accepts the ideas and work I put in.

coder-in-cape-meme.jpeg

The Gift of Learning to Learn

Part of success, for me, is the patience to sit down at something new and, well, suck at it. Whether it was html, blogging, or teaching others, I had the gumption to try it. And then I enjoyed researching and learning about the subject in my free time.

Autodidacticism is a learned behavior, not an in-born trait only. For me, I learn best when I'm thrown into the deep end. I assure you that you will stand out for being willing to take the plunge when no one else is (which is the majority). Most people stick to the comfort of what they are good at.

When it came to programming, it was a struggle. It sucked when it took copious amounts of time to get a simple interaction to occur with CSS and Javascript. At the same time, however, I was comparing my work to professionals who had been at this at while. These professionals weren't bragging about their work either and helped others. So I had plain ol' jealousy, and their humility only hurt my ego more. But it kept me going.

Slowly but surely I became more proficient. I completed work because I could build on the work I did before and the knowledge I gained from it. I had built up a habit and thus a new skill. Heck, I could even give pretty good estimates on how much time it would take to complete work.

I took for granted my new skill for way too long like it was no big deal. However, it took serious sacrifices that not many younger people want to make when everyone is taking a more traditional path and seemingly having success (at least, on facebook and instagram).

The Problem of Generalizing

For me, it's easy to dabble in one thing, get good enough at it, then move on to the next thing. This can come across as a lack of focus or goals. I never thought so. The proof is in the pudding, in my mind. My work can speak for itself. Often, though, business-minded folks and those doing the hiring don't think so. They want you to sit down and do one thing really well, usually.

And I admit that certain problems require specialists. You can't know it all. But having a general idea of the workings of the whole web stack comes in handy. Decent enough soft skills can help you build a network of specialists for tasks outside your scope.

So my advice is to pick a title that most closely matches what you love. Frontend developer, backend developer, interaction designer -- something to show where you stand. If a hiring manager passes you over because they aren't looking for this specific skill set, it's water under the bridge. Don't feel like you have to bend yourself to a certain position.

The Problem of Specialization

Then comes the problem of getting too specialized. I see some folks in the space getting complacent with a certain skill. That's understandable. They could have families, other commitments, and a busy life where they want to put food on the table. The young guys and gals without attachments shouldn't look down on that. One day, they will probably end up in their shoes, waving the stick at starry-eyed grads with ambitions to gut a massive codebase in favor of a new framework. Circle of life.

But languages, work-flows, frameworks, and businesses come and go. It's dangerous to rest on your laurels too long in this space.

On the same token, I would caution against getting over-zealous on languages or frameworks that you don't see yourself using. I've stuck to the LAMP/LEMP stack for a reason. It's been around since the dinosaurs and still has a long way to go. At the same time, I've gotten very interested in the latest Javascript frameworks like React and Vue and even server-side Javascript, as weird as it feels. Though I feel at home in the LAMP stack, venturing out has expanded my mind.

Finding You

If you see yourself in any of this, great! The main point is not to feel bad if you are still finding your thang. There's room for a lot of different paths. And the good news is that there are so many cheap and free resources out there to dig into a path that feels right to you.

Trudge on your road and do you.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!