Ask HN: When are you considered a "senior" programmer? - <AUTHOR> I have been doing web development for as long as I remember. I get by with tools that are needed for the job. I don't fancy the new and shiny. I just get things done fast and done properly.
But I feel like I'm always a step behind the rest. There's this guy in the team knows how to operate Amazon, or this guy who that knows how to use Spring, or this guy that knows how to scaffold a Java app in minutes. Sure, I can write in the Java language but I don't know Spring by heart. I can build and run containers, but I don't know how to launch them in the cloud.
When is one considered to be a "senior" developer? Is there a means to measure where I am? How do I get there? <comment><USER2> I really liked this comment by @stray [0] from a similar Ask HN from a few months ago. That thread was titled "Ask HN: What makes a Senior Dev".

        Mistakes, rewrites, late nights, firefights, and deadlines.
        Core dumps, memory leaks, hardware faults, and plain bad luck.
        Big O, data flow, always learning -- or out you go.
        Manager metrics, schedules hectic, methodology hegelian dialectic.
        Taking the heat, feature creep, open office, uncomfortable seat.
        Holy wars, revolving doors, carpal tunnel, all you can take? There's always more.
        Fucking suits, random reboots, and the ever present "thousand language stare".
        Oh yeah, pressure -- lots of pressure. And time, time, time.
        Metric shitloads of time.
        Time, man. You gotta do your fucking time.

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

<comment><USER3> There was a question a week ago about junior developers.

mrmekon [1] gave an excellent answer:

It depends on when and why I'm defining it, but my guidelines are more based on how they work than what they know:

* Junior developer - Will not produce much business value if left alone, and may produce nothing at all. Requires supervision.

* Intermediate developer - Will produce something if left alone, but not necessarily what the business most needs. Needs minimal supervision, but defined goals.

* Senior developer - Will produce immediate business value if completely ignored.

The domain and language don't matter for these, really. A Senior Go developer is going to produce immediate business value if you suddenly throw him/her into a Lisp team, too. Just slower.

Between the two answers I think they have it covered. Now some businesses will _call_ people senior after they've been there 5 years, but they might still be a junior in capability.

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

<comment><USER4> This is very much the perspective I have taken over the years. When I'm hiring a senior developer, I'm looking for someone who will step in and own the project they're given. If I had to pick a single expression, especially one recognizable to this crowd, I would say it is someone who can execute. I also tend to view senior developers almost as internal consultants (good ones) because they should be willing and able to step away from they keyboard and talk to a stakeholder to discern what the business really needs without needing someone else to act as an intermediary.

Where I do disagree just a little bit with mrmekon, is that I tend to look for people who have experience with the necessary stack. I would be hesitant to hire a senior developer for a C#/MVC position if they have (broadly) never used C# or never done web development, for example. Modern stacks have a lot of moving parts, and I would prefer senior developers to understand how to troubleshoot, tune, upgrade, test, and deploy on the needed stack. These are things that a very strong developer could remediate within a few projects, though, which is why I only slightly disagree with mrmekon.

<comment><USER5> With regard to your last comment about hiring senior devs with experience in the stack: I would say it depends on what you're hiring for and your long term vision for your team I think.

In my team's case, I was hired to do ML/BigData but had no prior experience. My boss's philosophy is that he wants smart engineers with a desire to learn more than he wants area experts. He's been burned more than once with area experts who were unable to pivot well with the shifting priorities of the team.

That said - if you're hiring someone to come be your ML expert then that requires an expert. Tech stacks are less that way in my opinion and they're rarely static. Even the debugging and troubleshooting tends to be similar if you know the problem space.

</comment></comment></comment></comment><comment><USER6> As others have said, if you're asking about the title specifically, it depends on the company. I was one of those "Senior" developers when I was in my mid twenties at a start-up, whereas for my current company it's actually pretty hard to get the title "Senior Software Development Engineer."

My experience is generally the people I recognize as having deserved the title don't _simply_ just code. Not only do they write code that works and delivers the feature in a timely manner, they make it so the next 3 features to come out in that area can be done quickly by junior developers. Not only do they code, but they make everyone around them better coders. Not only do they code, but they also think strategically about what the team needs to keep going two years from now. Not only do they deliver the project, they get everyone excited about delivering the project.

