How to be a Manager – A step-by-step guide to leading a team - <AUTHOR> https://getweeklyupdate.com/manager-guide <comment><USER2> A better title would be "How Management Works in 2018."

Half of being a manager is managing other's behaviors to produce a great product. The other half is managing your own behaviors -- i.e. being consistent with your communications and consistent in your behaviors.

Both of those topics have been left out of this piece.

<comment><USER3> I tend to agree. This piece reads more like, how to be a director or VP. Setting the culture is not a front line manager's job any moreso than individual contributors. A manager just needs to keep his folks productive in a way that's aligned with the company goals.

<comment><USER4> Why?

ICs don't pay so much attention to the CEO of the company. An IC is CEO of themself. A manager is CEO of the team.

> needs to keep his folks productive in a way that's aligned with the company > goals

How is that different from "Setting the culture" ?

<comment><USER5> Because you don't set the values of the company, you just align your team to the goals of your larger organization / company.

<comment><USER6> Yes and no.

My current company favors consensus over correctness. They don't realize they do this, but they do, largely because most of the decision makers deal with subjective things, where you can spend hours bikeshedding. When they then hear disagreement on objective things, technical things, they want agreement, and view arguments over technical things as being disagreeable.

As a manager I could take that value, consensus > correctness...but I choose not to. Instead, I create an environment where my team instead chooses correctness > consensus, hashing it out internally, hidden from the rest of the company (thereby specifically eschewing 'transparency' as a value, even though it is both one we value internally, and one the business claims is a corporate value), reaching out for more information as needed but not venturing or asking an opinion until we come up with the 'one true decision' that we will pitch to them, saying it has everyone on the team's backing. At that point, the pressure to achieve consensus usually leads to all the stakeholders agreeing, too.

