7 ms·
There's never a simple answer to this. Here's some of the things we encounter: * A bored developer is an unhappy developer. Unhappy developers leave. Develope
by Philip-J-Fry 4y ago
There's never a simple answer to this.
Here's some of the things we encounter:
* A bored developer is an unhappy developer. Unhappy developers leave. Developers that leave take a swathe of domain knowledge with them.
* Your good developers are often the ones who like to tinker with frameworks, patterns and complexity. Note: good developers don't force this down people's throats, but they're always thinking about what they can apply in the future. That's not to say they can't be perfectly fine working on boring code. But they often get bored with it. They can be 5x as productive as your average developer when working on the boring code, but you're just ticking down a clock in a lot of cases.
* Complex code can be a hindrance to onboarding new developers. Boring code can be a hindrance to onboarding new features.
* You often end up in a situation where you're reinventing the wheel and you're spending increasing amounts of development time on keeping the wheel round. At some point you've got to consider a ready-made solution to your problem or consider hiring more people to deal with it.
* Technical leaders have a fine balance between keeping developers happy, keeping development velocity high and keeping onboarding speed high.
Creating a company off the back of a flavour-of-the-month tech stack isn't a good idea. But I can't see how any large software company can scale without having a bit of spice somewhere.
- sorokod 4y agoDeveloper can be a programmer or a software engineer ( my definitions). Programmers tend to be interested in cool new paradigms, tools, libraries, etc... Software engineers tend to be interested in delivering robust and correct features. Consequently they are more conservative. When companies hire, they should be clear what sort of developer they want. Programmer in a software engineering role will damage the code base and eventually leave in frustration.
- thow232329 4y ago> Programmers tend to be interested in cool new paradigms, tools, libraries, etc... Yeah well guess what, a company does not care one iota about what its employees personal interests are, or what they think is cool. And it shouldn't.
- sorokod 4y agoThat makes no sense, it's just a question of role-candidate fit. Why would a company not care?
- lolinder 4y agoThis is nonsense. A company that doesn't care one iota about how its employees feel about their job ends up with high turnover, which dramatically increases costs in the long run. Good companies strike a balance between the needs of the employees, the needs of customers, and the bottom line. Any company that fails to strike that balance will lose in the long term.
- thow232329 4y agoThe definition of a company and its goals and motivations, is clear, and it does not have any consideration for employee amusement. That's what the christmas party and company picnic is for, and they happen outside of working hours. If you push your own amusement as a priority at work, at the expense of the goal of the company, you literally make the working environment dysfunctional.
- deleted 4y ago[deleted]
- lolinder 4y agoThis philosophy only works if you live in one of three simplified universes: either your employees are fully bought in to the company's goals, or you can always pay them enough money for them to keep working for you without any intrinsic motivation, or your employees really are interchangeable cogs and retention doesn't matter. None of these simplified models reflect the real world. No employee is fully bought into the company's goals. Odds are you don't actually have enough money to beat all other offers. And the cost of turning employees into interchangeable cogs is that you need a lot more of them than if you're willing to let them be individuals. The result is that while the company has its own goals, those goals are best served by making sure that the employees are at least happy enough that turnover is kept low. And a big part of keeping creatives happy (not just in software) is letting them try new things and experiment. (This is aside from the tangible benefits that your organization gets from allowing people to be creative, which I think is not negligible.)
- jderiksen 4y ago> Technical leaders have a fine balance between keeping developers happy, keeping development velocity high and keeping onboarding speed high. Very much in agreement that the best developers love experimentation and tinkering. I think about this kind of balancing act quite a bit and I personally like very small teams of folks who are not afraid of a lot of spice as long as the tools either have decent community or are not impossible to hack.
- ratww 4y ago> Your good developers are often the ones who like to tinker with frameworks, patterns and complexity. Note: good developers don't force this down people's throats, but they're always thinking about what they can apply in the future. That's not to say they can't be perfectly fine working on boring code. But they often get bored with it. They can be 5x as productive as your average developer when working on the boring code, but you're just ticking down a clock in a lot of cases. In my experience that depends. But the tinkering kind is often satisfied when they are able to tinker on their own code. Even (or especially!) if they're allowed to do it during working hours. But allowing engineers to literally hone their craft on the clock is something that is becoming rarer and rarer, unfortunately. But I agree that a developer that refuses to admit failure of their experiments and wants to force their experiments on others is a problem, of course. On the other hand, there's more to this job than coding, and a lot of people interested in "learning" will leave as soon as they find out there's nothing more about the problem-domain to learn.
- lupire 4y agoWhy does tinkering on the clock matter? Why not just hire people for 30hrs/week if that's what they want? It's not the 1970s where you can't afford a computer at home.
- thow232329 4y ago> A bored developer is an unhappy developer. Unhappy developers leave. Software development is the only profession where people expect (and demand) to have fun at work. The official ways of this society is that fun is what your free time is for, and work is for getting things done and make money. Why is this different for software development? Why do people think they can "play with new technologies" at work, which is wasting not only company money, but other people's time as well? It's so incredibly unprofessional, maybe it's time for software developers to grow up and start acting like adults in the workplace?
- iLoveOncall 4y agoYou must have only ever done minimum-wage unqualified work to be saying that. Everyone wants a job that they love, and that requires having fun at work. People leave jobs, any kind of jobs, because they're bored and not having fun.
- thow232329 4y agoDo you really think they take into account in other fields, that their doctors, lawyers, finance people etc should "Have fun" and change their decisions away from what is straight forward solutions, because of that? They don't. Only in software. I had a heated argument with a colleague who was fighting to use MongoDB for a new project, even though there was a company wide decision by upper management to NOT use MongoDB in the company. And his only justification was that "he took this job to play around with new technology". If I hade the power to, I would have fired him on the spot, because clearly he had misunderstood the very basics of the employment contract he had signed.
- listenallyall 4y agoThis isn't true. Developers like tinkering with new frameworks. Doctors like experimenting with new treatments or procedures or drugs, often very immature and untested. Lawyers will seek opportunities to flex a new legal strategy or argument in order to make a name for themselves or to impress a judge, even if it may not be the safest strategy for the client. Finance people do just about anything to avoid simple, straightforward, time-tested investment strategies.
- grey-area 4y ago> A bored developer is an unhappy developer A boring codebase doesn't make a bored developer, on the contrary it frees developers up to think about important stuff and deliver value to the business. Just as I want my language to be boring so I can focus on interesting stuff, I also want my tech stack to be boring - the interesting bits should be in the value added, not the stuff under that. > Your good developers are often the ones who like to tinker with frameworks, patterns and complexity. In my experience, good developers recognise that complexity is always the enemy of good code, complexity is a necessary evil. Developers enamoured of complexity or novelty are not good developers but usually beginners who think that new x must be better than older y. > Boring code can be a hindrance to onboarding new features. Not sure what you meant here, but IME boring code makes it significantly easier to onboard new developers and to develop new features - boring code meaning code that is easy to understand, does what it purports to, and has minimal layers of complexity and minimal architectural busywork. There is certainly a place for novelty, particularly in a green-field development, but the tech stack is a tool in service of the developer/business, and should never be seen as the end goal or product.
- malyk 4y agoI agree 100% with your first comment. The best developers care about the impact their work has above all else. Sure, they might prefer Ruby, or Golang, or whatever, but at the end of the day the results are what they are after. However, somehow we’ve created a world where the tools and techniques matter more than the output. I have no idea why this is, but I see it every day where engineers want to refactor code and try every new trick or tool they can. Keeping track of what is going on is generally good. Trying to apply every hot new thing to a production codebase is a recipe for disaster!
- throwawaymaths 4y agoIt's also wrong to say that tools don't matter. If you say try to shove async and multiprocessing python into a system because python is boring and tools don't matter you are going to get absolutely fucked in terms of maintainability. Maybe you can afford that (and many startups can) but there's going to be a lot of survivorship bias that is sourced from non-technical things like "founder had connections" that are not reproducible across to another startup
- lupire 4y ago> Your good developers are often the ones who like to tinker with frameworks, patterns and complexity. This reminds me of Spolsky's "Smart, but doesn't get things done" anti-pattern. Smart doesn't mean good productive team member.
- j45 4y agoIf the boring code is working it’s easier from a time and reliability perspective to go play and experiment in an other repo. R&D or having a “lab” repo for developer experiments is a separate lane until it’s good enough for production. It’s a wonderful way to highlight what possibilities and capabilities are being explored. Or, you can use the latest and risk having to constantly update it and let it take away time from experimenting.