Hacker News new | ask | show | jobs
by rconti 3724 days ago
Is this a "you" problem, or a job problem?

I've worked with quite a few people who initially impressed me with how much they knew, but then they peter out and disappear after 12-18 months, because they can't be bothered to actually do work. Too often people want to be paid to enjoy their pet projects and work on whether component they feel like working on; not maintain their stuff when they get bored of it, and so on.

To be fair, you absolutely need to be able to learn and grow in a role to advance professionally.. But at the same time, some folks don't seem to understand that you're getting paid to use your existing knowledge to accomplish something you're already good at.

4 comments

From my experience in a lot of cases this is the manager's fault or the system's fault, especially if the guy was initially enthusiastic. Here's an example: On my first day at work, I found some UX issue with our existing system and fixed and pushed the code. I told the manager what I did and he said "well this is not in the sprint, so why don't you roll it back?" That was my first commit and I rolled it back. Also I realized working too hard didn't do me any good. In the first couple of months I was super productive and just kept pushing out code, but nobody really cared and if anything I was being penalized for it because the more I commit the higher the chance that something will reopen, and I get even more workload--all without being much appreciated. Anyway stuff like this happened too much. After a while I started not caring at all and learned to become that guy you describe.
>>I told the manager what I did and he said "well this is not in the sprint, so why don't you roll it back?"

I hate managers who punish initiative-takers. I hope he got fired.

Actually, no. He's been promoted to higher position now. This is another thing that made me disillusioned. At larger companies it's all about politics
Perhaps though it might be best to roll it back but keep it in a private branch for later?
Boring manager PoV here: I love initiative, but bring it up in standup to minimize surprise. Sometimes one step forward conflicts with another 10 steps forward on another story.

On our team we have a bunch of fun stories with lower RoI at the top of our ready backlog, that may never get pulled into the sprint, but are there if we eat all our vegetables (e..g code reviews) and get the Sprint goal done early.

OK here's the situation: I was a new hire and the manager never assigned me any story for quite some time. Which means I had nothing to do with a "sprint goal". Of course it would be a weird thing if I have other tasks assigned but work on some unrelated minor issue instead of things I need to do for the sprint, I don't do that. But at the time I was literally idling away because I was never assigned anything. Leaving a new hire to do nothing for two weeks is a bad enough management. It's even worse when the new hire gets frustrated doing nothing and just fixes something that's obviously broken and is clearly something that doesn't conflict with other "10 steps forward". I forgot exactly what it was but imagine something like fixing a broken css. And I was made to revert it because it was not in the sprint. Anyway the point is not this singled incident. I mentioned how things like this happened all the time, making me care less and less over time.
Not necessarily. It is entirely possible to have a job where your role is to figure out elegant solutions to hard problems. If you hire someone ostensibly for that role, and they end up spending most of their time refactoring the code of junior devs, writing tests and tweaking the build process, they have a legitimate grievance and are fully justified in leaving.

On the other hand, if someone got hired on for a typical mid-level developer/engineer position without any promises of a research/advanced engineering focus, they need to man up and do their job.

> Not necessarily. It is entirely possible to have a job where your role is to figure out elegant solutions to hard problems.

Sure. But often when that's the case your title will say something closer to "Principal Researcher", rather than "Software Developer Engineer".

Don't get me wrong, a good thing about a job in engineering is that figuring elegant solutions to hard problems is a significant part of what you do there. Also, you can definitely optimize for that being a larger part of your time, if you aim for that when choosing where to work.

However, the jobs for which that is the only function you are employed to fill, and where you are expected to delegate maintenance of your elegant solution to someone else, are exceedingly rare. That's why the academic job market in CS is so much harsher (including industry research labs) than the software development job market. And, for the record, research work does end up involving either some amount of grunt work or some amount of management work at every place and level I have seen so far (universities, industry research labs, etc)