This is, obviously, not ideal (to where I'm looking for a job elsewhere), but it's the best I could come up with given the realities of the values the business has taken hold of. But my team's values, both their declaration and their interpretation, are not the company's values.

<comment><USER7> Stated values are usually bullshit. If you want to understand a culture's real values, see which behaviours and traits are rewarded and which are punished. (Also applies to individuals.)

Real values are often unconscious, generated by the unconscious goals of the leaders.

This is not always a bad thing. Someone who has their shit together as a person can be a very effective and inspiring leader, and can even minimise the effects of dysfunction elsewhere in an org.

But any suggestion that you can have a "My/Our values are..." meeting or brainstorming session, and make it happen just by stating it and/or writing it down, is wildly naive and unrealistic.

<comment><USER6> Real values are often unconscious. Agreed. Good or bad.

Consciously deciding on values gives you something to point to, however. You say it's wildly naive and unrealistic, and if you mean the act of writing them down is sufficient I agree; the point being made is that defining a team's goals is -necessary- (but not in and of itself sufficient).

Without making it a point to say "This is what we want to achieve", you arm yourself, your team, etc, with nothing to actually bring about the values you want to see upheld. Sure, you can just try to do them yourselves, but is the team in alignment? Do they agree with them? When you deviate, will they call you out on it? When they deviate, will you have the rest of the team's backing to bring things back into line?

The answer is no, if you haven't stated them explicitly and gotten buy in. The answer is possibly yes if you have. It still takes effort, mindfulness, etc, but it moves from the impossible to the possible by taking the time to define them with your team.

Sure, it's possible you hire so well, so perfectly, based on unstated values, that everyone is in alignment, all the time, 100%. My experience hasn't been that. I doubt most people's has.

To break into heavy metaphor, it's important to define your 'guiding star', as it were, so you can reorient the ship when someone points out you're adrift. Because without it, you not only can't tell you're adrift, you also have no idea what to reorient yourself to.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Fan of the Marine Corps model:

[http://www.au.af.mil/au/awc/awcgate/usmc/leadership.htm](http://www.au.af.mil/au/awc/awcgate/usmc/leadership.htm)

Some of them are painfully obvious, but these are sometimes absent when they shouldn't be.

(I also suspect this is what Gregg Popovich and Steve Kerr either draw from, or coincide with.)

<comment><USER9> Following the links, I stumbled upon this amazing seeming resource:

[http://leadership.au.af.mil/sls-skil.htm](http://leadership.au.af.mil/sls- skil.htm)

The military are really very very good at man-management ...

<comment><USER10> This seems to be the impression in the business world, which has what I can only describe as a fetish for stories about the military, but Marines in particular have a very tough time adapting to life and careers outside the military.

It's fun to think of our businesses as just like a Seal team and try to glean lessons from stories of heroism, but the reality is if the military were in the business of making a profit, retaining employees, or pleasing customers, it would fail miserably.

The reality of the U.S military is far different than the impression that the leadership papers give you.

<comment><USER11> I'm not agreeing or disagreeing with you here (nor have I ever been military in any remote respect), but there are some overlapping truths in that page, e.g. "Employ your command in accordance with its capabilities", under "Develop", points 1, 3, & 4.

I've resigned over unrealistic expectations from leadership about deadlines, and what was to be asked of my team to complete said deadlines. I would do it again. I'm sure I've had many many many failings as a manager, but I will not death-march any team under me with zero chance of success. There are several others in the GP's post. You are correct, they don't all apply and many may be harmful in a corporate environment, but that's why you get paid to separate the wheat from the chaff, right? :)

<comment><USER12> Do you know what the outcome was for a team you resigned from?

<comment><USER11> The project went several months over the proposed "schedule", which was inevitable, and I had told them as much.

The team was not asked to pull any overtime to complete it in the proposed time frame.

I took a 6 month sabbatical and then was asked to contract for them remotely as a developer (instead of manager) which I did for several years after that.

So, wins all around, I suppose.

</comment></comment></comment></comment></comment></comment><comment><USER13> Great for building a brand new team. Not so great for assuming leadership of an existing team/business.

Also, very American. I just stopped being CEO of a SE Asian business, and this just doesn't apply globally. There are culture differences that make enormous differences in leadership styles and outcomes.

<comment><USER14> What were a few differences you ran into?

<comment><USER13> Asians have massive respect for authority. This, in effect, mean that they won't ever say no to, or disagree with, their boss. I had to learn to ask open questions, because if they could say yes they would. They would still guess at what I wanted to hear and tell me that. I got told different things than other members of the management team, not because anyone was trying to deceive, but purely as a show of respect.

My favoured leadership style is servant leadership, that my job is to enable everyone else to do their jobs properly. That didn't work. I had to teach myself how to do authoritarian leadership, which I hate with a passion, but it's the only style that works.

The language barrier is a huge thing. I would give an instruction, something else would happen, and the reason would be "I didn't understand you". They wouldn't ask for clarification, because of the respect thing. After training myself for years to not send emails, I had to get used to sending lots of emails again, because if it was written in plain English it had more chance of being understood and followed.

There's a ton of other, more subtle, stuff. I've been comparing notes with other western leaders here and it's a shared experience. Except for the douche bosses who are naturally authoritarian - they love it here.

<comment><USER15> Curious why the servant leadership style didn't work for you and why you think that is because this is the approach I prefer as well but I'm young in my career.

<comment><USER16> It doesn't work in Asia because of cultural reasons.

Independent thinking and enabling others is a very American way of thinking. People don't realize how much culture is derived off of core principles within major founding documents (declaration of independence, constitution).

In Asia, Confucian philosophy dominates the cultural landscape in terms of what values they have. One of the big principles of it is how to maintain order in society. A "perfectly ordered" society is one where the hierarchy is maintained and everyone functions in their proper place.

If it sounds like dystopia to you I'd encourage you to read more about it to understand what about it makes sense and what tradeoffs you get from a society like that.

Long story short, your leadership style needs to fit the people you're leading, not yourself. You can be the best servant leader but if everyone wants to be your servant, you're going to have a bad time.

<comment><USER13> This, exactly. It was a huge surprise to find that asian people do not think of themselves as equals. Incidentally this is also one of the reasons democracy is struggling here, in my opinion.

<comment><USER16> Don't think it is an equality thing.

If I were to distill it into one central theme, it would be centered on how each culture views and values conflict.

The principles of the US has themes of "cooperation by conflict". Voting is the entire population fighting each other in a controlled setting. The 3 body system of checks and balances uses conflict as the central mean to prevent power accumulation.

Rationalism is the underlying reason for this acceptance of conflict. A dictionary definition: "Rationalism is the practice or principle of basing opinions and actions on reason and knowledge rather than on religious belief or emotional response."

From an emotional perspective, conflict is seen as detrimental, tearing down relationships, creating unresolvable discord and enmity, and the possibility to lose control over territory, position and power. However, from a rational perspective, conflict is positive. It puts the most logical, structural, or prevailing idea to the top.

The American revolutionists had gone through a lot. The history of western Europe was one where your lives were in the hands of emotional kings who could reward you one day and behead you the next without rhyme or reason. They were under the excessive, unchecked power of Britain, exhibited time and again through taxation without representation. They saw how much control the Bank of England had over the commonwealth. It was a time of rampant monopolies, major powers that had consolidated all control, and where conflict was an affront to power.

Because of all this, they baked conflict into the system.

<comment><USER13> As a narrative about how the US works, that's a great story.

As an east vs west philosophy debate, it completely fails to recognise that European cultures have also "baked conflict into the system".

It also fails to recognise that SE Asian cultures were also colonised by European powers.

A better explanation is that the American values were straight-up inherited from European ones because America (and Australia similarly) was wiped clean of indigenous culture during colonisation, while SE Asian countries were not. Better because it explains why all "western" cultures share these values, and why SE Asian cultures do not.

<comment><USER16> not sure how Europe got in this, was comparing American values versus Asian values. Conflict is the center of attention in American values (you could say western values, I don't know enough about modern European sentiment to say that). Conflict is indirect in Asian values.

Do you mean that American values aren't so anti-European that I depicted, or rather are derived from European values? I think I allude to it with rationalism, which originates from Europe. The history of European civilization is the foundation and backdrop for American ideals.

As much as America has tried to lay a foundation for a better western civilization, I think a mature modern America still has the problems that they were running away from in 18th century Europe - power eventually gets consolidated and individualism is compromised despite the checks and balances against it.

<comment><USER13> This: "The American revolutionists had gone through a lot. The history of western Europe was one where your lives were in the hands of emotional kings who could reward you one day and behead you the next without rhyme or reason. They were under the excessive, unchecked power of Britain, exhibited time and again through taxation without representation. They saw how much control the Bank of England had over the commonwealth. It was a time of rampant monopolies, major powers that had consolidated all control, and where conflict was an affront to power."

this ignores the fact that Britain has also "baked conflict into the system", and that Britain shares an idealogical framework with Europe, that America inherited, but SE Asia did not.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> This isn't a guide on how to be a leader, this is a guide for building version 0 of a team and trivializes a great deal of the complexity that goes in to being an effective leader.

It's a great content marketing piece though, and at first glance, far outstrips the value of the tool they're marketing to - but this is still meant to drive people to a SaaS product.

<comment><USER18> Being a leader and being a (people) manager are very, very different things. So, of course this isn't a guide on how to be a leader.

<comment><USER19> A good manager is absolutely a good leader, and v/v. In my experience, there is no role that, if done properly, isn't equal measure both. They are sub-set skills of any position to which people report. Be it middle manager (important to execute, important to give meaning and direction within that area) or C-level (CEO can't afford to be a non-manager).

<comment><USER20> I would disagree here. In my opinion, a good leader has to be a good people person (and ergo likely a good manager - not always though), by definition. A good manager, or people person does not always make a good leader though. In my limited experience, I would think that a leader would demonstrate an ability to expand boundaries more so. My use of good can be substituted with effective.

<comment><USER19> I see what you are saying - and maybe someone can get by in either job without being strong in both skills, but I guess the point I'm trying to make is that all people-management roles ideally have both things happening. So to actually be good/great at roles that people assume are exclusive either to leadership (e.g., CEO) or to management (e.g., good ol' middle manager), both skills are necessary. And the big difference between the above examples is scope/scale, not how much leadership vs management is necessary.

<comment><USER18> People management is very, very different than leadership.

Take Steve Jobs, for example. A complete asshole if not a full-blown sociopath, but an impressive leader capable of creating a cult-like following.

Leadership is about inspiring and driving people towards a goal. People management is about recognizing the strengths and shortcomings of individuals and helping each one of them to improve and achieve their best, as well as selecting and assembling the right team where members complement each other.

Often enough, the two roles are at odds with each other.

</comment></comment></comment></comment></comment></comment><comment><USER21> (New-ish manager here.)

_Peopleware_ by Tom DeMarco and Timothy Lister is the best management resource I've encountered.

[https://www.amazon.com/Peopleware-Productive-Projects-Tom- De...](https://www.amazon.com/Peopleware-Productive-Projects-Tom- DeMarco/dp/0932633439)

It also helped to keep careful track of things I really valued (and hated) about people I've worked for.

Just one example:

Depending on team size and culture it can concerning if your manager schedules a 1:1 meeting with you out of the blue and outside of your normal cadence. I had a manager that did this, on a Friday, with the meeting scheduled for Monday. Worrying about it would have bugged me over the weekend. Not a ton, but some. He followed the invite up with a Slack (team chat app) message explaining what the meeting was and what he wanted to talk about, turns out it was nothing to worry about. Him taking the time to clarify made a difference in my morale and it stuck with me.

Super small thing, but it matters.

<comment><USER21> While I'm at it, 2nd best: _Managing Humans_ by Michael Lopp (aka Rands).

[https://www.amazon.com/Managing-Humans-Humorous-Software- Eng...](https://www.amazon.com/Managing-Humans-Humorous-Software- Engineering/dp/1484221575/)

</comment></comment><comment><USER22> I also recommend this Ask HN thread:

      Ask HN: I just got my first team lead. What should I do?
      89 points by endymi0n on Dec 30, 2011 | 50 comments

[https://news.ycombinator.com/item?id=3407643](https://news.ycombinator.com/item?id=3407643)

Hmmm. Older than I remembered. But a few of the recommendations in it have stuck with me and it's been as helpful as anything I've read on the topic.

<comment><USER23> Teammate to Team Lead is a topic that I run into a lot with the companies I advise. I have a small post on the topic, which I'm planning to expand:

[https://adamdrake.com/teammate-to-team- lead.html](https://adamdrake.com/teammate-to-team-lead.html)

There are quite a few things, some of them subtle, that really change once you're in a leadership role. The frequent example I see is that people don't realize that if they are in a leadership role, then there will be decisions they make which people on their team do not like. That's ok. It's not the job of the leader to win a popularity contest, but rather to try to do the best thing for the individual team members, the team, and the company itself. A lot of people have a tough time with the fact that others won't like their decisions, but that's a critical thing to digest for those who are going to be effective leaders.

</comment></comment><comment><USER24> Having read through the piece, I'm a little confused about why "leader" and "manager" are being conflated. They're very different roles. The former is a navigational role and the latter is a facilitating role.

Given the differing dominant archetypal personality traits required for those distinct modalities, it's unlikely they'd be strongly expressed in a singular person, and there's some reason to think they may be necessarily orthogonal. As their motivational biases are likely to be largely unrelated to each other.

<comment><USER25> I'm a bit guilty of confusing the two, as well.

Could you describe the differences in personality?

<comment><USER26> Leadership is outward facing, attracting followers by sharing a vision, inspiration, goal and working with the team to achieve that goal.

Management is inward facing, paying attention to the people you are responsible for, and knowing the right thing that's needed at the right time.

"If you want to build a ship, don't drum up people to collect wood and don't assign them tasks and work, but rather teach them to long for the endless immensity of the sea." \- Antoine de Saint-Exupery

Leadership is building the boat, management is making sure the boat gets built, on time, on budget, with the proper permits and inspections, training and safety gear, along with bi-weekly status reports to customers.

Some people confuse one with the other, but to me they're distinct and this is a rough sketch of how I see them as different.

<comment><USER27> This is an interesting idea and it certainly seems to make sense to me to see it described this way. I am curious, though, can leader be a manager, and vice versa? Or, are these roles so distinct from each other that they should be separate? Maybe these roles can't co-exist at that level because it's exactly the problem that leads to so many of the problems we discuss on this site?

<comment><USER26> I think that leadership skills naturally require a sharper focus than management skills (not to downplay the value of either).

There reaches a point where leadership requires you to take the manager gloves off and get your hands dirty. For small teams or small problems, a good leader/manager can be both one and the same.

However as the size of the team or problems grows, it becomes more difficult (think n^2) to tackle both issues at the same time with the same person.

Management issues (firing, hiring, expenses, budgets) and Leadership issues (decisions, progress, advocacy, examples) on a team of 5 may be doable by one person, but may be stretched with one person servicing a team of 15 or 150.

Or if there is a ton more problems in one area vs. others, the challenge of dealing with that problematic area can leave a gap on the "less problematic" areas, which eventually turn them into actual problems. That's my guess as to what people complain about the most.

</comment></comment></comment></comment></comment><comment><USER28> Great article IMHO especially suitable for new teams, new managers, and top down understanding. Kudos!

For people who are stepping into existing teams, I suggest writing ground rules.

Ground rules are clear explanations of team expectations. Ground rules can be simple, bottom up, and help improve teamwork:

[https://github.com/joelparkerhenderson/ground_rules](https://github.com/joelparkerhenderson/ground_rules)

I agree fully with the author about writing objectives.

Objectives can be sophisticated, top down, and help improve planning. I suggest knowing "Objectives and Key Results" (OKRs) as at Google and Intel:

[https://github.com/joelparkerhenderson/objectives_and_key_re...](https://github.com/joelparkerhenderson/objectives_and_key_results)

<comment><USER29> Core-hours are 9am-5pm? Aren't those just the normal busines hours for white- collar work?

<comment><USER30> Wow. "core hours" is full time, but there's also mandatory overtime. Anyone not in the boss's timezone has to to work weird hours to satisfy the micromanager's desire for fiefdom face-time. Work starts _before_ 9am every day, to prep for a 9am dressing-down.

This is not a place where anyone with a choice would want to work.

> * Each workday has a team standup meeting. We choose 9 a.m., because it sets > the tone for the day.

> * The workday has core hours when we expect people to be together. We choose > core hours 9 a.m. to 5 p.m. in our team's main time zone, because these are > typical business hours for typical offices.

> * Beyond the workday core hours, we expect people to do their own schedule

<comment><USER28> You make great points and I'll edit now to make it more clear that the goal of the ground rules is to be communicating, and the goal of the writeup is to show a bunch of examples gathered from many teams in many industries.

Can you refresh the repo page now and see if it is more helpful and clear? Thank you!

For example, the item about 9-5 core hours actually comes from a bank that has tellers, call center operators, and an IT staff that needs to be onsite and available for helping with physical hardware. Again, the point of the ground rules isn't the hours per se; the point is that the team writes its expectations so everyone has a good understanding.

<comment><USER31> 9-5 core hours is bullshit. The whole point of core hours is to be a window of time where you can guarantee a meeting can be scheduled with people across time zones. This doesn't mean you have 8 hours of core hours. That's literally insane.

<comment><USER32> Not to mention you can't adjust your hours at all to avoid rush hour or cooperate with a spouse in day care management. 9-5 is necessary for banks, but not for software developers. Having a few core hours is necessary, but if it's 8, you can no longer call them "core".

<comment><USER33> > if it's 8, you can no longer call them "core"

You are lucky if you think 10-12 hour work days don't exist in software development. You might also be forgetting about flex schedules, core hours may include the entire working day and may be a signal that substituting 9-10am for 5-6pm is not acceptable because you were hired to do a job that depends on your presence when others are also there. There are multiple legitimate reasons that core hours exist in 8 hour blocks in some places.

And that's all moot since the specific hours in this discussion are unrelated to the point @jph was making, which he already stated kindly and clearly.

<comment><USER32> No, they really can't do that, at least they can't document it, unless the employees are non-exempt or they wish for the employees to be paid overtime. Even having core time at all sounds like a non-exempt requirement, let alone the whole day.

Many managers are completely oblivious to federal labor laws, unfortunately.

<comment><USER33> It would help to have more specifics about who & what you're talking about, I'm not sure what you mean when you say they can't do that.

But, I worked in a very well known Hollywood film studio that had mandatory 10 hour work days with an 8 hour core window, not including crunch times. They factored overtime pay into the schedule. This meant that all employees were being paid some 1.5 time, that double-time would hit sooner than you'd think, but also be a lower rate than what you might expect. It was all documented and reported on my tax forms, and within the bounds of California law AFAIK.

<comment><USER32> You weren't exempt since you were getting paid overtime.

Exempt and non exempt status are very clearly defined. One gets paid hourly, the other a salary. If you are on any kind of schedule, you are usually non exempt unless really a manager.

<comment><USER33> Yes, that's correct. Where are you going with this? Both exempt and non-exempt employees there, including all the software devs, had an 8 hour core window that was called "core hours", and everyone worked at least 10 hour days.

<comment><USER32> In order to be exempt, your hours can't be fixed. You can go over or under them as part of your duties, but as soon as the boss says you will work XXX hours, then your exempt status disappears

That this law is broken often is in no doubt, but all it takes is one complaint to the DOL to set things straight quickly. At the very least, if the core hours are documented, it should be fairly easy to make a case for whatever overtime was worked.

<comment><USER33> > In order to be exempt, your hours can't be fixed.

I don't think this is true. And it's irrelevant to my point that there are legit reasons for 8 hour "core hours" windows. That discussion was already irrelevant to the point @jph was making: that communicating team expectations by writing them down, making them explicit, and communicating them is a good idea.

Anyway, I just looked up exemption status, and here's what some lawyers have to say about it. I'm certain that the studio I was working for was not breaking any laws by having 10 hour work days with core hours. The way they accounted for it was a tad surprising / misleading to me, but it was in no way illegal.

'An exempt employee has virtually "no rights at all" under the FLSA overtime rules. About all an exempt employee is entitled to under the FLSA is to receive the full amount of the base salary in any work period during which s/he performs any work (less any permissible deductions). Nothing in the FLSA prohibits an employer from requiring exempt employees to "punch a clock," or work a particular schedule, or "make up" time lost due to absences. Nor does the FLSA limit the amount of work time an employer may require or expect from any employee, on any schedule. ("Mandatory overtime" is not restricted by the FLSA.)'

[http://www.flsa.com/coverage.html](http://www.flsa.com/coverage.html)

[https://www.dol.gov/whd/overtime/fs17c_administrative.pdf](https://www.dol.gov/whd/overtime/fs17c_administrative.pdf)

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER34> First :

>>> People are not stagnant; instead, they are constantly learning and evolving.

There's adifference between evolving naturally and evolving because you're pushed to do so by the company. I work with people who _don 't_ want to evolve. They seek a peaceful, comfortable environment. They do their job quite well, nothing more. I understand that.

Second, values... Should people be hired because of their skill or because of their values ? What if their political views conflic with your values ? Isn't it the moment when discrimination comes in ? Say you work for Google because you love the AI stuff, then Google starts selling weapons. Should they fire people who don't share those values anymore ?

<comment><USER35> > Say you work for Google because you love the AI stuff, then Google starts > selling weapons. Should they fire people who don't share those values > anymore ?

Values apply pressure in both directions.

If you have a culture like Google, and you _need_ to pivot a significant fraction of your business to building weapons, then you will — sooner or later — need to replace a lot of employees (and manage that process, deal with the resulting morale problems etc). That's really expensive, but it might be worth it (depending on the business).

If you're actually like Google though — in that your real business isn't building weapons — then you just drop the weapons project. Dropping it will make the rest of your business more effective, which is way more important than some experimental side-hustle with the military. Ideally, you'd see in- advance that those kinds of projects would clash with your values and cause problems, but we all make mistakes.

</comment></comment><comment><USER36> A useful set of tips, but when I first became a manager, my biggest problem was thinking there was some magic formula to get the best out of my team. I was looking for a YAML config script, but human beings don't work that way.

Now, with a bit more experience, I spend more time listening to people and working out how I can help them with their specific need.

As a sidenote, I hate the euphemisms "release" and "let go". You're firing them. Pretending that you're doing it for their sake doesn't make it easier for them. So just cut the bullshit. You can be honest and compassionate.

<comment><USER37> I'm glad of hearing that. I was always surprised by the "let go" expression. It would be interesting what would happen in a conversation like "We have to let you go. – No need. I don't have to go anywhere".

In Spanish the term is "despedido". "despedir" is the action of saying good bye. The literal translation could be something like "good-bye'd".

</comment></comment><comment><USER38> Going beyond an article, 'Peopleware' is a fantastic book for engineering folks transitioning to management - it's not new but the fundamentals stand the test of time.

It's the book I started out with 15 years ago and I have suggested to many others.

Peopleware: Productive Projects and Teams (3rd Edition) [https://www.amazon.com/dp/0321934113/ref=cm_sw_r_cp_apa_i_j-...](https://www.amazon.com/dp/0321934113/ref=cm_sw_r_cp_apa_i_j- UfBbWAB5NZV)

<comment><USER39> Agreed. I can't recommend Peopleware enough. It is common sense, humane reasoning applied to software teams.

Sadly, I read Peopleware long before I ever became a manager, and it made me very attuned to being treated badly and being given ineffective tools or support (e.g. crappy open plan seating arrangements instead of private offices).

Peopleware will open your mind to the obviousness of productivity-first thinking and accomodating basic, inescapable human needs. Which can make you reflexively sad when you see how much of our industry steamrolls these ideas in favor of idiotic open plan disasters, hazing-focused interview barriers to entry, unrealistic mandates for Agile-style estimation and work tracking, etc.

</comment></comment><comment><USER40> One thing this is missing that I think too many managers forget about is CELEBRATION. When your team wins, you need to make a big deal of it. Bring in lunch or something and take a moment to say thanks on a regular basis. I think one of the biggest contributing factors to burn-out is feeling like your achievements have gone unrecognized and unappreciated.

</comment><comment><USER41> Thanks for sharing! I wrote this and would definitely appreciate everyone's feedback.

<comment><USER42> Medially great. Good information. Nice to read. Except for the in-page popup (reported to Mozilla).

<comment><USER41> Got it, glad you overall liked the information and thanks for the UI feedback!

</comment></comment></comment><comment><USER43> "People. The hardest part of building a business."

If you're going to work and are having the hardest time with people, you should question the team. Anyone expressing an inkling of toxic, negative, or unprofessional attitude needs to be removed. Some people go bad, but it's just them telling you they want to go. Be graceful, but fire them.

Whatever you do, don't try to fix attitude. Everyone is entitled to their attitude in America, and it's the wrong battle. Let them have it.

They are not, however, entitled to contaminate your work culture, which must be upheld as sacrosanct. And, if it's you, then you've already burnt out.

A lot of old school management involves whips and dangling carrots. Managers are supervisors, and workers are presumed to misbehave without supervision. They are motivated with rewards, and put in check with punishment. Workers hate managers, and managers hate their job which would not exist if the workers would just behave. Good workers question their environment, their pay, then leave.

In reality, most ambitious professionals will behave when they take ownership of their responsibilities and opportunities, and will seek to build trust with others that do also. When handed, responsibilities and opportunities can quickly turn into dreadful obligations, so people must want them, and they will when they are aligned with their professional ambitions.

Once you have a team of such individuals, a manager is relinquished from behavior management. This holds true even at the lowest paying jobs.

Having this as the premise of your corporate culture will allow you to focus on managing work, not workers. And will allow your workers to focus on their work, and not each other. Trust will also naturally build among those showing responsible behavior. All this without "managing people". All this without "a leader".

Everyone leads themselves towards a common goal, empowered by a common philosophy, from the comfort of a common, sacred, positive workplace.

This formula took me five years, and it wasn't just the hardest part of building my business. It was five years of not being able to build my business. Today, I can say without reservation:

People are the best part of building a business.

And I am grateful to everyone, including those whom I fired, for teaching me this lesson.

</comment><comment><USER44> Great write up! I like that it starts with Culture and People to create a strong foundation. As you say, People are the hardest part. Having a good structure, routine and communication help make it manageable. I think this provides a nice framework to build around. I'm a co-founder of a company makes tools to help manage a lot of those processes you discuss so this resonated with me. We built our platform based on many lessons learned managing previous start-ups, and converged on a very similar approach.

If you're into this sort of management style, here's our platform which aligns well with what's described in the article. It supports flexible one page plans for a concise way to document your strategy, functional accountability charts, priority and metrics tracking as well as a meeting space to set a consistent rhythm - also performance reviews to tie it all together.

[https://metronomegrowthsystems.com](https://metronomegrowthsystems.com)

</comment><comment><USER45> I would also recommend Camille Fournier's The Managers Path book for folks in tech. You will be able to relate to this book whether you are an individual contributor or seasoned manager.

</comment><comment><USER46> I find the animations and numerous different interspersed formats (text, square card thingies, profiles, three boxes side by side, one box in the middle, etc.) very distracting from the content.

</comment><comment><USER47> Indeed, the way mgmt seems willing to capriciously fire people for "values" conflict or getting caught in the middle of some mess management created is one of the reasons I don't really see the point of investing much in a single job. I can still get fired or laid off at random if I worked two hours extra a day or something (has happened to me). If I spend those two hours making myself marketable and networking it won't matter if you fire me because I'll just bounce to something else. I wish some managers would just learn to interact like humans instead of being insecure tough guys and "playing hardball" with everyone. I've seen that tank projects and set back careers (IC and mgmt).

</comment><comment><USER48> How many popups do I need to swat away in first minute of reading this post. Second one doesn't even have a close button it just hovers over text on the bottom. How about letting users read the article before forcing them take make a decision to subscribe

</comment><comment><USER49> The first part was good, then it kind of fell apart when it hit management by objectives, and the "fill in a email we send you with 'achievements this week', 'plans for next week'"

That's kind of nice, but really this should be auto generated - we should be building systems that pop out "Bob closed two sales this week, and needs one more to hit quota" \- this is just a sales funnel so it's not hard - it may get fuzzier with "alice wrote the monthly report or alice completed the redesign of the home page" are just formatted git comments ?

</comment><comment><USER50> Thanks for sharing! This seems like a good general guide on how to manage :)

I would just provide a quick caution against over-indexing on culture. There are two issues that can come up: implicit bias, and conflicting values.

Implicit bias exists when you're not explicitly biased against a (typically protected) population. You don't _hate_ women or gays or people with disabilities, but your culture values things that make the environment uncomfortable for those populations. One common example that shows up in gender discrimination lawsuits is that women tend to get worse reviews for being too moody or angry or confrontational, whereas men presenting the same behavior get lauded for being decisive and direct. Even if you disagree with this, that won't stop it from becoming the subject of a lawsuit. The example given regarding Beth and Tom actually fits nicely with this issue, since discrimination claims are often that women are unfriendly. (you might consider switching the personas to avoid this perception)

Another common example that shows up is "would you have a beer with the candidate" type tests. I didn't see this in your guide, but I've heard this a lot over the years. People notoriously prefer having beers with people that are very similar to themselves. That's often not germane to the job requirements, and is an easy way for bias to sneak into your hiring process.

In the same vein, I once heard the founder of a well-known startup in the Bay Area give a talk about forming teams. He said, explicitly, that he looks for signs of anxiety among potential hires (like biting their nails, or too weak of a handshake, or how they talk) and won't hire someone who is overly anxious. If someone with diagnosed anxiety were to apply for that job, get rejected, and hear that talk, they'd have the good start of a lawsuit for disability discrimination. That founder was just talking about what he values in the company, but he's actually admitting to discrimination.

The second issue is conflicting values. The companies I've seen who preach their values the loudest have tended to be the ones which are least likely to exemplify their values in their behaviors. Imagine a company which has values of "integrity" and "we're a team." If an employee were to point out behavior that they don't think exemplifies integrity, will they instantly be met with accusations that they're not playing for the same team? I know of at least one company who painted "Be a team player" on their walls, but when they were acquired, their executive team took multi-million dollar parachutes while everyone in the company got paid around a penny per share. Is that consistent with being team players?

Sorry to be negative here. Things like "culture fit" and "corporate values" can be important, but they can also be yielded as weapons if they're being relied on to fix a fundamentally broken workplace. They're also things that I increasingly hear my employment lawyer friends talk about - so watch out. It seems like the right approach is to demonstrate what your culture is through your actions and not through explicit definition. Your product and team will also likely be more productive and build a better product if it's not a bunch of clones :)

<comment><USER51> If you're unwilling to ever say what your cultural values are, then your only cultural value is "do what thou wilt". Anything anybody does is automatically your culture, if it's defined in actions only. Somebody brings their dog into the office, your culture is now dog-friendly. And for anybody who hasn't seen your history of actions – like new hires – your culture doesn't exist at all.

The benefit of defining your values is not descriptive, but aspirational. Your values are not "here is how all of us will infallably behave at all times"; it's "here's how we want to be, even when it's hard, because we think it's right and because we need to rely on each other to keep ourselves honest about them."

Shitty people will still manipulate or ignore those values at their convenience, but if you're working with shitty people it'll never matter what systems or values or rules you have.

<comment><USER50> I think this idea of explicitly stating corporate values is relatively new, but maybe there's a longer history there than I'm giving credit. I definitely hear you that a company can have implicit values, and that's going to happen regardless of if you make them explicit or not, so you might as well make aspirational, explicit values.

I disagree that lacking stated values creates a Wild West environment: if your office building doesn't allow dogs, then it's not a dog friendly environment even if someone brings their dog to work (i.e., bad or improper behavior will be rectified).

The example of a candidate or new hires is a good one. Having aspirational values feels like it could be misleading to the new or potential employee. What happens if they come in to an environment that has stated values of "radical transparency", but finds the realized values are "passive aggressiveness" and "backstabbing"?

I don't mean to come off so cynical, but I think as well intentioned as stated corporate values are, they can very quickly become traps or weapons. This is particularly true in silicon valley, where a growing number of people have figured out that hip values can be used to manipulate employees.

</comment></comment></comment><comment><USER52> Great article, bookmarked for future reference!

I work for a small consulting firm focused on improving productivity and building innovation systems within small-medium sized businesses. And having strategic plans, vision, values is hugely important in building a focused innovation program. It's become routine in my engagements to spend significant time defining goals and values where the companies had none previously! This sort of exercise is valuable for firms at any stage and size in my opinion.

<comment><USER41> Totally agreed! If you put in the time to define it upfront, it makes so many other tactical things (like hiring, goal setting etc) much easier down the road.

</comment></comment><comment><USER53> If you change from being e. g. a developer to being a manager, then this shouldn't be regarded as a promotion. It's a different career path.

</comment><comment><USER54> I just don't see the point of those bullet point transitions in the article. It just doesn't bring any value and is distracting.

</comment><comment><USER55> For those interested in learning management skills I've found [https://www.manager-tools.com/](https://www.manager-tools.com/) and their podcasts and resources invaluable.

Also the best book I've read so far on management is the excellent High Output Management by Andy Grove. Still incredibly relevant.

</comment><comment><USER56> It changed my opinion about what is the quality of good manager when I have heard a dialog:

\- Are you a _boss_ of team X?

\- No, I _support_ team X.

<comment><USER4> "servant-leadership" for the win.

</comment></comment><comment><USER57> I always found the "company culture" as a limiting factor: at the end, it tends to build a sect of developers close to any suggestion that doesn't self- enforce the culture that produces them.

"Culture" kind of wants to produce a "family", but a family is not what I'm looking for when I look for a job.

</comment><comment><USER58> Great post! - I noticed a typo in the "Customs" section. ...bakery comes in early, then (not than). Cheers!

<comment><USER41> Thank you! Just fixed it.

</comment></comment><comment><USER59> Also see Lauri Apple's "Awesome Leading and Managing" [https://github.com/LappleApple/awesome-leading-and- managing](https://github.com/LappleApple/awesome-leading-and-managing)

</comment><comment><USER60> Good leadership ideas. I think defining relationships and respecting the boundaries is also important.

Make sure all employees understand relationship types and know which there have with one another.

Are we colleagues, friends, etc?

This will lead to smooth interactions.

<comment><USER23> Absolutely. People often don't appreciate or feel comfortable with the fact that when in a leadership role, the relationship changes. New leaders often focus too much on being liked, or having their decisions liked, over doing what is best for the team and its members. Being a popular and well-respected leader is the outcome of good decisions, support, and relationships, not a consequence of trying to do the popular thing.

It's especially tough for people who are transitioning from being part of a team to leading that same team. I elaborate a bit here:

[https://adamdrake.com/teammate-to-team- lead.html](https://adamdrake.com/teammate-to-team-lead.html)

</comment></comment><comment><USER61> The only thing I would add is, culture can be taught. You can take someone who isn't a culture fit and make them a culture fit in 8 weeks or less.

</comment><comment><USER62> I really wish they went easy on the animations.

</comment><comment><USER63> This is a nice article. I am surprised to see a 'management' article to receive so many votes on HN.

</comment><comment><USER64> This is an pretty great article.

Wish I would've read it years ago... thanks for the share

<comment><USER41> I said the same thing to myself when I wrote it... I was thinking back a few companies ago and wishing I understood this stuff. Glad you liked it!

</comment></comment><comment><USER65> unless this post is a thousand pages long, the title is a bit over-the-top. I look forward to the "How to be a particle physicist" installment.

</comment><comment><USER66> Taking up way too much space on mobile with the distracting CTA. Stopped reading when I couldn't close the popup on my phone.

Might try again later on my desktop, if you promise to remove that at some point :)

</comment><comment><USER67> This feels like someone has read one of the EOS books and rewritten it with different terminology to avoid copyright infringement.

I guess it's also spun around a new startup rather than fixing an already operating business.

If you like what you read here then look up Traction and Get A Grip.

</comment><comment><USER68> Wish I could take print out of this. But the site is not printer friendly.

<comment><USER41> Good catch! I'll work on fixing this, thanks for pointing it out.

</comment></comment><comment><USER69> Judging by my experience over a number of years in industry, the most important aspect is to understand the cultural expectations of the people you are working with.

Working with a north-east US team can be wildly different than a Southeast US team, or a west coast US team. Let alone a Toronto CA team, vs Quebec, CA, or UK or Australia, or Germans, or Dutch or Poles, or Indians from New Delhi vs folks from Bangalore.

People work differently, and culture and communication is wildly different.

<comment><USER70> This is really interesting to me, do you have any examples you can think of to illustrate this? Definitely something where I don't even know what I don't know, but it seems so important especially in recent times.

<comment><USER69> I mean, it's stereotypical, but if an Indian colleague drops a "kindly do the needful" on most Americans, that will be met with consternation and confusion.

The other big issue I've seen is around scheduling meetings with inappropriate lead times. I've come in too many times on monday mornings at 9 AM to see angry emails about not attending a meeting at 8 AM, when the meeting invitation was sent 2AM.

</comment></comment></comment><comment><USER71> Why so many points? Hackers now love Vision and Strategic Focus stuff ?

</comment><comment><USER72> This has nothing to do with the topic at hand. Rather, it's a call to action to stop something I really, really hate about the web these days: popups over content, begging me to sign up for an email subscription. Whenever I'm reading a web page and one of these rude popups appears, I immediately close the browser tab and move on. If the authors are rude enough to interrupt me with an invitation to clutter my inbox, then they must not want me to read their content.

Please, let's end this scourge by closing more tabs and not driving more traffic to these sites.

<comment><USER73> It's because analytics say this gets more lead captures, but they rarely measure if the leads are fake just to make the things go away. In the end they are just looking at "conversion" metrics and the cost it took to drive that traffic. Longer term effects are hard to measure, and ad agencies and internal ad teams are measured for this month, not the future.

<comment><USER74> I work at a place where I am a fly on the wall, listening to these ad teams, and let me tell you, they honestly believe this kind of bullshit honestly works and matters.

They hotly debate the virtues of deceptive dark patterns, and, man, are they assholes to boot. They also blow cash on retarded shit like juiceros, and bro- compare their juicero-type schlock and tchotchke collections unironically, and sometimes with transparent envy of one another. It's as bad as you might imagine.

After lunch, when they really get going, with their mind-blowingly vapid conversations, I have to blast my eardrums with tinnitus inducing audio, in order to quarantine my mind from their stunting world views.

When Douglas Adams imagined the Golgafrinchans, I have to believe that he was in the presence of the these sorts of people, when he dreamt up that little tidbit.

It is my ardent belief that the only way to divest society of such parasitic blooms of "humanity" really is to blast them into outer space, but in order to do so, we have to learn to be really careful about how we sanitize our telephones first.

<comment><USER75> Gonna state a counterpoint, saying that most marketers & advertisers I've spoken with have been pretty on the ball. They understand that people don't "like" adverts and try to get leads through different ways.

People who embrace these irritating practices are not necessarily the minority, but I wouldn't say they're the majority either. It's definitely not an accepted best practice.

Marketing extends much further than just annoying popups and advertising, and is an extremely important field -- something I feel us engineers sometimes forget about, because the benefits aren't immediately measurable.

</comment></comment></comment></comment><comment><USER76> Awesome! Simple and practical.

</comment><comment><USER77> Great post. Upvoted.

<comment><USER41> Thanks!

</comment></comment><comment><USER78> Being "a Manager" is the wrong first step to leading a team. Management is an activity we should all be undertaking, not a role.

<comment><USER79> I agree that a more flat landscape in teams is best. I like "Why good leaders make you feel safe | Simon Sinek" : [https://www.youtube.com/watch?v=lmyZMtPVodo](https://www.youtube.com/watch?v=lmyZMtPVodo)

Good management is really about good leadership - and that does have a point person to look to. they inspire and motivate everyone else on the team. This is a much more bottom up / equitable than most mainstream practices promote.

</comment></comment><comment><USER80> Nice presentation - very pretty. This is the takeaway:

 _We've reached the end of the Formula, covering everything from culture to process. You now understand the basics of leading a new team.

Management and leadership are acquired skills, and they take practice. This guide is a framework for you to build upon, make your own and be the best manager._

... and this is how I think of my staff:

 _Some people might be incredible salesmen, while others can bake cookies or build a computer with their eyes closed (that would be super impressive!)_

Fuck off.</comment>


Tim Cook tells Congress why Apple won't move $100 billion back home - <AUTHOR> http://arstechnica.com/apple/2013/05/tim-cook-tells-congress-why-apple-wont-move-100-billion-back-home/ <comment><USER3> Apple's argument seems to be -

They pay taxes in the US on US profits (along with payroll taxes, etc)

They pay local taxes on profits earned overseas. Then they gather up those profits in an Irish subsidiary, where they get the most most favourable tax treatment available to them.

Why would they, as a multinational company, not do that? Why would they repatriate those profits, not earned in the US to the US and take a second tax hit?

If the contention is that they are somehow hiding US profits by misrepresenting them as overseas profits to avoid taxes, then that would obviously seem rather sleazy. But if that's not the case, what's the moral or legal argument against what they're doing? Or are they misrepresenting what they're doing? It's hard to get a handle on the underlying issue with all the congressional posturing.

<comment><USER4> I agree with you, but playing devil's advocate, American Citizens pay US taxes on their income, regardless of where they live ([http://americansabroad.org/issues/taxation/us-taxes-while- li...](http://americansabroad.org/issues/taxation/us-taxes-while-living- abroad-faq/)) - so why shouldn't US Corporations be required to Pay US Taxes on their income, wherever they make it?

Note - my answer to that is very, very quickly you would find that successful US companies re-incorporating in other countries, in much the same way wealthy Americans will sometimes give up their US citizenship.

<comment><USER5> > _why shouldn't US Corporations be required to Pay US Taxes on their income, > wherever they make it?_

Because the law doesn't say they have to. That's enough for me.

I'm a left-wing, pro-high-tax guy, but I can never understand people who get angry at corporations for obeying the law. Besides being nonsensical, it's actively counter-productive. So long as people are focusing their attention on the corporations, nobody is pressuring the politicians to fix the actual problem.

<comment><USER6> That will be true if corporations were forbade to enter the political debate at all.

But a corporation obeying a law they helped draft, lobbied for, water down, or prevented from changing is somewhat different in my opinion.

</comment></comment></comment></comment><comment><USER7> This is amusing and sad at the same time. International companies play the national egoisms of countries against each other. If all countries agreed to one framework for taxing (yeah, purely hypothetical) all could profit. But every one of them fears to get "less" in such an agreement. So, in the end nothing happens and no country gets anything - all money stays with the companies. Divide and conquer.

<comment><USER8> If everywhere had the same tax levels, why would anyone bother to be resident anywhere other than the London/New York/Tokyo. A tax cartel probably won't happen - it is against many governments' interests.

<comment><USER5> > _If everywhere had the same tax levels, why would anyone bother to be > resident anywhere other than the London/New York/Tokyo._

My question is, why would I ever _want_ to be resident in any of those places? Never in my life have I ever considered living there. I barely tolerated San Jose for 9 months before I moved to Santa Clara.

There are plenty of reasons to live outside megacities, taxes are way down on the list.

<comment><USER8> If you're a huge multinational, megacities have a lot of advantages.

</comment></comment></comment></comment><comment><USER9> Let's just admit that what these companies are doing is pretty sneaky, and unfair. If they _actually made_ $5 billion with their business in Ireland, then I'd be fine if they only paid 1% in taxes or whatever are the taxes in Ireland. Same for their businesses in any other country. Maybe they pay 5% in some, 15% in others, 30% in others and so on.

They should abide by local laws, and pay taxes on whatever they are making there. They are doing business there, so clearly they believed that market is worth it for them, and it should be worth to pay the taxes there, too - <USER2> all if they do pay a lot in taxes, most of that will be transferred to the consumers in those local markets anyway. But what they're doing is taking their cake and eat it, too. Making those customers pay more, but then avoiding paying the taxes that were most likely already included in the price the consumers paid there.

Then taking virtually all the profit from all the countries and transferring it to Ireland so they pay the absolute minimum, while _pretending_ they are barely making anything in all the other countries, because they get their Ireland subsidiary to take all the money, so there's "barely anything left" to tax in other countries - _is not okay at all_.

Some may say that it's Apple's "duty" to do this, but it's their duty in the same way it's their "duty" to sue many other companies for infringing on "slide to unlock" and other such trivial patents, by (legally) _abusing_ the patent system.

So just because it's not illegal to do something, and it's their "duty" to maximize profit _by any means necessary_ , doesn't mean we should pretend it's "morally okay". It's also the governments' duty to fix these loopholes, and restrict the companies from doing this as much as possible (some international treaty is going to be necessary). And I also think it's the consumers' duty to not be okay with this, and protest against it.

<comment><USER10> Well said.

Since the great depression, corporate shares of taxes has been steadily falling. One can only speculate where it might lead.

2011 USA Taxes:

Total corporate tax: 200.8 Billion.

Personal income tax: 1.1 Trillion.

[http://www.npr.org/blogs/money/2012/04/13/150441259/what- ame...](http://www.npr.org/blogs/money/2012/04/13/150441259/what-america-pays- in-taxes)

</comment></comment><comment><USER11> "Senators ask why Apple moves profits into an Irish company that pays no taxes"

Didn't they just answer themselves!

<comment><AUTHOR> The best part is that current tax code means Apple earning investment income through AOI is actually legal. Apple has paid their taxes and is playing by the rules - yet Levin is still upset.

Edit: I would appreciate it if someone told me what I said was incorrect or wrong in anyway.

<comment><USER6> Because you made a slight typo. You wrote the best when you obviously meant the worst.

<comment><AUTHOR> Guess conveying sarcasm over the internet is not one of my strengths. I suppose I meant more of a "your tax code allows this type of activity, yet you are still surprised it happens" type message.

<comment><USER12> Give the guy a break, he was clearly educated in the USA.

<comment><USER6> Not at all. Just poe's law in action <http://en.wikipedia.org/wiki/Poes_law>. If any of the discourse team are reading this - sarcasm/intention tag will be much appreciated.

</comment></comment></comment></comment></comment></comment><comment><USER13> Why zero corporate tax is an outlandish idea? Why not tax only individuals?

1) Corporate tax is only about 10% of total budget revenues.

2) Zero corporate tax promotes business growth.

3) Corporate taxes are ultimately paid by individuals.

<comment><USER14> Well, corporations use resources that cannot be pinned to a single individual. The example that comes to mind would be putting out trash for the city to collect[1].

[1] I realize that companies pay separately, or use private collection in many cases. It's just an example of a company using a resource that can be (and in some cases _is_ ) paid for by taxes.

<comment><USER13> Probably there should be a resource tax, not profit tax?

<comment><USER5> How do you efficiently administer a road tax[1]? How do you measure a company's use of the military defense of a nation? The police protection that makes their locality safe for business in the first place? What about the nearby public park that attracts families who frequently go to a nearby ice cream shop? What about the fact that the local bar attracts people who get into fights on the sidewalk?

[1]Gas taxes are obviously not the answer.

</comment></comment></comment></comment><comment><USER15> Instead of berating companies for not being stupid, Congress should think about lowering the US's stupidly high corporate income tax.

<comment><USER12> And perhaps the Congress of the USA can accept that the US has no right to expect a share of profits from sales made in Australia of goods made in China, shipped by an airline registered in Singapore.

</comment></comment><comment><USER16> Reading about this issue, it seems like the mentality of the Senators is that the money belongs to them, and Apple is keeping it away from them.

This mentality is also common among thieves, who rationalize their thefts by believing they are taking things that they are somehow owed.

<comment><USER17> I see your point, but isn't it also common among those from whom the thieves have stolen?

<comment><USER18> Are you suggesting that Apple, by selling products in foreign territories and profiting from this, are somehow stealing from the US Government? IMHO, that is backwards. The USA have absolutely no entitlement to money _any_ business (or for that matter, any individual) makes outside of it's borders.

</comment></comment></comment><comment><USER19> It won't be long now until the large multi-national corporation will be a kind of nation-state in its own right. Distributing assets all around the planet making them inaccesible to any single government is the ultimate defense against nationalization. Without that threat hanging over them, they begin to act like sovereign nations.

<comment><USER7> As written (or predicted?) in various Cyberpunk novels: <http://en.wikipedia.org/wiki/Megacorporation>

<comment><USER20> That is the dystopian future we will live in , Corporations replacing states. Everything will be private and own by corporations , like everything used to be owned by kings,royal families and the "blue blood".</comment></comment></comment>


The text adventure game of exiting a telnet session - <AUTHOR> https://ma.ttias.be/exit-telnet-session/ <comment><USER2> I'd never thought about why telnet uses ^] as its default escape sequence, but I just formed a theory while looking at an ASCII chart.

The ASCII ESC character is 1B, or ^[ (which many vi users know if they have a keyboard without Esc, or prefer to use ^[ for ergonomic reasons).

Presumably telnet has an important requirement that you be able to use vi -- or other software where you'll need to send ESC -- normally on the remote machine. If you're on a system where you're sending ^[ for ESC, what's the natural similar-but-different alternative for a meta-escape? Presumably ^], which is right next to it on your keyboard and conceptually related. That's the GS ("group separator") character, which isn't commonly used for anything on Unix.

</comment><comment><USER3> Aha, poor guy! Never thought about what it's like without an American keyboard!</comment>


The trouble with not being real-time - <AUTHOR> http://feedjit.com/blog/2009/the-trouble-with-not-being-real-time/

<comment><USER2> I think the article's author is missing a key point - there are equally valid reasons for taking 6 weeks. Say, it is company policy and Feedjit is not high- profile enough to warrant going against a policy that errs on the side of caution.

Or it could be the case that, yes, it does take 6 weeks to update the database without doing some kind of emergency, invasive fix. But you know what? If you wanted instantaneous fixes for "obvious" mistakes, you are either going to need a damn good definition of "obvious" and be prepared to still handle complaints when it doesn't work properly, or you are going to need to have some person dedicated to this issue.

<comment><USER3> You haven't listed valid reasons, but rather arbitrary reasons. That's fine, but let's paint them for what they really are.

I think it may be you who missed the key point. Large swaths of the web are real time now. Content, metadata, relevancy, and reputation change in real time. If McAfee wants to play in the same sandbox as all the real time kids, it has to become a real time kid itself. If they don't, then they instantly become useless and irrelevant in a real time world.</comment></comment>


OOP no longer mandatory in CMU Computer Science Curriculum - <AUTHOR> http://www.infoq.com/news/2011/03/oop-out-at-cmu <comment><USER2> My rule of thumb with OOP (of which I am very proud): if a bunch of code needs to retain state, make it an object, but if not, make it a function. Also, in a class, you should either have glorified getter/setters (to set the state, possibly in complicated ways) or stateless functions (to execute algorithms). This approach makes it far easier to test, since you have less set up and tear down.

To teach object oriented programming as if it is theoretically foundational, or should precede simpler concepts is a nice bit of foolishness that lasted from excitement over Smalltalk to, say, last week.

I think the blossoming of GUI's -- which have A LOT of state -- is the historic reason for the excitement over OOP, not any theoretical advantage to OOP.

<comment><USER3> nice note correlating GUIs with historic excitement over OOP.

" _if a bunch of code needs to retain state, make it an object_ "

well, a FP wizard might argue that most problems don't need stateful code to solve -- our decision to use stateful patterns is an implementation detail.

<comment><USER4> I'm all about FP, and find it lovely, but I've never seen a coherent explanation of an FP solution to GUIs. What is the FP answer to MVC? What does a modern GUI application design look like, if not OOP?

<comment><USER5> I'll hazard a possibly bad answer.

MVC is not inherently OO - it's more about sending messages which, although a feature of modern OO (Alan Kay even said that he should have called OO Message-Oriented programming), is not its defining feature (as we see it used today).

Since the Model, the View and the Controller are just continually processing and sending messages, you could easily implement them as processes (say as in Erlang). A processes's state is then retained in immutable structures passed to recursive invocations of its main message loop (sorry if this sounds opaque - I'd recommend seeing how it's done in Erlang).

Another GUI approach to FP that is being researched is functional reactive programming. There is a neat Javascript implementation called FlapJax. You could probably argue that FRP is a generalization of MVC (though I'll hedge my statement since I'm not 100% sure of this).

</comment></comment></comment></comment><comment><USER6> several remarks worth mentioning, as the infoq page seems to be editorialized link bait begging to foment a flamewar.

Bob Harper and (his now graduated phd student) Dan Licata are (world class) experts in programming language semantics. What does this mean? They understand in a very very precise sense how difficult it is to correctly understand the exact semantics of various linguistic constructs.

Why is this important? Because some of these freshmen will not have had a solid grounding in understanding the most basic of the tools they use, the programming language. These students should come away from their intro class not burdened by confusion over syntax and boilerplate need to use the built in language constructs, but rather a precise enough mental model of the semantics for a basic programming language that they can accurately simulate the execution of their programs with pen and paper, or just in their heads!

Yes objects do provide some occasionally fantastic abstraction facilities in certain use cases in practice, but every semantic model for real OO languages is INCREDIBLY complex, let alone considering what is needed for having a _correct_ cost model for operations in an OO language once you consider how many OO abstraction are represented by nontrivial lookup operations / data- structures.

What I think is more interesting is the following 1) they've come up with low overhead ways of teaching parallelism constructs directly to intro students

and 2) this course is part of a larger system of classes that include their intro imperative programming class being taught by Frank Pfenning (an expert in mechanized theorem proving such as might be used to verify program correctness)that teaches a lot of the basic algorithms / datastructures that are easiest to first see framed imperatively,

and 3)they're having the intro algorithms & datastructures course be taught by Guy E. Blelloch, who's done a great amount of good research in a huge number of algorithm topics.

<comment><USER7> Agree. Running into OOP as the foundation of AP Comp Sci cirriculum in high school almost made me hate programming ... and that takes some effort because leading to the class I was programming out of joy every minute that I could.

If it was that bad for me, I can only imagine what it was like for the rest of the class(granted, there were only 5 of us in total).

<comment><USER3> that's a bit strong. even if the industry is shifting paradigms (maybe), OOP is the basis of many production systems and certainly today not an, um, incorrect choice for many problems.

<comment><USER4> No one is suggesting OOP isn't useful. It's just not being used for introductory curriculum...and I'm pretty much certain they're right.

The HN title is inflammatory and misleading, in that it omits the word "introductory", which is a pretty important word in this context.

</comment></comment></comment></comment><comment><USER8> For those of us at cmu, this is old news.

The article is very misleading. The old curriculum never had a focus on OOP. However, the major difference is that the new curriculum will have a very heavy focus on the functional paradigm at the cost of teaching systems skills. For example, students will no longer learn C at CMU yet they will be expected to know it well for os. Either some higher level classes must get a lot easier or a lot more students will start failing.

The general consensus among students was that this curriculum change wasn't very well thought out.

<comment><USER9> > For example, students will no longer learn C at CMU yet they will be > expected to know it well for os.

This just isn't true. C-not (a typesafe C variant put together by the language department) will be taught in an intro class, and the end of that class will involve a transition to C. Then, the students will take 213 Introduction to Computer Systems, which will be ALL C and Assembly (as it has been since its inception). Then, after writing malloc and a web proxy in C, they will go on to OS.

Additionally, Java will continue to be taught in 214, a class that will be mandatory for all Software Engineering minors (granted, a small number of these exist) but that will invariably be taken by many students concerned about internships and that kind of stuff.

The reality of the matter is that Language Theory is the biggest player in CMU CS right now, and so they took that as a mandate and ran with it all the way to this new curriculum, which is why it's functional-language heavy. That said, our students' brains will not rot for having learned ML more heavily than Java (I imagine it will be advantageous), and all previous options will still be available, albeit in slightly different forms (I actually imagine 214 will be much improved over previous attempts at teaching Java).

The reality is that CMU never gave a shit about students who barely make it by, and scraping off a few extra in the Systems class transition isn't really a big concern for anyone (it's a CMU cultural thing). Most of the complaints is just fear of change and "It wasn't like this when I took it!" type complaining.

<comment><USER10> The problem with C0 (it's "C-naught", not "C-not") is that it is a toy language used for the compilers class which has somehow made it down into the intro curriculum. It is not useful in the real world; absolutely no one outside of CMU uses it. It is useful only as a stepping stone for C -- at which point, why not just teach C, and keep to a "safer" subset for a while? A couple weeks "transition" to get used to malloc and gdb and NULL pointers and segmentation faults etc is not nearly enough.

</comment></comment></comment><comment><USER11> I don'tt hire people with CS degrees unless they can demonstrate some level of technical competency before enrollment (open source commits, weekend projects, etc). Congrats new CMU grads, you get a free pass.

OOP might have its place, but teaching it to first year CS students is one of the things I blame for the valley being full of mediocre programmers.

<comment><USER12> Interesting, why [http://www.joelonsoftware.com/articles/ThePerilsofJavaSchool...](http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html) does not come up more often in these discussions. Seems relevant to me.

<comment><USER8> Well, here it is pretty irrelevant. CMU wasn't a java school. It was mainly a C school.

</comment></comment></comment><comment><USER10> Note that this has been coming for a while -- the "announcement" cited is from Harper's blog, as is the bit about "anti-modular and anti-parallel". The quote cited is Harper's opinion, and was _not_ necessarily the opinion of everyone involved in the curriculum changes (though Harper himself was very instrumental in said changes).

Harper is well known among his former students for being a brilliant guy who makes many interesting arguments... and who then takes those arguments so far to the extreme that it's laughably silly.

<comment><USER13> > and who then takes those arguments so far to the extreme that it's laughably > silly.

That sounds like another opinion. I don't find what he said to be laughably silly. Do you have examples of such things he said?

<comment><USER10> He once discussed NULL pointers. He made a well-reasoned argument about how a proper language should use some other method to properly distinguish between NULL and "I _really do_ have a pointer here", such as ML's option types or Haskell's Maybe types or _something_. Basically the "million dollar mistake" argument.

He then went on to say something basically like, "Thus, there is no such thing as a NULL pointer. It is a myth. It simply doesn't exist." Which is patently false, and I find rather funny. Languages do have NULL pointers whether they should or not. I can assign a value of NULL to my pointer in C -- they exist. They are not a myth.

A friend of mine, who is a TA for our operating systems class, whispered to me, "Hm, NULL pointers don't exist?! I guess I'll go tell my students that."

<comment><USER13> Can you link to the context of that statement?

I think maybe he was trying to say something else, but said it in a misleading/funny way?

<comment><USER10> He said it in a lecture, but I'm pretty sure he was dead serious.

</comment></comment></comment></comment></comment><comment><USER14> I just watched the video by Barbara Liskov. He references this to show how even a turing award winner does not like FP.

The only thing that I would directly releate to FP was that she: "I think programms are fundamentally about manipulating state". Therefore she did not like the FP back in the 70s.

So I will try to show that thats a very bad reference.

1\. Today FP languages are mostly about only using state if there really is state not like in OO where you just use state everywhere.

2\. Try to be more clear where the sideeffects happen --> dont interleave the sideeffects with the computation. In Haskell you even have to be explicit where you use sideeffects.

in imperative (in VB)

for i = 1 to 100

        print computeSomething(i)

next

while in FP you would

(print (map computeSomething (range 1 101))

(I know that thats not 100% the same output but I hope you get the point)

3\. She was doing Systems Programming for the last 30 years an yes at that level there is lots of state but at a high level there does not need to be that much state INSIDE the programm.

More generally speaking:

All the typical OO features FP languages can provied. For example Hierarchy are totally interleaved with the rest of the programm. In Clojure you can use Hierarchy if you really need a kind of animal -> dog Hierarchy-System. Even better because its not interleaved you can have two Hierarchy-System on the same "object" without them disturbing each other. The same with Polymorphism.

<http://clojure.org/multimethods>

I don't want to say OO is very bad I like just like the decision CMU takes here. Teach these concepts sepertly and not in a language like Java.

<comment><USER13> I think saying that FP is bad for "manipulating state" is misleading.

FP is great at manipulating state. A pure Haskell function (State -> State) manipulates state.

What's being discussed is whether or not the state is manipulated _destructively_. And personally I don't see any real benefits to the destructive method, except performance issues in some cases, and arguably stylistic ones.

Returning new values instead of in-place updates may seem cumbersome before you get to know the abstractions that make it easy to use.

As an example, in Haskell, if you want to update a value deep inside multiple nested records, you do something like:

        movePlayer :: (Pos -> Pos) -> GameState -> GameState
        movePlayer f gs = gs { player = oldPlayer { position = f oldPos } }
          where
            oldPlayer = player gs
            oldPos = position oldPlayer

That looks horrible, compared to something like:

        gs.player.position = f(gs.player.position);

But then, if you discover the Semantic Editor Combinators abstraction (<http://conal.net/blog/posts/semantic-editor-combinators/>), then you can write that as:

        movePlayer :: (Pos -> Pos) -> GameState -> GameState
        movePlayer f = (atPlayer . atPosition) f

or just:

        movePlayer = atPlayer . atPosition

Then you can use:

        movePlayer (+delta)

to add delta to the position.

Now one nice thing about the return-new-value approach is that it is more composable than the destructive update approach. When you compose state manipulation functions, you get _transactional_ state changes.

So paradoxically, I believe functional languages to be _better_ at manipulating state!

</comment></comment><comment><USER15> Saying OOP is anti-modular is like saying operands are anti-functional.

<comment> loup-vaillant Class based programming traditionally relies heavily on mutable state. Remove or severely limit mutable state, and most of us will stay it's not OOP any more.

And pervasive mutable state is anti-modular. <http://www.loup- vaillant.fr/articles/assignment>

<comment><USER15> Shared state is anti-concurrency, but objects don't share state, they hide state behind well defined interfaces which is inherently modular. Actors and objects work together beautifully. Objects handle the behaviour and the Actors separate out threads of control. It all goes to hell when stated is shared, but that's a completely different thing.

<comment> loup-vaillant > _they hide state behind well defined interfaces which is inherently modular_

They _expose_ mutable state through a well defined interface. Unless you're talking about purely functional interfaces, of course. And purely functional interfaces are _rare_ in typical class-based code, especially C++ or Java code.

Most programmers don't understand that when when a class exposes mutable state, it automatically becomes more difficult to use because you can make fewer assumptions about it. That's why it's anti-modular. And that's even before you try concurrency.

<comment><USER15> Concurrency is dependent on how threads run your code. Accessing an object's mutable state within a defined thread context has no issues at all. Accessing shared state across thread boundaries is the problem with concurrency. My guess is people are coming from a POV where concurrency is automatically handled by the system, in which case you would want certain properties, but when coding in a typical environment where care is taken it's not an issue.

</comment></comment></comment></comment></comment><comment><USER16> I'm a CMU CS minor who has gone through most of CMU's "base" CS courses (211, 212, 213, 251). The majority of these courses were taught with either C or Java, so I'd rate my abilities in C and Java as probably a 7/10.

When taking 212, which is an intro to functional language course taught in SML. I had some trouble that I never encountered in other courses. I attributed this trouble with the fact that I learned programming with a Java and C mindset; such that I feel like I can only think efficiently in C or Java (or procedural and object oriented). Thus, when programming in SML, there were many times where I knew what to do in an abstract sense (and could easily code it in a functional-like manner in either C or Java), but had trouble expressing my thoughts in SML. Nevertheless, as I learned more and more SML in class, its elegance and grace drew me in.

Although I feel like functional languages are more powerful than OOP or procedural languages, I am hesitant to use them on side projects because I'm not accustomed to thinking and writing code functionally. I feel like I will spend more time figuring out the syntax of the language than actually coding. Furthermore, I have no idea about how design patterns work and have never coded large projects in functional languages, so even if I knew a specific functional programming language well, I would still have trouble using it for a non-toy project.

I feel like my mind thinks in OOP, and as much as I want to change that, it has already set; I still stick with OOP and procedural languages because that is what I am confortable writing in even if I know I'd be better off writing things in functional languages.

From what I understand from conversations floating around campus, 150 is similar to 212, except it teaches more CS fundamentals that 1st years are less likely to know (212 is typically a 2nd year+ class). 210 will follow 150, which is a data structures course that will be taught in a functional language. By starting students out with a functional language and then continuing to teach them other aspects of CS using functional languages, these students will likely start to think functionally - even when coding in C or Java (as I kind of do the reverse when coding in functional languages). This could be a huge advantage, as I believe functional languages are more powerful and allow you to express more ideas with less thought (or "brain memory"). I think PG's essay "Beating the Averages" explains this better.

Thus these students that are taking this new curriculum may be able to code or think in a order of magnitude "better" or faster than the people who learned programming using lower level languages such as Java/C. Nevertheless, I'm envious of the people who get to learn this new curriculum.

I apologize if this post seems like a huge braindump. This is my first "serious" post on HN and I had a lot of difficulty expressing my thoughts clearly and organizing them in a logical manner. When I read others' posts here or PG's essays, everybody seems to be able to express themselves extremely clearly and concisely. Any advice on developing functional language or writing skills will be appreciated.

<comment><USER17> > I'd rate my abilities in C and Java as probably a 7/10.

To go off on a tangent here, this is something that's been bothering me for a while. These one-to-ten scales are seductive, but they do a very poor job of representing people's actual skills.

The problem, for me, is the 10. Where is 10? If you're at 7/10, you're 70% of the way to whatever 10 is. But how do you know what 10 is? If you're a novice C programmer, you really have no idea. You know about some things you can't do, but you don't really know what you don't know.

Skill differences are really hard to measure. If you compare me with, I don't know, Rob Pike, Fabrice Bellard, Ian Lance Taylor, Landon Curt Noll, P.J. Plauger, Peter Deutsch, or Dan J. Bernstein, or somebody like that — well, if we're working on a project that I can reasonably do myself, they might get it done in ⅔ of the time it would take me. Or maybe ½. So maybe I'm a 7/10? Or 5/10?

But suppose the project at hand was something of the difficulty of otcc or gold or mawk? Those are probably things I could write, given enough time. But those guys could probably do it ten times as fast as I could. Does that mean I'm at 1/10? (Also, their version would work better than mine.)

The trouble with rating my skills at 1/10 is that it suggests that my C skills are close to the minimum. But I'm probably as much better than your average C-speaking CS undergrad as Peter Deutsch is better than me.

We really want some kind of exponential scale, like the Richter scale for earthquakes (or its modern replacement, the moment magnitude scale), or dBa for sound pressure levels. There's no actual ceiling on dBa or earthquake magnitude, but in practice, the numbers stay within a usable range, because of physical limits.

So maybe on this exponential scale, the CS undergrad guy is a 10, and I'm a 12, and Peter Deutsch is a 14. Or maybe a 16. And this comes to the other problem: how do you judge people above you? You can't, really. If they complain about your variable name choice when you send them a patch, and you can't tell that their suggestion is a real improvement, well, is that because something is really obvious to them that I'm missing? Or is it just an idiosyncrasy? I can't tell until I'm at their level.

To some extent, though, I can judge objective achievements. GhostScript has held its own against a much better-funded competitor, managed by adept programmers, for decades. Yahoo Groups still runs on qmail, as do thousands of other mail sites, and still nobody's found a _practically_ exploitable bug in qmail. ffmpeg and tcc are impressive achievements. And so on.

But how can I quantify whether the skill required to create GhostScript or to create ffmpeg was greater? Both are probably beyond my own ability. So I can't even tell whether Deutsch beats Bellard or vice versa. There's no batting average to put on our Genius Hacker Trading Cards. So I can't tell whether Deutsch is at 14, or 16, or 18 — whether he's a hundred, or ten thousand, or a million times better than I am.

But if he's at 10/10, I'm sure as fuck not 70% of the way there.

<comment><USER18> >And this comes to the other problem: how do you judge people above you? You can't, really.

Relevant Wikipedia article: The Dunning-Kruger Effect <http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect></comment></comment></comment>


Efficiently Browsing Text or Code (esp. with Emacs) - <AUTHOR> http://www.kirubakaran.com/articles/efficiently-browsing-text-or-code.html

<comment><USER2> Highly, highly recommend hilock-mode for browsing code; hilock does ad-hoc syntax highlighting, so, as you read code and notice patterns, you write regexes for them and let Emacs spot them for you.

This turned out to be so useful for code reviews (we do a lot of those) that I "ported" it to a web app that lets us set hilocks that follow us from buffer to buffer (along with xrefs, class/method/fn definition sites, bookmarks, and a lot of other junk).

<comment><USER3> wow, that's amazing! Thanks for that :)

</comment></comment><comment><USER4> It's 2012 and we're still navigating source code, which is effectively a nested graph structure, using grep and simple keyword queries.

No (reverse) call trees, no high-level views, no help on how data propagates through the program. We could do so much better, especially in static languages. Sometimes it seems like reverse engineering tools that work without source code (such as IDA) do a better job of cross-referencing than tools that have the actual source code.

Is there any good/usable point and click code browser / code comprehension tool these days? Or is the state of the art of 1998 still that of today?

<comment><USER2> It is very hard to do this for C/C++, because C/C++ code is customized at compile time by the build environment and usually can't be parsed and analyzed without that customization.

The tools therefore need a fully working build environment, and the ability to temporarily override aspects of that build environment.

<comment><USER5> People at Mozilla have created a lot of neat tools for working with large C/C++ code bases.

Relavent Links: <https://developer.mozilla.org/en/Dehydra> <https://developer.mozilla.org/en/Treehydra> <http://dxr.lanedo.com/> [http://corp.galois.com/blog/2010/6/4/tech-talk-large- scale-s...](http://corp.galois.com/blog/2010/6/4/tech-talk-large-scale-static- analysis-at-mozilla.html)

<comment><USER2> Dehydra and Treehydra are GCC extensions; they have to be integrated (painfully) into your build environment.

DXR is a source code search engine. It appears to be cscope with a database. That's not nothing, but it's not exactly taking us out of the opaque blobs of text and into semantics.

<comment><USER5> I agree that it is pain to integrate. Once integrated, however, these tools offer a start on the road towards semantics. Here is an overview of some of the techniques used in Treehydra: <https://wiki.mozilla.org/Abstract_Interpretation>

DXR is currently a pain to get up and running. There's been talk on the mailing list on streamlining the install process but it would still require a lot intervention depending the compilation process. [https://groups.google.com/forum/#!topic/mozilla.dev.static-a...](https://groups.google.com/forum/#!topic/mozilla.dev.static- analysis/q0TunpwhnOU)

<comment><USER2> Does DXR do anything particularly interesting, as far as source code search engines go?

</comment></comment></comment></comment></comment></comment><comment><USER6> I'm an emacs coder myself, so I'm wondering.. why no mention of cscope?

<comment><USER7> "cscope + ascope" is the best thing ever I found for groking the code(in emacs). It is great for getting your way around huge code base. I find myself using "ascope-find-this-symbol" all the time, which gives me all occurrences/usages of that symbol.

<comment><USER8> yeah without cscope it would be impossible to follow huge code bases. though i am not sure how good is cscope at generating symbol database for non-c languages.

ideally, it would be really nice if cscope/xcscope provided some means of creating (and saving) bunch of call-stacks, which you can navigate in forwards/reverse direction (not sure if i am making much sense here...)

<comment><USER9> You can "pop" as you navigate around.

Also, I've had a lot of luck with pycscope.py for python code + cscope tools.

GNU Global needs some love though. It'd be awesome to see it handle more stuff.

</comment></comment></comment></comment><comment><USER10> (find-grep-dired DIR REGEXP)

Find files in DIR containing a regexp REGEXP and start Dired on output.

<comment><AUTHOR> That is definitely useful. However the scenarios I explored needed two or more keywords occurring on different lines in a file. This is so that I can significantly reduce the number of files that needed a closer look. Is that easily done with find-grep-dired?

</comment></comment><comment><USER11> Then you want to search all uses of the Linux kernel's struct scsi_device field "vendor". Unfortunately, there are hundreds of structs with a "vendor" field.

cscope, etags, etc can't really handle this task. Eclipse and Visual Studio can.

I am really disappointed that emacs and vim who spout productivity over learning curve allow important productivity tasks such as this to remain more than a decade behind the state of the art.

<comment><USER12> if it's really that important to you, quit bitchin and start coding!

<comment><USER11> I am coding, but it's actually a more ambitious project to get rid of text in the toolchain altogether, making searches such as this much simpler cross- reference searches.

</comment></comment></comment><comment><USER13> There's an affordable (USD 299, free 7 day trial) commercial tool for C/C++/Javaallowing structured, context-sensitive code browsing and refactoring that actually integrates into Emacs: <http://www.xref.sk/xrefactory/emacs.html>

In fact it seems the pure C version is free now; it claims full indexing of 3 million lines of Linux source code in 15 minutes.

I used to keep track of it many years back back while it was being developed, but then C++ starting making up 1% of my projects rather than 99% (nowadays I use the JetBrains PyCharm for those 99% which does a reasonable effort).

It seems the tool hasn't seen updates in a while (forget about C++11 support), but I remember it working much better than just tags, cscope last time I tried it many years ago.

</comment><comment><USER14> There are many roads to Damascus.

(global-set-key "\M-/" 'tags-search) (global-set-key "\M-'" 'tags-apropos)

</comment><comment><USER15> Um. I thought I was inefficient at browsing Emacs and this sucks more. Here's what I do.

1\. Generate a file index, every now and then(read cron).

      > find . > fileList

2\. Write a script(can also do this in emacs) in bash that takes two arguments viz., filename and search string. The script does a two level grep(regex), first on filenames and then in each of those files for the search string

3\. If the previous routine was written in bash written a elisp function that calls the bash script.

That's mostly it.

I could use cscope but it sucks donkey balls with java. When I ask for definition it finds a declaration.

</comment><comment><USER16> No mention of M-x grep?

<comment><USER17> I find M-x rgrep extremely useful as well.

</comment></comment><comment><USER18> awesome article, thanks K!

<comment><AUTHOR> Thank you :-)

</comment></comment><comment><USER19> ack and ack.vim = bliss.

<comment><USER20> Indexing is better, but ack is still nice to have for ad-hoc searches.

Ack plugins for Emacs:

<http://www.emacswiki.org/emacs/Ack>

<http://rooijan.za.net/code/emacs-lisp/ack-el>

<https://github.com/jhelwig/ack-and-a-half>

<http://www.emacswiki.org/emacs/FullAck></comment></comment>


Iphp - embedded php runtime for iOS device. - <AUTHOR> https://github.com/rsky/iphp

<comment><AUTHOR> demo video is here. [http://youtu.be/pw2LNNWyte0?t=32m](http://youtu.be/pw2LNNWyte0?t=32m)</comment>


Email deliverability: not all newsletter services actually deliver your emails - <AUTHOR> https://www.emailtooltester.com/en/blog/email-deliverability/ <comment><USER2> I recently signed up for a newsletter service. One of their _own_ onboarding emails to me was sent to spam by Gmail. Not a good sign for their ability to deliver my newsletters to my list.

<comment><AUTHOR> Yeah, that's pretty bad. Not always easy to say why that happened. Could be a blacklisted server but could also be the individual (learnt) behaviour of your Gmail account.

</comment></comment><comment><USER3> Would be nice to have Sendy added to this study.

<comment><AUTHOR> Thanks for your suggestion! Since Sendy is using Amazon SES, it would be more of a test of the Amazon mail servers. Good idea nonetheless!</comment></comment>


Xtactor Smart Wrist Band (Uses Morse Code) - <AUTHOR> https://www.indiegogo.com/projects/xtactor-smart-wristband-screenless-smartwatch#/ <comment><AUTHOR> Note - I am in no way affiliated with this project - I just really want one, and they seem a fair way off making their goal.

I also think this might really appeal to hackers, biohackers (who aren't quite ready to have a magnet implant in their finger [1] :), and anyone interested in alternative data sources (but think Google Glasses are a bit too much :)

Plus, who wouldn't want to be at a boring meeting and secretly browsing HN? :)

[1] [https://www.theverge.com/2017/7/21/15999544/biohacking- finge...](https://www.theverge.com/2017/7/21/15999544/biohacking-finger- magnet-human-augmentation-loss)</comment>