Remix.run Logo
dktoao 2 hours ago

Story time! I Worked with not just a "rockstar" but what I suspect was a "superstar" for about three years at my last gig. It was a small company with about 3-4 developers at any given time and we worked on an embedded Linux product in a moderately safety-critical industry that had a messy ~25 y/o codebase and a custom, roll-your-own Linux distro on custom hardware. Our "superstar" had been with the company for ~10 years and due to really high turnover I was the most senior of the rest of the staff with 3 years. The manager of the software team claimed to have 10+ years of software development experience on his resume and LinkedIn, but would ask CS 101 questions in our software planning meetings.

The basic workflow adopted by our manager was thus:

  1. Discover a bug or get a feature request
  2. Pass the task to the development team verbally
  3. Developers prioritize tasks based on which ones are more likely to be forgotten by management
  4. Approx 20% of tasks get completed
  5. Repeat step 1
You might think, with our superstar developer, a workflow like this would be possible. Honestly, I saw him do things (pre-AI) that were astonishing. He would work a weekend and add a feature I thought would take 2 weeks. He created a re-write of our main product and demoed a completely new product using the same hardware by himself in about 6 months. He would take feature requests not assigned to him and just do them before the assigned developer was even finished planning the feature. The sales team would come in with a pitch for an insane new feature idea (like add a Farsi version of the UI) on Friday, the rest of the team would attempt to push back on it, then he would check-in a semi-working version of that feature on Monday. For these reasons our manager loved him and would always ask the rest of the development team why we couldn't keep up. It was demoralizing and frustrating. At the same time, as a company, we were mostly unable to get very simple changes out the door. Most of the insane features we added died on the vine before getting to the customer (but the code would remain polluting the codebase). Any bug that was fixed would reveal 2 more serious show-stopping bugs. New software releases were regularly regressed: they would break one of our customer's use cases and because we never created basic functionality like OTA updates, we would fly a tech out with a flash drive to revert all the software. We worked on 3-4 new products an not a single one ever saw the light of day. Our company github was littered with dead, abandoned, duplicated repos.

Basically our superstar developer absolutely allowed our non-technical management to commit software development seppuku. His successes were highly visible, but his failures were not:

  1. Clobbering other developer's commits because he didn't know how to use git to rebase or merge changes
  2. Copy pasting (not forking) entire codebases to work on a new feature that then got so bloated they were impossible to merge
  3. Absolutely no documentation of any sort, not even comments.
  4. No automated testing of any sort on any of his code even though there was an effort by the rest of the team to do better testing.
  5. Refusal to use the common Docker development platform everyone else had standardized on, many times his code only worked on his machine.
  6. He wouldn't fix bugs, he would just re-write the core logic of the feature that had the bug and then he wouldn't bother to remove the old logic.
  7. Regular, daily code dumps of 1000-2000 LOC that contained new features that were not discussed by the team, sometimes from casual conversations with a sales person, sometimes completely made up by him out of boredom I guess.
  8. Our Linux BSP was stuck in Amber because the only copy of it was on his local machine (allegedly). When asked many many times by the rest of the team to get it in our company repo he would check in something that did not compile and was not even remotely close to what was being used on our boards.
  9. Instead of adding dependencies where needed he would take a 3rd party library, chop it up and copy-paste it into our code directly (see point 8).
  10. Last but not least just general slop code with 15-20 levels of indentation, no modularity, dirty hacks everywhere.
I think about him a lot when I think about companies going all in on productivity maxxed vibe coded AI. I think that under better management that restricted his impulses and gave him more structure, he could have been a great asset to the company. Unfortunately when let run wild over the company codebase he was an absolute menace and ultimately led to less actual useful work getting done and an erosion of customer trust. I think this might be the reason we are getting two diametrically opposed experiences with AI: it is either going to destroy your codebase or deliver features at an astounding pace, and I think the difference is the actual technical knowledge of who is managing these projects. My guess is that there are a lot of places with middling or non-technical management pushing AI coding that are going to be in struggle city in a year or so and not understand how they got there. "But AI was making us so productive!".