As a former academic I would say that there is more boring grunt work in academia than industry. Even worse a lot of it is totally pointless activity caused by the university bureaucrats needing to justify their position.
> On the other hand, if someone got hired on for a typical mid-level developer/engineer position without any promises of a research/advanced engineering focus, they need to man up and do their job.

I think this is a self-driven promise. Like another commenter said, this is up to your job description. If you work in the research department, you are more likely to do more "innovative" thinking than those who are hired to build a product because your primary job won't be building CEO a search box. "Product" can be interesting or totally banal, whether you are hired to build public-facing application, or internal application.

I say research focus is self-driven because unless you work in an extremely "do what I say or you are fire" environment, normally you can tell your lead or the product team how to build or enhance a feature. If you think your automated testing infrastructure looks broken, offer ideas to folks who are paid to build that part of the infrastructure. Sometimes, overstepping into another team's boundary is actually a good way to tell people you are capable of doing more than implementing a stupid drop down menu. IMO a good software engineer begins with you giving a clear analysis of the problem and providing a clear and competitive solution (pros/cons with other solutions). That's research, that's "leading", that's architectureing. As simple as building a drop-down menu, well, are you tired of writing a whole new menu every single fucking time yet? Well, here is a research, here is an architectural change - make that shit reusable and make your template whatever resuable, convince your colleague your suggestion is better than theirs and that they are idiot this whole time. No not that hash, but along that line.

And most real research job spend a good portion on writing and doing presentation.

Yeah I keep saying implementing a drop-down menu. But why? Because a lot of the tickets will be around enhancing user experience and that can either be very interesting to some, or extremely boring just because.

Boring programming jobs often relate to bad code bases. Is adding feature X tedious? Why is that not automated? Novel bugs are usually interesting, seeing the same thing crop up 10 times is a sign of brittle code.

Are deployments a single click, or do you go down a 30 item list every time?

Users often push systems in new ways and have interesting issues; the 5th redesign because some manager got a new idea is not.

ah yes, the ol' bait and switch. It's fair to point out that employers aren't the only ones who do this, employees are guilty of it too. I've certainly seen it happen where people were hired to write code for a particular project and instead try to do an entirely different job ("what we really need to be working on is a mobile site!", "what we really need is a scrum master!").

However, employers sure do promise autonomy and a creative role, only to attempt to turn that new developer into someone who is supposed to check JIRA in the morning and fix bugs or implement a narrow set of features defined (with little to no creative input), often with a corrupted form of agile that turns the daily standup into a daily application of deadline pressures and demands for status reports.

I've come to realize how valuable some of those stuffy old bureaucratic pratices really can be for me, as a developer. For instance, I have gotten a great deal of value out of formalized, written job description with everyone's signature on it, filed away with HR. Once you're in a relatively senior technical role, you will almost certainly have language like "determines technical requirements", "aligns software architecture with business interests", "makes technology choices", and so forth. These will often have a little percentage next to them, as if we can somehow explicitly state how much of your time these things will take. "Writes code to implement features" and "performs other IT duties as required" will probably also be in there, but it's unlikely, if you're in a senior role, that these will be more than 50% of your job description (certainly not that last one).

This works well, because if you're accused of "not doing what you were hired to do" when you refuse to maintain an old pile of crap without a clear path toward a better code base (where you determine the technology, business alignment, and architecture), or if people tell you the project that you believe clearly aligns with the needs of the business is your "pet project" and what you really need to do is complete those JIRA tickets, it's usually pretty easy to point to your job description (with everyone's signature on it) and make a very compelling case that you are in fact doing exactly what you were hired to do, and that someone else (often a project manager or business unit manager) is trying to grab job authority that aren't in his or her description, but are clearly in yours. You can also make the case that while you're always willing to pitch in and do what is needed, random tech tasks have greatly exceeded the percentage of your time they are supposed to be taking.

One thing I've slowly learned - the looseness and casualness of the software industry doesn't necessarily favor developers. Sometimes a formalized set of rules can really help us.