The result of their bad code is future changes take 2x-3x as long. But no one can tell if those timelines are just what they are, or that there is a problem with the existing code.
The thing is, the syntax/design patterns in the code can look clean. But that doesnt mean the abstraction/interface is the right one
I recall how when Git started getting widespread adoption, a popular blogpost theme was discussion of cleaning up your commits...which is the kind of thing you can do if you're writing in small increments. But code that "moves mountains" in the architecture, as is often the case in a greenfield project where there's a lot of learning being done, tends to have dirty rip-off-the-bandage moments. If you clean up those kinds of commits, it's not really beneficial to future code archeology. But if you're clocking minimal effort and maximum CYA, it suddenly becomes hugely important to dot the i's and cross the t's, because that looks more professional than a commit log where you iterate on it a bunch and your log is like "maybe it's fixed now?"
An experienced engineer with many products under their belt and tons of coaching of others on their track record will easily tell if someone knows what they're doing, especially if they get to pair program together for even 30 minutes.
(Leetcode seems to be an awful predictor of how someone will perform as a software engineer. That students are spending so much time practicing for it, rather than experimenting and building things, is awful. Some of the biggest companies they're applying to were founded by students doing the opposite of practicing for someone else's hazing rituals -- they were experimenting and building.)
I 100% agree with you but it's not as easy and scaleable as it seems.
Interviewer training can help avoid that happening accidentally.
(And Leetcode interviews don't avoid the interviewer ego problem. It's purportedly "objective", but the interviewer can easily taint it, accidentally or intentionally. The answer isn't Leetcode, but to train or reign in egos, and then you can use a real conversation.)
So I added an hour's pair programming on either toy problems or our existing codebase, depending what was suitable at the time. No leetcode, no months of prep for candidates, and our interview outcomes were much better.
There's a massive gulf between toxic leetcode hoop-jumping and a friendly chat.
It's better compared to many other measures you might think of, though it's an interesting exercise to consider what might work better.
it's not a pseudo metric.
(source: I did some work for a litigation support/consulting firm, expert witnesses for defense contracting)
We might be talking past each other here, so please correct me if I'm wrong, but how does the example you presented address the argument that "lines of code produced are not a useful metric for evaluating individual developer performance at hiring time"?
Ideally we have this by code review, which should, theoretically, filter out the bullshit, but software development, as the original post in this thread says, may be overwhelmingly populated by bullshitters or people who honestly don't know their own lack of ability.
This is exaggerated by agism and completely discounting audited real experience over leetcode and small take home projects.
At a new company with a higher salary. My richest friends are all like this.
Everything was "difficult" and "required analysis". The code mostly worked, but was full of workarounds that would not have been there if someone spent half an hour reading the library documentation.
One thing they didn't do though was stick their head out too much as that was too great a risk to their cushy positions.
Why do they do that, one might ask? Turns out they're either busy with house renovation or have some kind of engaging hobby which takes most of their time.
I had a guy confess that those three hours between 7am and the end of our standup is the only time he works during the day. He was hard to work with because he would do everything to cover his ass should something go wrong.
Three to four hours of deep work could be enough to complete the daily workload. Maybe he was downplaying the other rest of time that didn't feel like he worked at all even though he was in meetings and doing other BS the company required him to do.
only if you make a case that six to eight hours of deep work is somehow not possible. Perhaps you make a good faith effort to get 6 to 8 but you can't seem to do it, or you're too exhausted after 3 or 4, but you can't simply demand that you should get paid for 8 but you're only going to work for 3 or 4 because that's enough.
6 to 8 hours of deep work is certainly possible but is it sustainable? I don't think so, minds need some slack time, enter a different mode of thinking, etc. For this reason work is chunked into workable amounts which it makes it sustainable as well.
Another situation: we were estimating tasks and I challenged the estimate for a task he was supposed to do.
His reply: "ok, if I'm going to reduce my estimate then you reduce one of yours"
Normally I wouldn't care about such things, but my work depended on his and it was hard to make him follow through on his promises.
My advice: many "quiet bullshitters" want to do better, but lack the tools, support and ability to do so. They're not trying to take everyone for a ride, but they feel backed into a corner with no way out and they can't ask for help without great personal risk (either real or perceived).
Things can get very difficult very quick if a company has most of their knowledge stored in people's heads, and the main mode of spreading knowledge is meetings.
Having little documentation is common Having a high meeting culture makes this work for a part of the company, for a while. But even the good listeners at some point aren't sure enough about their knowledge that they would write about it. Making the problem worse.
AD(H)Ders will not be able to process any of this knowledge, because it's all dependent on listening to people. At some point they'll feel ashamed that they are in the project for years now and can't contribute properly.
If you do want to stay in this company, this strategy can work to make your life better:
1) Document everything, for yourself. Since you're ashamed of your lack of knowledge write up in private what you do know, or think you know. Since you keep it private nobody will see if you have something wrong.
2) When you need to something, you can test if this knowledge actually works as you wrote it up, you can refine it.
3) Once refined you can contribute it back to the main knowledge base.
4) If you don't know something, and can't find where it's documented, ask people to show you where it's documented. If it's not it's not a bad thing for a senior engineer to ask where it is documented. This saves face, and improves documentation.
Also: always ask people to write you emails if they want anything from you. Verbal is worthless.
One thing I’m going to try is putting everything into some kind of planner. Like my own personal scrum board. I know your case is a bit different but curious if you’ve found some tips and tricks that helped
Paraphrasing something one person told me(not the 3h guy, someone else):
"Look, I'm building a house right now and that's my main focus. I'm billed by the hour so if anyone finds out something is wrong with my work and orders me to fix it, then that's just more billable hours for me. I don't complain - at least there's work."
That last bit is specific to my corner of the world where the previous decades were marked by high unemployment.
Combining the above they will move from project to project and position to position once a year or sometimes two years leaving the team or some poor soul who was recently promoted to take over their mess. Then when the project continues to fail they can shake their head to their boss and say, "Everything was on track when I left project. They must have really gone away from the original design for this to happen."
You will never be punished for shipping, and always punished for not-shipping.
As an aside, I always find this to be a funny example, because it's the kind of requirement that reeks of design mistakes (either UI design or code design). How did we end up in a place where a button was 1 pixel out of alignment? It can happen innocently enough with a true "defect", I've seen it, but more often it indicates either A) designers are freeforming everything and wasting massive amounts of time or B) engineers are not using reusable styling frameworks/components.
Either way, ending up with a tiny task because a button is 1px out of place probably means you have been wasting hours of work and will continue to waste hours of work if you don't fix it the long way. Doesn't necessarily mean I would stretch that particular ticket out to a week, but I would certainly take a little bit of extra time to make sure we didn't have to fix the exact same problem again next week.
This is happening at my company. We had built a whole UI library and then the new UI design team came in and started designing everything with zero regard to our existing library. It has been a shitshow.
Bonus points because product likes their new designs more than the premade library, so they are fighting hard to throw out the library. Which we basically just finished building.
Woohoo!
Another unpopular opinion; I’ve resorted to BSing these days cause let’s be real; vast majority of these startups are just fiat wealth rockets, hooking people on nation state scrip
This whole thread just feels like low effort coder bro chest bumping.
What real human problems have you all resolved that lifted the lowest in society without the kowtow to those of high net worth?
We’re just high priests avoiding real work of keeping ourselves alive.
My eyes cannot roll any harder.
Ok, bro
I'll admit that my profession is no more noble than say, a carpenter, and is primarily to fund my desired lifestyle. But I don't work at a startup and I don't make startup money and I'm certainly not a coder bro (after my time). I can't say I've "resolved" any real human problems either, but I do occasionally try to do something to help. Over the years I've coached youth sports, tutored reading and math for underprivileged or ESL kids, collected food for the local food bank, played harmonica in a jug band at the local old-folks home, taught after-school bike repair, do roadside cleanup, and was going to do books for inmates but it got cancelled due to COVID. And lest you think I'm trying to get into heaven this all comes from my cold dead atheist heart in the chest doing all that bumping. ;^)
That not happening suggests that "BS" is good enough for most companies in which case why should you bust your ass doing any better when it's just more work for yourself and is unlikely to get rewarded adequately?
If they're offering "market-rate" salary then they can get "market-rate" quality, and if BS became the new "market-rate" then I don't see anything wrong with that.
In the last 15 years I've seen this quite a bit with new hires. Self proclaimed experts who can talk extremely convincingly, who have passable domain knowledge, and very little practical ability. The code they write is usually junk, or worse, actively a problem. Because I do not have a forceful personality and our upper management is mostly clueless, these people prosper in the beginning, but eventually they shit where they eat so much that end up creating an unmaintainable morass and choose to move on. Every last of one them.
I guess they fall into the "just enough knowledge to be dangerous" category.