Ask HN: What do middle-level managers do? - <AUTHOR> I'm an individual contributor at one of the big software companies (FANG). I'm curious about what middle level managers do in these companies. Specifically, my manager's manager, the ones between the CEO and first level management. They seem busy all the time (they are usually not at their desks). But they are never in any meetings. They never send any emails. And they don't <i>seem</i> to affect the direction of projects in any way. And I'm just too scared to talk to them. So asking here: what do they do everyday? <comment><USER2> > I'm just too scared to talk to them.

No reason to be! They're just another human being trying to do their best for your company and team. Assume best intentions!

If you're nervous because you have no idea what to say to broach the topic, here's something you could try.

"Hi, I'm Charlie. I work for Susan over on the infrastructure team. As part of my own professional development, I'm trying to build out an understanding of how all of the people at our company move towards our common goal, as it's not always obvious to me at my level. Do you have time for a quick one on one where you can share with me your roles and responsibilities, and what some of your challenges are here at our company?"

Basically, you don't need to say something as blunt as "What exactly is it that you do here?" Instead, just come at it from a position of positive inquiry where you're just genuinely trying to learn and grow.

I say all this because no answer here is going to really tell you what that person does. Everyone's roles and responsibilities vary, regardless of their title. You won't learn unless you learn how to ask!

<comment><USER3> At my company I feel pretty comfortable just asking "Yo, what's your job?". Why not? Would you be offended by someone else's curiosity?

<comment><USER2> > Would you be offended by someone else's curiosity?

Me personally? No. Do I know others who would be? Yes.

Always a tricky line trying to be thoughtful about how someone might react to a particular question, especially when you're just genuinely trying to learn something about them. But, given this person is likely a relatively unknown party, not having any trust built up means that there can be misunderstandings even from simple questions like, "Yo, what's your job?"

That being said, if your company culture is such that everyone you hire responds well to that style of question, great! Certainly no problem on my end with that type of questioning. I merely was being a bit more elaborate in my earlier response to account for someone not necessarily taking something that brief, well.

<comment> swagasaurus-rex Do you and they not have a baselevel implicit trust simply due to being coworkers?

Do people some people think it's appropriate to guffaw at simple questions like, "What do you work on here?"

If somebody were offended by that question, I would imagine it is not due to any overreach on my part. It would take an especially megalomanical (or highly confidential) work environment where superiors would dismiss work related inquiries outright.

I can imagine in other countries with clear hierarchies, this might be different. But I imagine even in such places it can be advantageous to be social and informed in the work place.

<comment><USER2> > Do you and they not have a baselevel implicit trust simply due to being > coworkers?

In some cases yes, in other cases, no.

As an example, say you're a product manager in Department A. You, previously, had to work with Software Team B on a deliverable, and it was a really rough experience. The team was curt, challenging, and often spoke down to you because of your role.

There's some turn-over on Team B over the year, and there are a few new hires. You know of them, but don't really know them at all, as you no longer interact with that team. One of the new hires walks up to you at lunch one day and says, "Yo, what is it that you do here?"

Now, a rational approach is to just take that person as just being curious. Assume best intentions, assume they're just curious, assume it's very genuine. In that brief moment though, your frustrations with Team B surface up, and you react, rather than act rationally. You assume that someone on the team was bad-mouthing you, as you had heard the team lead previously say "I don't know why we even have product managers here anyway." Now this new hire is coming over, asking what it is that you even do, and now you've got to deal with this stuff all over again...

Or, perhaps someone who is from my generation, hearing "What is it that you do here", would just immediately think of Office Space, and immediately enter into a "defend your role" sort of mentality, rather than just taking it as some honest inquiry.

Just to reiterate. I'm not saying one should react the way I'm describing above. But, I will personally say, I don't always react to questions in a way that's healthy. How a question is worded to me can make or break my response. So, whenever possible, especially when giving generic advice on HN, I try to give suggested phrases that will hopefully avoid any unnecessary reactions, within reason. Obviously, one can't be possibly remotely aware of the challenges each and every one of us have had in our lives, and so misunderstandings are inevitable- But, thoughtful phrasing can go a long way and help to establish great relationships over the long term.

</comment></comment></comment></comment></comment><comment><USER4> Working with other middle managers to align resources for upcoming projects according to company goals. For example, if you know you need to implement a foobar next quarter that will require another team to implement a bazblee that you depend on, they can work with the bazblee senior manager to make sure the bazblee gets done, instead of the plumbus being requested by another group (that is, if the foobar and bazblee are more important to the company's goals than the plumbus - otherwise, they'll do the plumbus and you won't get your bazblee - so you probably shouldn't work on your foobar project)

Convincing other managers of your project's alignment with company goals is usually not an exact science, so your middle manager's ability to get these things committed to and done can be highly variable, depending on their connections with other middle managers and their ability to influence.

You can tell if you have a good middle manager if things you need from the rest of the company tend to fall into place, versus constantly being disappointed when you ask for stuff from other groups in the company.

Of course this all requires skillful ICs and team managers to manage up and make sure the middle managers know what they are doing and what they will need from the rest of the company.

<comment><USER5> Interesting. We design a project inside the quarter where we committed to build it, middle managers could not possibly be fighting for dependencies during the planning cycle because engineers haven't looked yet to see what they are.

I've long suspected we should be writing design docs and putting them on the shelf one or more quarters before committing to execute on them, but what do I know.

<comment><USER6> At middle-management levels, dependencies are probably more abstract than system-level dependencies. Imagine your product has no mobile app yet, but one is in the roadmap for next year. Then someone in marketing is in talks with Apple about a chance to do a demo in a keynote or something. This would bump up the priority for the mobile app for this year, but other features previously in the roadmap have to be moved around. So there's a level of managers which will go around negotiating the options.

</comment></comment></comment><comment><USER7> (Note: my replies below assume a sane situation at a FANG company with good management.)

#define MM middle manager

> But they are never in any meetings

Do you mean they are never in any meetings that you are in, or do you mean that you have access to their calendars and can see that they have no meetings at all?

I have never seen a MM who's calendar isn't back-to-back meetings all day every day. Their job is basically 100% talking to people, whether that's face- to-face or via email or whatever. Note that depending on how senior they are, their calendar may be made private, since the names of their meetings and who they're meeting with might be sensitive ("Sync about possible layoffs" would be a really bad meeting name to leak).

A large number of these meetings are (1) people trying to influence the MM (i.e. get them to approve something) and (2) the MM trying to influence other people (i.e. get a partner team to do something, or get their boss to approve something).

> And they don't seem to affect the direction of projects in any way

The fact that your team exists and is staffed by N people was an MM's decision at some point. It may have been someone else who had the idea to create your team, but they had to make their case to an MM and convince them that it was worth staffing.

Has your team ever grown, i.e. gotten a slot for one more person? If so, an MM made the final decision that it was worth allocating another person.

MMs spend as much time managing "up" as "down". An MM's boss is asking them to justify why the company has 100 people working on X. To do this, the MM has to demonstrate that there is an important business problem to sole, and present a convincing strategy to solve it that requires 100 people to execute.

If your basic experience on the team doesn't seem to be directly influenced by MMs on a regular basis, that may just indicate that you're in a stable part of the org solving a clear business problem and the MM is satisfied that you are executing. You would see an MM's influence by (big) changes in team priorities, project direction, reorgs of your team, etc.

<comment><USER8> Fantastic and accurate description of what they do and the problems they solve.

Oddly enough, just as there are those who think MMs twiddle their thumbs all day, there are those who work with or are MMs that think executive leadership twiddle their thumbs all day.

</comment></comment><comment><USER9> You should try to get in to some meetings where these guys are. Its good to be known by these people, you shouldn't be scared of them, esp if you're working hard for them. Things they do:

Talk to execs to find out what direction of the company has been decided

Choose strategy, approve strategic technology choices, plan for the future

Making sure first line managers & their teams are doing what they're supposed to

Allocate money to projects, decide which ones need resources, which ones can be cut

Make a budget, decide how much money to ask for next qtr/year

Hiring policies, hiring managers, plans for hiring staff

Make sure division is following company policy, implement internal controls, auditing is happy.

Keeping in touch with other divisions and regions to swap ideas and work together.

Firefighting problems that come up with people leaving, systems not working properly, projects running late.

</comment><comment><USER10> From first principles, as a manager at any level, your output is the collective sum of your team's output. You maximize your effectiveness by finding the right balance of things to do that (a) can contribute directly to the team's output and (b) improve the team's capability to produce.

Managerial activities fall into 3 key categories: Strategy, People and Habits.

Let's contrast these activities for a Level 1 manager and a Middle manager.

Level 1:

Strategy - The projects that the team needs to do are defined bottom up and top down, and the Level 1 manager's role is to split it into right chunks, allocate them and make sure they get done. The operational aspects of tracking and ensuring things get done is more important here.

People - You have 1:1's with team members to make sure they are at their personal best and are aligned with the company.

Habits - You ensure that the team is following the right practices in their day to day that help them be effective.

Middle manager:

Strategy - You try to make sense of the company (or Business Unit) strategy (both product and Go to market) and then boil it down to the key projects that your teams needs to accomplish. The important aspects here are high level definition, prioritization and allocation. You make sure that you allocate the right projects to the right teams based on their capabilities and past projects and that they are crystal clear on the the 1-2 big things they need to deliver per month/quarter.

People - You are heavily involved in hiring and staffing the teams and making sure that your managers are being effective through skip level 1:1s.