I once read someone say "there's a difference between having ten years of experience, and having the same year of experience ten times." Time is a factor, but it's also whether you've exposed yourself broadly and deeply to new technologies, approaches and experiences so that when you are in a new situation (technical or otherwise), you have patterns for how to deal (or the self awareness to know that you don't know how to deal). So, part of it is time, but part of it is spending that time wisely.

<comment><USER7> I'll second this. Titles vary across company size, and even then are different from company to company (e.g a Principal Engineer at Intel would not make PE at Google). I was a Staff Software Engineer at Intel (level above Senior Software Engineer) but now my title is Senior Front End Developer at a startup ;)

</comment></comment><comment><USER8> I think that people emphasize knowledge too much. I think knowledge is a by- product of making senior developer.

Senior developer is about wisdom as opposed to knowledge. Juniors may learn things quickly, but what distinguishes senior is that you can trust them to do the right thing which is not always technical problem.

I like to compare this to asking children a question that they don't know the answer to. Some children will feel they have to come up with some answer and some will say that they don't know.

Junior developers too frequently feel pressured to produce a result and they don't see how saying that they don't know something is making them closer to producing anything. Senior developers know from their experience that this is just as important to know when you don't know something as it is important to know things. They will not feel too bad about not knowing something because they know the alternative is even worse.

</comment><comment><USER9> One aspect that would separate a 'senior' engineer from the rest would be initiative, leadership and mentoring ability. These are the engineers who go the extra mile to ensure that the team gets stuff done, and assistance and guidance is provided where required. A senior developer isn't just someone who knows a lot of stuff, but has a time-honed wisdom as well, which they can parlay into their leadership and mentoring duties.

<comment><USER10> I like your definition because it is timeless and rings true. The same definition will apply in 10 or 20 years time when there are new fads in development processes, programming languages etc.

I would add that the senior engineer has a mature approach to selecting/recommending tools and frameworks, based on what is most valuable for the business and the team, rather than was is cool, good for their career or whatever.

<comment><USER11> "selecting/recommending tools and frameworks, based on what is most valuable for the business and the team" This is so true, I would say it extends to style amongst other things also. Having worked seniors on teams who had to seemingly make problems "worthy" of their skill and time served. For example working on a large OO Monoliths where a senior started to add lots of "clever" functional code. When I started the question the reasoning behind it I got a lot of instant defensive flack off them because "it's a better way" and "I'm arguing against correctness" they didn't seem to want to understand that we had 50 mid level to junior devs who also had to support this who would require a lot of help to read or follow it, thus slowing the entire team. They didn't seem to care for the reasoning of it being better "for the team" to just carry on with the agreed OO standard.

It's not that I thought they were wrong in what they had to say, just there is an appropriate time and a place and being able to make that call is just as if not more important than the style of functionality being added. I find such seniors can be toxic at times. In essence there is more to being a senior than just being a great coder.

<comment><USER12> > For example working on a large OO Monoliths where a senior started to add > lots of "clever" functional code.

Adding a simplier design with functional code is a good thing. If there is a mid level developer that can't follow the current state of the art, than he is not a good mid level developers. Also "good" junior developers have mostly zero problems in understanding more functional code. I mean you don't need to understand Applicative Functors to use map/flatMap.

I mean there is a line which you should not cross too fast when introducing functional stuff, however most people just don't even try to understand the simple stuff even that it is way more simple than most while/for loops.

<comment><USER13> You need to realize most mid- and junior programmers simply aren't good.

<comment><USER14> And that means _they_ aren't good, not that the person using good practices isn't good.

If it is a business requirement that good developers must be slowed down for bad ones to catch up, then do it by encapsulation and mentoring. Not by decreeing that good developers must act exactly like bad ones.

</comment></comment></comment></comment></comment></comment><comment><USER15> When you are valuable and ask for a raise but they cannot give the amount expected because it's already Q4 so they give you the senior title instead.

It can happen even with two years of experience.

<comment><USER16> That's also my experience. "Senior" is little more than a random title in most companies I worked for. It can be someone in their early twenties who just happened to have worked for 2 years on one product, even if it's their first job. It's frustrating at first to join a new company as someone who is older and has many more years of experience, then you remind yourself it's just a random title and try not to get hung up over it. Like many symbols of status, it's a pretty empty shell.

If someone like Donald Knuth would be forced due to economic circumstances to join a trendy web start-up, he'd be a junior working under a twenty-something senior with little more than some Javascript and MongoDB knowledge. The whole thing's silly, really.

<comment><USER17> Anecdotally, I feel like this is how my older peers see me.

I've been working (professionally) in this industry since I was 16 years old, I got my first job as a junior after tinkering with computers since I was 8 years old. At the age of 23, I've found it very difficult to earn the respect of the people around me because of my age.

I have the title of senior developer because I've had experience working on scalability issues and complex service based infrastructures, but many of my peers who are my age and recently graduated university and are still in their first junior roles often act like I haven't earned it - despite me graduating with a part-time degree in software engineering (okay, it's not computer science, but I'm still glad I did it.)

My point is that while age is generally a good indicator of knowledge and ability, it's not the be-all-and-end-all.

<comment><USER18> Curiosity: are you from US? Is software engineering seen as less valuable than computer science? I'm asking this because for me software engineering is a more complete discipline and would encompass pretty much everything computer science does.

<comment><USER19> In the US, degree programs actually called "software engineering" are few and far between; most software engineers who are college educated have a computer science degree.

It's also worth noting that the term "software engineer" isn't regulated here, while other engineering titles are.

<comment><USER20> > term "software engineer" isn't regulated here, while other engineering > titles are

No they aren't. Unlike in Canada, you can give yourself any title without actually having a license in that profession, as long as you aren't being fraudulent in your claim.

<comment><USER19> According to Wikipedia, some US states regulated some engineering titles. It's not really specific but here: [https://en.wikipedia.org/wiki/Regulation_and_licensure_in_en...](https://en.wikipedia.org/wiki/Regulation_and_licensure_in_engineering#United_States)

</comment></comment></comment></comment></comment></comment></comment><comment><USER21> >The final stage of programmer evolution is the Finder. These folks are considered experts in their chosen domain (and are prudent about others). Writing Finder job descriptions is an exercise in futility. As my boss put it: "I can't tell you the specifics of what you'll be doing here because your first task will be to figure that out." A Finder will be able to anticipate problems before they happen, usually because they've been in that situation before.

From [https://rkoutnik.com/2016/04/21/implementers-solvers-and- fin...](https://rkoutnik.com/2016/04/21/implementers-solvers-and- finders.html), which is a really great read.

<comment><USER22> Reminds me of Cringely's metaphor of "Commandos, Infantry, and Police" [0]. Not quite the same, though: The military analogy assumes that there are a fundamental tradeoffs between strengths and weaknesses (esp. getting-it-done vs. doing-it-right.) In contrast, it looks like "Finders" aren't described as having any particular weaknesses relative to Implementors.

[0] [https://blog.codinghorror.com/commandos-infantry-and- police/](https://blog.codinghorror.com/commandos-infantry-and-police/)

</comment></comment><comment><USER23> It's a pretty arbitrary term, but based on what you've said, especially _" I don't fancy the new and shiny. I just get things done fast and done properly"_, would be enough for me to label you a senior programmer.

Our industry is _way_ too obsessed with fashion... sooner or later you realise that most of the "new" stuff is largely existing ideas re-hashed in a slightly different form. Senior programmers realise this and can pattern match to understand the role of various new technologies, and learn the details _if and when necessary_.

How do you get there? You already are, you just don't realise it yet.

<comment><USER24> > but based on what you've said, especially "I don't fancy the new and shiny. > I just get things done fast and done properly", would be enough for me to > label you a senior programmer.

I think that's wild speculation. That phrase could mean a number of things.

It could mean they engage in the industry, explore new technologies and make educated decisions which balance the risks associated with adopting new technologies and, in some cases, choose to use technologies that are fit for purpose but are not necessarily bleeding edge.

On the other hand it could mean they have failed to keep up with technological advancements and are using the wrong tools for the job, tools that can't deliver a modern web experience. He might be churning out shocking legacy code that someone else will have to clean up one day. Perhaps his employers are none the wiser and don't realize a different developer could deliver a better quality product in a much shorter time using the tools available today.

Given OP's examples of not knowing "Amazon" or Java Spring, both of which are ancient technology in web years, I would speculate the OP might fall into the latter category. Another strong indicator of this: OP has been doing web development "as long as [they] can remember". You'd think his coworkers or employers would have told him he was a senior developer if he hadn't figured it out himself.

Overall, insufficient information in the OP to make an assessment, but I would be very wary of pandering to someone's ego as it can do more harm than good.

<comment><USER25> "done properly" means not taking the shortest, technical-debt-laden path to success (amongst other things). It's a hallmark of a senior, in my opinion.

Also, why would you know Amazon operations stuff if your job duties don't expose it to you? The OP was saying 'operate Amazon', not 'use Amazon APIs'.

</comment></comment></comment><comment><USER26> At GitLab we have a formal definition for senior engineers [0] (where we accept merge requests, of course).

1\. Technical Skills a. Great programmers: are able to write modular, well- tested, and maintainable code b. Know a domain really well and radiate that knowledge

2\. Leadership a. Begins to show architectural perspective b. Leads the design for medium to large projects with feedback from other engineers

3\. Code quality a. Leaves code in substantially beter shape than before b. Fixes bugs/regressions quickly c. Monitors overall code quality/build failures d. Creates test plans

4\. Communication a. Provides thorough and timely code feedback for peers b. Able to communicate clearly on technical topics c. Keeps issues up-to-date with progress d. Helps guide other merge requests to completion e. Helps with recruiting

[0]: [https://about.gitlab.com/jobs/developer/#senior- developers](https://about.gitlab.com/jobs/developer/#senior-developers)

<comment><USER27> I like this a lot. It's organized and measurable. Follow-on question, how do you get there?

As an aside, I often feel that being senior involves _confidence._

</comment></comment><comment><USER28> Whatever it takes to best satisfy your customer. That's it.

No, I'm not being snarky, so hear me out...

I've met and worked with many developers over the years and lots of them have become very good with technology and user domains, but still have struggled to "crack the digital ceiling". These are brilliant people who have achieved serious things, but are still not recognized by the big decision makers as "senior", whatever that means.

Then there are a select few who always get the big gigs, big money, and big reputations. Why? Because they best satisfy their customers. There are lots of non-technical skills that help them, but I think the biggest is their ability to separate the signal from the noise and zero in of the most important things to work on and to get them done. It's almost like they have "satisfiability radar". And this rarely requires any special technical or people skills. All they really have to learn is a good grasp of the technology, a deep understanding of the customer's domain and business, and the ability to get things done through others. And how did they develop them? By good old fashioned grunt work, whether digging into the bowels of the system or getting up off their butts and relentlessly going around finding out whatever they needed to know.

Once you've figured out the best thing(s) to work on to best satisfy your customers, got them onto the decision makers' radar, and found a way to get them done one way or the other, you are no longer a dev or even a senior dev. You're now a digital rainmaker, the most senior dev of all.

<comment><USER29> Many companies have a separate "Product Manager" role for that business, so that the brilliant engineers can brilliant SENIOR implementors. Have a dedicated professional worry about the customer impact, product requirements, etc., along with other non-programming tasks that many developers understandably prefer not to get bogged down in.

<comment><USER30> They do. But separating those two roles and having two different people make those decisions tends to result in less-than-optimal decisions. It's the same kind of problem as "let's have the tech done by engineers and the business done by business people," and then your business gets bulldozed by a competitor whose CEO _does_ understand engineering.

</comment></comment></comment><comment><USER31> I became a "senior" when my financial expectation were higher than the maximum salary of non-senior developer at a company that tried to hire me.

They were forced to offer me position of senior developer and no other company after that dared to offer me lower position.

</comment><comment><USER32> My personal definitions:

Junior: Can do it with guidance and/or clear and non-transitional specs

Developer: Takes the ball and runs with it. Can walk a customer through requirements gathering and make recommendations. Will help guide junior developers.

Senior Developer: Can architect a system well. Can communicate equally well between executives, salespeople, management, and end users. Can and will mentor lower level developers. Can explain concepts on the fly to lower level developers and walk them through the development process in terms they understand. Takes initiative at learning new technologies.

<comment><USER33> > Can walk a customer through requirements gathering and make recommendations

Well yeah, I can do that, but isn't that normally the business analyst's job?

<comment><USER34> Change it to "can walk the business analyst through requirements generation etc"

(Yes, I am currently frustrated with our product management)

</comment></comment></comment><comment><USER35> 1) When you drop everything you are doing to mentor other developers

2) When you get asked by the business to do something you question what they are asking and the motivation, and then determine the best course of action based on their motivation rather than delivering the specific task they asked.

That's it really, it's nothing to do with your coding ability but more to do with your mentoring ability and problem solving skills. This is what is valuable to your colleagues and the business. Any answer related to coding ability is missing the point, it's important, but after a few years most people are the same programming level - it's just some people can help at the team or business level which is what makes you senior.

</comment><comment><USER36> A "senior" is a someone who provides about 10X in value and earns about 2X in salary :)

More seriously, except for very big and very hierarchical orgs where tenure is overly important, people will tend to give you the senior title when your work is indispensable. To be indispensable you don't need to know by heart this technology or the other - you need to identify what are the things that bring the most value and work hard at delivering them.

</comment><comment><USER37> To me, it is about what they are able to create independently, and the value of the end product.

Senior people have made the right mistakes, wasted weeks of time, and know what to avoid, what to embrace, and what to ignore. A senior dev can understand the requirements and figure out what is important and deliver something without a lot of external input.

<comment><USER38> > Senior people have made the right mistakes

This really sums it up, _almost_ every other answer could be seen as a consequence of this.

<comment><USER39> Do you have to make the right mistakes _yourself_?

<comment><USER40> It helps with getting the muscular memory in place.

You can learn from other people's mistakes, but the pain you feel yourself will make you never forget it.

</comment></comment></comment></comment><comment><USER41> Fun story, I just found out yesterday during my annual performance review than I am a Senior Software Engineer. No, not a promotion, but rather I have always been one. It was simply an HR mistake that my title did not reflect it and no one realized that I didn't know.

So to answer the original question: it is impossible to know.

<comment><USER42> Or, rather than have to give you a promotion HR said, "hey, let's just make them think they were always a Senior Engineer this whole time!"

</comment></comment><comment><USER43> None of those things sound like things I correlate with being a senior developer. Knowing any particular set of skills isn't what I look for anyway.

To me the things that make a senior developer are: 1) you give them a project, even an ambiguous or large ones, and expect it will work out fine. 2) they have been around enough different situations that they likely aren't going to be thrown for a loop by new challenges. 3) they mentor their fellow less senior developers.

