12 ms·
This whole "learn a new one in a couple weeks" mindset is toxic and needs to die. Yes, you can learn anything at a superficial level in a couple weeks. If you'
by mkozlows 8y ago
This whole "learn a new one in a couple weeks" mindset is toxic and needs to die.
Yes, you can learn anything at a superficial level in a couple weeks. If you've spent the last ten years maintaining an ASP.NET WebForms app running on IIS, then within a couple of weeks, you can contribute code to a Go microservice running in Kubernetes and using Kafka.
And that kind of "basic competence, with the ability to learn more" is what hiring managers want out of a junior dev, so if you don't keep your skills up, well, great, you're as useful as a junior dev.
But what they want out of senior devs is people who know the ins and outs, who understand what to do and why to do it and can explain that to others, who can avoid the pitfalls of bad tech choices and misguided implementation patterns.
If you've got decades of experience on your resume, my guess is that you want to be evaluated as a senior dev. And if you're a senior dev who doesn't know modern tech, then... you're not that useful. Your encyclopedic knowledge of the WebForms event lifecycle doesn't give you any particular insights into the design challenges of a microservice ecosystem; your ability to tweak IIS for maximum performance won't help you write a Helm chart.
If you want to be hired as a senior dev, you need to understand how the modern world works, and all the posturing around "I could learn it in a week" or "I prefer to focus on problems" doesn't impress anyone.
- vp8989 8y agoIt's not toxic, it's dumb.
- Joe-Z 8y agoI get where you're coming from, but I didn't get the impression that GP was ignorant to new developments. In my experience the most important thing is really wrapping your head around a domain to be able to solve concrete problems in it. Whatever framework or programming language you choose to solve those problems with is peripheral, really. Also, most coding is maintenance. So yes, an experienced developer in some language is really worth a lot when you initially start out designing your system. But most of the work spent on that system will be maintaining and extending it and to be able to proficiently do that you need to: 1. Grok the problem domain, so you can connect the real-world / problem you're trying to solve with the code in front of you 2. Have a grasp on the limitations of your own system, which will come with experience as you work longer on it
- ska 8y agoIf you really are a senior technical person, you have many valuable skills that are not tied to a tech stack. Otherwise you may have a related title but you are really just a technology domain expert - which is sometimes very useful and valuable, but it's not the same the same thing at all. So yes, it's helpful that people keep current, and obviously waiting for a new developer to get up to speed on the particular stack is always a cost (and it isn't a couple of weeks, for anyone). However, if what you really need is a senior person, it may well be worth that time. Seeing this assumes the hiring manager understands how software is actually produced and maintained, not just what their current tech stack needs. It's surprising how often this isn't true, but a contributing factor is how mid level mangers are made - which is related to this discussion I think.
- mkozlows 8y agoWhat I'd say to that is, yeah, it's true that a senior dev will have skills that go beyond a particular tech stack -- but if you're working as a dev, then those skills are still tied to your technical knowledge. You might be great at mentoring... but you have to know the stuff to mentor people in it. You might be great at communicating with stakeholders... but you have to understand the technical constraints of your system in detail to have that communication. You might understand principles of software design and debugging... but you still need to understand the particulars of these technologies to make your design or to focus your debugging. And yeah, you can learn the tech stack, and a company that really needs a senior dev eventually could do okay to hire a senior dev with out of date skills, and wait for them to get trained up. But don't plan on it taking three weeks, is all I'm saying. To really get to that point of fluency and domain expertise takes longer. (And also, one of the things that senior devs are supposed to do is evaluate new technologies and figure out when and where adopting them can make sense. If you've fallen so far behind on learning new tech, then it's not clear if this is something you're able to do -- maybe it is, and you just worked for a workplace that stifled adoption of new tech, or maybe you're someone who'll just learn what you need and then stop paying attention.)
- ska 8y agoWhile I see what your saying, a lot of your language seems to come from the idea that tech is a progression, that we are moving "ahead" always, and that people get "left behind". That's mostly not true. While there definitely have been advances, tech is also very faddy and repeats itself. Trends are often reactive, techniques repetitive. Someone who has been around for long enough to see some of these waves resolve themselves is in a much better position to evaluate current and upcoming approaches. Technologists also tend to be myopic, and view the things happening in their own tiny slice of the industry as "what's happening". There is a whole universe of interesting stuff on the go that you are at best barely aware of. Personally, if I'm hiring senior technical people I'm much more interested in their continuing level of curiosity and engagement with something, rather than particular stacks. So maybe you are worried that your candidate who has been doing ASP.NET WebForms for the last decade on IIS will have a hard time getting up to speed on your use of TypeScript and React ... but if I find out that she's also being building raspberry PI infrastructure for fun and messing around with the Julia language to implement a cellular automata project I'm not all that worried about their ability to get up to speed, even though none of that stuff will get used by the team. But yeah, it doesn't take 3 weeks. It doesn't actually take 3 weeks for a new dev already well versed in your technologies, with rare exceptions. At least not to be firing on all cylinders. The thing is, a huge number of teams really, really need a good senior dev. They often don't think so, and often erroneously think they already have some... but they don't. Instead they have people who had "Senior" (or "Staff" or whatever) added to their title because they'd been there for a little while. And every piece of work the team produces suffers for it. So yeah, it's typically worth the investment. Now granted, that assumes you are good at identifying talented people. This is actually a big ask - and one of the issues surrounding the OP's questions really comes back to that. I think that a lot of software and technology development suffers fairly systematically from poor quality middle management. One of the symptoms of this is the "ageism" discussed here, but it's only one of many....
- BeetleB 8y ago>If you've got decades of experience on your resume, my guess is that you want to be evaluated as a senior dev. And this is where ageism rears its head. If two people apply for the same position, and you're OK hiring someone who has only 2 years of experience for the position, don't ask for more from someone who's been working for 20 years.
- mkozlows 8y agoThey get paid very differently, is the thing.
- BeetleB 8y agoWhy do they? The older candidate may have a higher expectation, but as an employer, the compensation for a particular position should be somewhat fixed. If the older candidate doesn't offer anything more than the "inexperienced" one, offer the same salary you would the inexperienced person. They can always say "No". Trust me: There are plenty of older programmers who do not expect a higher pay because of their age. In my career, whenever I hear "older people expect a higher salary", it has almost always been by employers/managers, not by actual older professionals. On the other hand, I've met quite a few programmers who complained they didn't get an offer or were told they were ruled out because they were "too senior", and the complaint almost always was along the lines of "I was not asked salary expectations".
- scarface74 8y agoI have a former manager who is in his 50s. As soon as his kids graduated he self demoted to a full stack developer working with React/C# and Azure. I have another friend in his 40s who took a job that let him work from home who is in his 40s and it pays less than he was making when we were working together.
- rabidrat 8y agoNot as differently as you might think. When I was more junior, I assumed the wage increases would continue as they had been. But they flatten out after 10-15 years of experience, to the point that the salary of someone with 15 years of experience is probably the same as someone with 30 years of experience.
- bfung 8y agoIt’s not really gloating; I’m in the same situation as GP - I’ve worked enough with languages and their ecosystem to apply those skills to new languages and ecosystems. It takes me around 5-7 days to grok a new language and how to be pretty good at it with its tools/frameworks/idioms. Having experience where understanding basic fundamentals make it easier to extend to a different implementations. The language + tools aren’t barriers anymore, the interesting part of solving business problems and how to apply the tools become the fun ones.
- Izkata 8y agoYeah, this is how I see it, too. Their example kind of gives away that they didn't understand. Once you've learned and used a half-dozen imperative languages day-to-day, there's very little new when picking up another imperative language. It's mostly mapping common concepts onto new syntax, plus some new features and maybe quirks/gotchas. Silly little example: After an hour of reading a Go tutorial, and having never looked at the language before, I was able to diagnose a bug a co-worker had been struggling with for two hours, because I recognized the pattern from something similar in Django (a python framework). Now knowing what to look for, a quick Google search had the exact answer to the problem right in the first result.
- scarface74 8y agoSo do you think you could pick up and become a useful iOS Dev in two weeks?
- Izkata 8y agoDepends on the context. As part of a team (code already exists that I can reference), and simply "useful"? Less than that, probably about one week at most. I wouldn't be doing anything large or complex in that short a period, but absolutely can become useful with smaller stuff in that period. And I say this with experience, thought in a different context: Years ago my manager introduced me to a new codebase by giving me a bug to fix. It was in a Django site, and I'd never done any python before. Took about half a day to figure out what was going on (for comparison, nowadays it would maybe have been 20-30 minutes), and a bit more to fix. But I did figure it out on my own, taking some work off of another developer who was focusing on more complex work. I would call that "useful".
- eweise 8y agothe advantage of older developers is that they have seen the same patterns before. For instance, younger devs might think microservices is the hot thing while an older dev is thinking that it just looks like a poor man's erlang from the 1970s and knows to wait a few years when all the CI/CD and orhestration is integrated and commoditized.
- scarface74 8y agoSo while you are “waiting a few years”, the company has new problems to solve write now. So no you can’t stick around using VB6 for the next 20 years.
- eweise 8y agoyep and I'm pretty sure creating a crapload of devops scripts to support microservices will be the next problem you give the business.
- scarface74 8y agoIf you are creating a bunch of “dev op scripts”, you’re doing it wrong. I wrote one parameterized Cloud Formation template that creates our build pipeline for any new service. Most of the time we can use the prebuilt Docker containers (maintained by AWS) for our build environment. We have one or two bespoke Docker containers for special snowflake builds. And if you haven’t read my other posts, and I get accused of being young and inexperienced, let me just say that my first “internet based application” used the Gopher protocol....
- eweise 8y agoI haven't read any of your other posts and my comments were not directed to you in particular. You're really making my point. If cloud formation templates work then great. I don't know its limitations. I do know that kubernetes has become a standard for orchestration and that it becomes easier over time to manage. A couple years ago there was no support from AWS so maybe not the time to jump in. Likewise with Kafka. Cool tech but really expensive to manage. Now AWS and Confluent will manage so the costs have come way down.
- willtim 8y agoI would rather hire someone with that mindset. They are more likely to be interested in solving the actual business problems. The junior guy excited about frameworks and fads, is much more likely to create complexity (usually from vast numbers of dependencies and inappropriate technology choices). The flip side of course is that if you already have a mess, then the junior guy might be a better choice to maintain it.
- scarface74 8y agoI wouldn’t be excited at all hiring someone whose skillset is ten years out of date. It tells me a lot about their lack of willingness to keep up with technology.
- willtim 8y agoThis depends on what you mean by "technology". I would expect them to be aware of emerging trends in the industry. Bonus points also for an interest in the latest computer science. But I don't care if they haven't hacked on groovy gradle scripts or injected Spring AOP pointcuts into Java beans. This sort of tech is accidental ad-hoc complexity and not progress.
- scarface74 8y agoIt’s not about “emerging trends” but they should be familiar with a chosen technology stack that is in the “plateau of productivity” in the hype cycle.
- vorg 8y agoSpring's AOP pointcuts (in its first incarnation as AspectJ) and Groovy (pre-Gradle and pre-Apache) are both over 15 yrs old. To not know those is having a skillset that's well over ten years out of date.
- scarface74 8y agoHeck, I know what those are and I've only written 20 lines of production Java code. They came up repeatedly when I was researching using Microsoft's (now defunct) Unity framework to do AOP in C#. https://github.com/BitsCorner/AOP-UnityInterceptor https://github.com/BitsCorner/AOP-UnityInterceptor
- mlthoughts2018 8y agoNo, you can learn programming languages at quite a deep level in just a few weeks. I went from having never written or read a single line of Scala or Java in my life to making production critical commits to a customer-facing product in about two weeks, where the commits involved needing to know a lot about Scala case class patterns, some tricky in-house implicits, structural typing and the numerical package Breeze. The thing is, because I have developed deep skills at delivering software products in other languages, I know what questions to ask. I know to look into build tooling, certain design patterns, ask what is the equivalent of foo from language X over in language Y. Experience allows you to short circuit huge chunks of the learning process and make bigger strides to knowing complete functional units of the language and tooling. Yes, you’ll keep learning more after a month, but in all sincerity, if you’ve learned at least one procedural language very deeply and have at least brushed up against other paradigms and design patterns, then you can learn almost any other language, whether it’s C++ or Scala or Rust or Haskell or Fortran or Erlang or anything else... up to about an “advanced intermediate” level in just a few weeks of self-teaching.
- colllectorof 8y agoThere is no monolithic "modern tech" to keep up with. If you think there is, you work in a bubble and don't have nearly enough experience to say anything intelligent about how to hire senior developers. Moreover, if you're proud of how hard it is to learn ins and outs of your tech stack, you're likely using a shitty tech stack and costing your company tons of money.
- scarface74 8y agoThat’s true. No one is saying be good at everything. But you should be surveying your local market, seeing what an in demand tech stack looks like and align your skills with it and have a cohesive story to tell. But you can’t be proficient at an architectural level with a stack in two weeks no matter how good you are. Would you say that you could me an iOS/Android developer in two weeks just because you picked up Swift/Java?
- roenxi 8y ago> ASP.NET WebForms app running on IIS, ... Go microservice running in Kubernetes and using Kafka Those things don't really count as languages, they appear to be a mix of development environments, software packages and architectures. Learning these things is critical and hard but there is a key mitigating factor. That factor is that really what needs to be learned is 'how we do things around here' which is typically company specific and needs to be learned by a new hire anyway. My experience suggest new hires in cognitive roles (at medium-large businesses) take 1-2 years to get to the point where they can be proactively useful, purely from learning who is who, what the corporate history is, what ahs been tried before, why things are what they are and what their role's problem domain is really intended to be by their boss. Compared to that set-up time, the cost of knowing or not-knowing a technology is quite small. > This whole "learn a new one in a couple weeks" mindset is toxic and needs to die. It is true though. Learning a new programming language to the point you can write bug-free code and execute someone else's design is really easy. Learning how to solve a new problem is typically the hard part. I 'learned' Python in 2 weeks. What I write looks a lot like C code, and I didn't make great use of the standard libraries, but it works fine. Compared to that learning how to use a large new library for a new problem typically takes a months.
- scarface74 8y agoThose things don't really count as languages, they appear to be a mix of development environments, software packages and architectures. Learning these things is critical and hard but there is a key mitigating factor. That factor is that really what needs to be learned is 'how we do things around here' which is typically company specific and needs to be learned by a new hire anyway. Not necessarily, except for maybe Go, those are industry standard technologies that you could find someone who knew and could add value almost immediately. We are very heavily invested in the AWS ecosystem. The difference between hiring someone who has the same amount of useful development experience but no AWS experience and someone who does and how fast they can hit the ground running is stark.
- erikpukinskis 8y agoSide note: saying my beliefs need to die as the first thing you ever said to me is pretty aggressive. But to your actual comment: I'm learning new things all the time. My focus when I'm coding in my spare time is a simple IDE, some project management tools, and a simple game engine I am building. I learn new things in those projects literally every day. I'm not going to do a bunch of hello world apps in random new "Pro" technologies. I did a lot of that in my 20s, it was fun and I was curious about them, but my interests have shifted. There are enough jobs I can say "no" to the people who want only coders who are using the newest "Pro" toolset. Honestly, a good hiring manager will realize you ideally want BOTH that person and people like me on a team. One person will know that Rails 7 solves our new problem, and the other will know that a simple refactor will save 30 hours of headscratching over the next year.