News for hackers. Stuff that matters.
Re:How Developers Stop Learning: Rise of the Expert Beginner... by ChrisRR on Wednesday July 08, 2020 @06:37AM (#23768605)
I work with an expert beginner and I don't know how he's survived. He's got about 30 years of experience, but writes code like he's got 1 year of experience.

His code has absolutely no sense of quality, doesn't employ any sort of standard design patterns or style, has no semblance of architecture and is an absolute hacky rats nest of code that falls apart with any change because of how interdependent it is.

The other day I was sent some of his updated code, which had no version control and had randomly added an extra 150 files to the project. It turns out the majority of those files where duplicated from elsewhere in the project and apparently it was my job to find where the changes were among that mess.

It's like he learnt to program decades ago and then never opened a book or looked at anyone else's code since.

Re:How Developers Stop Learning: Rise of the Expert Beginner... by twic on Wednesday July 08, 2020 @06:44AM (#23768642)
And he's still got a job. So who's the real genius here?

I don't want to be that guy, and i don't want to work with that guy, but i have to confess to a certain jealousy that people like him have figured out how to sit back and just phone it in and collect pay cheques for thirty years.

Re:How Developers Stop Learning: Rise of the Expert Beginner... by caymanjim on Wednesday July 08, 2020 @08:26AM (#23769179)
I've worked with innumerable people like this over the decades. The thing is, they're usually not phoning it in. They're really trying hard. They just suck. It looks like they're working hard, because they often show up early, stay late, ask a lot of questions, and produce a lot of output.

It's hard to fire them, because to many outsiders, they're workhorses. They know just enough to scrape by on each task, but they also have institutional knowledge and social connections that make them seem invaluable. Often that institutional knowledge is that they're the only person who understands their own shitty code. Their more-capable peers usually know that they're incompetent, but management doesn't.

There are many reasons people like this can survive. Peers don't want to explicitly throw them under the bus. The best of their peers simply move on--to other projects in the same company, or more often, to greener pastures at another company. Their peers cover for them, because it's easier to work around a millstone like this than it is to get them removed. It takes months of concerted effort to get a peer fired for underperforming. If you want to try to get someone like this fired, it starts to look like you're the asshole with a personal vendetta. Especially because they've been there for a decade and you probably just arrived.

These millstones aren't outright incompetent. On paper they've got extensive experience. Socially they're well-regarded by everyone at the company except their immediate peers who know they suck. They've been faking it and faking it well since long before you arrived, and they'll be doing it long after you've departed.

Make no mistake, though. These people are rarely phoning it in. They are busting ass to tread water. Sometimes they believe their own lies, but more often they are terrified that someone will find out just how bad they are. That's why they work so hard.

Re:How Developers Stop Learning: Rise of the Expert Beginner... by SwiftyBug on Wednesday July 08, 2020 @01:11PM (#23771882)
Damn, that's me in 10 years. I'm so bad at my job that my only hope is that I go by unnoticed long enough so my time in the company becomes a strong reason not to fire me. It's been almost two years so far. The thing is I really try to improve, and in some ways I even do, but at a painfully slow pace. Even though I've been in this company for nearly two years I've been working as a software developer since 2012. And it hurts so much to see people coming fresh out of college outperforming me by orders of magnitude. It makes me feel really stupid. But is a really well paying job in a somewhat big company, so I hold onto the hope that if I don't screw up things too much my employers won't even acknowledge my existence. In the end I only feel bad for the people I work with (not those I work for) because they are nice and talented people and it must suck to work with someone that lowers the team's bar.
Re:How Developers Stop Learning: Rise of the Expert Beginner... by JaggedNZ on Wednesday July 08, 2020 @06:29PM (#23774912)
"The thing is I really try to improve", that statement alone makes me think you are not one of these people.

Don't underestimate the value of slow and steady in the world of corporate development. Many fresh out of college might seem like super stars developers that know all the latest buzz word technologies, I know this is a massive generalisation, but they don't like to work on "boring" or "legacy" and often quick to jump ship to the next opportunity.

Also, please be aware that this feeling is a common symptom of imposter syndrome.

Re:How Developers Stop Learning: Rise of the Expert Beginner... by caymanjim on Wednesday July 08, 2020 @04:35PM (#23773953)
Maybe there's a better job out there for you? Either at another company where you'll get mentoring and support for growth, or in an entirely different career. It doesn't sound like you enjoy what you're doing now.

I've stagnated at jobs in the past. I've thought it was my problem. Then I moved on to better places, where coworkers helped each other to excel, where people placed a premium on improvement and education.

If your company shoves everyone into a cubicle and assigns them individual tasks, how are you ever going to learn? If you can get a job somewhere that embraces pair programming, you might find a whole different world. You can be mentored by your coworkers and collectively solve problems, instead of feeling like you need to put your head down and produce something on your own that may be beyond your expertise.

Fresh grads, especially grads out of code schools, often arrive with a lot of buzzwords ready to go, and a script of practices they've been told are the right way, but that's all flash and no substance. It can lead to overconfidence. There's something to be said for it, though; you can fake it until you make it. The important part is that you actually make it in the end, and to do that, you need mentoring. It sounds like you're not getting the mentoring.

I know it's hard to quit a well-paid job and take a chance, but I think that's better than going to work every day hoping you won't get fired, and not growing as an individual.

Re:How Developers Stop Learning: Rise of the Expert Beginner... by SwiftyBug on Wednesday July 08, 2020 @05:58PM (#23774655)
I actually like this job. We do pair programming regularly, which is the source of most of my worries that I'm not good enough. My team has a dedicated manager whose job is to mentor us in our careers. I like him and he seems to like me, he is always willing to listen and to offer help. I think the company is outstanding in providing a healthy environment. Which is why I feel so out of place. Everyone is so smart and grows so notably much and I feel I'm falling behind.
Re:How Developers Stop Learning: Rise of the Expert Beginner... by brabel on Wednesday July 08, 2020 @11:41AM (#23770978)
It's a matter of perspective... someone, somewhere in one of your previous workplaces, might have thought of you exactly as you think of these people. So maybe don't judge too much.
Re:How Developers Stop Learning: Rise of the Expert Beginner... by zoomablemind on Wednesday July 08, 2020 @07:52AM (#23768978)
This may be an example (rather dysfunctional) of a Domain Owner. Someone, who is by historical reasons is entrusted with guardianship of the particular part of the local knowledge management. The worse the code, the more the likelihood and indeed the need for a role like this. This is clearly systemic, and is a red flag for the whole org/unit.

Whether such a Domain Owner is aware of his standing - that's a philosophical question. Job security on the one hand, inertia on the other, compounded with the very much environment that gives such role more support.

Just wish these guys are willing to share the crusts of the tribal knowledge with you, as this is where their true expertise may be. Side note: if there's this perceived disparity in the technical skill, the seniority in such org may trump the merit. There could be a way to get such Domain Owners on your side; pointing out their lack of skill is not the one, in fact this can backfire literally.

Re:How Developers Stop Learning: Rise of the Expert Beginner... by ChrisRR on Wednesday July 08, 2020 @07:29AM (#23768861)
Yeah I genuinely don't understand it. His work is universally panned in the team, he's had multiple disciplinaries against him due to low quality work and keeps scraping through.

I could never be that person, I always strive to improve and become better.

Re:How Developers Stop Learning: Rise of the Expert Beginner... by CaptArmchair on Wednesday July 08, 2020 @08:33AM (#23769226)
Ah. I think it's an example of how you and your employer use different frameworks to attribute value to what your co-worker brings to the table.

Whereas you put focus on aspect such as maintainability, readability, adaptability, testability,... of the code he's writing, your employer might simply keep him around either because his code, well, simply "works" to a degree that is satisfactory, or because of a complex interpersonal relationships which have been established over decades turning him into much into a fixture.

Put more succinctly: No one wants to know what goes into making a sausage.

That is, there's little value in explaining or arguing the fine technical details of code optimization, architectural design, functional programming, etc. etc. etc. if you don't consider your audience.

Stakeholders who rely on your co-worker's work simply want to know what his work could mean to them, and how it helps them get the job done. Your concerns regarding code quality are totally valid, but unless you, as the maintainer, will be fully perceived by your employer as a formal stakeholder in your own right, your objections risk being thrown in the wind.

At that point, it's not just a co-worker issue, it becomes a workplace culture issue. If there's a dissonance in the manner in which he's held accountable for the quality of his work by the team on the one hand, and management on the other hand, then how does that same dissonance affect how your own work gets perceived?

If he gets to scrape through, does that then imply that you're putting the bar for yourself really high, whereas you could clearly get away with doing less? Or are you trucking on despite the fact that your work is held to a different standard because there's a different expectation towards your own performance?

I think striving to "improve" or "become better" is something that only means anything if you do it for yourself first and foremost. Because that's what you want for yourself. It's a valid pursuit to want that for yourself. Whereas you have to be mindful that few people selflessly care about that desire and go out of their way to let you self-actualize that. After all, your job is first and foremost a business deal between you and your employer, and the primary reason why you are there is because your employer feels there's value in what you bring to the table.

If you work in a group, it's equally important to understand how to compromise on where you set the bar for yourself and others. Of course, in your case, you don't want to compromise on what you want for yourself to the point where you start to cross personal boundaries, lest you want to end up resenting the entire situation.

Re:How Developers Stop Learning: Rise of the Expert Beginner... by swader999 on Wednesday July 08, 2020 @10:35AM (#23770259)
A lot of these types are the first to get laid off with the best severance packages. Do this three or four times in a career and you end up with a sizable nest egg.
Re:How Developers Stop Learning: Rise of the Expert Beginner... by cyberdrunk on Wednesday July 08, 2020 @07:00AM (#23768703)
If he has any degree of self-awareness then perhaps those 30 years were riddled with anxiety over losing the job and not being able to find another one.
Re:How Developers Stop Learning: Rise of the Expert Beginner... by twic on Wednesday July 08, 2020 @08:16AM (#23769122)
Could be! But plenty of competent people have that too, so he's still ahead!
Re:How Developers Stop Learning: Rise of the Expert Beginner... by ohazi on Wednesday July 08, 2020 @06:43AM (#23768640)
In flying, logged hours are often used as an indicator of experience. A quip I've heard from at least two instructors:

"You can fly 400 hours, or you can fly the same hour 400 times."

Sounds like your coworker has had the same first year of experience 30 times...

Re:How Developers Stop Learning: Rise of the Expert Beginner... by battery423 on Wednesday July 08, 2020 @08:04AM (#23769054)
So i introduced Code Review in our Project after i joined it.

The other 2 senior people never came up with the idea of introducing it.

One of them is still putting Tickets in Review which still lack basic quality expectations.

My biggest / most used quality right now is persistence and pointing out the same misstakes/issues over weeks and month...

And don't get me wrong, there are only two options to this: 1. Get your collegues up to speed and be persistent 2. Search for a new Team

The obvious choice of not caring doesn't work for me.

Re:How Developers Stop Learning: Rise of the Expert Beginner... by darkerside on Wednesday July 08, 2020 @07:11AM (#23768754)
Maybe a challenging question, but did you give him feedback? IMO, that's the real way to stop people from ending up as an Expert Beginner. It's not that they need to adopt a new paradigm that they don't know about. It's that they need to know when they do something that sucks. People are amazing at self correcting of they have visibility into the problem.

But when people around you enable and tolerate poor code instead of correcting it gently but firmly, you don't know what to correct.

Re:How Developers Stop Learning: Rise of the Expert Beginner... by ChrisRR on Wednesday July 08, 2020 @07:27AM (#23768845)
Yes, he has had years of code reviews pointing out every thing he's doing wrong, every way he could improve and still refuses.

Refusing to use version control is a prime example. The industry as a whole has unanimously decided that version control is necessary, but he still argues that his backup of an entire directory that he does once every 2 months is more efficient

Re:How Developers Stop Learning: Rise of the Expert Beginner... by darkerside on Wednesday July 08, 2020 @09:34AM (#23769712)
Do you have support from your manager on these principles? If this isn't enforced at an organizational level, I understand why he doesn't care to do it, and I would recommend managing up so that your lead/manager understands the importance of modern coding practices.
Re:How Developers Stop Learning: Rise of the Expert Beginner... by u801e on Wednesday July 08, 2020 @08:27AM (#23769185)
> Refusing to use version control is a prime example. The industry as a whole has unanimously decided that version control is necessary, but he still argues that his backup of an entire directory that he does once every 2 months is more efficient

For what's it's worth, a lot of people who use version control treat it as a backup system instead of as a record of logical changes to the code base with a detailed description of what has changed and why.

Re:How Developers Stop Learning: Rise of the Expert Beginner... by redisman on Wednesday July 08, 2020 @03:35PM (#23773439)
It's still a hundred times better than some kind of a manual process. I can at least view the history of files with good tooling and the build pipeline etc. are manageable.
Re:How Developers Stop Learning: Rise of the Expert Beginner... by dboreham on Wednesday July 08, 2020 @10:08AM (#23769997)
Git has pretty much killed that practice ("merged PR xxxx" is all you get).
Re:How Developers Stop Learning: Rise of the Expert Beginner... by u801e on Wednesday July 08, 2020 @10:59AM (#23770508)
Github you mean. Prior to git, people also did similar things with svn and other VCS software.
Re:How Developers Stop Learning: Rise of the Expert Beginner... by ownagefool on Wednesday July 08, 2020 @08:26AM (#23769178)
He doesn't want to learn the new thing.

Just refuse to accept the code unless it's a PR; leave him no choice.

Re:How Developers Stop Learning: Rise of the Expert Beginner... by ChrisRR on Wednesday July 08, 2020 @08:54AM (#23769374)
Already tried. I've been told to just merge it and stop being awkward
Re:How Developers Stop Learning: Rise of the Expert Beginner... by Lio on Wednesday July 08, 2020 @09:57AM (#23769893)
Who ever is telling you to accept that is really the one responsible.

They're the one setting the standards for the team. Your colleague is just working to rule and the rules are lax.

Re:How Developers Stop Learning: Rise of the Expert Beginner... by bluedino on Wednesday July 08, 2020 @07:43AM (#23768928)
I worked at a place where the main programmer had been there 20+ years. To this day, they are still using a language which was popular in the 90's, but you rarely see today.

The day I interviewed, he said "I know I'm not the best programmer but I believe that after enough hours on the project you will end up with something that works", and he bragged about many nights sleeping in the office on a cot he had under his desk, keeping systems running and debugging live programs.

It was some of the ugliest code I had ever seen in my life. Every couple years, they'd hire an actual programmer, but he refused to change his methods, and the programmers would eventually find another job out of frustration. It was very easy to see which code was done by the other programmers, it just made so much more sense than his code, it was documented, etc etc.

Re:How Developers Stop Learning: Rise of the Expert Beginner... by Nextgrid on Wednesday July 08, 2020 @09:07AM (#23769488)
I think there is a balance to be struck here.

I definitely agree that his approach to code quality is bad and he should improve.

On the other hand, he still seems to be delivering value to the business by making things work, regardless of how awful the code is, and I feel like this is still an improvement over the other extreme which is chasing hype and buzzwords while delivering near-zero actual business value.

Re:How Developers Stop Learning: Rise of the Expert Beginner... by ChrisRR on Wednesday July 08, 2020 @07:48AM (#23768954)
Sounds similar. So many of the hours he logged were because of trying to shoehorn features into the ratsnest of code. If he had rearchitected chunks of the code into something more logical, then it would've saved time overall.

I don't think he understands the purpose of architecture is to make future development easier, and instead thinks that if you make all variables global to be changed anywhere at any time, then that makes it easier and faster

Re:How Developers Stop Learning: Rise of the Expert Beginner... by hahamrfunnyguy on Wednesday July 08, 2020 @07:57AM (#23769010)
There's a lot of developers out there like this. It's best to avoid hiring them. I think would call this person a lousy developer and not an expert beginner.
Re:How Developers Stop Learning: Rise of the Expert Beginner... by BossingAround on Wednesday July 08, 2020 @06:42AM (#23768634)
"If it ain't broke"... :))