Hacker News new | ask | show | jobs
by virgilp 2426 days ago
> Spending your weekends learning the latest JS framework because you don't want to be someone "who doesn't keep up", is not fun.

It's not about JS frameworks, but if you don't keep up with technology _because it's fun_; and you also what to be promoted very high on the ladder (aren't happy with "just" an average job with average pay that lets you have a decent life outside work) by all means do yourself a favor and move to management.

> because you can't invert a binary tree in 20 secs in leetcode

It's a simple recursion. why wouldn't I be able to do it? I fully expect to solve algorithms & data structures questions into my 60s faster than the average 20yo can (because of my background. Point is, it doesn't correlate with age, if you can't do it at 40 you probably weren't great at it at 20).

> 2. Being managed by someone a decade younger than you with no family or responsibilities, is not fun.

I've been managed by former students. Worked out quite fine for me. Why wouldn't it? Age does not equal competence.... I'd rather be managed by a competent young guy than an incompetent senior. (bad managers are no fun, that I agree; but bad managers are not necessarily young; and young managers are not necessarily bad)

> Being paid less than the lowest grade manager, is not fun.

Being paid less than what you're happy with is no fun. But it's not really required.

> do you really need 20 yrs of coding experience to write CRUD apps

So don't write CRUD apps if you're better than that.

> What exactly are you bringing to the table.

In general, knowing what NOT to do. Finding out & solving the right problem, not the one that was given to me.

> There is no such thing as "IC track" for almost every one of us,

If that were true, it all becomes a huge pyramidal scheme (you constantly need more young developers so that you can manage them as existing workforce ages).

I'll give you that: for most people, it's probably easier to advance on the management track than it is on the IC track. And the IC track in many companies is a joke (if you're not at the headquarters, advancing is an order of magnitude harder; also you advance easier by playing the advancement game than by being competent in what you do - but that may be true for management too). So yeah, it's not for everybody. But OTOH, middle management sucks... big time. For some people, it may be a good deal to sacrifice some cache upside than to turn into something they don't want to be. It all boils down to what you want to optimize. If you're happy with a good income, even if it's not the best that you could possibly achieve, IC track might be an option (still, change companies every now and then. It's much easier to promote this way).

3 comments

> It's a simple recursion. why wouldn't I be able to do it? I fully expect to solve algorithms & data structures questions into my 60s faster than the average 20yo can (because of my background. Point is, it doesn't correlate with age, if you can't do it at 40 you probably weren't great at it at 20).

ok. I was being facetious with that (particularly famous) example.

you are able to breeze through hard leetcodes in your 40's in a tech interview setting?

Why would you be faster at 60's vs 20's , not sure i follow the line of reasoning.

> So don't write CRUD apps if you're better than that.

Can you give me some examples of better things that actually require 20yrs of experience ?

For context I have 2 medals at IOI in highschool. I'm not the most competent in the world (best in my country took 4, all of them gold) but still I'm not too shabby.

Am I as good as I was in my 20s? No. But the truth is that most people can't do the simple recursion... very few places will deny you employment because you can't invent original algorithms on the spot. They'd just fail tou for simple examples like the one you presented. The amount of people who can't do a tree traversal unless it's DFS is staggering. (and in all honesty, not all of them are useless programmers... sometimes people would do amazing stuff despite failing basic algorithmic tasks. That's what makes hiring decisions so hard.)

[edit] > Can you give me some examples of better things that actually require 20yrs of experience ?

I saw this just now. Lots of things can use said 20yrs of experience... maybe even some CRUD apps (e.g. to know what to not over-design). Some things you probably can't do right without extensive experience (say, design a new programming langugage; or a new datastore). E.g. Rich Hickey famously designed Clojure because he wanted a better way to do those "CRUD apps". Also, it's quite easy to find a hard problem that you won't solve without extensive experience, no matter how smart you are (say: collaboration, data management & versioning in large AI teams). Pretty much any open-ended problem, really... remove all constraints and most programmers will get stuck. How many people can start with "void main()" (or equivalent) and actually release it to production, if the project takes a non-trivial amount of time to complete?

ok. But You haven't answered my questions.

Re that example, I was just using this famous tweet.

https://twitter.com/mxcl/status/608682016205344768

You don't get a job solving simple recursion problems. You have to solve hard leetcodes.

I don't know what "hard leetcodes" look like... even in my teens I failed to solve _some_ problems. But what I can tell you is that I switched jobs less than a year ago, I was given as part of the interview process a link to solve 3 problems online in 1h30m and solved them all in 1h. Now, were they rated "hard"? I don't know, honestly.

Also, 2years ago (I think) I participated in Amazon TechO(n) challenge... I was 1st after the weekend, but couldn't work on it during the week (no time/ kids) so by Friday my solution ended up 5th or 6th I think.

[ninja edit] No, I'm not faster, I'm a lot slower. In fact I probably lost most of my speed in the first few years when I stopped competing... but it's not a linear function, at some point, you don't lose any more speed; and just a quick refresher every now and then can boost your abilities back to fairly high levels. And most interview problems are not really competition problems, they're fairly basic.

And no, I don't write algorithms from scratch currently, the company I work for might actually be characterized as "boring" by many people("robotic process automation" - look it up). But I've lived to learn that when there's lots of money involved, there's also lots of interesting problems to solve - one just needs to find them.

I can say you are def an exception, most ppl get slower at these in their 40's than in their 20's.

You seem to have gotten faster. For most people this knowledge tends to atrophy as they age. Maybe you are lucky enough to work at job that requires you to write algorithms from scratch ( embedded engg?).

What is your theory as to why that homebrew guy wasn't able to solve simple recursion problem ?

Either bad interviewer ( focused on syntax rather than problem-solving skills), bad day, or simply this:

> people would do amazing stuff despite failing basic algorithmic tasks. That's what makes hiring decisions so hard.)

It's important to note that this doesn't mean algorithm tests are inherently broken. People who can't solve _basic_ algorithmic problems tend to be weak employees. Rejecting them screws your recall (a few would be amazing if hired) but tends to improve the precision a lot, so the trade-off is often worth it.

>> What exactly are you bringing to the table.

> In general, knowing what NOT to do. Finding out & solving the right problem, not the one that was given to me.

So true.

I would add the ability to look farther ahead at potential problems. I have seen so many young people blocked by some issues that should have been spotted way earlier.

>> because you can't invert a binary tree in 20 secs in leetcode

> It's a simple recursion. why wouldn't I be able to do it? I fully expect to solve algorithms & data structures questions into my 60s faster than the average 20yo can (because of my background. Point is, it doesn't correlate with age, if you can't do it at 40 you probably weren't great at it at 20).

My main problem is that I look like an idiot while writing code. I pointy-clicky navigate too much for many's taste—doubly so when someone's watching because I start second-guessing every keystroke and so avoid keyboard navigation—and tend not to remember much about languages I haven't written a ton of within the last 48hrs, and even then if it's some feature or function I haven't used in a couple weeks I'll either look it up or poke and prod my way to the correct syntax ("it's either this way or that way... OK, red squigglies, must be that way" or "I think null can just be used as falsy but undefined is gonna throw in this language? Yep, there it is, cool, I'll guard it then" or I'll not be 100% sure about the order of arguments for a "map" function even if I used it ten times yesterday and I'll look at the IDE's hint to get it right, stuff like that). I'm much better at the "what" and "why" than the "how", without support from tools and the freedom to faff about a bit, unselfconsciously.

All that's even worse on a whiteboard, of course. If someone bet me $100 I couldn't write a solution to fizzbuzz on a whiteboard in any language of my choice, that'd compile if input verbatim, without looking up some stuff in the couple minutes before doing it, I would not take that bet. There's a decent chance I'd manage, but I quite literally would not bet on it.

I mean I've been (technically) designing & shipping software for pay for a long time and everyone's always told me I'm pretty friggin' good at it. I've often been the go-to guy for weird crap and "hard" problems. But I look like a total dipshit who doesn't know anything and probably wrote my first "hello world" last week, if you watch me do it in interview conditions. I pretty much only have a career in software at all because not every place does those.

I never would claim that your algorithmic skills define you as a professional - on the contrary with age I got worse at contest-style coding while getting generally better (I believe) at the trade. It's just that my experience is that the companies would generally require pretty basic stuff.

On your points,it sounds more like bad interviews if they're about syntax, not about the logic.

It sounds like you are making a lot of rationalizations for not investing the time to practice live-coding and whiteboarding. Those are skills that can be learned, like any other.
Sure, and I am training those. It's just tough to keep up with when you're happily employed, since you're spending 40+ hours a week working but not doing those things. The longer you're happily employed somewhere the harder it is to keep up with that stuff. People skills? Talking about your work? Plenty of that on the job unless you go out of your way to avoid it. You'll naturally accumulate knowledge, tricks, stories, successes to talk about. Bumps and bruises, too. Algo interview stuff and whiteboard coding? That's purely extra time training on evenings and weekends.

OTOH I'm already near the top of my earning potential as an IC in my area (and for most remote work that doesn't require some prior connection with FAANG & co or excellent skills at algo interviews) so I'm looking to move to roles that don't require that particular kind of prep and are higher-paid besides, tending to be more about concepts, people, and communication (architect, manager, that sort of thing). So I've done just fine working (and interviewing) the way I do, and hopefully the sorts of interviews I'm bad at won't be relevant to me a job or two from now, anyway.