Earlier quoted context omitted.
Also if you restrict hiring to recommendations it's going to be even worse for your diversity. We can at least try to have a recruitment system that doesn't place too much weight on what people's faces look like or nebulous "cultural fit".
Other than warm-fuzzies, what are the benefits of a diverse workforce for a company? If you could eliminate the problem of bad hires by only hiring jewish black transwomen to the exclusion of anybody else, shouldn't you do it?
Beware of Developers Who Do Negative Work
231–240 of 271 posts
Re: Beware of Developers Who Do Negative Work
#232> So if the cost of a developer who does negative work is so high, how do they get hired? Part of it can be explained by an interview process that needs improvement, but a less talked about part is the temptation to lower hiring standards. I've seen plenty of people who can reverse binary trees or fizzbang etc who are terrible additions to teams and do "negative work". That's because having a grasp of CS fundamentals…
Danger with this is people recommend based on friendship & personal gain as much as competence. You can end up with mini guilds of ~5 people, who know each other well, and help each other with their career by recommending each other as they migrate from company to company. Seen this happen twice now. At my current company, someone joined the devops/infrastructure team, then brought 4 over from his network at his prev…
Re: Beware of Developers Who Do Negative Work
#233Earlier quoted context omitted.
It's hilarious, because our best hires are people who had no CS education. Meanwhile, some of the worst hires were CS grads. Things that are hard to teach: Can you work in a team, especially if some of them are remote workers? Can you leave your ego behind? Can you deal with the corporate BS that gets in the way of programming? Can you think of the user, use-cases, business value, etc of the feature/product you're de…
> Personally, I find CS, in trying to validate itself as a "science" (which it is not, no scientific method, just like maths isn't science, but still valuable) Science can mean different things to different people. While in the english speaking world it is often equated to "natural science" this not the case for all languages. Take the famous Gauss quote for example: "Mathematica regina scientiarum est et theoria num…
It's a bit disingenuous to bring German into this, luckily I speak it also. I would dispute that "science" == "Wissenschaft". Literally translated, "Wissenschaft" is "creating/establishing/managing/develop knowledge". In the strictest sense, "science" must be translated as "Naturwissenschaft". There simply isn't a direct mapping. Interestingly, "structural science" in English means something different than "Strukturwissenschaft", so even the example you gave undermines that "science" == "Wissenschaft". Wissenshaft encompasses more than science.
I find a useful test if something might be a science is check it doesn't have "science" in the name :)
But let's be clear, just because a field isn't a "science" doesn't diminish importance or value. I am sick of seeing this argument. But it is extremely important in the way you approach teaching that field.
I actually think it gives you far more flexibility and interesting ways to approach a field. Scientific method is very rigid, for good reason. But fields that don't employ the scientific method need not adopt this rigidity, especially if they have solid formalism behind them. Just don't try and dress it up like a science. E.g. I hate Big-O, or the almost religious importance CS puts in it. It's good formalism that can't be directly applied to reality. It isn't a scientific result. But that's a rant for another day.
Re: Beware of Developers Who Do Negative Work
#234Earlier quoted context omitted.
A good manager minimizes the amount of time a developer has to spend on stuff that isn't developing. In the right situations, a good manager can make a team of a few devs far more productive than if you added another dev in place of that manager. Bad managers, of course, can be disastrous, though.
Most stuff isn't developing. Designing, planning, architecturing, reviewing, developing, testing, delivering, maintaining, presenting... That's all a developer's jobs. I don't think that they should be strictly limited to "that guy who's got a special job title" (architect, managers, lead, whatever).
Although, it can be beneficial to have different people for a lot of the things you mention, especially as a project grows in size and scope. And you need at least two people if you include review; reviewing one's own work is far less effective. Same with testing. Plenty of great devs are not great or don't like presenting, etc.
If you do go the route of splitting responsibilities, you're going to be more efficient if you have someone coordinating their efforts, reducing the communication overhead for the whole team by being a central point of synchronization. That's one of the responsibilities of a good manager.
Re: Beware of Developers Who Do Negative Work
#235Earlier quoted context omitted.
> let them go Erm, that isn't how corporations work. First, team lead doesn't mean manager, and even then in some companies, first and second line have very little to say. HR needs to be involved, etc. Which creates more work. There are the people who simply don't care. Contractors on a gravy train or outsourced people. I've been there, there is nothing you can do in this case. I think it's fair to say from your resu…
That's a valid point of course, thanks for pointing this out! I assumed that the organization in which you work is at least partially functional and that management has an interest in ensuring good working conditions, which as you say is not always the case. But even if you're not in a position to do hiring/firing decisions there is still a lot you can do to make it harder for other people to do bad work. One of the…
I would say this is quite rarely the case. It's amazing how many companies are able to slog through with completely braindead personnel practices. It seems most places are either far too reluctant or far too quick to terminate employees.
I know of a company that refused to fire someone who not only destroyed a production database but, on a separate occasion, accidentally facilitated an ongoing leak of the source code of all web applications (which was only discovered when it was revealed to the CEO by a script kiddie with a guilty conscience). Because this guy is well-connected, he lives to imperil the company another day (usually in slightly less dramatic ways).
I also know of a company that fires otherwise good programmers for not being at their desks by 9:05 a few times per year. Those people are terrible.
It seems that a company that is actually reasonable about its personnel practices is very rare indeed.
>If that's not possible due to resistance from management or a dysfunctional organization, you should consider leaving that position as soon as possible as it is not a good environment to work in (and as the author says, luckily there are enough opportunities for good programmers these days). But again, the problem here would not be the single bad programmer, but the setup of the whole organization, which is unfortunately much harder to fix.
You're right that often you can't fire someone for legal or political reasons, which is unfortunately all too common. However, I must oppose your proposal to just leave the org.
As discussed above, there are not many sanely-run companies out there. In my career, I used to take the "just leave" advice, but I've found this really stunts your ability to grow, personally and professionally, along multiple axes.
Unreasonable people are, unfortunately, a fact of life. I used to think a smart company could mostly avoid having them in the ranks. I still believe a smart one could more or less do this, and that damage from the stragglers can be mitigated, but I now just believe smart companies are unicorns and you should never expect to be working at one. This is a safe/important assumption because "smart companies" can turn dumb real quick, especially when/as visionary leadership is replaced by conventional business school cogs.
One must become a politician, which will enable one to flourish in the chaos, especially if passable political craft is combined with actual technical skill and good judgment.
If you're stuck with bad talent that can't be fired, you should redirect them into a side channel where the amount of damage they do is mitigated. There's actually a lot of bad employees who are perfectly OK with this. Most of them are primarily interested in security, since they know it's difficult to find new employers with their limited skillsets. Giving them their own little irrelevant kingdom will help with that and also keep the high-level bosses happy because they don't have to fire their cousin and make Thanksgiving awkward for the rest of eternity, or deal with a lawsuit from an employee who has already threatened to take the company to the cleaners.
Re: Beware of Developers Who Do Negative Work
#236Earlier quoted context omitted.
In my book, the best managers should work for the team, not the other way around.
Be careful with this. It's usually a sign of a political double-talker. The manager hasn't forgotten who he works for, even if he wishes you would.
Of course, yes, there are plenty of situations where it is just double-talk.
Re: Beware of Developers Who Do Negative Work
#237Earlier quoted context omitted.
> let them go Erm, that isn't how corporations work. First, team lead doesn't mean manager, and even then in some companies, first and second line have very little to say. HR needs to be involved, etc. Which creates more work. There are the people who simply don't care. Contractors on a gravy train or outsourced people. I've been there, there is nothing you can do in this case. I think it's fair to say from your resu…
> I've been there, there is nothing you can do in this case. You can leave. You can become the contractor that doesn't care but racks in €1000 a day. There are always options.
But should we as professionals an answer to this problem? Or is it a management problem? (Although that's a cop-out, because that's still part of our profession). Is it human nature? Do other professions suffer from similar situations? These are interesting questions, to which I have no answer yet.
Re: Beware of Developers Who Do Negative Work
#238Earlier quoted context omitted.
As someone with a fantastic manager: it's great. He handles the planning and resource allocation for projects and makes sure that I have everything I need to be able to develop, this includes making sure that any external dependencies (like people not on our team) do their stuff and that the team as a whole is maximizing our time. Whenever for some reason something is blocking me that isn't directly code related, he'…
Any senior or lead could handle the planning and the resources. We both agree that there is something to be done. I personally noticed that it doesn't have to be assigned to an full time manager position.
Right, and if there is enough of that to be done it makes more sense to hire someone to do it specifically, so that the senior/lead developer's time can be spent more effectively.
> I personally noticed that it doesn't have to be assigned to an full time manager position.
In my experience it's much more about the quality of the manager. Unless you're in a company of only 10 people or so there are almost always more things a good manager can find to help with.
On the other hand, even having every member of the dev team being swamped with management/coordination work is better than putting a bad manager over them.
Re: Beware of Developers Who Do Negative Work
#239Earlier quoted context omitted.
I agree. Funny story with the code review, we had that. But several devs kept submitting broken/bad code, so they could tell their manager "oh, I'm waiting on a code review". The loss of productivity due to other devs trying to do constructive code reviews was staggering. One guy was asked to leave a project after he submitted 17 updates to the same commit, and all of them failed basic (and luckily automated) linting…
In the bad/broken code it again sounds like poor management - instituting the 'bums in seat' checklist of was present for a code review, versus the qualitative check of 'had done work that was worth reviewing'.
But managers aren't intrinsically bad people, they just have different motivations. And they have their own problems caused by politics. Ideally devs would have tools to combat this problem directly. But life isn't always fair.
Re: Beware of Developers Who Do Negative Work
#240Earlier quoted context omitted.
I agree. Funny story with the code review, we had that. But several devs kept submitting broken/bad code, so they could tell their manager "oh, I'm waiting on a code review". The loss of productivity due to other devs trying to do constructive code reviews was staggering. One guy was asked to leave a project after he submitted 17 updates to the same commit, and all of them failed basic (and luckily automated) linting…
Of course there are developers who bring problems to projects. However, many of the problems are organizational: I have seen some projects place sizeable incentives on any bug fixes (e.g., highly value number of such submissions / week), which encourages people to do quick fixes for simple things, not important ones and does not penalize for poor performing software and convoluted code. If one finds itself in this en…
It's a good question. I think it's often a hard sell, that the change, while more work in the short run is less effort in the long run. Why should I care? I'm still getting paid the same. Of course, that's a facile argument and easy to refute: professional development.
In my experience organisational behaviour has a root cause. You have to find that and understand it to change it, you can't just change the organisational behaviour but leave the root cause. To an outsider, the root cause probably isn't obvious. Heck, sometimes by the time you understand it yourself, you've been there so long you might as well move on. But often, it's also the devs who refuse to get political. Who understands the system better, and why should somebody else fix it? But then the obvious excuses happen. "Too busy", "Not my problem", "Nothing I can do". Devs start leaving the project or the company. Now, it's never going to get changed. Apathy is the worst symptom.