To get there you need 2 things: 1) bare time, you just _have_ to put in the time 2) variety of projects - if all you have is a bunch of time on the same problem you are unlikely to have developed the breadth of knowledge you need.

</comment><comment><USER44> To me the senior title should be applied depending on the way you approach your role and not how you code.

As others have mentioned as a senior you can be left to implement changes without guidance, you will clean up issues as you come across them instead of leaving it to others, you suggest improvements, you make time to mentor and guide more junior members of the team, you know how to relate to muggles and you act like a team captain.

Knowing lots of different hosting environments and languages comes with experience. The approach you take to your role show's your all rounded skill set.

</comment><comment><USER45> Well usually companies have their own view on seniority, and it could include how many years you have been there, but for what its worth for me a senior developer is a person who has experience with all stages of application development, which should imply that she/he can: \- design and understand client/server architecture, \- write code using best practices that is clean and maintainable, \- knows database design and programming \- understands design patterns and knows how to not abuse them, \- knows how to deploy application and has experience with CI. \- knows how to write proper unit test.

To sum it up I will use .NET as an example, in my eyes when someone says I am a senior .NET developer I assume that she/he has: \- used UMLs, \- knows how to write proper OOP and understands SOLID, \- can use MS SQL and some kind of ORM, \- uses some of the testing frameworks (e.g. NUnit), \- knows how to deploy application whether on IIS, or install it with ClickOnce for example. \- know how to handle source versioning (TFS or whatever is your poison)

I probably missed a few things, but that's about it for me. If a senor doesn't have these skills I assume first that she/he has great knowledge of company business which would make her/him a valuable asset, or that she/he got lucky, or it's a crappy company :)

<comment><USER46> >\- used UMLs

Like unified modeling language?

<comment><USER45> Yes, UML diagrams. One should be able to read and understand them.

<comment> FLUX-YOU How hard is that to learn though?

That seems like a fraction of the cost it takes you to learn OOP/SOLID/etc.

<comment><USER45> UML is pretty straight forward, and I rarely saw it being used in companies because of many reasons (spaghetti monster being the one :D), but I mentioned it because I'd expect that one showed now how to read them, since you will find them in literature (if you read any book on design patterns they are there).

</comment></comment></comment></comment></comment><comment><USER47> This is kind of tangential, but a couple of jobs ago I decided to actively purge all job titles from my CV/resumé. Officially, I'm currently a senior and have been in the past, but there have also been jobs in between where there was no "Senior" prefix in the title.

My main problem with thinking about developer roles in this way is that there's obviously no standard for what constitutes seniority. It varies between and sometimes within organisations. Advertising it, glorifying it, striving to achieve it, all take the focus away from far more interesting things that you can say about yourself and aim for.

Are you working on interesting projects? Are you learning new stuff? Are you being challenged technically? Are the other people on your team good developers? Do you enjoy what you do?

Seniority as an end in itself seems like a hollow objective to me. And making a big deal about it in a recruitment context takes the focus away from more meaningful topics.

</comment><comment><USER48> In my experience:

\- you are technically competent

\- can handle design aspects of full stack (backend, persistence, frontend)

\- have enough credibility and confidence to say NO to business people

\- you can lead a small team of developers (2 to 5 people)

<comment><USER49> > \- have enough credibility and confidence to say NO to business people

This is the most important part. Other points you mention are about your skills and you can _learn_ them. This one, however, is in major part about your reputation, which you need to _earn_.

Going a step further, I'd say you're a "Senior" as soon as people around you start to treat you as one. You can be very knowledgeable but that won't be enough if you can't _prove to others_ that your knowledge is _relevant_ and solid.

</comment></comment><comment><USER50> Check out this recent thread: [https://news.ycombinator.com/item?id=12557149](https://news.ycombinator.com/item?id=12557149)

</comment><comment><USER51> I like this joke: A junior programmer thinks he knows everything. An intermediate programmer thinks he knows nothing. A senior programmer hates computers.

> But I feel like I'm always a step behind the rest.

Don't look at things in this way, low self-esteem is the worst you can get. There are always people better than us, but their skills and knowledge weren't conjured up. Even extremely talented people need time to learn. And if you don't feel like learning new things may make you better, why to feel guilty? If you're not a Java programmer, why to feel bad because you don't know Spring or other details perfectly? You wrote you do things fast and correctly. So you're better than, say, 90% developers who work slow and produce crap. :)

</comment><comment><USER52> I would say it is about sphere of influence. Are you inward looking and focused on developing your own competencies? Junior. Are you mentoring people on your team? Intermediate. Are you providing direction for the company or the industry at large? Senior.

</comment><comment><USER53> I would consider you a "senior" programmer? Mainly because you know that you do not know much. While a junior or intermediate programmer think they know everything. There are of course more to it, like when you are stuck on something; you ask the senior programmer, that will probably have solved it ten times in the past. Or if you want to know what the best method is to do this, you ask the senior programmer, that have done it hundreds of times and thus found out the optimal way, with all edge cases included. So I would say it's mostly about experience, and then expertise. Also, a senior programmer should have gone though at least two paradigm shifts.

<comment><USER54> I'm interested in this 'two-paradigm shifts' rubric. Could you elaborate?

<comment><USER53> Programming languages and best practices evolve. For example object oriented programming, functional programming, goto instructions, global variables, include files, module systems, classes, template languages, PHP, MVC, XML, JSON, unit tests, test driven development, Git, JavaScript frameworks, SQL, noSQL, sequential, asynchronous, multi-threaded, etc.

</comment></comment></comment><comment><USER55> Being a senior developer is not just having a great skillset. You need to be able to manage your work in a way the business values it. You need to interact with all sorts of people in the company you work for and help other teammembers rwaching the same level as you.

Our senior developer is always thinking about the business value when estimates are made vs quality. He even does not do alot of softwae development, but is always asked to help out other developers, system engineers and even management to give advice.

To be able to do that in a professional way, your vision plus skillset makes you a senior imo. Not just the years of experience and amount of skills you have.

</comment><comment><USER56> It's mostly just a title on a business card and/or org chart.

Some times it's given to people instead of money.

Don't worry about the title. Worry about getting good at what you do, and an asset to your team and organization.

</comment><comment><USER57> I'm also agreeing with leadership and mentoring. Be able to make unbiased technical decisions, troubleshoot systems / apps and get up to speed on new projets independently fairly fast. Have confidence in what you do and don't ask about everything.

A solid general code understanding is also needed in my opinion. This includes things like using documentation over googling everything. If I pair with a senior and he types "golang how to do x" on every problem, I probably wouldn't consider him senior. (Not saying googling is bad. Just don't be a copy-paste- from-stackoverflow engineer)

With that, I also hate the term "senior engineer". I got friends with 3 years of work experience that are now "senior" because a company hired them under a senior position (basically more salary) and the companies after that just did the same because "well he already is a senior, right"? This also generates a strong in-balance inside the team with a hierarchy that shouldn't be there. I am usually advocating for getting rid of job titles and calling everyone just "Software Engineer"

I am now 6-7 years into my career and don't consider myself senior. When people in interviews ask me what my career goal is, I usually mention I want to be able to consider myself senior as the next step.

<comment><USER58> > Have confidence in what you do...

Heed your own advice. You might not like the current system of hierarchy, that's fine. And change it when/if you get the chance.

But in the meantime, don't abstain from senior positions (and salaries) that others get just because you don't like a concept. Play inside the system until you can change it.

<comment><USER57> > But in the meantime, don't abstain from senior positions (and salaries) that > others get just because you don't like a concept. Play inside the system > until you can change it.

Oh yeah, I don't. I am also applying on "senior" positions, but this is just my personal opinion on when I would consider someone / myself truly senior. Paycheck and job description aside.

</comment></comment></comment><comment><USER59> I work at a major games company. For us, a "senior" is someone who can, on their own, design, implement, document and maintain a feature. An "intermediate" is someone who can do the above but with mentor help from a senior.

Above that, it depends what you want to do. If you fancy managing people, you can be a team/tech lead, or if you don't, then there is the title of "expert"(only a handful of programmers who worked here 10+ years have those).

<comment><USER60> I quite like that definition. It's based on the ability to independently deliver value.

</comment></comment><comment><USER61> I think a senior engineer has to know a few things.

They have to have the basics we all need as engineers simply to pass the interview process. The data structures and algorithms, Big O and be able to walk through systems they have worked on in the past and the trade offs they made and why.

Then on top of the basics I look for a few more things. Usually the understanding of multi threading, multi process, asynchronous programming is very different between junior and senior folks. I dive into distributed systems and see if they have any exposure. I dive into multi paradigms and how deep their knowledge is in their respective toolset they have listed on their resume.

I don't necessarily think you need to know multi threading in and out, or distributed systems in and out, or your tool set in and out. You certainly need to know one or two of those though. You need to have some body of work you can speak very well to, this is a huge indicator of seniority. Mentorship and all the other things that go with that help differentiate as well between junior and senior.

I don't think there is a hard rule anywhere. Different folks will look for different things and at least where I work those things I listed are very important differentiators.

</comment><comment><USER62> When they have to pay you more than the junior devs. Note that isn't necessarily because of skills or knowledge.

