Even before AI, I've worked with people who would produce a huge wall of code and ask for review, and sometimes that code was completely off base or needed a significant rework.
I would always feel bad in those cases, because it's clear they spent a lot of time, and I'm going to have to say "no" and they will feel like they wasted a ton of effort.
The thought process around this has started shifting for me in the last few weeks. I'm a lot more comfortable saying "no" with a list of concerns when I suspect the code is AI-generated, and I see others doing the same. CLs that would be sitting around for days because no one wants to be the first to say, "this is bad, don't do this" now get quicker feedback.
The good thing is this feedback doesn't feel like as big a deal as it used to because people are less personally attached to code they generated in 30 minutes vs. code they hand crafted over a week. I had at least 2 LLM-generated PRs that were complete, correct, tested, and pre-reviewed by me, but I got feedback that they were going in the wrong direction. This would have been 8 hours of wasted effort a year ago, but now it's just an extra 30 minutes to rework the direction with LLM assistance.
> I would always feel bad in those cases, because it's clear they spent a lot of time, and I'm going to have to say "no" and they will feel like they wasted a ton of effort.
I get this feeling, too. I do however think the onus is on the developer to make something reviewable by their team members if they want a speedy review. Stacked PRs, scoping things down, properly structuring commits so you can review commit-by-commit for example.
I also think that "I spent a bunch of time on this" is not a valid reason for expecting an approval. It should hurt if you've produced a bunch of code that is way off target, even if it ends up implementing the feature. That's how I learned at least.
A proper way to go about large projects, in my opinion, is the same as with software development at large. Fail fast if possible. Draw up a crude boxes and arrows sketch or just discuss how you want the code to integrate with whatever already exists and invite the team to comment. If no one has anything to say, well then they can't complain later when you implement that approach. But if anyone cares then most likely valueable input will come that makes the end result better.
Not sure how you are working but we have this novelty idea where people have daily meetings like 15 mins each day to update each other which tasks they are busy with.
We also have refinement meetings where people are involved in clarification for each task so they are not surprised by requirements.
So we do planning meetings every two weeks.
Each ticket is tied to the code in commit.
So by code review time anyone doing CR has all of the information in few clicks and some of it already in their head.
When I felt like that, I'd often ask questions about it, like "How does it deal with [situation]?" When it's obvious that it doesn't deal with the situation, they either answer "it doesn't" and then I point them to the ticket they didn't read well enough that points that out, or we have a conversation about thinking beyond the ticket, or they actually realize themselves that they didn't do it right and go back to it. I don't actually have to say "you did a bad job" and they don't have to hear it from anyone but themselves.
If they continue to do that, then someone has to tell them they're doing a bad job.
And a some of them never did improve, and got fired for it.
I think slowly opening their eyes to the actual scope of the ticket is a lot easier on them than saying "no".
It’s good that clankers are not afraid of throwing away code. The biggest problem with code generation (that is version controlled) is maintenance. It’s better to throw away questionable code rather than say eh, we don’t quite understand this part (and our agents can’t make a compelling story about it) but we spent a lot of effort on it and it apparently works so we better keep it.
.. only if you know what the code is doing, though. Often the requirements get scattered and lost to the winds and the code is the only record of its own idiosyncratic behavior. And yes, someone's depending on the bugs in it.
I don't think a threatening name would be unheard of in a hijacking scenario. Someone calls saying they have a bomb on board, and as evidence there is a Bluetooth device called "bomb," showing they have an accomplice on board. They then make demands. This scenario doesn't seem unreasonable in light of pre-9/11 hijacking attempts.
Yes, this was a huge reaction to something that was almost certainly benign, but "almost certainly" isn't an acceptable risk for 100s of people in an explosive flying cylinder. It truly sucks, there maybe can be better procedures, but "100s of people majorly inconvenienced" is better than "100s of people dead in fireball."
I have also seen the learning acceleration, there's a significantly increased set of techniques and technologies I have learned how to apply.
From a person perspective though, I'm apprehensive about the effect AI will have on the human "very well read intern." People who know a lot very deeply about specific areas are fascinating to talk to, but now almost everyone is able to at least emulate deep knowledge about an area through the use of AI. The productivity is there, but the human connection is missing.
I agree. I think this is personally very useful, but I think a great deal of what made computing an amazing industry to work in is going to or has already died. I suspect the general field as it existed will entirely cease to exist before the current set of well read interns have had much of a career chance. It is sad, but we have finally succeeded in programming ourselves out of jobs.
I think this article does a great job at conveying the new skills you need from a work-completing perspective as a manager, but there's another aspect that is much more subtle and long-term: being a guide for other people's careers.
I've seen dozens of people start managing, stop managing, change roles (including myself), etc, and there are two extremes that stand out:
1. Management out of necessity. They became a manager because they wanted to solve a problem that is too big for them to solve alone, and no one else was willing to fund it. So they got headcount, hired a team, and set them to work on solving the hard problem. But the problem they're solving is the only focus. This manager tends to have an elite team of low-maintenance engineers who just get things done. They are very effective, but eventually when those reports start asking questions like, "how do I get promoted? What's the next step in my career?" their manager has to suddenly learn this new set of skills or risk losing their highest performers.
2. Management to be a mentor. They became a manager to help other people grow. Sure they are solving problems with the team, but this manager spends the time to help higher-maintenance engineers grow their own skills. This is time-consuming, this can be frustrating, progress is going to be slower, but eventually you can reach very high throughput, and also feel very accomplished knowing you helped someone else reach their potential. This, however, has to be balanced with not moving so slowly that you frustrate your top performers.
There's nothing wrong with either of these extremes so long as everyone in the manager-report relationship knows what to expect, and many managers will be between these two extremes.
The main tl;dr takeaway is: as a manager, you are not just responsible for people's tasks, you are responsible for their career. Managers need to take this seriously and address it head-on to build those skills before the first time a report asks, "so how do I get promoted?"
As another commenter mentioned, the first role is Vision + Leadership, and the second role is more like Support + Mentorship.
Personally I would love do the first, and the second one feels more like HR should do. Of course, HR doesn't have the specialization needed for that, but maybe they should expand into that? HRO - Human Resource Optimization.
The only career goals I want my manager to be responsible for is to not be in my way. I tinkered with my PC since I was young without my manager. I decided to go to Computer Science without my manager. I got my degree without my manager. I got my first job without my manager. I practiced lifelong learning without my manager. I ran my own company without my manager. I handled clients without my manager. I managed to find mentors without my manager. Etc.
There might be some people that need a nanny. I am not one of those people. My manager should be a proper valve between me and whatever layer he manages for and should not play stupid games when it comes to my career. That's it. He's a colleague. Not a mentor. I'm perfectly capable of finding mentors for myself, and if it happens to be them, well, kudos to them.
Am I missing this, or are you assuming that I am incapable of finding opportunities myself, within or without the organization that the manager is beholden to? I honestly can't understand this framing, of the manager's job as a sort of opportunity finder for those 'under' them, and somehow being more impactful at this than the individuals themselves.
I'll give you this, some people need to be managed and for some reason presented with opportunities by a 2nd party. But some people just don't, they need to be collaborated with.
> Am I missing this, or are you assuming that I am incapable of finding opportunities myself
Somewhat, yes. It has nothing to do with you. Some opportunities you can create yourself, go for it. Other opportunities only arise in the context of leadership meetings you are not a part of (by definition, if you're not the manager). Having a manager in those meeting push for your opportunities is priceless.
Having had many managers who don't do this for me and a few that do, definitely want the second kind.
If one of my direct reports came to me and said they were interested in working on, say... AI observability (replace with whatever interests you), and that was something I had any influence over (even if only indirectly), I'd be finding whatever way I could to connect my report with that kind of work.
It's all well and good to say that you're in control of your own career advancement, but that's not in conflict with working with your manager on supporting your career development. Even if they don't have anything to teach you, they will necessarily have some influence of your scope/area of work, so it only makes sense to work them on aligning your work with your interests.
I believe everything you wrote about here is actually cooperation between two people, and to the point of what I said, you not actively getting in the way of your direct report's career progression.
> The manager's job is to find you impactful work that a) gets you promoted and b) challenges you in the ways you want or need to grow.
To me, the comment I responded to reads like a manager actively involved in the promotion of a direct report, and in finding a scope of work that the report might find challenging so that they grow. Your comment reads like a colleague helping out another colleague to the best of their ability. Which is exactly what I expect from a manager.
> You're missing a very important aspect of how managers impact your career: Opportunities.
Indeed! In basketball terms, a manager should be the MVP in Assists. They don't score directly but they set up plays for you so you can succeed. It's then up to the employee to act on it and score.
I stopped using Digg a long long time ago. It just felt too slow to get the news I care about.
I was an avid Slashdot user way back in the day, but the site was basically the same throughout the day, and I wanted faster updates. Digg did this perfectly for a time, but eventually I migrated entirely to Reddit (even before whatever that drama was that caused a big exodus from Digg).
I think Reddit right now is the sweet spot: up to date information, longer-term articles to read, and easy to catch up on things I missed. I was recently pressured to sign up for X (or Twitter or whatever), and I had to turn off all of the notifications since I was constantly spammed with "BREAKING: X RESPONDS TO Y ABOUT Z!!!!"
Right now having Reddit for scrolling and Hackernews for articles+discussion feels like it works for me.
Reddit is flooded with AI slop. r/all currently has AI-generated text posts and articles on the first page. Upvoted because they're the typical orange man bad stuff, but LLM slop nonetheless. Assuming the engagement is organic, it's depressing how much of the site has no eye for this stuff.
There are decent small communities I'm a part of but the trash feels like it is encroaching.
And the notifications you describe are exactly reddit's notifications? "your comment received 10/20/50/100 upvotes!" "x responds to y about z" "News is trending"
> A good manager is more like a transparent umbrella. They protect the team from unnecessary stress and pressure, but don’t hide reality from them.
I'm absolutely going to steal this metaphor going forward.
Being a "transparent umbrella" does require knowing the personalities of your reports, some people do get distracted when they think higher-up decisions or unhappiness are going to affect their team. Most people, however, really appreciate the transparency. It helps them feel more in control when they know what is happening around them, and when things do change they can tie it back to something that was said previously.
> They protect the team from unnecessary stress and pressure, but don’t hide reality from them.
I was going to highlight this as well, but it is also one of the trickiest parts of the equation, because by definition this inevitably involves a lot of politics and social implications.
What I have learned over the years: let the overall direction, and also the overall competitive pressures, filter down through your umbrella. But shield them from the details and your specific efforts here, unless it is relevant.
Maybe even more important, though - recognize inflection points in your company and your group. How you manage during routine times and during stressful times may well be very different. If they're not, then you have a serious problem.
I agree with that. It's useful for (most) people to understand the overall environment the company is operating in. Probably less every top-down decision the company is making.
>> Being a "transparent umbrella" does require knowing the personalities of your reports, some people do get distracted when they think higher-up decisions or unhappiness are going to affect their team.
There is the expectation that the manager knows who will be distracted. This is a basic part of knowing your people. I know which of my colleagues is going to get distracted without having the level of communication that my manager has. On one extreme, they just forward information knowing a report can work with it. One the other, the manager has to translate and communicate every element.
Ideally, the manager is already working on a way to ensure their report can handle transparency because that means they can work autonomously. You can't have individual contributors lead, if they are going to run into issues as soon as they discover what is going on overhead. They may not understand it yet, but they should have coping and mitigation strategies.
Engineers can be the worst group you could deal with when it comes to overhead conversations when they expect things to be orderly. Your organization is failing when everything has to go through managers and people can't operate independently.
My favorite manager told me a similar analogy before I left, but with a caveat; a good manager has to provide cover for the team, but it's up to the team to hold the manager up - just like an umbrella.
I wouldn't say more disturbing, really. But more "enlightening".
A shit umbrella is great to have if the alternative is a shit funnel. But how are you gonna appreciate the shit umbrella if it's pitch black, blocks everything at all times?
You're not gonna appreciate it. In fact, you might think some of the things your manager does are the "bad things", when in fact, it's just the umbrella bowing under all the shitload.
If the umbrella is (somewhat) transparent, you, as the manager, gain some legitimacy through transparency. You're no longer the manager that "sits around on his ass all day doing nothing". You're actually doing something for the team and they can "see" it, even though it doesn't affect them.
If I know what was going on transparently I am stressed. As an ordinary employee, I don’t need to know everything and therefore don’t need to worry about it.
As a leader, it's important to provide not just the meat but also the veggies. What people end up eating is up to them, but serve the full course! If as a ME, I start deciding who needs to know what, information will be perceived as incomplete because people always talk and engineer are often smart enough to read between the lines. So the transparent umbrella is a great analogy. Communicate bad news as fast and coherently as possible - group meeting with open questions works well for me but be ready to address the potential fears: "In my current assessment, that's not going to be a problem, I'll let you know if that changes." and of course "Thanks for asking, I didn't consider that and I don't know yet. I'll clarify" is a valid answer, if you do indeed clarify.
If you're genuinely stressed with that, talk to your lead about it and they'll find a way to filter a little more while not giving you the feeling of being left out.
I want to be aware of enough to be productive, yes, but not so much that I get bogged down in the minutiae of corporate politics and can’t focus on my daily work.
Yes. I don't want to know the politics either, but on at least one occasion, for me, it gave me a very good and correct indicator of when to jump ship and saved me a lot of uncertainty (i.e. unemployment).
You're right, probably not everything! It's a managers job to understand what you don't need to know or worry about. But I find it very useful to understand why something is happening, or what else is happening out there that might have an impact on us and we should worry about.
The basic question is how much context do you actually want if you can't really affect it and it's therefore more of a distraction than useful input. Some is almost certainly useful but it probably varies by individual and situation.
Very cool. I think everyone should try making all of these foundational technologies themselves: A programming language, an OS, a bootloader, etc.
It's one thing to read about them in books, but you learn so much nuance by actually stepping through the inherent problems and difficulties in actually making them work.
This sounds good in theory, but a jack of all trades is a master of none. I once spent a semester building an interpreter compiler for very simple LR(1) parsable languages. I learned a lot, but that knowledge fades rather quickly and even despite this significant investment of time, I never came close to being able to touch anything production worthy.
Modern tech is too advanced to meaningfully learn about it by tinkering with small toy projects. These "foundational technologies" are gigantic specializations that require an extraordinary investment of time to master.
Looking back now over the years, I wish I tinkered less and narrowed my focus more.
I would always feel bad in those cases, because it's clear they spent a lot of time, and I'm going to have to say "no" and they will feel like they wasted a ton of effort.
The thought process around this has started shifting for me in the last few weeks. I'm a lot more comfortable saying "no" with a list of concerns when I suspect the code is AI-generated, and I see others doing the same. CLs that would be sitting around for days because no one wants to be the first to say, "this is bad, don't do this" now get quicker feedback.
The good thing is this feedback doesn't feel like as big a deal as it used to because people are less personally attached to code they generated in 30 minutes vs. code they hand crafted over a week. I had at least 2 LLM-generated PRs that were complete, correct, tested, and pre-reviewed by me, but I got feedback that they were going in the wrong direction. This would have been 8 hours of wasted effort a year ago, but now it's just an extra 30 minutes to rework the direction with LLM assistance.