Hacker News new | ask | show | jobs
by rayiner 4371 days ago
Relax.

One of the lovely things about being older is having the confidence to be able to be able to point out that the latest fad is just a warmed-over rehash of something old.

It's important to keep up with the new things, but the fact of the matter is that there is very little in the world of software development that's actually new. Swift? Please. If you know ML (1970's), Smalltalk (1980), and Objective-C (1983), you know 95% of what there is to know about Swift. If you know Smalltalk, you know about 90% of what you need to about Java, and with those two, you know 98% of what you need to about Dart.

Learn the big important things, focus on principles rather than specific implementations, and you'll realize that there's very little new under the sun. At this age, while your brain is still limber, learn as much mathematics and theory as you can. You will probably not use Dart 10 years from now. You can bet you'll use the knowledge you picked up in your combinatorics or algorithms courses.

3 comments

> One of the lovely things about being older is having the confidence to be able to be able to point out that the latest fad is just a warmed-over rehash of something old.

Sane advice. I'm 39, and I'm rather stunned to see 27yr olds calling themselves "old" and disillusioned with tech and what not ... let alone 17!

If you like to build things, hone your system level thinking .. which lasts longer than Angular/Backbone/whatever. (Heck I'm working with the intention of obsoleting them, based on old Smalltalk ideas!) If you like to build things the possibility of which average society has no idea of, hone your algorithmic thinking. I'm certainly more productive today than I was, say, a decade ago because I chose to focus on the ideas rather than specific tools during that time. I'm confident I can work with any tool at hand due to exactly what rayiner says. Good debugging skills, for example, don't die because you need to approach it scientifically.

rayiner - while you're right about the "if you know .." part, many companies today ask for specific skills and hirers don't know enough to say "we need guys to work on a Java code base, you know Smalltalk, you can handle it, hop onboard". So it is up to us tech folks who give these job specifications to hint at the broader kind of people we can accept.

With regards to your last point: it's also up to job seekers and employees to signal to organizations that they need to take professional development seriously. You have to fight the pressure to over-specialize and demand opportunities to learn new tools and techniques. There's a basic conflict of interest here between employer and employee: the employer wants a highly specialized cog they can replace when their needs change. The employee wants to develop a speciality, but also build a general base of skills and dabble in new technologies so he can stay employable for years down the road. Employees need to fight for their interest in this regard, and employers need to have the foresight to realize that the most talented people who have the most options will not take a job at a place that stifles their professional development.
I'm in my 50s, and I'm having a ton of fun with this new stuff.

After burning out at a startup that did everything in 68000 assembler (nice architecture...) in my 20s I'm getting back to dev work now and finding I still have aptitude and curiosity.

There is a lot happening. But the change has barely has started yet. I can see hints of new shapes coming over the horizon, and anyone who thinks they're going to be needing the same skills ten years from now is fooling themselves.

Imperative and functional styles have been around for decades already, it's true there's a lot of pointless reinvention (at worst) and refinement (at best) happening.

But very different things will start happening within the decade. IMO the fallout after the bootstrapping will be like nothing anyone has seen before.

The ability to think clearly and critically is certainly something I don't expect to be obsoleted in a decade. I do expect what I think about and think with to change though. Maintaining a curiosity about new ideas and how they relate to the old ones is a healthy trait to have that will help one survive such change.

Wolfram Language certainly looks like an interesting and somewhat new take on building systems using advanced computation. For those who're continuously curious about genuinely new ideas (not just rehashes) it will not be "nothing anyone has seen before" when it (whatever it is) finally happens. To them, it will be more like "hey, it's cool that this idea I've been dabbling with for the past 5 years is pretty powerful and feasible to use today, yippie!"

Minor ex: I had two Haskell "aha" moments - one around 1997 and one around 2000. The former was exposure to Haskore which offered a neat design that clearly illustrated the "separation of concerns" design principle. The second one was when I implemented an algorithm in Haskell in 4 hours and it worked like a charm and was more general than some C code for the same problem that I was hacking on for almost 2 weeks prior to that and which continued to be buggy. The language made a difference to how I thought about the problem, taking away many of the low level concerns. Back then, for the cases the C code worked, the Haskell code ran 60x slower. Today, Haskell is blazing fast compared to those years and pretty viable for just about anything. Yippie!

I think Machine Learning will become much more common place. It's a radically different approach.
I definitely agree with you on this point. A lot of the "new stuff" is just a rehash of the old or a new implementation in a different language of something that's been around for forever.

I'd say the front-end MV* stuff is a great example of this. I started out with KnockoutJS a few years ago and that's all but dead by now. Was it a waste? No, not really. It was pretty easy to go from Knockout into Angular. Sure, some concepts are different, but the ideas are the same. Moving on from that, I picked up VueJS pretty quickly and after tinkering with its Component-based example, I saw that it's pretty much almost the same as Polymer. BAM! All of these frameworks wrapped up in a nice package.

And what's behind it all? An idea. The concepts behind all of these are the same. Same goes for working with PHP vs Ruby, same concepts, different syntax, slightly different ecosystem. NodeJS (as much as I love to say how amazing and different it is), is pretty much the same as Ruby and PHP and Python except for its damned callbacks.

And then there are things like underscore (which is pretty much an array manipulation library), and backbone (which is just a library that gives you the MVC of javascript) etc.

All of it old concepts, and all of the similar libraries work very similarly. There's no need to relearn everything from scratch once you get the patterns and concepts down.

Just wait till you look for a new job, and it happens to be at a startup. The more mature companies tend to be a little slower at adopting new technologies.

In my situation I've been in the Enterprise/automation world. Which is a little bit behind. [Ok a lot.. but you work with what you can and what works within the requirements] ... you'll get the "you're not the right skillset" when the new organization is using *js, nosql dbs, and the FB APIs etc. That's rather odd when you've been developing for more than 10 years and have shown that you can learn new technologies.

I'm completely in agreement with you, however when it comes to a new position employers "don't want to risk you not knowing jquery 12"