</comment><comment><USER63> This is by far the best article I've ever read on the subject. [http://www.kitchensoap.com/2012/10/25/on-being-a-senior- engi...](http://www.kitchensoap.com/2012/10/25/on-being-a-senior-engineer/)

</comment><comment><USER64> Depends if its senior with a specific technology (ex: senior rails programmer) or generally senior programmer.

I consider senior someone who: \- knows how to mentor juniors \- knows his way around tech, even if he never used a particular product \- most important, can communicate effectively with stakeholders and devs.

The best "senior" is the one who nags everyone to get stuff moving forward. Doesnt mind getting his hands dirty and going by people's desks to make sure the team delivers.

You may need to brush up your marketing skills in order to promote yourself as senior. Don't get impressed by people that know stuff.

</comment><comment><USER65> Leadership and mentoring. When they can write great documentation (without prompting) and [http://softwareleadweekly.com/](http://softwareleadweekly.com/) becomes their favourite weekly read. When they come to you with improvements outside of the technical domain on how to improve shop and even better when it's just a side chat about what they have already improved and what went well, what didn't and what they learned (self-awareness). When they stop treating promotions like mechanical checkboxes.

</comment><comment><USER66> Sr can tell to jr: I have already made the mistake you are about to make.

</comment><comment><USER67> In Germany this isn't a thing, but when applying for a few jobs in the UK most employers considered me senior after that interview. Still didn't get the jobs, because I failed their programming tests.

Since I started programming my work-behaviour changed from asking people all the time when I don't know what's happening to reading their code.

I think developers are considered senior if they can work on their own.

Like, if you get all the engineering practices of designing, implementing and maintenance done without much help.

</comment><comment><USER68> A senior developer doesn't say things like "I don't know how", they simply figure it out and do it. A true senior developer is fearless, but also pragmatic.

</comment><comment><USER69> When you learn Erlang.

<comment><USER70> Do you become a lead developer when you've mastered K?

</comment></comment><comment><USER71> I think a lot of programmers stucked into programming language/framework trap – keep learn new lanaguages and new frameworks to make yourself believe you have more exp, but this just make your skill more like learn drive different brand cars. Even myself in this trap for really long time.

The true power to make you senior is how you train your brain to think and abstract. This will boost your capability of design rather than just coding

</comment><comment><USER72> Engineer seniority has a lot of variance. Some do it based on years of experience, ranging from 5 to 10 years and that would differ from company to company.

In my understanding, a senior engineer is an engineer that can contribute without the need for technical supervision.

Now, not requiring supervision is different to leadership. A senior engineer is often an individual contributor, not necessarily a team technical leader.

</comment><comment><USER73> Based on my experience at about five different successful companies, a senior engineer is not someone who has a title declaring them as such but is a person you go to when considering something completely new that needs to be created from scratch because you know he could do it if asked to, do it in a way that will leave something another team can pick up if necessary, and do it well.

</comment><comment><USER74> I read some where the definition to be as a software engineer who's primary role is to reduce risk. This sounds like a solid benchmark to me since this usually entails that although you may not have a lot of knowledge about the latest JavaScript framework but instead have deep cs fundamentals knowledge which would allow you to mitigate software risks in most environments.

</comment><comment><USER75> Assess the new and shiny technologies and learn the ones that seem promising.

1 year later new and shiny will become the standard, there will be thousand of beginners and you'll be one of the few "senior" developers on that technology.

Of course you'll already be learning the new and shiny that will become the standard 1 year later.

</comment><comment><USER76> Skill is knowing how to operate Amazon, "senior" is knowing when you probably shouldn't.

</comment><comment><USER77> As a CTO or team lead senior programmers to me were those who understood the business and the businesss side of things and could make trade offs (beside the technical experience).

Another aspect that seperates seniors is their ability to talk and present to senior or top management.

</comment><comment><USER78> In my experience a senior developer is someone with 10+ years of experience in architecture and development and a pretty vast amount of accumulated knowledge. There are exceptions of course, but this seems to be fairly standard in my market in the Midwest.

</comment><comment><USER79> Senior developer is just very difficult to define. You could define it based on the amount of time worked at a certain job, your skills, your ability to mentor. The definition could be different for various businesses and their employees.

</comment><comment><USER80> When you have to talk to a customer.

Seriously, I worked for a place where thay was the rule.

Titles are somewhat meaningless. Apparently I'm a consultant these days...

</comment><comment><USER81> My very first developer job after graduating was a 'senior member of technical staff' so who really knows.

</comment><comment><USER82> You have seen a few projects and different teams. A few years of practical experience is necessary.

</comment><comment><USER83> I guess ... Once you realise that you don't want to be a senior or a developer at all.

</comment><comment><USER84> When you salary demand exceeds the threshold of a standard programmer.

</comment><comment><USER85> Senior = most senior dev in the building. AKA Designated Survivor.

</comment><comment><USER86> Depends on % of code you reuse.

</comment><comment><USER87> You will never have enough time to learn everything and be all things to everyone. Get this idea out of your head right now or you will never find happiness.

Senior is the difference between keeping your eye on the big picture and helping to move your team forward to the objective in a timely manner to achieve the business objectives that drive the company forward. It's the ability to step up and lead your team when called for. It's the ability to make decisions balanced between what's technically right in the short and longer term without losing sight of the end goal.

Never forget that you're not paid to deliver software just to deliver amazing software. The software you deliver is a tool, a means to an end. That may be to cut costs, it may be to increase profits, it may be the lifeblood that your company's stock price hangs on.

A junior developer may be amazing with the tools provided and may have some good architectural sense. They may need some, or a lot of hand holding. A junior developer generally has their head in the code most of the time and may but probably shouldn't be expected to understand or care about the objectives of the business as a whole. You give them a feature to develop and can largely expect that they will need all of the dependencies to hand. They may have a good handle on debugging and unit, integration and functional testing or this may be something they need to learn. This is OK.

An intermediate developer can be given objectives regarding code and architecture and left to their own devices and trusted to deliver on their objectives in a timely manner. By this time, you should expect to at least understand the business objectives and be able to think critically about the code they're providing in order to meet those objectives. I would expect an intermediate developer to have enough of a clue about architecture that handed a feature requirement and some architectural direction for how to integrate it, they could architect it competently and integrate it and know where to go to ensure any dependencies are satisfied. They will have a good handle on debugging and at least unit and integration testing. They may have a good handle on functional testing and debugging production code.

A senior developer is someone in my mind who who can be trusted with the business objectives, can chase down architectural advice, from an architect or UX input or whatever else they need to get the job done; they can communicate effectively with stakeholders and the business; they can be expected to dig in and fill any gaps that would prevent delivery or cause problems in production. They can delegate pieces appropriately and deliver what is expected in the allotted time frame. They may be someone that can step up as team lead/team manager, or lead from the back and be the glue that gives the team cohesion. They can be expected to have the discipline to take care of things properly when nobody is watching. They can be expected to help debug production issues and be among the first to muck in when the shit hits the fan to help resolve production issues.

So you see, the difference between junior, intermediate and senior doesn't have an awful lot to do with code or tools. You will expected to either be or become a master of your tools whether junior, intermediate or senior. You will be expected to do this on the fly, on the job, regardless of everything else that is going on around you. This is part of being in this industry. You will be expected to keep up with the codebase and dig in and understand it at whatever level you're at. These are all prerequisites for your job as a developer, they are not a prerequisite for your title. There's a big difference.

If you want to make the jump from junior to senior quickly, here's my advice: Find the most gnarly difficult problems your company is having and dig in and help solve them consistently. When you've put yourself through the wringer; when you've suffered the late nights, the stress, the anguish about whether or not you've got what it takes to do this job. Do this until you get to a point where you think you've seen every last problem that could possibly occur, and despite that, something else hits you out of left field and knocks you clean off your feet. Do this until when this happens, you just get back up and keep going. When you get knocked down and get back up when everyone else would say fuck it, when you can be trusted to make shit happen when everyone else would say fuck it - this is when you can call yourself a senior developer.

"Out of the 39 000 men and women that make up the United States Coast Guard there are only 280 rescue swimmers. This is because we are the Coast Guard's elite. We are the best of the best. When storms shut down entire ports, we go out. When hurricanes ground the United States Navy, we go out. And when the holy Lord himself reaches down from heaven and destroys his good work with winds that rip houses off the ground, We. Go. Out." \- Ben Randall, The Guardian

Live by example.

</comment><comment><USER88> When you can build and operate a multiple-cloud system using only assembly and gwbasic...

</comment><comment><USER89> sometimes these title can be dangerous.

<comment><USER90> Why?

<comment><USER91> I don't know what parent was thinking of... but titles, to me, are dangerous because titles are not used the same between one organization and another, and expectations and assumptions as to the proficiency of individuals may not be met solely based on title alone. Titles can also be dangerous because people who are undeserving of them think they know everything... when in reality they don't know shit. Especially when someone is given a higher title in lieu of higher compensation, when the title may not even be deserved. I've seen "senior software engineers" that can't even write consistently styled code, full of off-by-one bugs, and other noob shit. And I've seen "junior developers" run circles around them. It's all subjective... Titles are bullshit, basically...

</comment></comment></comment><comment><USER92> After 60?

</comment><comment><USER93> When someone gives you the title.</comment>


Ask HN: Anyone run hobby CNC's? Which ones? Experiences? - <AUTHOR> <comment><USER2> This is a multifaceted question--there's a whole toolchain behind any choice of hobby CNC beside the machine itself.

I have a Microcarve A4 that I outfitted with some over-specced stepper motors from Keling, with a Gecko G4 controller, all driven by LinuxCNC. I'm happy with my setup, which I put together in 2011. Now, I'd consider getting a Tormach, which is good for prototype level work (we have a Makerspace in the area with one.)

Consider where you'll get your designs--if you want to do your own, you'll want software ranging from OpenSCAD to ZBrush. If you need to clean up or do minor mods there's software ranging from simple FOS software to the full design packages.

Most packaged machines now expect some specific driver software like Mach3 or LinuxCNC. You should probably plan to use what the machine's community uses the most first.

Doing a more roll-your-own machine like mine is certainly possible, but be careful about choosing what specifications are most important to you. Size and accuracy are usually inversely related.

Poke around cnczone, that helped me a lot. Good luck! [http://saundby.com/cnc](http://saundby.com/cnc)

<comment><AUTHOR> Thanks! I have a lot of experience with shopbot at a local maker space. I just bought a probitix with linuxCNC.

I'm curious if there is much of a CNC community on HN.</comment></comment>


Does USA Gain Anything from Its Allies? - user-on1 <comment><AUTHOR> You mean besides prestige, power, the support of a significant part of the worlds military in its wars (and there are many), the ability to freely sell its products in the largest economies in the world, the ability cooperate with companies in those countries (like BAE Systems, you know that foreign company that is responsible for the technology that makes the F-35B what it is?) and so on?

Not sure what you want but the type of relationship the US has is different from say China but you should differentiate between OECD and NATO partners and others. WHY would you think that significant economic, political and military partnerships with the world's richest and most powerful nations ISN'T giving the US something?</comment>


Show HN: A Virtual NYC Snow Globe - Built with aframe.io - <AUTHOR> http://2017.ronikdesign.com/ <comment><USER2> Beautiful work by [https://twitter.com/jaredpike](https://twitter.com/jaredpike) from [https://twitter.com/ronikdesign](https://twitter.com/ronikdesign) using [https://aframe.io](https://aframe.io)

Open the DOM Inspector and check out <a-scene> to see its built with A-Frame's HTML framework. Hit <ctrl> \+ <alt> \+ i on the scene for a surprise!

</comment><comment><USER3> Pretty, but shaking my phone has no effect!

</comment><comment><USER4> Well, that's the coolest thing today for sure. WOW! :-)

Seems to make building VR worlds super simple.

</comment><comment><USER5> I'd be super curious to hear about your experience using aframe!

</comment><comment><USER6> Awesome !</comment>


DeepMind Co-Founder Mustafa Suleyman Placed on Leave - <AUTHOR> https://www.extremetech.com/extreme/297048-deepmind-co-founder-mustafa-suleyman-placed-on-leave <comment><AUTHOR> What AI projects are so controversial a founder is place on leave or is this just about Google high jacking his operation?

> DeepMind has been vague about the situation, but Bloomberg claims the move > stems from controversy over some of Suleyman's projects.

<comment><USER2> Apparently used electronic medical records from a hospital in England without proper permissions, which got DeepMind into hot water with the government.</comment></comment>


To the Idea Guys and Growth Hackers - <AUTHOR>

I am a software developer (iOS, frontend, and backend) and like most developers, prefer to spend my time coding rather than promoting. My current project is a weekly fantasy football site (think: Fan Duel and Draft Kings) called First Round Fantasy: www.firstroundfantasy.com.
I am looking to partner with someone to help with promotion. So far I am improvising and do not really know what I'm doing. I have decided this is better left to those with experience and/or actually enjoy this aspect of the business.
My proposal: If you are able to hit certain metrics within a timeframe (both determined by mutual agreeemnt), then I will agree to do the following:
A) Split First Round Fantasy with you. You will own a considerable portion of a site which is already developed and will have development support which is hard to find - just ask your programmer friends. The equity portion will be at least 25%. Considering that the development is done and I am paying for the football data out-of-pocket ($800/month), this is a non-trivial offer. I hope to raise funding after gaining traction so the value of your stake would be reflected in the valuation we secure from investors. Of course, this valuation would be higher if you are able to attract many many users.
B) I will help get your idea to MVP. I am a contract iOS engineer in NYC and have been so for over two years. If you have a mobile idea, I could hammer it out for what would likely cost somewhere between 10k and 30k on the open market in NYC or SF. I also do a fair amount of backend work and have been messing around on the front-end (Backbone, Angular, etc). I got you covered on the "ends." The only area I don't do is Android.
So that's my situation. If you have questions/comments, leave a message on this thread. Also, feel free to PM me if you are interested. I am based in NYC and can meet any day. Thanks. <comment><USER2> [http://www.brian-petro.com](http://www.brian-petro.com) Send me an email through there if you still need a growth hacker.</comment>


