Hacker News new | ask | show | jobs
by kecks 3674 days ago
What if you make your core competence as a programmer "gaining steady footing in new tech", along with basic like code structuring, version control and some automation (CI/testing etc.)?

That way you might not become "the greatest X86 assembly programmer" or whatever niche you like, but you might become a very proficient system integrator, which is useful in its own right.

4 comments

Oh, that's me. I'm a mile wide and an inch deep. So I can do a lot of things, most of them not very well. My niche friends are much better than I am at anything I can do, but I can do a lot more things.

It's worked out kind of weird, pushing me (after a long career) into being a founder, and building a tool for generalizing common problems in systems integration. :) My desire to wear lots of hats finally works! But really? I'm more or less a specialist at being a generalist. And I've learned not to chase shiny new tools, because they're very distracting.

I'm the same way! I try to get good at something, and then immediately move on. I am the best at nothing, and better than almost no one. But I am the only person I know that can write code, swordfight, surf, use a ham radio, play a handful of instruments, build things out of electronics, draw and paint, shoot, blacksmith, and blow glass (all at the same time -- just kidding)! I make myself very happy by being able to try something and then practicing until I get "good" in my own opinion. It's absolutely true that up against pros I am pretty terrible! I have also come to understand over the years that this is a byproduct of having a hacker mentality. I am loathe to use that word in reference to anything I am or anything I do, but that's just what I see. Hackers are curious creatures, and so it follows that they can do a lot of things.
It's often really hard to judge how skilled you are at something. https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect is overblown, but being able to say do a crappy weld in 4 hours that a competent person can do better in 15 minutes is often just dangerous. Many a handyman has caused 20,000+$ worth of damages or gotten someone injured.

That said, hobbies don't need to be productive and half assing something is often good enough. Yes, a simple wedge doorstop may damage the door, but well sometimes that's just not an issue.

Did you mean to reply to my post?
This is the direction I try to take. Every time I hear about a new technology I go and read the basics of it and try to understand where I might use it. Then when an opportunity comes up, I investigate and see if it's truly applicable and worth learning. In my experience, trying to dive right in to something you don't have a relatively immediate use for tends to produce a lot of wasted time and make learning slower and harder given the lack of direction.
My suspicion is that the answer is "learning isn't doing".

These are two different functional modes. The mastery of acting without conscious thought is very hard to attain. See also flow (Cziczentmihaly) and related topics.

Learning incrementally can help, and I'd structured my own career such that I was doing that. I ultimately opted out of it when that stopped being an option. I was simply spending all my time catching up, and not finding myself (nor, to a very large extent, any of my peers) actually proficient with the New Hawtness.

I've been in the industry 20+ years. The only technologies I've used consistently are Unix, and relational databases. The languages I work with, the frameworks, all of that stuff is new since I started, long ago. So yes, you have to keep learning.

But that doesn't mean you have to live on the bleeding edge, either! A tech that is proven out, used widely and stable, that's worth investing time to learn. In Crossing the Chasm terms (great book on marketing!), you need to learn early majority tech, not early adopter tech. You can be an early adopter for kicks, of course, but don't pretend it's to be more valuable.

Fair point, though many of the tools I've used tended toward evolutionary development. Came a point a bunch of stuff was being binned and/or wall-flung pasta-style.
Maybe you just aren't very good at picking languages? No offense but I have been using C, C++, C#, Python, and JavaScript for what - almost 15-20 years now?
More I hop jobs a lot. I was using C at the beginning of my career. Lately, I'm using C again (and more importantly, using arcane C skills that no one has anymore, doing a 32-64 bit port). I picked up Java in 2001. I've done a fair bit of Ruby, too. Doing Python in the current gig, which is mostly new to me but trivial to learn.

The point is, I haven't had to deal with C for a long time. It's odd to be doing it again.

The problem is you get stuck as a Junior developer in skill set if not job role. We regularly get collage interns who can often get productive in new technology in around 2 weeks of effort just like senior developers. It's the curse of specialization that the more people who can and will do something the less that thing pays.