Habits - You ensure that right habits (also called processes, but I don't like that word) are being followed by teams. eg. Is the weekly planning meeting happening properly, is work getting tracked, are their development practices that helped one team which could help other teams, and so on.

I hope that gives you are better picture.

</comment><comment><USER11> When I worked as a director for a large tech company I had some similar questions. Because I joined through an acquisition, I never truly adjusted to the network of managers both above, below and alongside me.

Eventually, about a year after leaving to launch a new startup, I read High Output Management. Suddenly everything made sense. I'd strongly recommend reading it.

Many Bay Area companies are led by people who read this book, and I think you'll gain an understanding of what the mid-level managers worry about in their day to day.

</comment><comment><USER12> Was Director of IT. My manager would be considered Middle Management. She had a half dozen directors reporting her and would meet with them to get updates and set goals for each department every week. She would pour over all the financials and accounting to make sure things were on track. She would take the results of meetings back to Upper Management and tell them everything was fine. Upper Management would then go play golf and figure out some new way of expanding our lines of business, or meet with random groups of staff to make their presence known, put on a friendly face. No idea what else Upper Management did with the rest of their day

<comment><USER8> What's funny is that the further removed up the totem pole a role is, the more people assume they do less and less. Sure in some cases that might be how it goes, but it would be worth spending some time exploring how things work at the top. For example, what appears to be a useless golf game may be relationship building for a future major partnership.

</comment></comment><comment><USER13> Now I wonder which FANG you work at. At the one I worked at (N) you would definitely see the middle managers all the time, and you'd be having skip level meetings with them on a fairly regular basis.

Their job is to facilitate coordination. The same thing your manager does, but for other managers. They make sure everyone is working towards useful goals, make sure hiring and budgets are in line, and communicate with their peers to avoid overlapping work and most importantly make sure to communicate context down their teams about why they are doing what they are doing and what the business hopes to accomplish in regards to their specific area (and overall).

</comment><comment><USER14> Gee, I don't have a direct answer for you on that question; but tell ya what, I'll run it up the chain and circle back to you on it in a few weeks!

</comment><comment><USER15> You can only effectively directly manage so many people. So as you hire more people you need more managers but then you get too many managers to directly manage so you need another level.

Imagine you had 10,000 people working for you. Just saying hi to them would take up all your time. How many people would you say a person effectively _directly_ manages? Some would say 5, others 15. I think the upper level of estimates might be 30-50. (Yes, someone is going to say 200.)

Let's go with 10 for even numbers. So after you hire 100 people you need a manager for the managers. When you hit 1000 you need another layer. When you hit 10,000 you need yet another layer.

</comment><comment><USER16> The analogy I like using that of a carriage drawn by a large team of horses. Workers are the horses, and CxOs are the drivers. Management is the harness the keeps all the horses pointed in the same direction and running together.

A majority of the physical work is done by the horses, of course, and it looks like the drivers (Top level management) are slacking off - but everything is really on them. "Strategy" is really just where to go and which route to get there. And if they choose wrong or time things badly, everyone else in the organization has done their work correctly, and the failure is purely executive.

The workers are great at running (execution), but left to themselves are horrible at self organizing and running in the direction required in tandem, with the correct beat and stride. It doesn't matter how strong or fast the individual horses are, it's much more important that they run together without friction or distraction and support each other.

That's where (good) management comes in. They're the blinders that keep the horses from individually pulling in different directions and chasing distractions, and the harnesses that keep the entire team fixed together. The exert pressure on horses to both slow down and speed up, and both are vitally important. Done well, management is critical to making sure that the whole org works smoothly. They also act as a communication bridge between strategy and execution. Strategy is great for the all hands once a week or month, where the execs sing about the promised land, but the weekly plans, budgets, and responsibilities of making sure everyone is fed and has toilet access are all management.

Bad managers typically suffer from delusions of being either horses or drivers. They either try to work hard like the horses (bad idea - there's no harness or blinders), or think they're in charge of strategy (they're seen as just slackers, and no harness or blinders again). They don't temper executive vision with their knowledge of reality, nor do they transitively inspire workers.

<comment><USER17> >The workers are great at running (execution), but left to themselves are horrible at self organizing and running in the direction required in tandem

This is an ideological claim that is counter to my experience. Workers are fine at self-organizing, they just might organize in ways that management does not agree with because workers and management may have different ideas about what the company needs. In my experience the usual reason that workers have trouble organizing themselves is that they are not given control over resources like hiring and equipment purchases, specifically so that they won't be able to organize without management.

<comment><USER18> Can you share more of your experience?

Mine tends to be like the OP. For example, suppose a company has a new product and everyone believes there is a lot of opportunity with new product. So then each team figured out a strategy on how to approach said product independently -product managers build new features and iterate -marketers start launching campaigns to drive adoption and engagement -data science is building new models to find the best customers for -customer support is trying to figure out what the hell new product is and what all these complaints are referencing

Etc

Depending on the product / size there may be some self organizing collaboration but many times not, or certain teams are left out unconciously. At least one reason is that each team doesn't yet trust other teams to help set their strategy - not maliciously but just from a lack of evidence. If you are trying to maximize impact the intuitive thing is to work out what you can contribute and ask for what you need from other teams vs developing a joint strategy / approach. Collaboration takes time with an unknown return. Now if you happen to know the other teams and already have worked a lot together you are more likely to reach out from the start.

It's the senior managers / directors that are calling out that teams should be talking with each other sooner than later, getting buy in, etc.

<comment><USER17> My experience is that senior managers don't have the time or inclination to be aware of operational issues. They are unable to perceive something like there is a structural issue between units A and B. These issues are actually seen and surfaced by workers in units A and B, who actually experience the result of the mismatch. If they are able to cross-communicate directly they may be able to resolve the issue without intervention from above. However, they may not be able to, typically if this involves hiring.

But the only way that a senior manager could even understand there is an issue is if someone in unit A or unit B makes them aware of it. This is useless overhead. The workers have to be able to successfully communicate the issue up to senior management and usually also suggest the resolution, then get buy-in from senior management on implementation. If instead the workers were more empowered to make decisions themselves the information and decision-making bottleneck could be avoided.

</comment></comment></comment></comment><comment><USER19> The Peter Principle applies here for any large-scale company that has been running for a good amount of time: [https://en.m.wikipedia.org/wiki/Peter_principle](https://en.m.wikipedia.org/wiki/Peter_principle)

</comment><comment> xkcd-sucks They provide a human (inter)face to a group of people, and allow people to talk about/attribute behavior to an organizational unit as if it were a person. The most useful thing they(we) do is deal with bullshit drama on your behalf, like Kelly isn't giving you the thing your boss asked you to get from her last week because Ellen told Kelly to do something different because John is an asshole, and documenting everything to cover asses appropriately. Seriously I just relay information between people and assess whether they've actually received that information correctly.

<comment><USER20> Thank you for being honest.

Couldn't that purpose be served by hiring people who know how to communicate and are not political, and using technology for group communication and planning?

</comment></comment><comment><USER21> Really depends on the organization.

Middle managers manage managers.

They are definitely in meetings, just meetings you're unaware of.

My experience dates to IBM in the 1990s so is lacking whatever has developed since then. At IBM first and second line managers still had some understanding of the code or product or services being developed/run by their organizations (and I knew first lines who were still active contributors).

Once you got to third line, those managers are more focused, almost solely focused on "business" issues and macro operational issues.

As you get higher up an organization, the managers could care less about the day to day or even month to month issues faced by their organization. They're focused on will their organization meet or exceed revenue projections? Are you running below or over budget? You've maxed out space in Blue Cube corners and at the rate of growth only need 10,000 square feet next year but they can only rent new space in units of 100,000 square feet. The CEO is demanding 5% cuts across the board, can you do it without firing people? Or is there a particular organization you've been hoping to get rid of anyway that you can terminate en masse?

Even higher up at director and VP level they're focused on profit & loss, because that's what they get measured on, maybe secondarily customer satisfaction. Employee satisfaction is mostly irrelevant once you're above a second line organization.

Depending on the _jurisdiction_ a manager is in, they may have certain legal responsibilities or authorities that a lower level manager may not have. Even if you're not the CEO, you might have to sign off on certain contracts (especially with governments, governments love to have an executive's signature on things, because they can go after that executive when the $100MM payroll system costs $300MM and still doesn't work).

<comment><USER22> Thats interesting, it feels like that upper level you mention are more like individual contributors, except optimising very slow responding systems indirectly through policies.

<comment><USER23> Totally. I've worked with very senior level people in corporations and government. The people at the top who aren't on the letterhead are simultaneously powerful and powerless.

All of their information is 2-5 degrees from the source. They are held accountable for outcomes, and need to be able to navigate through all sorts of stuff.

Senior government middle managers are the most fucked. They are either civil service or staff people who moved up the ranks and have extensive expertise in their programs or field or political appointees who know anything from less than nothing to being preeminent in their field.

IME, the government people are smarter, but get ground up by the machinery of bureaucracy. Often times you have layer of formal leaders who are in a symbiotic relationship with the next level down who really run things. Sort of like how in many ways sergeants run the army.

</comment></comment></comment><comment><USER24> Why don't you just ask them? Not in a confrontational way, but like "hey what are you up to this week?" I've worked in orgs from 10-30,000 people and have always been able to at least get 5-15 minutes with this level of management.

<comment><USER25> Right, but maybe even go a step further, and be like "Hey Josh how you doing? Busy day?" They'll likely elaborate, and if they don't _want_ to then it means your question is overbearing in their eyes.

</comment></comment><comment><USER26> They manage managers. Per every ~8 people, you need some sort of a map/reduce operation. That is a manager. An organization is essentially a giant map- reduce hive mind.

Some managers are there due to them just cruising slowly up the chain.

Management is a really hard problem. There are very very few managers I have met in my entire life that I would work with them again. Some just love the power of ordering people around. Some are just plain assholes.

Seriously, life is too short to be treated like shit.

</comment><comment><USER27> Highly recommend the book "The Leadership Pipeline" written by Ram Charan. The book focuses on developing a pipeline through which leaders within an organization move and describes accountabilities at each level, along with red flags that indicate that a manager at a given level isn't operating correctly at said level. Very helpful in understanding what happens (or should be happening) at each level.

Ram Charan is a well respected author and consultant, who has according to Wikipedia consulted with some of the largest businesses in the US.

<comment><USER28> These books usually describe a very idealized version of the real world. I think the only way to find out what mid level managers do is to ask them or ideally to shadow them for a few days.

I think shadowing other roles would generally be very beneficial in a lot of companies so people understand each other better. I have had a lot of occasions where I basically thought that some role is useless until I worked with them and found out what they have to put up with the whole day.

<comment><USER27> Certainly they do. And the book admits as much. In my opinion, it is still a valuable read as it gives a generalized lens through which a large org's structure, and activities at each layer, can be understood.

</comment></comment></comment><comment><USER29> I can tell you that much of "Middle Management" today falls under the category of "Bullshit Jobs" and "Leadership BS" (books have been published on both). It is mainly due to mindset and the way that company hierarchies are structured. "Management" is considered prestigious and hence is given more money then they are worth. Everybody wants to be a "Manager" in one form or another (there is something in the human psyche which wants to lord it over others whether needed or not).

The erroneous belief that if you have a team of 4-6 people you need somebody to "manage" them is ingrained in the industry. Thus the proliferation of management "levels" as axioms.

Ideally they should grow organically only as a need arises otherwise a single level between Strategic/Vision <-> Middle/Operational <-> Engineering/Production should suffice (think of them as concentric circles with Engineering at the core). In a organization with a such a structure true middle management exists and you will see them involved in everything since they are the conduit between the end-goal and the means of production.

</comment><comment><USER30> When you talk to very senior leadership they'll talk about the difference between "strategic" and "operational".

Directors set strategy. Senior managers try to implement that.

<comment><AUTHOR> Sure. I've heard that a lot. But that's very abstract. What actual work is involved in "setting a strategy"? And why does it seem less visible compared to other work?

<comment><USER31> I like to think of it like this: one layer prioritizes which products, another layer prioritizes which users, another layer prioritizes which features, another layer chooses architecture that supports all features, another runs sprints.

Consider allocating resources to an email client vs. a web browser, then figuring out how much to focus on enterprise vs. small business vs. consumer, then figuring out user stories.

All require different analyses - a PM who should be asking specific customers for feedback would be ineffective if they also needed to agonize about the financial consequences (market size, biz dev team readiness to sell into that market, CoCA) of choosing those customers. And even the latter decisionmaker may be better able to focus by having a departmental budget, and letting the C Suite decide if browser dominance is something that maximizes shareholder value.

As a developer these things should seem self-obvious because ideally they were anticipated a year prior, headcount was allocated, and you were recruited at the right time. It's rarely perfect, of course. But it doesn't have to be - people don't need to row in sync down to the millisecond, but without a coxswain there's no hope.

<comment><USER32> I like the coxswain analogy because it raises the question of why the coxswain is typically paid orders of magnitude more than the rowers.

<comment><USER31> I did a bit of research out of curiosity, and these quotes from coxswains at [https://www.sfgate.com/sports/ostler/article/Steering- toward...](https://www.sfgate.com/sports/ostler/article/Steering-toward-gold- is-a-coxswain-s-fine-art-3684648.php) stuck with me:

"My (two) guys were very mechanical. Every 30 seconds, they wanted the stroke rate and the position of the boats that were even with us or ahead of us. Guys really need to know where they are... We control the psychology of the athletes in the race ... You try to wring every last bit of power out of those athletes. If you do that, you can lose a race and eventually come to terms with that."

Any manager out there, at any level, would nod and approve.

</comment></comment></comment></comment></comment><comment><USER33> My personal experience was at Siemens VDO (Automotive). And here was the layout: teams (me part of one with 5 other programmers) -> team leader (programmer also, my direct boss) -> groups (my group was BCM - Body Control Module) -> Group leader (non-programmer, the middle manager) -> Department (Hardware for me) -> Head of department -> Board of directors -> CEO. After a few weeks I started to learn that the middle managers roles are to make sure to set broad goals within their groups/teams and to make sure resources are available to programmers to make those goals achievable before deadline. So my interaction with the middle management was very easy - give them the list of resources I need it to make sure the goals are done before deadline. And in doing so I've learned the absolute best truth about this - power is a balance. I have the power, as a programmer, to make life miserable to a middle manager if he failed to fulfill my list of demands. Also he had the power to make my life miserable if he fulfilled his part of the bargain and I do not achieve those goals before deadline. So after learning this truth instead of taking a "sir, yes sir" ass-kissing attitude like usually people do when they meet somebody above them on the ladder, I started to treat them as buddies with "Hi George, how's the house redecoration working" style. Definitely dispelled any tensions and made both of our lives easier. Also I had on other organization I worked for a stuck-up-ass type who expected everybody to bow before him. Since I was never the bow-before-you type sure we did a collision shortly after I started working there. My direct boss also told me to suck it up because he was afraid of that guy too. I didn't like it so next thing I did I went directly to CEO and complained about that stuck-up-ass manager and that he was making my life hard without a real reason. Long story short, for the remaining of my time there (another year) that guy was only honey and sugar with me while still remaining an a*hole with the rest. It all depends of how you crush the bad behavior on 1st encounter in the end.

</comment><comment><USER34> I was more levels from the CEO at Microsoft (up to Ballmer) than I was as a lowly intern working for the US government at NIST (up to . . . well, Reagan at the time).

I could see value up to about three levels above me, and maybe a couple at the top, but those three or four middle layers were pretty confusing. We had director-level and partner-level people do flybys of our engineering groups, saying things like "We'll see each other every few weeks, you're doing great stuff!" and then vanish for six months, a year, or forever. They never seemed to do anything that mattered.

I work in a flat organization now. Not necessarily better, but there's a whole lot less dead wood, avoidance by delegation, and simple quit-in-place behavior.

<comment><USER35> These middle layers are doing a lot more work than you probably realize. I am a little more privy to some of what they do being a senior IC at a FAANG (6 managers away from my CEO) - sometimes managers take on projects that have to be done but are outside their team's scope. The scale of the project may vary depending on what level they are. My own senior manager was in charge of one such project that ended up affecting the whole company (100k+ employees). They might be in high level discussions with executives about plans on a weekly/monthly/quarterly/yearly basis (potentially all 4 of these levels, like my own is), and doing advance planning before first level managers and senior ICs become involved. These managers often have to have an acute sense of what kind of product may be needed, but good ones will leave the planning of the details to their reports. Their job is to make sure other teams/orgs are aligned and that their team/org delivers on expectations set by all parties.

There becomes a point where it becomes impossible to have everyone be aware of all the knowledge and nuance that is going on without it creating immense noise - when this happens, these middle layers become vital. You still ideally want as little of them as possible, but they all should ideally serve very important purposes. I'm very thankful for all the levels of management in my own organization and company at least (experience may vary of course), it is the best management team I have been under at any workplace - other than my direct manager, each level of management up my chain has over 10 years of management experience apiece.

</comment></comment><comment><USER36> Most are processing information and communicating. A CEO may have a goal. It takes and army of middle managers to break that goal into actions for individual contributors, and communicate progress against it. And then they work on process improvements to make the above work better. It's a mix of analyzing, meeting and communicating.

</comment><comment><USER17> The main function of managers is routing information in the organization; this model was developed in the 1940s. In most large corporations today, there are a handful of C-level officers, the "executives" \- their role is to make decisions. The conception of the modern corporation is that these people do NOT need any specialized domain knowledge in order to be effective, they are just generalized "decision-makers", that is, they perform the executive function; what they need is to be fed a reliable stream of information to act upon.

However, in any large organization there are usually many thousands of times more workers than there are C-level executives. This produces a huge, two-way problem of information flow - how can the executives know what all of the workers are doing, and how can the workers know what the executives want them to do?

The solution is a hierarchical model; this hierarchical model has been used throughout history to organize polities, armies, etc., under the control of a small number of individuals. The basic principle is each unit has a single manager; each set of units has a ur-manager, etc. This allows information to flow from the worker to their manager, from the managers to the mid-level manager, and from the mid-level manager to the executives.

Of course, the information remains bandwidth-limited. Each manager can only, practically, assimilate information from a limited number of people. This number probably doesn't change at different levels of hierarchy - the manager can deal with 10 workers before becoming overwhelmed, the mid-level manager can deal with 10 managers before becoming overwhelmed, etc. This means the larger the organization, the more levels of management you need to try to manage the information flow. Roughly, if you have N workers, you'll need log(N) levels of managers.

The efficacy of this strategy, however, is limited by a key constraint: the compressibility of information. If 10 workers are giving information to their manager, and that manager is passing all of this information on to the mid- level manager, the mid-level manager is going to be overwhelmed; they cannot process information from 100 workers. It must be reduced; the job of the manager is to winnow down the information from 10 workers, determine what requires intervention from above, and pass this on.

In practice this is extremely difficult; the information might NOT be compressible (you need, for example, a two-hour presentation to understand a particular security problem and its implications, not a two-paragraph summary). A friend of mine who works at a high level in an org said her observation is that C-level officers are routinely drowning in information; their answer is simply to ignore the vast majority of email they receive and to punt on their executive function.

The same problem exists the other way - a C-level officer cannot possibly make decisions for all of the workers in the hierarchy. They can only give a small amount of information back to their managers; this information does not magically uncompress into a sophisticated plan for workers. In reality, people have to do work to fill in the blanks (i.e., make decisions) at all levels of the hierarchy.

The result is that information often gets lost - C-level officers are unaware that their workers feel that the product is broken, that engineering or security problems are overwhelming management goals, that timelines can't be met because there are too many constraints.

<comment><USER37> Top notch comment. Really feel it captures the problem succinctly. I'm curious how you built this model. Everything from the notion of compression onwards is novel to me.

<comment><USER38> The compression up, and the necessary expansion with inventing gap-filling down (inference) is one of the reasons (together with the general specification problem) that I don't think that AI is going to take over the world soon. That is: The generalists don't know how to specify in detail - they rely on successive layers down to invent what goes in the gap. And then ultimately, at the bottom layer - the code _is_ the specification. Attempting to describe to an AI what it needs to generate code is already what we use compilers and interpreters for. If we aren't clear, in detail, about what we want, what good would an AI even do? The whole AI will replace coders is an age-old dream that used to be expressed by drag-and-drop code-modules that would allow codge-gen to be directed by business domain experts. See how that worked out...

<comment><USER37> Fascinating view. Also somewhat novel to me, but acts in the same manner as something that management experts like Deming and safety experts like Sidney Dekker talk about: the magic is in the human details at the point where the rubber hits the road. Those humans are actively making conscious decisions about things. The engineer deciding to encode some data model in is using his human intuition and intelligence to trade off future proofing vs ongoing cost etc. using some picture he's designed in his head about the product. He can't always ask the CEO about the deets. He's filling in gaps because the compression is guaranteed lossy.

Interesting view that that would hamper an effective AI. And cool analogy to the drag and drop thing.

<comment><USER38> It's like involving the product owner in deciding whether to use a linked-list or a bucket or a hashmap for object/DS traversal (say, a list of triangles in a 3D scene). Most of the time - you just wouldn't involve them. The coder decides and implements and may or may not even report off what was decided and why. That's the gap-filling that I think it would be hard for an AI to make (of course there are a lot of space-time-memory tradeoff costing matrices that could support an AI decision process).

What I find fascinating about humans is how idealistic we are (as a species). "Wouldn't it be nice if a business domain expert could just "specify" applications without the need for technical specs or coders?" (It's just like a compiler, but smarter, right?) Or (not to get too political), "Wouldn't it be nice if we could all share economic outcomes more equally without specific consideration as to contribution?" Well, yes, it would! But, as the old trope goes: Capitalism is for sinners, and socialism is for saints - and we ain't no saints.

So, I believe that most humans do their best every day to do the best, in their situation, with what they know. But individually, we can't know everything. So, heirarchal management structures are a hack to sorta/kinda solve a problem with a constraint. 1) No individual is a panopticon or even if a polymath, capable of industrial-scale output, and 2) We are apparently tribal hierarchal monkeys, and we operate better (as individuals of the human species) when there is a chain of command - where no individual can effectively directly manage more than 8~15 reports.

Thanks for your comment. Hopefully, I didn't drive too far off into the ditch in my response.

</comment></comment></comment></comment></comment><comment><USER39> I can tell you that _" they are never in any meetings"_ is highly unusual for someone that's a "manager of managers". The places I've been that's pretty much all they do.

</comment><comment><USER40> By the way, when I did a poll of how much time during the day people actually worked (including meetings), senior people worked the same amount as juniors: [https://news.ycombinator.com/item?id=17068804](https://news.ycombinator.com/item?id=17068804). Time spent working might be irrespective of seniority on average.

</comment><comment><USER41> Bullshit jobs :)

These are jobs that are useful sometimes, mostly not. At best you can say they keep an eye on the organization.

</comment><comment><USER42> Odds are you can simply add their calendar on google calendars and see when they've booked meetings.

</comment><comment><USER43> Instead of asking what they do (which could indeed be an odd question), ask what their vision is. Most leaders like to talk about it. While they explain their vision, you can ask questions around how to get their, what their role is in this plan, etc.

</comment><comment><USER44> They probably spend most of their days sending emails, you just don't see them.

</comment><comment><USER45> For some reason Middle Level Managers are the strongest opponents of remote work.

</comment><comment><USER46> A mix of supervising, teaching and inspiring the people in the trenches

</comment><comment><USER47> Holidays or home office

</comment><comment><USER48> Managers of every kind have to deal with personnel, meaning humans, and this is a huge part of what they have to accomplish. They divide their time between humanistic goals and project goals, and it's very squishy.

Managers have to devote a certain amount of time to understanding you and your influence on the process and your mental state.

Managers have to have influence with other people. They build relationships and they form a big picture about the work being done and the timelines imposed and the human assets they have to motivate to meet the important goals imposed by the business.

You've heard all this before but it's a very squishy job. There is no template for it. Management is very, very difficult to do.</comment>


Our employee trading policy at Coinbase - <AUTHOR> https://blog.coinbase.com/our-employee-trading-policy-at-coinbase-1d4e860b7837 <comment><USER3> With equities, it's harder to trade on NPI (non-public information) because every brokerage needs to KYC (know your customer) your identity, so there's a record.

With cryptocurrency, it's possible to insider trade using completely pseudonymous/anonymous wallets and exchanges (outside of coinbase).

Coinbase will obviously fire anyone who did insider trading using a Coinbase wallet, but who would be that dumb?

</comment><comment><USER4> I don't really think this statement is worth anything. They knew what they were doing by adding BCH to the platform with absolutely no warning and I find it insulting that they'd think we'd believe that all these Coinbase employees and investors (and their friends and families) wouldn't have been buying tons of BCH immediately before.

Usually don't advocate for more government regulation but it really seems like the SEC could be more useful here.

<comment><USER5> The reality is that the information is valuable of itself, and that regulating the non-disclosure of information is impossible.

What you can request is transparency, that this should have been said long before and in a much more transparent manner.

</comment></comment><comment><USER6> insider trading in magic internet money - <USER2>

<comment><USER7> This sounds like the beginning of a South Park episode</comment></comment>


Ask HN: Alternatives to fixed-fee or time-and-materials pricing for s/w dev? - <AUTHOR>

Where can I learn more about pros/cons of various pricing models for software development? <comment><USER2> You might want to look at the Incremental Funding Methodology stuff:

<http://www.softwarebynumbers.org/></comment>


New Minecraft Mod Teaches You Code as You Play - <AUTHOR> http://www.wired.com/2014/08/learntomod/ <comment><USER2> Nice!

Also of note is a mod called Computer Craft, that adds Lua programmable computers and devices into the game (touchscreens, turtles!) as well as a set of APIs for interacting with various aspects of the game.

[http://www.computercraft.info/](http://www.computercraft.info/)

<comment><USER3> Yes, that's what most people tend to use for programming these days.

Although I personally have never enjoyed it as much as the famous Redpower 2 mod, which had computers as well, with 6502 assembler and Forth. It was less forgiving than Lua, but somehow more fitting the genre (of construction set, that is); programming in Lua feels almost like you could program the thing in Java and put it in a new block.

I also liked the logic gates and other stuff that came with RP2, I think that's good for kids to play with as well. Too bad Eloraam stopped developing RP2, it was the best mod for Minecraft ever.

(Also, CC computers seem to reset on world reload, while RP2 computers were persistent. They are also dirt cheap compared to RP2, and their runtime behavior is not well specified. I just kinda feel that CC computers break the fourth wall of the virtual world, in several different ways..)

<comment><USER4> The main advantage of computer craft is turtles, programmable robots. You can automate all sorts of things in the game and it's fun. Automating things with redpower is possible, but takes massive complicated contraptions and great feats of engineering.

<comment><USER3> Again, I actually find frames both more useful and more fun. In my final days of 1.2.5 world (which was more or less with RP2 as only tech mod), I had total 3 vehicles of my own design: [http://integratedredstone.wikispaces.com/6-directional+Movin...](http://integratedredstone.wikispaces.com/6-directional+Moving+Platform+Tutorial)

One was used for mining, other for paving, and third had attached two 7x5x7 trailers, one was mobile house with basic facilities and the other was mobile Thaumcraft 2 lab.

But most things can be automated quite easily with frames, and I find it more intuitive - you just look at it and see what it does when it's done.

I also later designed a fully programmable factory using RP2, Buildcraft crafting table and a conveyor belt.

I am glad to hear that Eloraam started working on RP again. I hope I will be able to design von Neumann machine in RP, eventually (that's my ultimate goal, but there are several blocks still missing in RP, so it's not yet doable). At the very least, next time I play I want to have a full base on a moving platform (may be of several independent "trucks"), so I could easily move all stuff I have somewhere else in the world. :-)

</comment></comment></comment></comment><comment><USER5> I'm confused. What does the $30 pre-order get you? Is it a subscription service? Their FAQ [1] mentions a subscription for a private server after the beta.

1 - [http://www.learntomod.com/faq](http://www.learntomod.com/faq)

<comment><USER6> Sorry that our pricing model isn't the clearest - we're still bouncing around ideas for after the beta. The $30 pre-order gets you access to the entire beta period until we release.

The subscription fee after the beta period is for use of a private server for you and your friends to use learntomod. Alternatively you can opt for a lower fee to play on a public learntomod server.

<comment><USER5> Will people be able to run their own learntomod servers? What happens after the beta? Would I have to pay more to continue using the software?

<comment><USER6> Just talked to a few other people and they said -those who preorder get a guaranteed life-time price of $10/month, regardless of whether we raise the price for everyone else.

After the beta: we haven't decided on a final pricing system. We're shooting around ideas of doing a tier system.

And about running your own learntomod server:

At this stage we aren't letting people run their own learntomod server, the only exception being 3rd party hosting companies that want to make it available to their users.

<comment><USER5> Thanks for the info. I'll admit that I probably wouldn't subscribe to such a service. If it was a fixed price for the software I would definitely buy it for my kids.

</comment></comment></comment></comment></comment><comment><USER7> Relevant (shameless plug) for my and @kdurrani's implementation of LOGO's famous Turtles language but in Minecraft and in 3D [https://github.com/tombh/mc-turtles](https://github.com/tombh/mc-turtles)

We taught Code Club in primary school and Minecraft is the one thing that is guaranteed to grab and sustain kid's attentions. We actually used it at first through a Raspberry Pi and unplugged the keyboard and mouse, so the only way kids could interact with Minecraft was through Python ;)

</comment><comment><USER8> Very cool. Get 'em while they're young. I can't imagine kids these days would copy out games in basic by hand the way I had to on my first computer :)

<comment><USER9> As a 22-year-old, I can't believe you ever did that.

<comment><USER10> I'm 44, and started programming when I was 12 on a ZX81 and then a Commodore64. Back then we had magazines instead of the internet, and any serious program was written in assembly rather than BASIC. One of the more advanced things the magazines did was print out hex dumps of the machine code, with a checksum on each line, and there was a program (which you had to enter manually) that would let you type in those hex dumps. It would checksum each line as you went along and warn you if the checksum you entered didn't match the checksum of the bytes you entered. That was a huge improvement over just typing in the programs, because you knew you didn't have any typos.

Many, many hours were spent typing those programs in. I'm still really good at typing with one hand while the other is used to point at what I'm typing in.

<comment><USER11> On the Altair 8800 we had to toggle in the hex bytes using switches on the front panel! Ha!

</comment></comment></comment></comment><comment><USER12> Minecraft is very popular among kids, however I tried hard to deny my kids to play that. Instead I redirect them to program in python and processing and javascript, that might be more boring but they can play whatever games they built themselves using the 'real' programming language. So far it worked well. I always wondered how beneficial Minecraft(and the new code Mod) could be to kids? I dared not to let them play as I was told it's too addictive for kids...

<comment><USER13> How about playing _with_ your kids? I have a private Minecraft server set up where I, my fiancee, our godsons, and their mother all collaborate. We use a custom-assembled modpack with a _lot_ of different options; my fiancee has been learning to breed trees and bees (Forestry mod), while I've got a nuclear reactor going (IndustrialCraft 2 mod) and am starting to design a rail system (RailCraft mod), and one of our godsons has been building fancy houses, furnished with add-ons from BiblioCraft and MrCrayfish's Furniture Mod.

<comment><USER14> Would love to setup a server to play with my daughters too. Could you point me to some resources on how to do it?

<comment><USER13> Here's a quick tutorial from DigitalOcean: [https://www.digitalocean.com/community/tutorials/how-to- set-...](https://www.digitalocean.com/community/tutorials/how-to-set-up-a- minecraft-server-on-linux)

My server is actually at my home, so my godsons and their mother use a VPN to log into it. It's easier to have it hosted on a cloud service like DO. (If you're just accessing it at home, you don't have to bother with the VPN part.)

<comment><USER14> Thank you very much - 5 minutes and it's already running!

</comment></comment></comment></comment></comment><comment><USER15> Now that's coding with entities!

(if u haven't seen the new Terry Gilliam : Zero Theorem : then u should)

</comment><comment><USER16> If the learn to mod people ever find their way here: that fucking huge fixed banner makes reading your page unpleasant.

[http://imgur.com/NwpRBC3](http://imgur.com/NwpRBC3)

<comment><USER17> That style seems to have become fairly common, and it really does suck on small screens. What's worse is when you try to zoom in to make the text readable and suddenly the top banner takes over the entire screen.

<comment><USER18> Or when it moves at the wrong moment as you go to scroll/pinch and then counts it as a click and opens the new page. At the very least let me close the damned thing, I've seen and read it enough to interact. Now let me read the site.</comment></comment></comment>


India builds detention camps for Assam 'foreigners' - <AUTHOR> https://www.dw.com/en/india-builds-detention-camps-for-assam-foreigners/a-50497835 <comment><USER2> I find this article more clearly written, and the historical background is also helpful:

> To understand the roots of India's plan for a massive detention system, we > need to go back to the 19th century, when the British set up big tea > plantations in Assam. Labor was in high demand and many people from Bengal, > Nepal, and elsewhere were brought in to provide it. The local Assamese began > to grow anxious about the loss of their culture in the face of shifting > demographics.

> Then, in 1947, the subcontinent was partitioned. As India and Pakistan were > born amid bloodshed, many families rushed into what was newly becoming India > — including many Muslims. The native Assamese increasingly resented the > newcomers, who were, in their view, taking too many professional jobs and > economic opportunities. And another wave of migration was soon to come.

> In 1971, the territory that was then East Pakistan gained independence and > became Bangladesh. Prompted by the bloody independence war, millions of > Muslims fled Bangladesh for India, and many of them remained in Assam.

[https://www.vox.com/future- perfect/2019/9/17/20861427/india-...](https://www.vox.com/future- perfect/2019/9/17/20861427/india-assam-citizenship-muslim-detention-camps)

And later, a description of the seemingly ubiquitous ethnic demagogue:

> Prime Minister Narendra Modi champions a hardline brand of Hindu nationalism > known as Hindutva, which aims to define Indian culture in terms of Hindu > history and values and which promotes an exclusionary attitude toward > Muslims. UN human rights chief Michelle Bachelet recently expressed concerns > over "increasing harassment and targeting of minorities — in particular, > Muslims."

</comment><comment><USER3> Huh, very much like the Rohingya in Myanmar.

I wonder if this is climate change driven.

<comment><USER4> and the Uighur in china.

I bet it's not.

<comment><USER3> Isn't flooding more of an issue in Bangladesh?</comment></comment></comment>


Tixit: Extendable project management system with plugins and custom interfaces - <AUTHOR> https://medium.com/@tixit/introducing-tixit-1-1-the-extensible-pm-software-youve-been-waiting-for-2190a2d37443 <comment><AUTHOR> Since each team or company has its own unique way of working and unique needs, people tend to get frustrated with the over simplistic task management systems out there (like trello/asana/basecamp) and the over-designed systems (like pivotal/wrike/jira).

Tixit is a modular platform that you can customize in various ways. You can build frontend plugins in javascript and upload them into Tixit to use in your own interfaces (aka layouts) or share with the Tixit community. No need to host your own server to create a Tixit plugin!

Rather than the usual embbeded application "plugins" you see in things like Jira or Salesforce, Tixits plugins are designed to follow the single responsibility principle, where each plugin is a small piece of functionality (like a dropdown, velocity chart, or date picker). Users can use an in-app layout editor to build interfaces from plugin components they can find in Tixit's plugin library. This gives users total control over their interface.

In the next major release of Tixit, users will be able to not only share plugins they write, but also full interfaces and packages of interfaces. This way, users will be able to share complete new ways of doing project management without building yet-another-project-management-system.

</comment><comment><USER2> This looks pretty awesome! Can't wait to see where it goes.</comment>


Coming soon from a HN author: The Geek Atlas  - <AUTHOR> http://oreilly.com/catalog/9780596523206/

<comment><AUTHOR> Yes, that was a blatant plug for my own book, but I think the subject matter is interesting for HN readers.

And I'm hoping that people here also have great suggestions for a possible second edition :-)</comment>


Ask HN:  Ensured Success vs. Extreme Success - <AUTHOR>

Which path has gotten you to where you are today? Is it the path you should have taken?
1) The predictable, typical, and accepted path that ensures a level of mild success. Little chance of extreme failure or remarkable success. Low risk
2) The unknown, anomalous, and unpredictable path that ensures anywhere from extreme failure to unbelievable success. High risk
I guess this is the essence of risk taking. What are your opinions and experiences? <comment><USER2> I'm still on the path (trying to get a product out this week), but I don't think these two are mutually exclusive.

The first step is to get to #1, then get feedback and grow to #2.

But in the start-up world, I think that there is no such thing as "low risk". Even start-ups that are 'guaranteed success', often fail.</comment>


Final features of C++17 - <AUTHOR> https://meetingcpp.com/index.php/br/items/final-features-of-c17.html <comment><USER2> I'm always happier the more I see old cruft _removed_ in a new C++ standard.

Trigraphs [1] are gone. Good riddance, they're just used for pointless pranks anyways. Otherwise they just seem to cause issues, there's _always_ someone who didn't know about them at all.

Also "unexpected_ownership_move" err... "auto_ptr" is gone [2]. Yeah, I know, there's nothing inherently wrong with it and _you_ knew how to use it correctly...

[1]: [http://www.open- std.org/JTC1/SC22/WG21/docs/papers/2014/n398...](http://www.open- std.org/JTC1/SC22/WG21/docs/papers/2014/n3981.html)

[2]: [http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2014/n419...](http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2014/n4190.htm)

<comment><USER3> Removing these facilities is a stunt. Real compilers will have to support them for decades (maybe at least auto_ptr) anyway, so there's no sense deleting them from the standard. It's sufficient to just recommend against their use.

<comment><USER4> I wouldn't say it's just a stunt. While they will remain _supported_ , their removal from the standard can be cited by engineers for political support to modernize code bases. Compilers also support strict compilation modes which remove obsolete functions, to help modernize your code base. This is all facilitated by removal from the standard.

This also makes the standard smaller.

<comment><USER5> >While they will remain supported, their removal from the standard can be cited by engineers for political support to modernize code bases

Man... Who do you work for? If I used that as a reason for a refactoring my boss would laugh at me (and he's technical) . I imagine _his_ boss would glaze over for a bit and then ask him to leave his office.

<comment><USER4> I think this casts my explanation in a very ungenerous light, I'm not really such an absurd person. Think of how a reasonable engineer would do it.

Speaking as an engineer, some of us have a tendency to want to refactor and polish code past the point where we should ship it and move on to something else. Management also has a tendency to view refactoring as unproductive and hurtful to the company's bottom line. Both are very reasonable positions. In most cases, the best strategy tends to be in the middle somewhere.

The auto_ptr class is gone from C++17 because it is error-prone to use it and there are better alternatives. However, I don't need to explain the intricacies of auto_ptr to my boss. I can just say something like, "We want to keep up with the latest industry best practices and standards. Some simple changes to our code base will reduce the chance for bugs and reduce support costs, and make it easier to develop new features."

The fact that auto_ptr has been removed from the standard entirely sends a stronger signal that you _really_ should stop using it. Which is a good signal to send.

</comment></comment></comment></comment></comment><comment><USER6> I'm very disappointed the networking ts wasn't included (I must have missed when that stopped being a C++ 17 thing). It's one of the few things missing that would let me use C++ for more projects (yes I know I can just include the boost library since that's essentially what it'll be but that's not always the easiest thing to grab and build into an existing project (at least not for a C++ novice like myself) but being part of the standard will make it immensely more accessible).

At least it still exists much like some of the other ones like the filesystem ts. [http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2016/n458...](http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2016/n4588.pdf)

<comment><USER3> I'm not sure that you should be writing network code in C++ (which is a notorious source of nasty security bugs) if you're not comfortable enough with C++ to link against one of its most popular freely-available libraries.

I'd rather the committee focus on longstanding language core issues than add everyone's favorite library.

<comment><USER5> I had to write a plug in that makes a REST call a couple of weeks ago. This thing was ~200 LOC max and I had to link to a library that is orders of magnitude larger just to make an HTTP call. I would have loved some standard networking functionality in that instance.

<comment><USER7> [https://github.com/mrtazz/restclient- cpp](https://github.com/mrtazz/restclient-cpp) ? 2 LOC. Wraps libcurl.

<comment><USER5> The point was that you have to pull in third party library; LOC has nothing to do with it. I know all about libcurl. I work on an FDA regulated product; do you know what it takes for me to get third party code into our system?

</comment></comment></comment></comment></comment><comment><USER8> Modules didn't make it in but are arguably top of the list of practical improvements for everyone and considering the time it will take to trickle down to toolchains and build scripts.

</comment><comment><USER9> constexpr if seems pretty neat, previously you could do things like constexpr bool foo = /* some constexpr */, this makes it a bit easier and saves a line.

Structured bindings seem like one of those things that was just forgotten in previous standards, I'm glad it's here now. The syntax is a matter of taste, I guess.

I'm also quite excited about variants, they probably won't be used much but sometimes they're just what one needs. Having them without requiring boost is nice.

<comment><USER10> I agree that constexpr if looks great. I am confused about the decision on how to handle static_assert. It seems that

        if constexpr (false) { static_assert(false); }

Will fail to compile because the static_assert will trigger. This seems strange to me, anybody have an idea what the reasoning here is?

<comment><USER9> I think it's only consistent. Static assertions should always always always hold (things like type checks etc), if you really want to only evaluate it in that branch you can still do

        if constexpr (foo) {
            static_assert(!foo || /* assertion */);
        } else {
            static_assert(foo || /* assertion */);
        }

(this gets ugly fast with lots of else-ifs, but it's a workaround - I don't know why you'd ever need it, though)

<comment><USER10> Hmm, it seems this constexpr if is much more limited than I realized then. If I understood correctly the code in the the body of the constexpr if has to be correct even if the condition does not hold. I.e., this code:

        template<typename T>
        void func(T x) {
            if constexpr ( std::is_same< T, ClassWithMemberF>::value ) {
                x.f();
            }
        }

will not work if you pass in a type for x that does not have a member function f. Is my understanding right? If so, constexpr if is not nearly as nice as I thought...

<comment><USER11> In my reading of it, this code would work. The code in if constexpr must be well-formed but does not have to be semantically valid. Your code is well- formed but not semantically valid, so this would be the perfect use for if constexpr

<comment><USER10> You may be correct, and I certainly hope you are. But if that's the case then the static_assert behavior seems all the more puzzling. In particular if this code works, then you can roll your own "static_assert" that will not trigger from the not taken branches.

</comment></comment></comment></comment></comment></comment><comment><USER12> It will be great to see variants as a standard part of the language. Variants provide a way of doing a sort of type safe union for different types of data.

<comment><USER3> The new variant feature is based on boost::variant, which you can use today. Getting the thing into the standard library is nice and all, but it doesn't open up new capabilities the way that new syntax does.

<comment><USER13> I did not have a good experience with boost::variant ... Compile times increased drastically, compiler error messages became enormous and garbled with templates, syntax was onerous in places (e.g. "make_recursive_variant"), and identification of types is based on arbitrary index value that is risky to rely on (which() method). I ended up refactoring the whole thing, removing boost::variant and just using the traditional visitor pattern. The only advantage boost::variant really has over traditional C++ visitor pattern is that boost static_visitor functions can have a non-void return type ... Being able to directly return a value in the visitor functions is admittedly very convenient, but the other issues negate this convenience.

<comment><AUTHOR> boost::variant is 12 years old, the std::variant version is not based on the actual design nor is it a copy of the boost implementation.

The interface is very similar, but the implementation is ofc using C++17 and not C++03.

<comment><USER14> The boost implementation is certainly showing its age at this point, as is mpl, now we have variadic templates.

Are there any C++14 variant implementations compatible with boost::variant and std::variant which are based on variadic templates? I'd love to move to a more modern implementation if possible.

</comment></comment></comment></comment></comment><comment><USER15> I'm a bit frightened with the move toward adding a compile-time sublanguage. Frightened because I feel it will end up being half-baked and then abandoned like other C++ features (virtual inheritance for example).

As an example, I've been exploring Sean Parent's idea of concept-based polymorphism that allows you to implement "virtual functions" that get bound at compile time. To make this scheme explicit, I need to assert in the base class that all my "derived" classes implement a method with a certain signature. Does C++ allow me to do this?

<comment><USER3> > adding a compile-time sublanguage.

The C++ template system is already a Turing-complete functional programming language and has been since C++'s inception. I see nothing wrong with making this language's syntax more convenient.

> half-baked and then abandoned like other C++ features (virtual inheritance > for example)

Virtual inheritance has its place. It's part of the language and works fine. What would you change?

<comment><USER16> Virtual inheritance means you have a diamond pattern and haven't separated your components properly. It should have never made it into the language as far as I'm concerned.

<comment><USER17> > Virtual inheritance means you have a diamond pattern and haven't separated > your components properly.

I've seen this argument pop out time and again as if it was a mantra of sorts, and more often than not it comes from someone with a background almost exclusively founded on Java.

Their line of reasoning essentially boils down to "Java doesn't support it, the people behind Java said something about it, therefore it's bad".

But C++ isn't Java, nor does Java dictate what is correct or what makes sense.

Particularly when the only assertion you could come up with to criticize multiple inheritance was a comment that had nothing to do with C++ or even OO programming, but only to do with your personal taste regarding your superficial impressions regarding software design.

<comment><USER16> Ooo, that Java remark burns. I've only touched Java seriously in the last few years of my career, I'm a hardcore C++/native type.

Here's the issues I take with virtual inheritance:

1\. It complicates the vtable and function/member calls leading to another level of indirection, so from a performance perspective it's a negative mark.

2\. The more fundamental problem is that you've botched the _hasA_ vs _isA_ association. If you have two classes that share a base class then that base class should be refactored into a component that can then be used as a member without polluting the class hierarchy. This leads to better composability since you can now pass this object around without pulling a whole class hierarchy with it.

You're welcome to use virtual inheritance all you want in your projects but much like knowing what subset of C++ to use(and what not) you'll never see it in code I work on.

<comment><USER3> > you've botched the hasA vs isA association

No you haven't.

In many senses, C++ inheritance is just shorthand for composition. That's why things like private inheritance are useful. Through this lens, virtual inheritance is automatic composition in which multiple composed objects each have a pointer to some shared object (the virtual base). It doesn't mess with hasA vs. isA at all.

> knowing what subset of C++ to use

This idea that a good coding standard necessarily bans parts of C++ has done massive damage to the C++ community. The correct subset of C++ to use is C++. Turning off parts of the language is just a cheap way to look sagacious while infantilizing developers. Every feature has its place.

<comment><USER16> I think we're just going to have to agree to disagree here.

There's a been a fair number of projects I've worked on where exceptions and RTTI introduced too much memory/perf overhead so we explicitly didn't use them. I don't feel like we were worse off for not having them.

<comment><USER3> I prefer not to work on projects that ban exceptions and RTTI. These features (especially exceptions) are important parts of the language, and without them, you can't reliably use most of the standard library (see bad_alloc) and can't really deliver value semantics, since you need awful hacks like two-phase initialization to communicate failure.

C++-without-exceptions is a very different and much worse language.

<comment><USER16> If you're interested in limiting your market, there's a whole embedded and high performance space where this is critical.

Considering LLVM takes the same stance[1] and they're the ones implementing language features that's good enough for me.

[1] [http://llvm.org/docs/CodingStandards.html#do-not-use-rtti- or...](http://llvm.org/docs/CodingStandards.html#do-not-use-rtti-or- exceptions)

<comment><USER3> > If you're interested in limiting your market, there's a whole embedded and > high performance space where this is critical.

Well, it's a preference, not a hard requirement. I'll hold my nose and work on such a codebase if there are other reasons, like the project itself being very interesting.

> Considering LLVM takes the same stance

IMHO, that's a mistake. But LLVM is an example of a project that's compelling enough to work on despite what I consider a set of poor language choices.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER18> To clarify a question raised in this write-up:

"auto [a , b , c] = getvalues();

"The braces are needed, getvalues returns a tuple. std::pair is not mentioned in the proposal, so its unclear if this works with pair, which is returned by the STL in some insert methods."

Destructured bindings will work with arrays; plain aggregate structs; and any class that offers a specialization of std::get<>(), so both std::tuple and std::pair are supported as a consequence. (C++11 added std::get<>() for std::pair).

<comment><USER19> What if the number of lhs values don't match the number of rhs values?

<comment><USER20> Compile-time error:

 _Otherwise, if the expression std::tuple_size <E>::value is a well-formed integral constant expression, the number of elements in the identifier-list shall be equal to the value of that expression_

(E is the return type of "getvalues" in squidbidness's example, the initializer-list is "a, b, c".)

</comment></comment></comment><comment><USER21> [http://cppcast.com](http://cppcast.com) just had a great interview with Herb Sutter where he talked about many of these features.

[http://cppcast.com/2016/06/herb-sutter/](http://cppcast.com/2016/06/herb- sutter/)

<comment><USER22> The link is right there in the first paragraph :-)

</comment></comment><comment><USER23> So the next standard will be in 2020 ?

I hope I will manage to try modules in MSVC before that time.

<comment><USER20> That seems to be the plan: [https://isocpp.org/std/status](https://isocpp.org/std/status)

</comment></comment><comment><USER16> Really looking forward to auto templates, so annoying to have to specify type signatures in lambdas when most other languages don't require it.

<comment><USER20> Lambdas support that in C++14 (generic lambdas/polymorphic lambdas).

<comment><USER16> Ah shoot, you're right. Not sure how I got them confused.

</comment></comment></comment><comment><USER24> Variant, destructuring, template auto.

</comment><comment><USER3> Yet memcpy(0, 0, 0) is still undefined behavior? For shame.

<comment><USER25> memcpy behavior is not part of C++ standard. The C++ standard is only concerned with formally defining the ability to use it and the header name to include.

<comment><USER2> Strictly interpreting true, but grandparent's point is very valid.

It's used everywhere in real life C++ code.

quotemstr got a very good point and I'm grateful for the heads up.

<comment><USER25> but memcpy outside the C++ scope is what I meant. The C++ committee cannot do much about memcpy but they can introduce a new memcpy with a different name that has better ub support.

<comment><USER20> The C++ committee can and does change how functions of the C standard library work in C++, see Appendix C of the C++ Standard (granted, most of those changes simply specify how the library functions interact with C++ features).

C++ is not 100% compatible with C.</comment></comment></comment></comment></comment>


The Go Team declines the 'try' proposal - <AUTHOR> https://github.com/golang/go/issues/32437 <comment><USER2> It was discussed here: [https://news.ycombinator.com/item?id=20454966](https://news.ycombinator.com/item?id=20454966)</comment>


Embedded Kanban Board for Your Website - <AUTHOR> http://timnuwin.blogspot.com/2014/12/testing-out-embedded-taskforts.html

<comment><AUTHOR> It still needs a little bit of refinement, but I thought this might be a useful feature to have for people who want to include a kanban board on their own website.

Also, you can view updates happening in the widget if the person logged in is modifying the board.</comment>


Does anyone knows of a good mobile address book backup service? - <AUTHOR>

<comment><USER2> I know a few of the major carriers offer this type of service for a monthly fee. I suppose you could look into that, however there's a build in flaw to this model.

If you use a carrier's backup service for your address/contact list, you can only use that with phones from that particular service. For example, you could transfer information from one AT&T Wireless phone to another AT&T phone, but you wouldn't be able to move data from a AT&T phone to a Nextel phone. I've seen some third-party devices out there that will help you move contacts from one service to another, but I haven't seen backup service that will allows for this functionality without manual (hardware or PC software) intervention.

</comment><comment><USER3> If you've got a Sony-Ericcson phone, you can use Float's Mobile Agent. It's open source. Lets you download/upload your contacts, texts, photos, etc. via bluetooth.

It can also do cool-in-theory but useless-in-practice things like use your phone as a remote control for your mouse or monitor the temperature of your phone battery (???). Oh, I think it'll fade the music and pop up caller ID on your computer if you get a call.

Main page: <http://fma.sourceforge.net/index2.htm> List of supported devices: <http://fma.wiki.sourceforge.net/Supported+devices>

</comment><comment><USER4> I have looked into this opportunity two years ago. here are my research: 1) USA carriers like Verizon offers a service charging $5 a month to backup contact 2) Carriers in China offers for free. But you have to input them first. But you can query your contact book using SMS. I assume their online contact book sync with your Outlook 3) In 3G, there is a mobile contact book XML standard, using which you can sync with any online contact book supporting that standard on 3G network. There are plenty of startups doing that already since it's so simple to implement.

</comment><comment><USER5> I'm not sure, but I would check out grandcentral.com

</comment><comment><USER6> try <http://zyb.com> \- easy sync for any phone

</comment><comment><USER7> iSync on a mac? Or give zyb a try, it's pretty good.

</comment><comment><AUTHOR> All good answers. The reason I am asking is because we made such a software for java phones ( and we can port it to more phones) and I was wondering if that feature is enough to launch a startup around it. What do you think

<comment><USER8> Not just the backup.Maybe you can strech it by allowing a user to upload her address book to the site. Then the site automatically links everyone on your phone book to each others profiles and if anyone changes a phone number it has a cascading effect on everyone who is linked with them - this way phones numbers stay current easily. Also, you could offer functionality to send business cards to each other.And maybe even backup text messages. A social network for phones.

<comment><AUTHOR> hmmm sounds nice.</comment></comment></comment>


Is Indian epic Mahabharata real? This movie claims it is real. - <AUTHOR> http://www.saraswatifilms.org/movies.php

<comment><USER2> I am struggling to see how this is even remotely HN.</comment>


African teenagers invent a urine-powered generator - <AUTHOR> http://makerfaireafrica.com/2012/11/06/a-urine-powered-generator/

<comment><USER2> Hmmm

>The system works like this:

Urine is put into an electrolytic cell, which separates out the hydrogen. The hydrogen goes into a water filter for purification, which then gets pushed into the gas cylinder. The gas cylinder pushes hydrogen into a cylinder of liquid borax, which is used to remove the moisture from the hydrogen gas. This purified hydrogen gas is pushed into the generator.

Don't electrolytic cells need electricity to split water into hydrogen and oxygen? Also why have they got 2 automotive fuel filters on top of that tank of red stuff and why are the filters venting to the atmosphere? Isn't that wasting their precious hydrogen? 6 hours of elecy from each litre of pee? I'm certain that if pushed I could generate about a litre an hour and thus this machine would power my pc , my router and charge my iPad for free.

Or not because this story is bullshit. Seems others think so too [http://nathan-lee.com/blog/2012/11/07/urine-powered- generato...](http://nathan-lee.com/blog/2012/11/07/urine-powered-generator- theyre-taking-the-piss/)

<comment><AUTHOR> There's a lot of skepticism going on. I too don't see it working either, although I lack the knowledge to judge.

From what I've read so far it certainly does require power and doesn't jumpstart itself. Question is how much power does it need, and how much is it able to generate. Maybe not their simple experiment one, but an industrially optimized one.

Still looks like sth that has already been tried and the math just doesn't work, yet it's remarkable that these young girls are working on these problems. It shows what education can do and impressed me nontheless.

</comment></comment><comment><USER3> They use an electrolytic cell to extract the hydrogen from the urine...

[http://en.wikipedia.org/wiki/Oxyhydrogen#Fringe_science_and_...](http://en.wikipedia.org/wiki/Oxyhydrogen#Fringe_science_and_fraud)

> the energy required to split water molecules exceeds the energy recouped by > burning it

<comment><USER4> Well, except they don't split the water, but the urea contained in the urine. Now, I don't know whether that process takes more or less energy than you gain by burning the end result, but it's not the same process.

<comment><USER5> You can't electrolyze urea by solving it in water and passing electricity through the solution, for that you'd have to melt pure urea and electrolyze that. Problem is that it will decompose above its melting point.

So, even when urea is solved in the water, only the water is electrolyzed (in hydrogen and oxygen).

<comment><USER4> Why would you need to melt the urea to electrolyze it? I'm actually a little behind with my chemistry, but you can electrolyze NaCl (salt) when dissolved in water, without melting it. The basic requirement is that the solution contains ions. Now I must admit that I don't know the basic reactions of urea with water, but given that you can use urea as hydrogen source in fuel cells [1] I'd assume that it should work as hydrogen source in an electrolytic process since the basic reaction is somewhat similar.

[1] see <https://en.wikipedia.org/wiki/Urea#Laboratory_uses>

Edit: There are papers about direct electrolysis of urea

<http://www.suttonfruit.com/pics/urea_electrolysis.pdf> (I think its a copy of [http://pubs.rsc.org/en/Content/ArticleLanding/2009/CC/b90597...](http://pubs.rsc.org/en/Content/ArticleLanding/2009/CC/b905974a))

[http://etd.ohiolink.edu/send- pdf.cgi/Singh%20Deepika.pdf?ohi...](http://etd.ohiolink.edu/send- pdf.cgi/Singh%20Deepika.pdf?ohiou1258349080)

Now I don't know how legit they are, but seems ok to me.

</comment></comment></comment></comment><comment><USER6> [http://webcache.googleusercontent.com/search?q=cache:7Tim1l5...](http://webcache.googleusercontent.com/search?q=cache:7Tim1l5Ay4UJ:makerfaireafrica.com/2012/11/06/a-urine- powered-generator/+&cd=1&hl=en&ct=clnk&gl=uk)</comment>


Commentary: Internet Discussion Badly Broken, Hurting Society - <AUTHOR> http://www.whattofix.com/blog/archives/2008/08/internet_commen.php

<comment><AUTHOR> This is another in our long discussion about how internet voting systems suck, but with several News.YC examples.</comment>


Vanitygen Scam - <AUTHOR> Dear HN community,
Unfortunately, I had my 2.62683514 Bitcoins stolen from my wallet on Nov 3, 2017 2:03:29 PM. I had used the website www.bitcoinvanitygen.com to generate the wallet address: 1FabioUj74f7Vf1qJD9ENa15XxzUNLVeW9
I created a paper wallet offline using this address and was using it to receive and send Bitcoins since August 2017. To my surprise when I sent 2.62 Bitcoins from the Brazilian Exchange Foxbit to this wallet, in less than a day they were gone. It is clear that bitcoinvanitygen website had my private key because nobody else knew about my paper wallet.
At the time it was known that their sites were running on this Ip address: 22.214.171.124
This is the BTC address where the coins are at the moment: 19yXdhfcsUc4dB5tfxrHuLyN27PubycNJj
This is the thief's BTC address that stole my Bitcoins: 16BXHtbF2kmWjta983b3YfsTqtYS2Em3kX
There's a video in Youtube "How I lost $60.000 in Bitcoin! Bitcoinvanitygen Scam and Security Tips" that explains how the criminals operate.
Many other newbies in the crypto space also lost lots of money falling for this scam. Authorities in Brazil don't care about cryptocurrencies. So, it was pointless for me to go to the police and report the incident.
If there's any information, ideias, etc. you may share that could help me to ban this website or find the criminals, it'll be much much appreciated.
Thank you for your attention! <comment><USER2> That is amazing! I figured all these holes had long since been plugged. Rule 1 of crypoto is, "If you don't hold the keys, its not your Bitcoin". Sounds like you chose to share your key with a third party. We should add, "Anyone that has your keys, has your Bitcoin".

</comment><comment><USER3> I'm sorry for what happened but let this be an expensive lesson. Never ever share your private key or let someone else generate it.

Unfortunately I doubt you can actually recover your funds, so the best way to fight this is to spread awareness around the dangers of such services.

<comment><AUTHOR> That's why I made this post. What is interesting in Bitcoin is that everything is recorded forever. We never know which future advancements will come that will help us to catch the bad actors in the space. Authorities are also becoming better and better in catching such criminals because in some point they'll have to expose themselves in some way, specially when they move such large amounts of money. Talking to a scientific policeman he told me not to lose hope because everything is in the blockchain and governments have eyes over everybody. The longer they keep my money the worst will be sentence for them when in court. It may take years but criminals are criminals. They will always be targeted. When you harm so many lives, one day your actions come back to you in some way or other. Although they made my life and many other lives miserable, lots of people are aware already and at some time, someone, somewhere, will surprise them. Ross Ulbricht thought he could neve be discovered and now he is in jail. As the policeman told me, only stupid people think that can do things without being surveilled and nowadays the governments surveillance is at the highest level ever.</comment></comment>


Ask HN: Any Covid travel-restriction interactive map to see from country A to B? - <AUTHOR> <comment><AUTHOR> I saw this pic and got the idea to do it. Anyone would like to help?

[https://docs.google.com/spreadsheets/d/1RIK4LQKz- wIxiVlYnPQ7...](https://docs.google.com/spreadsheets/d/1RIK4LQKz- wIxiVlYnPQ7m-jLEKtoJXH7qc_iiRWcZD8/edit#gid=196433349)

</comment><comment><USER2> This might help [https://travel.stackexchange.com/questions/tagged/covid-19](https://travel.stackexchange.com/questions/tagged/covid-19)

<comment><AUTHOR> Thanks! For the moment I published this: [https://travelregulations.live/](https://travelregulations.live/)</comment></comment>


Sony Encourages Linux On Their Phones - <AUTHOR> http://blogs.sonyericsson.com/developerworld/2011/05/06/how-to-build-a-linux-kernel/

<comment><USER2> They encouraged Linux on the PS3 once too, remember?

<comment><USER3> My first thought as well: it's a trap.

</comment></comment><comment><USER4> I'm sorry but at this point we should all know what kind of company Sony really is. They don't deserve positive PR from trying to sucker geeks again...

edit; Not sure how I'm being voted down. This is nothing more than PR. We have already seen their true colours.

<comment><USER5> Sony could offer a license where they agree never to remove those features in the future from that line of devices.

<comment><USER6> A license subject to unilateral change on their part, of course...

</comment></comment></comment><comment><USER7> Sony is a big company and Sony Ericsson is only 50% Sony. Why the Xperia phone is "PlayStation certified" and not the "PSP phone".

</comment><comment><USER8> Not is it wrong, but also very unfair to call Sony Ericsson just Sony. More so because of the recent rumors that Sony is bailing out.

</comment><comment><USER9> You "may" void the warranty? Sony-Ericsson makes the devices and specifies the warranty terms but doesn't know if you would void it or not?

<comment><USER10> Whether you void the warranty or not may depend on the laws concerning warranties in your country/state.

<comment><USER9> I guess we should read that as "we would like to void your warranty" then :)

</comment></comment></comment><comment><USER11> fool me once ... fool me twice ...</comment>


Ask HN: How do you perform "Rubber duck debugging"? - <AUTHOR> In particular, what is your preferred method of performing this exercise.<p>"Rubber duck debugging"[0]<p>[0]https://en.wikipedia.org/wiki/Rubber_duck_debugging <comment><USER2> I do this with my dog. I pretend she asks "Can you describe the steps to recreate the issue".

And then she just gets in an endless loop of asking "Why?", until I can't explain 'why' any more.

It's at that point I've probably found my issue.

Added bonus. She's happy to sit there and blankly stare at me in confusion whilst I chat away. Good dog!

</comment><comment><USER3> For "how should I build this", as opposed to "why isn't it working?", writing documentation helps.

For personal projects, typing up an email to the appropriate google group, explaining the problem and requesting help, helps me solve a problem about 50% of the time.

For work projects, verbal diarrhea into Slack is very effective but interrupts colleagues too much (though it does have the side effect of pulling in help on the occasions you really need it). I've been considering building a bot for that.</comment>


Ask HN: White label online course backed recommendations? - <AUTHOR> 	I'm interested in producing some training videos for my company's products. I'd like for users to be able to log in, select video content and track their progress. Ideally I'd also like to be able to see metrics such as which videos did users start and which videos did they complete. It would also be great to have some sort of simple testing questions too. I'm imagining something like MOOC infrastructure but with much fewer participants. I don't anticipate giant amounts of traffic/users. I don't need forums or formal certification/completion documentation. Before I build my own, does anyone have any suggestions of products that might meet my needs? <comment><USER2> There's [https://teachable.com/](https://teachable.com/), [https://www.thinkific.com/](https://www.thinkific.com/), and many others.

<comment><AUTHOR> Thanks! Both of those look potential. Have you used either?

<comment><USER2> Sorry, no.

</comment></comment></comment><comment><USER3> Microsoft Stream might meet your needs:

[https://stream.microsoft.com/en-gb/](https://stream.microsoft.com/en-gb/)

<comment><AUTHOR> Thanks! Have you used this service?

<comment><USER3> I haven't, I was just aware that it existed.</comment></comment></comment>


Steam Engine Landrover - <AUTHOR> http://www.dailymail.co.uk/news/article-5284419/Pensioner-fits-steam-engine-Landrover.html <comment><AUTHOR> > The coal is fed into the fire box from inside the car's cabin for the > driver's convenience

Nice!</comment>


Get a Job: The Craigslist Experiment  - <AUTHOR> http://lifehacker.com/5929987/get-a-job-the-craigslist-experiment

<comment><USER2> You'll find an existing discussion about this article located here: <http://news.ycombinator.com/item?id=4298100>

(Lifehacker syndicated it from thoughtcatalog)</comment>