Acid-Suppressing Drugs Linked to Vitamin B12 Deficiency - <AUTHOR> http://well.blogs.nytimes.com/2013/12/10/acid-suppressing-drugs-linked-to-vitamin-b12-deficiency/?src=me&ref=general

<comment><AUTHOR> As a sufferer of this disease, I would like there to be further study within other areas of potential treatment. While the article here notes the usual refrain: "He and other experts noted the benefits of P.P.I.'s must be weighed against their risks", the prospect of other modes of treatment is worthy of study, in particular what the link is between GERD and carbohydrates. Many of us who have taken PPIs for years have already suspected side effects such as nutritional deficiencies, as well as "withdrawal" effects that would appear to make PPIs a habit-forming medication (there is conflicting research on this, but for example [http://www.ncbi.nlm.nih.gov/pubmed/19362552](http://www.ncbi.nlm.nih.gov/pubmed/19362552) finds a link).

From [http://www.ncbi.nlm.nih.gov/pubmed/16871438](http://www.ncbi.nlm.nih.gov/pubmed/16871438), "A very low-carbohydrate diet improves gastroesophageal reflux and its symptoms": "Obese patients with gastroesophageal reflux disease (GERD) may experience resolution of symptoms utilizing a very low-carbohydrate diet. The mechanism of this improvement is unknown. ". Why don't we figure out that mechanism? I already have abandoned the usage of PPIs after I suffered feelings of chronic weakness after years of use, and instead I eat a lot less carbs - if I spend a few days eating extremely low carbs, I do in fact seem to notice my GERD disappearing entirely.</comment>


Meet Women on the Linux Command Line - <AUTHOR> https://clidate.io/ <comment><USER2> This is an awesome use of (I'm guessing) libcaca; I think it would feel less sexist if it was able to search girls and guys though.

<comment><USER3> <http://csl.sublevel3.org/jp2a/>

did the trick on this one. ;)

</comment></comment><comment><USER4> Sad and cool at the same time! Definitely a winner.

</comment><comment><USER5> This is wrong in so many ways. But yet, so right.

</comment><comment><USER6> Great ideas, kick ass design.</comment>


CERN has released 300 terabytes of research data from LHC - <AUTHOR> http://www.symmetrymagazine.org/article/lhc-data-at-your-fingertips <comment><USER2> Tangentially, there's even larger public datasets coming out of astronomy. PanSTARRS' imaging survey will make 2 PB available online. They even have a picture [0] of the completed dataset in transit, if you wondered what 2 PB of HDD's on a flatbed looks like.

[0] [https://archive.stsci.edu/mug/mug_2016/PS1_MUG_2016jan14.pdf...](https://archive.stsci.edu/mug/mug_2016/PS1_MUG_2016jan14.pdf#page=11)

<comment><USER3> 'Never underestimate the bandwidth of a station wagon full of tapes hurtling down the highway.'

<comment><USER4> 2PB (5,000 lbs) / 4 days = 46 Gbps (excluding setup time)

Not bad, but not extraordinary

<comment><USER5> You should consider the impact of distance here as well...

</comment></comment></comment></comment><comment><USER6> >"Once we've exhausted our exploration of the data, we see no reason not to make them available publicly," says Kati Lassila-Perini, a CMS physicist who leads these data preservation efforts.

Why wait until they've exhausted their efforts?

<comment><USER7> They might want first crack at any major discoveries, if they miss something then everyone else gets a crack.

Seems reasonable to me.

<comment><USER6> Politics and fame over understanding and progress?

<comment><USER8> If you don't like it, pay for it.

<comment><USER9> Who paid for this research anyway? Taxpayers or private organizations?

<comment><USER10> Cern is funded by its member states, i.e. taxpayers:

[https://en.wikipedia.org/wiki/CERN#Participation_and_funding](https://en.wikipedia.org/wiki/CERN#Participation_and_funding)

</comment></comment></comment></comment></comment></comment><comment><USER11> It's cool seeing technology developed at CERN in the spotlight. There are a lot of interesting tools developed there that can solve real problems outside CERN and academia.

One such technology, featured in the article, is CernVM File System that is used to distribute terabytes of scientific software to hundreds of datacenters all over the world.

A shameless plug:

Apache Mesos recently integrated it to solve container image distribution problem ([https://mesosphere.com/blog/2016/03/08/cernvmfs-mesos- contai...](https://mesosphere.com/blog/2016/03/08/cernvmfs-mesos- containers/)).

<comment><USER12> _A shameless plug:_

Given that cheap and disposable trainees — PhD students and postdocs — fuel the entire scientific research enterprise, it is not surprising that few inside the system seem interested in change. A system complicit in this sort of exploitation is at best indifferent and at worst cruel.

[http://www.nature.com/news/2011/110302/full/471007a.html](http://www.nature.com/news/2011/110302/full/471007a.html)

Potential missing staff in some areas is a separate issue, and educational programmes are not designed to make up for it. On-the-job learning and training are not separated but dynamically linked together, benefiting to both parties. In my three years of operation, I have unfortunately witnessed cases where CERN duties and educational training became contradictory and even conflicting.

[http://ombuds.web.cern.ch/blog/2013/06/lets-not-confuse- stud...](http://ombuds.web.cern.ch/blog/2013/06/lets-not-confuse-students-and- fellows-missing-staff)

Resolution of the Staff Council

\- the Management does not propose to align the level of basic CERN salaries with those chosen as the basis for comparison;

\- in the new career system a large fraction of the staff will have their advancement prospects, and consequently the level of their pension, reduced with respect to the current MARS system;

\- the overall reduction of the advancement budget will have a negative impact on the contributions to the CERN Health Insurance System (CHIS);

[http://cds.cern.ch/journal/CERNBulletin/2015/46/Staff%20Asso...](http://cds.cern.ch/journal/CERNBulletin/2015/46/Staff%20Association/2063669?ln=en)

And a warning to non-western members:

"The cost [...] has been evaluated, taking into account realistic labor prices in different countries. The total cost is X (with a western equivalent value of Y) [where Y>X]

source: LHCb calorimeters : Technical Design Report

ISBN: 9290831693 cdsweb.cern.ch/record/494264

 _A shameless plug:_

The Dangers of Self-Reference

Public relations pioneer Edward Bernays refined the creation and use of press releases.

Propaganda was used by the United States, the United Kingdom, Germany and others to rally for domestic support and demonize enemies during the World Wars, which led to more sophisticated commercial publicity efforts as public relations talent entered the private sector. Most historians believe public relations became established first in the US by Ivy Lee or Edward Bernays (he felt this manipulation was necessary in society), then spread internationally. Many American companies with PR departments spread the practice to Europe when they created European subsidiaries as a result of the Marshall plan.

</comment></comment><comment><USER13> If only I could run to Fry's and buy a 300TB hard drive.

<comment><USER14> Well, you can "run out" and buy a 180TB 4U backblaze storage pod assembled for about $10,500. For $21,000 you can buy two and have 60TB to spare. $8,500/ $17,000 if you want to DIY. Not too bad:

[https://www.backblaze.com/blog/cloud-storage- hardware/](https://www.backblaze.com/blog/cloud-storage-hardware/)

<comment><USER13> Whoah! There's been a lot of improvements since the initial revision.

<comment><USER15> More to come...soon ;-)

<comment><USER15> OK it came -> [https://www.backblaze.com/blog/open-source-data-storage- serv...](https://www.backblaze.com/blog/open-source-data-storage-server/)

See! Soon!

</comment></comment></comment></comment></comment><comment><USER16> The lhc experiments should be sensitive to a wide range of factors. I wonder if random correlating every variation of the results from same conditions could show some unexpected correlations like between particle path variation and earthquake (just speculating here not putting a theory forward)

</comment><comment><USER17> ... on wikileaks!

<comment><USER12> In keeping with this spirit, here is a reminder of how we monitor (your) CERN activities. We monitor all network Traffic coming into and going out of CERN.

Our new analysis infrastructure will be able to cope with the automatic live analysis of about one terabyte of data every day. All this data is stored for one year.

Transparent monitoring for your protection

</comment></comment><comment><USER18> This [1] is apparently the data released. I am no physicist but that page doesn't exactly inspire awe among the curious minded.

They do explain how a couple of undergrads were able to use the data to create something meaningful in the original release article but that specific site can definitely use a UX designer, or two.

[http://opendata.cern.ch/search?ln=en&p=Run2011A+AND+collecti...](http://opendata.cern.ch/search?ln=en&p=Run2011A+AND+collection%3ACMS- Primary-Datasets+OR+collection%3ACMS-Simulated-Datasets+OR+collection%3ACMS- Derived-Datasets)

<comment><USER7> Indeed, I'll use the data from the other LHC with the pretty site instead.

<comment><USER18> I don't mean it has to be pretty, but that is not even pleasant to look at. I can provide all the useful data in the world but if it's accessibility of low then it's value is greatly reduced.

<comment><USER7> I doubt it makes that much difference in reality, the value is in the data and since this data is unique and from a single source I can't see it mattering.

Not arguing the value of accessibility but in this case it's a nice to have rather than an essential.</comment></comment></comment></comment>


Ask HN: Share your early customer acquisition strategies. - <AUTHOR>

I think a lot of people on HN would have bookmarked great content on how to get customers when you've just started out. If you could share them, that would be great. I'm planning to take the plunge next month and would appreciate any information on customer acquisition strategies.
Thanks.
To start us off, I have the following: http://www.gabrielweinberg.com/blog/2010/04/in-the-pursuit-of-traction-have-you-considered-all-verticals.html
http://tractionbook.com/
http://cdixon.org/2009/08/25/six-strategies-for-overcoming-chicken-and-egg-problems/
http://viniciusvacanti.com/2011/02/08/how-to-get-your-first-1000-users/
http://www.quora.com/In-the-shortest-amount-of-time-whats-the-best-way-to-get-100-beta-testers-for-my-new-mobile-startup?__snids__=14203509#ans334713
http://betali.st/submit <comment><USER2> Isn't this exactly the question asked here: <http://news.ycombinator.com/item?id=2239281>

Why not add your links to the item, rather than creating yet another thread on exactly the same question.

<comment><AUTHOR> That thread is dead.

<comment><USER2> I'm confused. It seems very much alive to me. It's 6 hours old and has 17 comments, the last just over an hour ago.

What makes you say it's dead?

ADDED IN EDIT: Just as a test, I've added your links over there. Seems to work ...

ADDED IN FURTHER EDIT: Comments are still being upvoted in that thread.</comment></comment></comment>


Django SQL Sampling - <AUTHOR> http://www.colinhowe.co.uk/2011/sep/04/django-sql-sampling/

<comment><USER2> Not a bad idea, though I think DB-specific (and app-independent) solutions are pretty awesome already.

For Postgres: <http://pgfouine.projects.postgresql.org/> Sample: [http://pgfouine.projects.postgresql.org/reports/sample_defau...](http://pgfouine.projects.postgresql.org/reports/sample_default.html)

<comment><USER3> Pgfouine is awesome, but one thing that's appealing about this one is the traceback showing where the query occurs--not always obvious given the Django ORM.

</comment></comment><comment><USER4> I write one of these for every large project during the optimization stage (beta testing with real data and use). I could not possibly recommend it more - not only for SQL tuning but also for tuning the cache.

I haven't looked at the source just yet, but in my own implementations, I usually keep a hash of the results as well so I can see how often the results change. If they rarely change, you have a prime candidate for heavy caching.

Another solid metric to follow are queries that are run often per request. So if I have the same query firing 5 times in a single request (even a light one) with the same returned data, I'll find a way to make sure it only runs once per request (or less).

<comment><AUTHOR> This gave me two awesome ideas - thank you!

1\. Hash the results as you say to try and find queries that could benefit from being cached 2\. Graph the change in a queries performance over time - useful for spotting queries that were fast due to a small table and are now becoming troublesome

I'll start looking at these in the next few nights :)

</comment></comment><comment><USER5> Another similar project is <http://code.playfire.com/django-append-url-to- sql/> although this is only helps for SQL executed in the request-response model, not for queue jobs, etc.

</comment><comment><USER6> Can someone (or the author) explain to me how this is different from what I get from Django-Debug-Toolbar. DjDT tells me what queries are run and how much time each took.

<comment><AUTHOR> This will group up queries from lots of different requests (and things like Celery) - not just queries. Also, due to the frequency being controllable this could be used in a production system (it is being used in ours).

The idea is to help you find your trouble spots - DjDT is amazing once you know where they are :)

</comment></comment><comment><USER7> This looks interesting. I've bookmarked it and will give it a try at work.</comment>


Harland Clarke Acquires RetailMeNot for $630M - <AUTHOR> http://www.siliconhillsnews.com/2017/04/10/san-antonio-based-harland-clarke-acquires-retailmenot-for-630-million/ <comment><USER2> "Never build your startup on another conpany's platform"

That's true.. and if you followed that advice..

\- You would never have started retailmenot (too dependent on Google traffic)

\- You would never start Buffer and have over 10 million in annual revenue (too dependent on twitter api)

\- You would never would have started Heroku and get acquired for millions (too dependent on AWS)

\- You would never have started SimilarWeb and be valued at over 100 million dollars (too dependent on browser extensions and Google)

<comment><USER3> Google traffic and AWS are commodities to an extent since they're replaceable. So Heroku and RetailMeNot don't qualify in my book.

More importantly though, the trend is that most companies relying on someone else's platform for survival are cannibalized. A few examples to the contrary don't make it a good idea.

<comment><USER2> There basically is no replacement for Google traffic. Paid ads are not the same since they cut into margin. Plus you can't even buy many brand related terms too.

<comment><USER4> I think the point is that if something else took over as the king search engine, they'd likely be able to get traffic there too.

<comment><USER5> Overtaking Google is unlikely, but Google deciding a certain coupon site is spam/scammy and deranking them is quite the threat and would basically kill them overnight.

</comment></comment></comment></comment></comment><comment><USER6> They've successful gamed SEO to show up for every "<site> coupon/promo code" search result. Unfortunately it's been years since I've actually found a working code on their site. These days I don't even bother clicking on their links.

<comment> VuWall-Matt Last week I saved ~$400 by googling "Lenovo Coupon Code" and using a few it spit out. So yes, sometimes they're bunk, but sometimes you get lucky.

<comment><USER7> When I bought my Lenovo I made a reddit post asking for such and got exactly that from a Lenovo employee.

<comment><USER8> One good way to buy from Lenovo is to go through corporateperks.com. Very simple and you get these kinds of discounts all the time. We bought our last couple of machines this way and got a very nice price. (No affiliation with them other than a happy customer.)

<comment><USER9> One way to buy Lenovo is to google for Lot of X on ebay.com where X is about 3 years old. The off-lease deals and lots of great machines you can find is amazing.

<comment><USER10> Indeed, I got a top spec x220 for about 450. It was about a year old and still under extended warranty, and practically brand new when I got it. Buying a new Lenovo is worse than buying a new car in terms of depreciation.

<comment><USER11> The depreciation is mostly because of the vast volumes of company leases ending.

Despite the fairly high reliability of thwir thinkpads, you can easily get good deals on second hand models.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> Wow, I always thought retailmenot was like a small 2 person company with a bunch of scripts to scrape coupons and rank high in SEO. What do their 500+ employees do.

<comment><USER13> Former employee here.

It used to be a 2-person company before it was acquired. A large part, surprisingly is scale. During Black Friday to Cyber Monday, for instance, the site is hit pretty hard by all the on-line shoppers. There's also a ton of different sites they manage, of which RetailMeNot is just one (deals2buy is another, a bunch of other international sites). They also have iOS and Android apps, mobile versions of the sites and a lot of community engagement.

There's a whole department to figure out which coupons do well and which affiliates pay better than which other ones to figure out which ones to feature. There's another department to manage all the different commission rates (mostly to call those companies to pay more). There's a whole community engagement group that tries to get more users to submit coupons or more users to use the site. There's a sales department that tries to get exclusive coupons in return for featuring them. There's even customer service to deal with users that are having trouble. Finally, there's a department to acquire new properties. Also, all those international coupon sites have their own mini versions of all these departments.

You also need HR, finance, office manager, etc. The headcount goes up pretty quick. When I left it was around 400 employees. It actually hasn't grown that much in 3+ years.

<comment><USER14> Wow, very interesting. I too thought it was a 1 man website, largely based on the aesthetics - is that accidental or deliberate? I think the 1 man show might be a better image.

<comment><USER13> There's a whole slew of designers and UX people, so whatever you see is definitely deliberate. They do a lot of usability testing, not just for the website, but the app, mobile site, etc. You would not believe how many iterations of something tiny like a slight change in the thumbs up button goes through. Everything is related to clicks and revenue, so there's a lot at stake for even small changes.

</comment></comment></comment></comment><comment><USER15> Pretty horrible outcome for anyone who got in on their IPO ($21/share) just 4 years ago.

It's kind of a fitting end for mostly a sham company. The business model was shaky at best, mostly just milking first page rankings all over google.

The argument that coupon codes incent buying activity is valid, but literally all this company did was be the first on google. If the actual retailer ranked ahead of RTMN for coupon searches, RTMN wouldn't be anywhere near where it is today, and retailers sales would be exactly the same.

<comment><USER16> Retailers sales would be the same, but they wouldn't be paying unnecessary commission to RMN. Sales commissions make sense when someone is directing new customers to a business. But as has been said in this thread, they were simply better at SEO. The customer was already a) aware of said product and b) showing intention to purchase. These are precisely the value propositions that affiliate marketing was designed for.

<comment><USER15> I was with you until that last sentence. Are you saying RTMN's model is the same value proposition as all affiliate marketers?

Sites like Expedia, Wirecutter, and hundreds of other review or aggregator websites that monetize through affiliate marketing add way more value to the user than RTMN.

<comment><USER16> No, that was my point. The exact value that affiliate marketers are supposed to provide, RTMN does very little, and probably none at all. They are a complete failure in delivering on the affiliate value proposition.

</comment></comment></comment></comment><comment><USER17> BugMeNot started RetailMeNot.

Good example of a pivot from what I assume? was a hack for fun to a business.

Also a good example of SV style buyouts etc

<comment><USER18> The BugMeNot guys started the site, but they sold it shortly after creating it - they have nothing to do with the (public) company it turned in to

<comment><USER17> BugMeNot sold it for $90 million to WhaleShark Media

Sounds like a good pivot to me.

[https://delimiter.com.au/2010/12/03/90-million-payday- aussie...](https://delimiter.com.au/2010/12/03/90-million-payday-aussie- startup-sells-retailmenot/)

</comment></comment></comment><comment><USER19> how do borderline scam businesses like these go public? why do people buy their shares? why has ipo market turned into a swamp where sneaky insiders unload their useless shares to?

<comment><USER20> Why is it a borderline scam business?

<comment><USER19> 'cookie stuffing' is a pretty scammy practice

</comment></comment></comment><comment><USER21> Once upon a time RetailMeNot was just a fly-by-night operation that scammed retailers using PPC ads and affiliate links. Look at them now.

<comment><USER22> In what way were they scamming retailers?

<comment><USER23> They pretend (or pretended) to have coupons that you needed to click in order to reveal. Often upon clicking, the coupons were invalid. Perhaps some were never real. But upon clicking, a pop-under would launch which would drop their cookie.

So a user who was already committed to buying, and in the process of doing so, who simply checked for a coupon while going through the checkout process, would end up generating an affiliate commission for RetailMeNot even though RMN provided no value to either the customer or the merchant.

This is basically a scam that pretty much all coupon sites pull, which is why many companies ban coupon sites from joining their affiliate programs.

<comment><USER24> What you're describing is cookie stuffing ([https://en.wikipedia.org/wiki/Cookie_stuffing](https://en.wikipedia.org/wiki/Cookie_stuffing)). People have been prosecuted over this: [http://www.businessinsider.com/ebay- the-fbi-shawn-hogan-and-...](http://www.businessinsider.com/ebay-the-fbi- shawn-hogan-and-brian-dunning-2013-4?op=1). I'm surprised about your claims that a public company would be doing this.

<comment><USER25> I run affiliate programs for my businesses, none of which have a box for coupon codes when you sign up. Despite that, nearly every day new coupon sites sign up for the affiliate program.

They usually have a webpage full of "coupon codes" offering discounts that don't exist made up, ready to add the referral link to. I remove all these sites from the program, some leave the pages up anyway.

Even coupons.com has a page for my business with several "Click to Save" buttons that do nothing. They're publicly traded as well.

<comment><USER15> Some of the sneakier coupon sites will put up other, competing products that do have affiliate programs to try and flip people into a product where they get paid.

</comment></comment></comment></comment></comment></comment><comment><USER26> They started as such the un-mainstream group, trying to aggregate coupon codes so you could get fair prices without getting hammered with marketing. My, how things have changed. Kudos to them for the payout, but sigh.

</comment><comment><USER27> Unbelievable</comment>


Blog Entries About Y Combinator Interview Experience - <AUTHOR> http://ycuniverse.com/interviewees.php

<comment><AUTHOR> I only have 3 entries on there right now. I'd like to have more. Anybody got any links?</comment>


Ask HN: What license do you use for your open-source projects? - <AUTHOR>

Title says it all.
Yes, Beerware, Wtfpl and mspl are valid options. I just want to know why you chose the flavor of choice.
I use a 3-clause BSD when I can because it isn't restrictive to the next poor sod that has to use it, just so long as they remember to include that I wrote it. <comment><USER2> MIT. It's a nice, small, clear license, and I think slightly clearer than BSD.

I hesitate to use GPL (unless I have to) because I like commercial entities to use my work as well, and in all the years of me using MIT, code sharing and patches from third parties keep coming in regardless of whether they have to or not.

</comment><comment><USER3> MIT because it's simple and non-viral. I'm pragmatic when it comes to open source software - I want to use it how I want without being restricted by others' beliefs.

</comment><comment><USER4> I use the GPL, mostly due to its viral nature: if I release something as open source, I want it to stay that way, and not rely on the good will of whoever wants to incorporate it into his work, to contribute back.

This certainly makes it harder - or even impossible - to use my projects in certain settings, but frankly, I'm fine with that. I'm even glad.

<comment><USER5> You say, "I'm even glad." I have seen this sort of comment before, but what I see when I read them is "I'm petty, really petty."

<comment><USER4> Perhaps. Yet, I see nothing wrong with remaining in control of my software's future (at least in some way: I can make sure it remains free). And I see nothing wrong with having a smile over my face when I see people realize they can't take that freedom away from others.

My priority is that what I've created to remain free, available to others, just like the huge amount of software I learned from. If someone wants to take that freedom away, and can't, I can't help but feel glad that freedom has been preserved.

<comment><USER5> The problem with your claim is that the software you created is still just as available to others even if third parties use it in proprietary software. All you are doing is making it _unavailable_ to those who would otherwise be using it third-hand in such proprietary packages that can't be made because of licensing issues. You are not maximizing others' freedom, you are restricting it.

<comment><USER6> I don't see this as a decrease in freedom over the default situation, though. If code is copyrighted, third parties can't use your code in their software, unless they reach a licensing agreement with you.

I see GPLing my software as making a limited quid-pro-quo exception: you can use my code for free, _without_ individually negotiating a license, but only if you do the same with your software. If that situation doesn't apply, then I'm happy to license the software in the normal manner, as one proprietary software vendor doing business with another one.

My view is something like: If someone is writing a piece of proprietary software, they should understand what proprietary software licensing means, and be prepared to pay for a commercial license if they want to use someone else's code, just as they'd expect anyone else to pay to use their code.

<comment><USER4> Well put, thanks for expressing the other half of my thoughts :)

</comment></comment></comment></comment></comment></comment><comment><USER7> Most of my open source code is 2-clause BSD, because I want everybody to be able to use it with as little hassle as possible. (I'd go with public domain except that there's always someone who points out that legally there's no such thing as "placing into the public domain".)

</comment><comment><USER8> MIT, because it's the license I prefer to consume in my projects. (Although BSD is fine too)

</comment><comment><USER9> The vast majority of what I've written and released is under the Apache License, V2.0. I've also put some stuff out under the LGPLv2. I tend to favor fairly liberal licenses, but I could see the merits of going GPL at some point.

What I don't ever intend to use are any "badgeware" licenses (CAPL, I'm looking at you) or the Affero GPL. The AGPL just seems wrong to me. I get what they're trying to do, but I just don't see hosting a service running software "X" as constituting "distributing software X."

<comment><USER6> I'd use the AGPL if I open-sourced a non-trivial webapp most likely, especially if it were a business rather than a side project, but probably not if it were just libraries or something of that sort.

It makes sense to me as a GPL analog in the webapp/SaaS space. I think of the GPL as informally saying that you can do whatever you want with my code, but once you ship a derivative work, you have to release source to your modifications too. In webapp space, what does it mean to "ship" a derivative app? Seems like "launch a public service" is the way you ship, since nobody is selling CD-ROMs with thick-client apps on them.

In practical terms, a common alternative to AGPL is just to not release at all, because many SaaS providers are worried that releasing their code will make it too easy for someone to set up an improved rival service, beating them using their own code as a starting point. For example, Gitorious is AGPL, but Github is closed-source.

<comment><USER9> _I'd use the AGPL if I open-sourced a non-trivial webapp most likely, especially if it were a business rather than a side project, but probably not if it were just libraries or something of that sort._

Fair enough. I could see how someone in that position would find the AGPL appealing.

</comment></comment></comment><comment><USER10> Related: "Why you shouldn't use the Lesser GPL for your next library" - <http://www.gnu.org/philosophy/why-not-lgpl.html>

The argument is made for using the GPL to give other open source developers an edge over commercial entities.

</comment><comment><USER11> None.

I put my code out there so that people can use it. If they want to do so, they can. I don't see any reason to complicate things beyond that.

</comment><comment><USER12> MIT, however sometimes I'll release under the GPL if I feel I could make a profit off of it in the future by selling commercial licenses.

</comment><comment><USER13> generally the WTFYW license</comment>


Sharing all of your knowledge as a mind map - <AUTHOR> https://github.com/nikitavoloboev/research <comment><USER2> This is really impressive.

How long did it take you to make this?

<comment><AUTHOR> I started working on it more heavily about a month ago. I already had quite a lot of notes and bookmarks but there were scattered around in various places. It's actually really nice to have a system in place where I can easily add new nodes and information and make sense of it.</comment></comment>


Andrew Wiles on the struggle and beauty of mathematics - <AUTHOR> https://blog.sciencemuseum.org.uk/sir-andrew-wiles-on-the-struggle-beauty-rapture-of-mathematics/ <comment><USER2> Some of my favorite quotes related:

        "As Wiles began his lectures, there was more and more speculation
        about what it was going to be," Dr. Ribet said.
        ... Finally, at the end of his third lecture, Dr. Wiles concluded
        that he had proved a general case of the Taniyama conjecture.
        Then, seemingly as an afterthought,
        he noted that that meant that Fermat's last theorem was true. Q.E.D. [1]

And

        "I had to give the next lecture," Dr. Ribet said.
        "It was something incredibly mundane."
        Since mathematicians are "a pretty well-behaved
        bunch," they listened politely.
        But, he said, it was hard to concentrate.
        "Most people in the room, including me, were incredibly shell-shocked," [1]

Very funny, but also gives me goosebumps. That would have been some lecture!

[1] [http://www.nytimes.com/1993/06/24/us/at-last-shout-of- eureka...](http://www.nytimes.com/1993/06/24/us/at-last-shout-of-eureka-in- age-old-math-mystery.html)

</comment><comment><USER3> I think true happiness often can really only come from developing a skill; to be an old school artisan is the way forth.

This is an idea I'd dismissed at first, 'work is worship' and all that jazz, as some propaganda by the classes incl. and above the bourgeoisie.

I then the same illustrated by Alan Watts, and illustrated beautifully some months back in Oatmeal.

[http://theoatmeal.com/comics/unhappy](http://theoatmeal.com/comics/unhappy)

... and then I realized both were true. Words are both the instruments of the savior and the devil.

<comment><USER4> I think there are two concepts being conflated here, but I'm not sure what to call them. Let's call them X and Y.

\---

1) Saving whatever% off your car insurance makes you X.

2) Having sex makes you X.

3) Scoring the winning point in a close game makes you X.

A) Laying the last brick on a house you built with your bare hands makes you Y.

B) Watching your daughter get her doctorate makes you Y.

C) Solving a non-trivial theorem for the first time in history makes you Y.

\---

I'm just not sure what to call X and Y; perhaps "happiness" vs "fulfillment", or "joy" vs "happiness", or "happiness" vs " _true_ happiness"...

</comment></comment><comment><USER5> The night Wiles did the fermat reveal I took a call from a Canadian mathematician friend working the (internet, phone) tree to get the word out. I found myself, no mathematican, ringing the ABC australia science desk, asking for, and getting connected to Robin Williams (one of our formost science journalists) to try and encourage him to go with the story on the national news. Quite an engaging moment for me: in my domain of computer science we'd call what I did almost a social engineering attack: "I have important scienting news, put me through to your chief scienting reporter..." and it worked!

</comment><comment><USER6> A beautiful and touching documentary about Fermat's last theorem, Wiles, and the other mathematicians involved in its proof: [http://www.dailymotion.com/video/x223gx8](http://www.dailymotion.com/video/x223gx8)

<comment><USER7> That was beautiful. It makes you wonder whether Fermat really had a proof, and if he did, why no one has replicated it using more rudimentary mathematics? If a mathematician could explain that I would be thankful.

<comment><USER8> He most likely did not and thought that his work in low dimensions would easily scale up to higher dimensions, unaware of the monsters that lurk there.

He had the proof for the power of 2, and when he wrote his line he might have had the proof for powers of 3 in mind (which he didnt write down) and thought that that one would generalize for all n. Which turned out to be true, but for completely different reasons.

[https://math.stackexchange.com/a/324764/243949](https://math.stackexchange.com/a/324764/243949)

<comment><USER9> I think you must mean for the powers of 3 and 4. It's not true for the power of 2!

See also [https://en.wikipedia.org/wiki/Fermat%27s_Last_Theorem#Fermat...](https://en.wikipedia.org/wiki/Fermat%27s_Last_Theorem#Fermat's_conjecture)

</comment></comment></comment></comment><comment><USER10> I remember trying to "prove" Fermat's last theorem while at school (I was around 16 at the time and obviously somewhat naive). The equation itself looked so simple that I was convinced a proof would be equally as concise. After a few failed attempts, I googled for solutions and stumbled up on Andrew Wiles' proof. I was dumbfounded at its complexity! There is still a part of me that hopes/believes that there exists some undiscovered crafty little mathematical trick that can distill this monster proof into something simple!

<comment><USER11> If that crafty little trick is really that little, perhaps we could try to find it by brute forcing it on a computer (symbolically, using a proof system) (?)

</comment></comment><comment><USER12> I'm still intrigued by the possibility of a more "elegant" solution to Fermat being out there. Wiles approach seems like brute forcing it by stitching together different proofs. It seems very implausible that Fermat actually had an actual solution, but it should be possible that one exists.

I guess the incentive to find it is much less now though when the theorem has been proved.

<comment><USER13> "Brute forcing it by stitching together different proofs"? Seems a bit of a harsh assessment! My (limited) understanding is that Wiles' proof introduced some hugely powerful new techniques related to modular forms and opened up a lot of new areas of study.

<comment><USER12> I didn't mean to trivialize it, it's an extremely impressive accomplishment for sure. The documentary was very interesting as well, recommended</comment></comment></comment>


Americans are loving electric scooter share programs - <AUTHOR> https://electrek.co/2018/08/14/americans-love-electric-scooter-shares/ <comment><USER2> I looked for a link to the study mentioned in the article. There was a link to the company which conducted the study, but it was just the root URL. Couldn't find much at quick glance on that company's site regarding the study, either.

I'm interested in reading about their methods and the sample group, but couldn't find a thing about it beyond the praises sung from this article.

Did I miss it? I'm trying really hard to avoid exerting the relatively low amount of energy likely required to find it in the stacks. It's [too] early Sunday morning.

</comment><comment><USER3> "surveyed over 500 adults across the US."

"176 respondents had actually used the electric scooter share programs personally."

and then of the people that had used them personally, they break it down into who felt positive about them

Not really a good way to condudct a study. If you hadn't guessed already, it's pretty much just marketing fluff.

</comment><comment><USER4> No data, all marketing. Show me the numbers or stop talking.</comment>