Ie. most managers can't help their team find a hard bug that is causing a massive outage.
Note: I'm a manager, and I spend a lot of time pondering how to spend my time, how to be useful, how to remain relevant, especially in this age of AI.
Ie. most managers can't help their team find a hard bug that is causing a massive outage.
Note: I'm a manager, and I spend a lot of time pondering how to spend my time, how to be useful, how to remain relevant, especially in this age of AI.
But the feeling of skill atrophy is very real. The other day I needed to write a function that recursively traverses a Python dictionary, making modifications along the way. It's the perfect task to give an LLM. I can easily see that if I always give this task to an LLM, a few years down the road I'll be really slow in writing it on my own, and will fail most coding interviews.
Also, while there is a high in producing a lot in a short amount of time, there is no feeling of satisfaction that you get from programming. And debugging its bugs is as much fun as debugging your coworkers' bugs - except at least with the coworkers you can have a more intelligent conversation on what they were trying to do.
This happens a lot in the natural world in ecosystems. For example, many people plant trees and add a drip system. The trees grow to depend on the drip system, and never stretch and develop their roots -- and the relationship they have with the soil microbiome. They make the trees prone to get knocked down when an unusually strong gust of wind come through.
Just beautiful concepts, inspiring, and well-represented in this comment.
Peace be with you, my friend.
And this is what worries me. Pre-LLM, I'd get all my practice done during work hours. I fear that with LLMs, I'll need to do all this practice on my free time, effectively reducing my truly "free" time.
If you can attach a valid business reason/excuse then it's fairly easy to get time dedicated to experimentation and learning.
I haven't been a coder for several years now, but I still try to justify a personal lab environment in order to understand the market and customer problems.
If you're an Engineer or EM, I think it would be even easier (attach experimentation to some sort of critical engineering initiative).
Even with Code Gen Copilots becoming a thing, between the lines most of us in engineering and business leadership recognize it cannot replace architecture or design. If it can, then you've solved the Turing or Chinese Room problem and that's a whole other story.
That said, if your day job isn't only "write this terraform/python script" you shouldn't be at risk.
This has the same problem as "doing it in free time". I have a finite number of goodie points with management, and I'd be using some when I request this - which means I have fewer things I can request from them in the future.
> That said, if your day job isn't only "write this terraform/python script" you shouldn't be at risk.
I'm not worried about the present, or even the near future. The reason I have other valuable skills is because of the years I spent on writing code. Eventually, I'll stop growing if I rely too much on LLMs. I may have to rely on them if everyone else is and being more productive.
Great points otherwise, though. A strong focus on identifying, understanding, and solving customer problems is, in modern parlance, all you need.
On the other hand, there is something I learned from permaculture design. You need to allow what you want to grow in the ecosystem if you want them present. If I wanted to develop the next generation of developers, then I'd be giving that CRUD stuff I've done many times to a junior developer instead. It obviously depends on funding, and whether your investors are on board with that.
As far as keeping up and remaining competitive ... my suggestion is to learn these things in a way where you can broadly apply the underlying principles in other domains, especially that, as you age, your working memory will shrink. This isn't accumulating more of the same thing, but gaining deeper insights that can only be found when you've developed a sufficient level of skill. There are lots of ways this can be accomplished.
Indeed, one of my fears is that people won't develop those skills to begin with. In my team, the few senior people can pretty much be trusted with using LLMs and still producing quality code. But we decided against evangelizing it to the junior folks. They still have access via Copilot, but we won't gently suggest they try it out.
I got where I am without regular leetcoding. For me, regular leetcoding will only marginally improve my skills. And I definitely don't want to do regular leetcoding just to maintain my skills.
You know how many people love jogging outdoors but hate treadmills? Leetcoding is like treadmills. You may have to do it, but it sucks. Yes, some people love treadmills, but they're in the minority.
And you know what? That's just peachy keen. I don't need to write x86 assembly anymore. In fact, these days I do a lot of coding for ARM platforms, but I never learned ARM assembly at all. So it would take more than just a refresher course to bring me up to speed in that. I don't anticipate any such need, fortunately.
So... if I still need to write C in 10 years, why in the world would I consider that a good thing? Things in this business are supposed to progress toward higher and higher levels of abstraction.
I am extremely pessimistic that LLMs will ever reach that level of reliability. Or even close. They are a great helper, but that's all they'll be.
I'm not saying it won't improve. I think its lack of determinism puts a natural upper bound on reliability - something we don't have to worry about with compilers.
As for examples: Oh wow. As much as I love and use them for coding, almost every project I work on has cases of coming up with complex solutions to a task that do not work, where 1-2 lines of (simple!) code would have solved the problem. It's not just that it fails, but it kept failing even after I told it how to do it right.
Sometimes it does a great job and solves a hard problem for me. Other times I lose a lot of time getting it to do beginner level stuff. It has huge gaps/blind spots.
Perhaps the biggest difference is the lack of feedback AI gives that humans can give: a subordinate can communicate if they feel like their manager is being too hands off. AI never questions management style.
Managers grow the skills needed for their organization. Their team affects them.
A process-oriented team with quality/validation mindset has replaceable roles; the action is in the process. An expert team has people with tremendous skills and discretion doing what needs doing; the action is in selection and incentives. Managers adapt to their team requirements, in ways positive and negative: becoming rule-bound, privileging favorites, etc.
With AI this might be a positive insofar as it forces people to state the issues clearly, identifying relevant context, constraints, objectives, etc.
Agile benefitted software development by changing the granularity of delivery and planning -- essentially, helping people avoid getting lost in planning fantasies.
Similarly, I believe that the winner of the AI-for-development race (copilot et al) will not just produce good code, but build good developers by driving them to state requirements clearly and simply. A good measure here is the number of iterations to complete code.
An anti-pattern here, as with agile, is where planning devolves into exploring and exploring into incremental changes for no real benefit - polishing turds. Again, a good measure is the number of sessions to completion; too many and you know you don't know what you're doing, or the AI cannot grasp the trees for the forest.
Strategy vs tactics. Managers aren't there to teach their reports skills, they hire them because they already have them. They're there to set priorities and overall direction.
While the manager doesn't need those skills, you still do.
I think in the coming decade if you put yourself in a box and do a specialized task, and nothing more, you'll have a bad time. This is going to be an era where strategy is far more important than tactics.
I can't disagree more strongly. If you're a specialized person with expertise and ability to perform outside the knowledge of all possible interns because you're developing something novel and not covered by standard materials, you'll be hard to compete with using AI because AI will direct people to standardized methods.
Granted, if you do a specialized task that is taught in schools and that anyone can do, that's trouble. But that's not tactics either, that's clock-punching. That's replaceable. You can talk 'strategy' all you like but if you're only exploiting the AI's ability to do what people already know, that's another box to be stuck in.
> if you do a specialized task that is taught in schools
are in trouble, and so are you.
> perform outside the knowledge of all possible interns
This is the strategic level thinking I'm referring to. Frankly this role might not be safe either, but if that's the case then we're probably headed for fully automated luxury communism no matter what we do.
Do all the work Farts_Mckensy does at half the price using AI.