Hacker Newsnew | past | comments | ask | show | jobs | submit | jongleberry's commentslogin

we had a principal engineer who thought he was very skilled and held critical knowledge and tried to use it as leverage. turns out, everyone else considered that poisonous behavior.


The real question is - did the company fire him for that? I'd wager a guess that it did not. So, it worked out for him.


I don’t know the details as I didn’t work directly with him, but from what I understand he was trying to get a sabbatical to figure out some life stuff, but eventually he had to quit, which was not his desired outcome as he needed the income and didn’t have the time to find another job quickly.


getting a sabbatical is different from a raise/promotion. one signals that you have other things going on/you don’t care anymore, the other seeks to assert that you are contributing a lot and should be rewarded for this


> turns out, everyone else considered that poisonous behavior.

But did he get his raise?


seems like you need to find a job with better management


It’s a fundamental problem of misaligned incentives between the employee and employer.

It is in the interests of the employee to have a more defensible position, even if it increases employer risk.


Which means you need to find a new employer. There are companies and/or managers out there that don’t have these misalign incentives, encourage best practices (like those in this blog post), and provide psychological safety. They exist.


The incentives are misaligmed at fundamental level. If manager could fire you while still getting the same job done they would.


Your best defence are your capabilities. Being “indispensable” means nothing if the company goes under.


Exactly. If you increase team productivity and your boss fires you for it instead of promoting you, then the company is doomed so why would you want to work for them?


I'd agree on most points, but like others, 1 & 2 I don't agree with.

Most of my knowledge is useless or irrelevant, so taking the time to document this knowledge is a waste of time. 90% of writing a document is understanding your audience and "document your knowledge" misses that point. Littering documents and code with various tidbits is also not very helpful and probably not worth anyone's time.

Documenting long term plans is also pretty useless. Realistically, anything past 30 days is not going to happen. Documenting your strategy and decision making process may be useful, but your idealistic plans? Probably not unless it's just a few bullet points.

The most important documentation is usually the "why?", which ideally should be written before the project starts. Documentation outside of the scope of in-flight projects (which 1 & 2 seem to be encouraging) are not as important as they can be discovered with a tiny bit of effort.


Exactly and document rot is a real thing. No amount of wikis, knowledge bases, notes what have you will never be enough to capture the info updates. We live in an agile world after all. Maintaining documentation/institutional knowledge is a sisyphean task.


You can set up a GitHub Action that performs an action on any push to master/main (or any branch). You can also only perform the action when specific files are changed: https://docs.github.com/en/actions/reference/workflow-syntax.... This shouldn't require admin access, assuming admins allow you to use GitHub Actions.

I generally don't bother looking at master/main for code changes unless there's something I'm looking for specifically. I set up CODEOWNERS so that teams get notified when their files are changed in PRs - this is how I get notified of potential changes to files that I care about.


At Dollar Shave Club, we use CircleCI 2's Scheduled Workflows to run "monitors" against our production services every minute. These are idempotent, analytics-disabled API & Browser (via Puppeteer) tests that we also run as CI tests on every commit.

We send all monitor metrics to DataDog. When a monitor fails, the appropriate teams will get a Slack notification with the full stack trace. A DataDog monitor will also be triggered, alerting the appropriate teams.

For browser monitors, we upload screenshots and Puppeteer tracing files to S3, then share links within each Slack hook. This allows people to figure out what's going on just by clicking links in Slack.

We were planning to improve this setup in the future, but it's good enough for us right now. For example, CircleCI goes degrades frequently so we sometimes get spotty coverage. We basically spend < $200/month with CircleCI to monitor about 300 APIs/pages every minute.

You can read more here:

- https://engineering.dollarshaveclub.com/monitor-all-the-thin...

- https://circleci.com/blog/how-dollar-shave-club-3x-d-velocit...

- https://github.com/dollarshaveclub/monitor


I have this exact problem with Microsoft Azure as well. Changing pages always takes 5-10 seconds and you can't open in a new tab to open new tables concurrently. Makes working in their portal really inefficient.


Azure has probably the worst UI ever created...


Microsoft's new(er) Outlook web version puts a Windows phone 8 style back button on the screen, and disables your actual back button. I know they put a lot of effort into the design of this metro stuff, I can't understand it.


My same thought as well. S3 has a rate limit, which is where a lot of these timeouts or errors are probably happening. Seems like they should be using a database instead.


We're moving Koa to be ready for async functions. Does anyone know whether async functions will have an arrow function form?

https://github.com/koajs/compose/pull/27#issuecomment-144868...


Yes - async functions do have an arrow form: http://tc39.github.io/ecmascript-asyncawait/#prod-AsyncArrow....


Author here. Haven't maintained this in a while. It's down due to some breaking changes in libraries and I haven't updated the code to handle it.

I also stopped using this as you could just use babel to automatically use whichever polyfill you use with babel-runtime. Saving a few kb is an overoptimization.

If you're interested in maintaining this project, let me know. I can add you to the GitHub organization.


Would be nice to have a note on the homepage indicating that this project has since been abandoned.


will do


use `let ` or `const `. there's no need to use `var` in ES6+, ever.


But we're going to keep it around, aren't we? Because we can always add features but we can't really remove them. It feels like JS is getting cruftier. Would it be better if var already worked like let? Sure. Will JS be better with two slightly different ways of scoping a variable, one of which you really shouldn't use? Doesn't seem like it. One more thing to explain to newcomers.


So, you're right that nothing can be removed. But you can add new things, and via mode switches (e.g. "use strict", which enables strict mode currently, or "use strong", which is planned to enable strong mode) essentially remove old ones by disallowing them in the latest "mode." Old code will continue to run, but as long as you opt-in to the new way of doing things for your new code you can enforce not using the legacy constructs in the new code.

It's important to note that the modes are on a per-function basis, so opting into the new mode doesn't break existing libraries, etc even if you call those libraries from a newer mode.

It's also worth mentioning that strong mode doesn't introduce anything new. All that strong mode does is remove features. `let` and `var` both already exist; in strong mode, only `let` does.


Well, for newcomers we can either bring them up using `let` exclusively or the explanation of function scope can include a footnote on `let` versus `var`.


Hopefully we can tell newcomers to "use strict", always use "let", and to not worry about reading code that doesn't "use strict" to start with?

People who are new to FORTRAN get told "if it doesn't say "implicit none" at the top then don't try to read it yet".


So, if I want get the sum of an array of numbers, the only option is to use recursion or a reduce function? Is there a way to accomplish this using a for loop while sticking to let keywords?


Perhaps you didn't catch that basically the difference between let and var is that let is block-scoped, while var is function-scoped?

  let result = 0;
  for (let i = 0; i < arr.length; i++) {
    result += arr[i];
  }


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: