TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

The Biggest Mistake I See Engineers Make

118 pointsby ankit01-ossover 3 years ago

28 comments

cookie_monstaover 3 years ago
I am not a software engineer so I am obviously not the target audience here, but I do like reading these types of articles because sometimes they have nuggets of wisdom that can be applied to other fields.<p>Having said that, I would make the following points to writers who wish to engage outside of the narrow circle of their profession:<p>* It&#x27;s nearly 250 words into this piece before we even get a hint that we are talking about software engineering here, and even then it&#x27;s only because the writer mentions a PR. I know enough to know what a PR is, but a general audience would not. It&#x27;s not until some 620 words into the article that software is actually mentioned and the general reader can say without a doubt that software engineering is what we are talking about here.<p>* Along with PR, IC is something that is never defined and this one was new to me (and a little tricky to search, but I now understand that it is an Individual Contributor). The PRD was easier to track down, but again not obvious, even from the context.<p>Again, I get it - I&#x27;m not the audience and this is a bit of industry in-talk. But I think it&#x27;s something that worth thinking about - you don&#x27;t have to dumb down your ideas for them to be understood by a much larger audience than your immediate colleagues.
评论 #30219638 未加载
评论 #30220690 未加载
评论 #30219902 未加载
评论 #30220349 未加载
fshbbdssbbgddover 3 years ago
I’ve been in this situation (worked too long on something without syncing with others). But I’ve also been on the opposite side. Some of my biggest accomplishments in my career, where I really added value, were when I went deep on my own and figured something out.<p>Think of software design as a space with dimensions. You’re trying to optimize for something over that space. Development is ideally a series of incremental steps toward the optimum. The daily standup is where you check in and make sure your last incremental step was in the right direction. Generic developer of level N can make those steps. But what if you are stuck in a local minimum? How are you and your teammates going to find what is over that next mountain unless someone goes out there and brings enough provisions to spend the night? There’s gold in them there hills.
评论 #30224565 未加载
Hermitian909over 3 years ago
While I generally agree with the article I think a bit of nuance it could use is that sometimes not looping in other people, even if it causes problems now, can be the right move for your overall career growth. A key component of growth is being allowed to make your own mistakes. If you <i>always</i> let stronger engineers come in and handle the tough bits you might never obtain the sort of knowledge and experience that let you advance and frankly, your company doesn&#x27;t want you learning those lessons on their dime if they can avoid it. Going off on your own can be one way to gain that experience even if it irks the people you work with.
评论 #30221753 未加载
gravypodover 3 years ago
As a manager you need to help set up a culture where showing unfinished work is ok. On my current team I will often make a quick prototype and ask our TL &quot;Can you take a look to see if this is a completely off base approach? This code is not done yet but before I put more time in it I want to validate it&#x27;s direction.&quot; My TL says that this behavior wastes his time and I should only show him fully finished work. He&#x27;ll often say there&#x27;s no tests or linting errors instead of looking at the approach. Same thing happens with design docs. If I&#x27;m even editing for spelling he&#x27;ll refuse to look at it. &quot;Ping me when you are finished editing&quot;.<p>It&#x27;s a complete waste of my time to completely finalize something, have him take a look at it for 2 seconds, and then say it&#x27;s the wrong direction.<p>And yes, we have tried to specify tickets more but he wants more general stories to allow the engineer to identify and approach. He just wants us all to identify <i>his</i> approach without him telling us.
评论 #30223174 未加载
bitLover 3 years ago
Misaligned incentives. Engineers want to do cool work; laying the foundation is often the only way to distinguish themselves. Interrupting it by involving others at each step is often counterproductive (three women one child in 3 months etc.) Managers on the other hand need replaceable cogs doing the work at somewhat predictable pace.
ncmncmover 3 years ago
No.<p>The biggest mistake engineers make, and they make it often for year after year, is not moving to another company when it is the right time to leave where they are.<p>To zeroth order, all engineers are overdue for a move.
评论 #30220714 未加载
评论 #30220450 未加载
yiyusover 3 years ago
&gt; They train in school environments where they do classroom projects on their own, or work on long-term intern projects in a silo. They are used to having to figure it all out up front, submit it for review, and then get some sort of result, like a grade or return offer.<p>This is something I struggle with everyday. PhD students usually come from finishing their master and totally have this mindset. They feel like doing things only by themselves will be more valuable than if they seek collaboration. But we deal with very hard problems and previous experience is one of our best assets, collaboration with other team members is not only very well valued, but essential to get our work done.<p>A very importnat point, in my opinion, is that the students should not have to figure out all this by themselves. It is our job, as supervisors, to help them to change this mindset. Easier said than done...
pdimitarover 3 years ago
Some of my best work ever was produced exactly when I went deep and explored the problem space in exhaustive detail and produced an ideal solution after a week -- or five.<p>You can&#x27;t plan and iterate on a plan that&#x27;s forming as you go along -- it&#x27;s a creative process and that&#x27;s mostly chaotic by nature. And that&#x27;s a good thing when doing exploratory work.<p>I get it, companies want assembly workers but a good chunk of software engineering doesn&#x27;t fit that mold.<p>The whole article smells of control mania and micromanagement to me.<p>--<p>I agree with some points. Devs are prone to using overly complex solutions and it does pay off huge dividends to bounce ideas with somebody 2-3 times a week just to make sure you&#x27;re not going down a rabbit hole that won&#x27;t help the problem you&#x27;re looking to solve. Sure.<p>What the author fails to account for is that your average manager and dev team are usually not at all helpful. They want you to solve a big problem but still want it done quickly even if they do absolutely nothing to help you clear up the requirements or familiarize you with previous work. And then get grumpy because predictably you can&#x27;t do the whole thing quickly.<p>Well, AT ONE POINT SOMEBODY has to invest the time and effort to untangle the big spaghetti and put it in orderly boxes. Either remove roadblocks for me or get out of the way and let me fight this herd of ducks alone. Grumbling about how not everything fits into your nice Scrum charts is not helping anything.<p>--<p>I sympathize with the overall sentiment that we should do our best to iterate and not have work done in one giant step. But that&#x27;s not possible for some tasks and this has to be respected, not mercilessly micromanaged.
rtpgover 3 years ago
There&#x27;s this general advice of &quot;keeping people in the loop&quot;, and I like the advice proposed at the bottom of the article, but I do think there&#x27;s potential for more guidance on this topic, as teams work differently depending on the overall workstyle or the specific circumstances of a project.<p>If your team is all a bit allergic to endless design doc discussion, dropping one of those in Slack might not work too great. But maybe pair programming with one or two others on the feature to help get feedback could!<p>Others do like to plan things out, so having the running Google Doc, or &quot;one-page design docs&quot; with recurring check-ins with a core group of people can do wonders.<p>There&#x27;s the Amazon-style &quot;write the marketing pitch&quot;, or internal-facing API documentation. And for some people iterative can mean shipping your API in layers, whereas for others it means shipping features bit-by-bit.<p>There are a lot of options, and I would love to see a huge compendium about it!
krautsourcedover 3 years ago
In a perfect world, this advice is absolutely true (and I&#x27;ve been guilty of it more than once). In reality, here&#x27;s my experience: - poor specifications from the start, with moving targets in the middle - nobody available or willing to give definitive answers - management stuck in endless meeting loops rather than having time to look at what engineers are actually doing - engineering team (often severely) understaffed and dealing with multiple projects each - not time, patience or mental capacity to dive into what everyone else is doing -&gt; result: crazy amounts of wasted time for everyone<p>This, as so often, is a result of lack of time, patience and _planning_. It feels like &quot;Agile&quot; has become a convenient excuse to just start and figure out what it is we&#x27;re building as we go along...
评论 #30220189 未加载
jihadjihadover 3 years ago
There was a discussion about this a few days ago for those interested (588 points, 385 comments):<p><a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=30074949" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=30074949</a>
throw3838over 3 years ago
It is management failure, not engineering failure!
评论 #30219455 未加载
692over 3 years ago
at highlevel, you must know what you&#x27;re supposed to deliver, which can be extremely difficult when not everyone does (incl yourself) so people start to second guess things to &#x27;get things moving&#x27; which can be a huge risk and potentially completely wrong.<p>Understand the actual problem , write it down and repeat back to get confirmation.<p>write down the (non)functional requirements from the stakeholders, the exact scope of work before doing anything, again repeat back to get confirmation,<p>In the murky world of greyness where people do not really know information or the full set of data, agree (again before starting work) on little subtasks&#x2F; plans to get the information (PoC)<p>Write down the Risks&#x2F; Assumptions&#x2F; Issues&#x2F; Dependences of your actions and again get them signed off<p>all this takes time and can be extremely boring relative to getting stuff done, so a lot of people just do stuff they think is right
评论 #30220948 未加载
njacobs5074over 3 years ago
My experience with this issue has correlated highly with poorly written specs and&#x2F;or stories (or worse, none at all). This in turn usually means that someone in the team is being lazy about the work to be undertaken.<p>I get it - writing good specs and stories is hard work. But as a way of organizing and &quot;guard-railing&quot; work, they are priceless. If you can&#x27;t explain in words the work that needs to be done and share and socialize that, you&#x27;re not ready to start building the product.<p>I can count on one hand, literally, the number of engineers I&#x27;ve worked with who could magically craft an amazing product out of thin air and even then, there were parts of those codebases that were horrifyingly difficult to modify down the road.
neximo64over 3 years ago
It really depends, you can turn this into an advantage instead of a mistake. I think the element of it that is a mistake is the bit where its happening in a way end customers don&#x27;t see, or the reason its done quickly is its for an MVP&#x2F;initial launch and to speed that up as much as possible.<p>There is a certain threshold in a team where incremental communication yields increasingly decreasing returns very quickly, and slowly starts to become a cost. If you can find the sweet spot, and leverage your engineering knowledge to peek in, this &#x27;mistake&#x27; can be an advantage.
jakub_gover 3 years ago
Speccing something that is under-specced before coding and splitting big fuzzy task into a list of less vague tasks is a critical skill.<p>There&#x27;s some similarity to big tech interviews: you often get an intentionally fuzzy task and your first job is to ask clarifying questions and tell your assumptions out loud. If you go straight to coding it&#x27;s a big red flag.<p>In this vein, we can say that kind of interview prepares candidates to the real job where others are busy and don&#x27;t have infinite time to write perfect specs and just hand them out to you to implement.
评论 #30222343 未加载
Chyzwarover 3 years ago
Sometimes discussion with other people takes more time than actually doing something. Trying to loop in other people make junior developers paralyzed of doing anything outside theirs tickets. You will create a generation of developers that are useless if requirements are not fully defined and tickets are not broken down into tiny increments by senior dev. I am tired of handholding people.
评论 #30219344 未加载
rmbyrroover 3 years ago
I like these kinds of reflections, but I always miss the context.<p>These abstract counsels don&#x27;t translate well to ability to identify when we actually need to apply them. Providing context, detailing one or more situations when the writer learned these things may contribute to transfer a bit of tacit knowledge.
评论 #30223420 未加载
thrower123over 3 years ago
The biggest mistake I see managers make is not letting their engineers work on anything for longer than four hours without demanding a status check abd injecting FUD into the process. Utterly demoralizing.
评论 #30221744 未加载
SNosTrAnDbLeover 3 years ago
This is very subjective advice. You could also endup with very patchy inorganically grown software when you dont do any upfront design. It depends on the scale of your project. If you are adding a minor feature to the product vs if you are creating the datamodel of a new product. I would only show the datamodel once I have run enough experiments to make sure that it can support the next couple of years of application software
da39a3eeover 3 years ago
I think the author slightly misses the point in the &quot;why do they do it&quot; section. People do it because being a software engineer, at least in US tech companies, is one big pissing contest. People, even if they&#x27;re being nice, are just constantly trying to demonstrate technical prowess -- technical superiority over others. That&#x27;s how you get respect and that&#x27;s how you get promotion.
strkenover 3 years ago
Contra to this, putting together design docs&#x2F;PRDs&#x2F;RFCs at an early stage is useless busywork, and engineers should go grab a coffee together and have an open-ended informal discussion about their work before they do anything else. Attempting to stop your team from working in isolation by throwing paperwork at them is less effective than just getting them to talk to each other.
tuckfrump666over 3 years ago
Like it or not, that is how software gets built.
hbarkaover 3 years ago
In the construction industry, there are construction managers and individual skilled workers but behind it are the architects. There’s hardly a mention of the solutions architect role in tech work discussions. They are neither manager nor IC in the definition of what they do.
sjtindellover 3 years ago
The biggest mistake I see engineers make is designing a to z without getting a to m rock solid. Or planning how they’ll structure their future companies under an umbrella without launching one yet. Worrying a lot about much later stages without even getting started.
评论 #30219886 未加载
tehsauceover 3 years ago
i don’t have the link handy, but this was discussed here a couple days ago
评论 #30218778 未加载
评论 #30219037 未加载
seanp2k2over 3 years ago
TL;DR YAGNI + do an actual &quot;build vs buy (including FOSS)&quot; in good spirit on absolutely everything.<p>The biggest mistake I see other engineers making is opting to build vs buy when it&#x27;s commodity stuff that we could easily and cheaply buy (or even use FOSS for), e.g. log shipping software, monitoring agents, etc. I see folks building &quot;frameworks&quot; for agents they&#x27;d like to run, and dreaming up entire ecosystems, of course with complex message busses and cert strategies...<p>Please don&#x27;t re-invent Fluentd &#x2F; Logstash &#x2F; Prometheus etc unless you have a very compelling reason to do so. Also, your UI will suck, and if you make support staff use it, they&#x27;ll hate you and you&#x27;ll lose trust. There are so many great free dashboard tools out there, just pick one and learn it &#x2F; use it. For stuff like reporting, there are a dozen ways to do that with stuff like Jupyter notebooks running on schedulers (and please please please don&#x27;t try to write your own enterprise scheduler, again there are many out there that have been hardened over years of battle).<p>Don&#x27;t run your own mail server. Just do not. If you&#x27;ve never dealt with IP + domain + ASN reputation and deliverability issues before, please just trust folks when they tell you that you don&#x27;t want problems like that. Just use SES &#x2F; Mailgun &#x2F; SendGrid &#x2F; whatever.<p>Don&#x27;t re-invent JIRA. JIRA can do what you want if you take the time to learn it, and maybe add a few plugins or integrations.<p>Don&#x27;t re-invent Jenkins. Jenkins can do almost anything. That doesn&#x27;t mean it&#x27;s the right tool for the job, but in many cases it&#x27;s probably good enough to get you by, and easily adds visibility + access control + logging + who + what + when + kinda why + where and SCM integration to any ad-hoc task-execution or [see above] task scheduling needs. Jenkins is probably one of the most heavily battle-tested pieces of software in the FOSS enterprise software world, along with Apache and MySQL. I run Jenkins at home.<p>Don&#x27;t use Java when you could do it with Bash, or even systemd &#x2F; built-in OS functionality. Learn how linux works and what facilities are available on your given OS. You will likely find that many common problems have already been well-solved in depth.<p>If you can just pay AWS to run the service, it&#x27;s probably worth it. Their stuff is also quite well battle-tested (at least non-early-access products), and stuff like RDS, CloudWatch, SQS, etc work pretty darn well these days. If you&#x27;re already in AWS, don&#x27;t just run everything yourself and treat it like a virtual datacenter -- to do so is to miss the whole point of &quot;the cloud&quot;. You&#x27;ll save OpEx in the end until you&#x27;re operating at huge huge scale, and even then, when your finance team negotiates with your AWS TAM, they&#x27;ll work out a decent-enough deal.<p>Edit: and please please please do not try to write your own etcd &#x2F; zookeeper &#x2F; Consul &#x2F; Vault &#x2F; Cassandra &#x2F; Kafka. There&#x27;s a good reason almost everyone uses this stuff: they works well, the ways they fail are well-understood, and they get updated regularly. You won&#x27;t do a better job. Even if you work at a 10k person company and can dedicate a team to building it, you won&#x27;t do better. Your implementation will be buggy and suck for years. Just buy it (for free). When I interview folks with stuff like this on their resume that they&#x27;ve built, I usually see that as poor judgement (unless they actually worked on one that ended up actually getting used outside of where it was invented).<p>Don&#x27;t even try to touch building your own SSO. Buy Okta, Ping Identity, or Google SSO (Google Apps).<p>I&#x27;m not saying don&#x27;t invent anything ever, just that I see so much damn waste when it comes to over-eager engineers wanting to build stuff that already exists as their own career builder vs solving the actual business problems in the most efficient way possible, which I&#x27;ve found to more likely than not be just figuring out the process &#x2F; workflows and gluing a few pieces of existing software together. Not every problem needs to be solved with 18 dozen microservices and GRPC.
jimmyvalmerover 3 years ago
Programming is a one-person task. Looping people in gives the rest of us something to schedule meetings around. So it really depends on what you want, getting the job done, or creating more jobs.
评论 #30224130 未加载
评论 #30220556 未加载