What Makes a Senior Software Developer? - <AUTHOR> http://blog.professorbeekums.com/2016/12/what-makes-senior-software-developer.html <comment><USER3> I also had the pleasure of arguing for a team members promotion once. The domain our team of 5 worked in was pretty challenging (heavy algorithmic stuff). I spent a year trying to train up my team, and although they improved, I still felt like I had to do the hard stuff myself. With the exception of one developer. For example if a project was particularly hairy or the time frame was too short, it was either me or him doing it. And I couldn't give him all the hard stuff so I ended doing a lot more coding than I had time for.

I went to my boss and said, X is carrying my team, he does more than any two other developers combined. He needs a raise, I can't lose him! And he got it.

To me that's what senior boils down, they can do the hard stuff, they keep the ball moving forward, and not get bogged down in the irrelevant stuff.

<comment><USER4> _" Every measure of a good developer is qualitative. That makes them all subjective."_

^ This post scratches the surface on a timely and relevant question many teams face, but the author seems to throw hands up and say everything is subjective.

Our work suggests otherwise: [https://blog.gitprime.com/check-in-frequency- and-codebase-im...](https://blog.gitprime.com/check-in-frequency-and-codebase- impact-the-surprising-correlation/)

<comment><USER5> If you use a metric like that to affect my pay, I will happily maximize the metric to ensure I get paid as much as possible.

As a bonus for you, I will also try to write good code.

<comment><USER6> So true! I have yet to see a metric that wasn't gamed somehow, even by people who are generally honest and upright otherwise.

If you base someone's livelihood on a number, expect them to attempt to maximize that number, probably at the expense of other numbers that you may or may not be considering.

</comment></comment></comment></comment><comment><USER7> At GitLab we have the following criteria to be a senior:

Senior Developers are experienced developers who meet the following criteria:

Are able to write modular, well-tested, and maintainable code

Know a domain really well and radiate that knowledge

Begins to show architectural perspective

Leads the design for medium to large projects with feedback

from other engineers

Leaves code in substantially better shape than before

Fixes bugs/regressions quickly

Monitors overall code quality/build failures

Creates test plans

Provides thorough and timely code feedback for peers

Able to communicate clearly on technical topics

Keeps issues up-to-date with progress

Helps guide other merge requests to completion

Helps with recruiting

[https://about.gitlab.com/jobs/developer/](https://about.gitlab.com/jobs/developer/)

<comment><USER8> Every team has their own criteria and their own definitions, but I have to say that this is the level I attribute to an intermediate developer. Similar to the original article - If I leave this developer alone to do their work, they will get it done. Honestly, I want every single developer on my team to be at this level. It takes time to get there, but not an inordinate amount of time in my experience. Somewhere between 2-7 years, anyway. If someone doesn't get there in 7 years, then I see it as a pretty big problem.

If you think that my estimate is not totally out of whack, that leaves all people with a 4 year degree hitting this level before they are 30 (assuming they start out in this field).

If this is "senior", in what way do you expect your employees to improve in the next 35 years of their career (assuming they retire at 65)? And what title would _that_ have?

<comment><USER9> they're cloning github. it isn't rocket surgery. most of the hard technical work was done by github itself, when they built and released libgit and the other core pieces of their stack.

in many ways, that's the whole problem with this conversation: coding doesn't have much room for professional advancement, because 99% of the available work can be done by inexperienced kids.

<comment><USER10> I know you are trolling but for the sake of educating both you and someone not acquainted with Gitlab, they offer:

* CI/CD * Docker Registry * Testing Pipeline * Self hosting option * I'm sure there's more

So I don't think you are being fair here.

PS: I'm not affiliated in any way with Gitlab, just an user

<comment><USER11> I'm not sure he's trolling. For the sake of discussion, are the features you mentioned actually "hard technical work" or is it just work that can be done by anyone with some experience in that field? I'm not sure how to define "hard technical work" but I would say that it has more to do with the rarity of people capable of solving a problem rather than the time it takes to solve it. That's not to say Gitlab's work doesn't have value, the only question being if it really falls under the "hard problems" category.

<comment><USER9> I am definitely not trolling. I'm stating an defensible opinion that happens to be unpopular here.

Arguing that an open-source project is cloning _multiple_ pre-existing projects doesn't make the software any more innovative.

</comment></comment></comment></comment></comment></comment><comment><USER12> I like the table that 18F uses to distinguish between the federal pay scale levels[0]. I.e. Comparisons like

> Your supervisor reviews your work from an overall standpoint to ensure its > effectiveness in meeting requirements

Vs.

> The results of your work are considered technically authoritative and can be > used to establish best practices

0: [https://pages.18f.gov/joining-18f/pay- grades/](https://pages.18f.gov/joining-18f/pay-grades/)

<comment><USER13> There were similar tables at a large german corporation I worked for. These were basically agreed upon with the worker union for the different job levels. On paper it sounded good, because there seemed to be an exact definition on what the pay grade for the given job tasks should be.

However in reality nobody cared about this official tables. People were just promoted when there was money to promote anyone and when there was noone in line waiting for a promotion in front of them.

</comment></comment><comment><USER14> Junior Dev: knows how to do stuff ... in a way, kinda. Hopefully asks a lot of questions.

Mid. Dev: Knows Best Practices and how to implement them. Knows what questions to ask.

Experienced Dev: Understands why best practices are best practices. Can give insightfull answers.

Senior Dev: Pushes the boundaries of best practices and when to ignore them. Questions him/herself a lot.

And then there are D. Knuth level developers which I still have to figure out.

<comment><USER15> This is my current view as well, I just add tests to it.

Junior: doesn't know how to create tests for their code

Mid: Creates the tests but leaves some important parts untested or tests have bad practices.

Experienced: Creates the right tests but might overdo.

Senior: Tests only the stuff that matters and knows when it's not worth it.

</comment></comment><comment><USER16> I'm dealing with something similar to what the article talks about. I've been with my company for 3 years. I wa shired as a "new college hire." I am ~6 years older than a typical grad and had worked in the industry prior to joining my company.

Ever the course of my time I've:

1\. Learned C# in order to rewrite an app I wrote in Java 2\. Self-organized a team to implement a UI in HTML/CSS using a JavaScript tool I wrote myself that allowed different team members to work on components a layout and have the partials dynamically reconstructed. 3\. wrote a connection pool class in C# from scratch that has been in production for 2 years without a hiccup.

The list goes on. I suppose I've been rewarded by my manager with substantial raises and he always says he notices my work but in 3 years the only responsibility I've had was when I took it on myself to bring coworkers together to implement the UI (which we delivered in 2 weeks as opposed to the 3 months they had blocked for it).

Am I wrong to feel slighted when far less capable people have been promoted to leadership positions? My boss does stuff like take me to events where I'll meet big wigs, but I don't care about that stuff. I just want to be in charge of producing good, maintainable code.

<comment><USER17> > Am I wrong to feel slighted when far less capable people have been promoted > to leadership positions?

Does your boss _know_ you're interested in a leadership role?

It sounds like you should have a 1 to 1 chat with your boss to express an interest in leadership roles and to ask what you can do in their eyes to demonstrate that readiness.

I would also ask yourself what specifically makes the other person less capable? Speaking personally, I've found that sometimes someone will be promoted due to better soft-skills and/or project management even though their technical skills may be below their peers IMO, which in hindsight can - <USER2> not always does - make sense for a management role.

It could be as simple as a misunderstanding where your boss thinks you're more interested in technical-path career advancement instead of a management-path career advancement. Since you mentioned that your boss is trying to acknowledge your work by inviting you out hobnobbing with big-wigs, this seems plausible.

</comment></comment><comment><USER18> > You follow your gut. The problem is that this approach can be prone to > favouritism.

What's wrong with favouritism ? If a person does his job well and helps you (the manager) do your job better AND you get along well - that's the silver bullet right there.

Like it or not, this is how groups of humans tend to coagulate. All the other considerations are secondary.

Promote the ones you personally like (avoid idiots of course). This how you build a 'gang' of friends and you get promoted yourself.

"Moral Mazes" is a great book which explains the nitty gritty details of corporate power structures (warning: I quit my job after I read this book!). It all boils down to personal relationship between people in an organisation. Technical skills and everything else are complementary but not mandatory (except geniuses - maybe in 0.1% of the cases).

"Corporate confidential" is another interesting book, which is more about the HR side of things, but it also gives some pointers about how teams are assembled

<comment><USER19> > _What 's wrong with favouritism_

Because "guy I like" isn't a meaningful qualification for a senior engineer. I like everyone on my team. They're not all senior engineers, and I wouldn't promote them all even if I could.

If you promote someone to senior just because you like them, not only are you doing a disservice to the company, you're doing a disservice to the engineer, because at some point you won't be their manager and they'll find themselves failing to actually work at a senior level.

> * If a person does his job well and helps you (the manager) do your job > better AND you get along well - that's the silver bullet right there.*

If a person does his job well and helps you do your job better, whether you want to hang out with them seems pretty irrelevant. There is real value in interpersonal/social skills, but that's not at all the same as wanting buddies on your team. If you've got someone on your team that you _don 't_ like, but they do great work and work well with the rest of the team, they should be up for promotion before the person you do like who does mediocre work or doesn't work well with the rest of the team. Being a manager isn't about your personal wants.

</comment></comment><comment><USER20> Anyone with 5+ years of writing production code should be a Senior Software developer.

Then obviously you can say he is an average developer or a very good developer or a genius or whatever. I don't really get why developers should have different qualifications than other fields.

If you are working e.g in finance for more than 5 years you'll be prolly a senior something, what does it matter? Of course then someone can evaluate how good you are or not at what you do but thats it.

Now what makes a senior developer? Well someone that can take on a project and complete it from start to finish, for me is a senior developer or developer or whatever you wanna call it. Its very vague question, usually if you understand the whole lifecycle of a program and can understand the bigger picture then you are a senior software developer.

<comment><USER21> A lot of people in finance spend their entire life doing the same work over and over. Same goes for programming. There is more to work than years of experience. Though no doubt there is a correlation, not everyone gets better with age.

</comment></comment><comment><USER22> > _The other problem with checklists is that they only work well if you have > quantifiable metrics for being a senior developer._

Checklists can combine qualitative and quantitative data in this scenario too: when judging the experience of a developer, you can incorporate how many times someone has displayed a quality in your checklist.

I really like Matt Briggs' take on senior developers: [http://mattbriggs.net/blog/2015/06/01/the-role-of-a- senior-d...](http://mattbriggs.net/blog/2015/06/01/the-role-of-a-senior- developer/)

Once you get a good feel for what qualities you're looking for, you can measure how many times someone displays those qualities. When you're hiring, you're depending on the interviewee to show they've demonstrated those qualities; when someone's been at your company for a while, you might depend on their team members to confirm whether they're showing the qualities you're looking for.

I think the article is right in saying that it's mostly subjective, but that doesn't mean you can't break up those subjective feelings into smaller parts to judge them better.

</comment><comment><USER23> TLDR: "To me, what makes a senior developer is when you can trust them to get things done without you."

This is a good conclusion. I've seen people write some amazing code, implement innovative solutions and build something really solid, but they simply can't take the customer's requirements and run with them. I have to explain every single requirement in great detail.

<comment><USER24> That's the definition my work uses.

A critical differentiator is understanding not only the technical side of things but the business and politics of getting a project completed.

In essence a junior can give you a widget, an intermediate can give you an application and a senior can give you a satisfied customer.

</comment></comment><comment><USER25> An intermediate developer knows how to abstract things.

A senior knows when not to.

<comment><USER26> :) what about principal developers.

<comment><USER27> They build frameworks. ;)

<comment><USER28> And they also know when not to build frameworks :-)

<comment><USER29> Principal devs are about scope, too. So they convince other people not to build frameworks.

"What are you doing? Stop stress-testing your interface compiler and write some code!" :-)

</comment></comment></comment></comment></comment><comment><USER30> moving beyond entry-level is about learning to do your job without any handholding. this usually doesn't take that long.

but any title progression beyond that depends on getting good at navigating the politics of your work environment. you won't get far without people skills. banks actually do a good job of mapping out what this looks like for analysts coming in, in terms of leadership skills etc expected for different titles. technical organizations, however, tend to leave their staff in the dark about this sort of thing -- which is a political move in itself, i suppose.

<comment><USER31> Can you elaborate on what titles at banks you're referring to, and what sort of skills are generally expected for them?

<comment><USER32> I don't recall the titles, but I remember at a bank recruiting event at my college they basically laid out the career tracks and were upfront about how you needed to quack to reach them.

In informal settings, they also talked about other things as well. If you're driving a civic, you will not be a VP.

</comment></comment></comment><comment><USER33> I became senior developer when my financial expectations didn't fit into regular developer salary bracket at the company that wanted to hire me.

No one has offered me lower position ever since.

<comment><USER34> That is a very honest answer and rings very true.

</comment></comment><comment><USER35> The sombrero indicates a senior developer.

<comment><USER36> That would be a señor developer.

</comment></comment><comment><USER34> Only if "Senior Software Developer" meant something that is universally acceptable. In our organization we had a Program Manager who was responsible for 9 large projects each with several sub-projects. His job was to ensure they all these projects co-ordinate properly, have sufficient resources and provide leadership to ensure we eventually have a good cohesive product suite (thus the Program). Then I met a 20 something kid on flight who was a Program Manager for Microsoft. He organized campus recruitments or something like that.

I am small organization. We upgrade titles of our developers almost every 2 years of their service. Why ? Because firstly they all are good and we want them to stay. Also, if they want to go someplace else we want them to find a better position instead of starting bottom up again. If a person does not get an upgraded title we would like such person to actually leave our organization and find a better fit instead.

If a person is working 2 years and has not evolved significantly in your organization you are probably running a bad work environment. Asking such developers to show "Architectural perspective" and "communicate effectively the technical aspect" is all BS-talk. These developers are not going to work for 10 years for you, they are going to leave for some other place. There is a good chance you are losing many good capable people because of this.

</comment><comment><USER37> These modifiers are always a touchy point with me. They aren't applied consistently and imply greater experience and ability, when they often signify time spent at a company or political acumen. Over my 15 years in engineering, I've seen several engineers without senior or lead titles who provide more value than those with the modifier.

I prefer "staff engineer" for engineers who are capable of producing useful, working systems with a team. "Lead" should not be a modifier to a title, just an indicator who makes final technical decisions on a team.

On my resume I only have "software engineer." If I have to negotiate a higher salary after an offer, I point to my accomplishments and not my title.

<comment><USER38> At my last job, my title was "Vice President" (against my preference). There were five of us. I was Vice President over nobody, and spent all my time doing the same things I do (programming computers) at my current job with the title "software architect". If titles didn't used to be meaningless, startup culture has rendered them so.

</comment></comment><comment><USER39> \- Someone that can get hard things done and ship, preferably multiple times.

\- Someone that can build products that run after ship and be maintained.

\- Someone that can take something from start to finish and make it better.

\- Someone that also knows about business and product side and that is the ultimate product not just the tech.

\- Someone that has been developing long enough to know that good ideas and input/feedback come from customers, team members and stakeholders.

</comment><comment><USER40> Ability to weigh non-technical factors in technical decisions, such as time cost, cost of technical debt, potential risk and business need.

And the critical skill to go along with all of that is the ability to communicate those factors to different groups of people as needed.

</comment><comment><USER41> The article fails to address the fundamental question: What is the purpose of the title? Without answering that, any definition of what makes a senior developer is meaningless.

In my own experience, having worked in consulting, the answer to the question is that the title enables the company to charge a higher hourly rate for a particular developer, with the client's understanding that this developer's time will be worth more, because she is more experienced. If the client insists that a project should include a certain number of "senior developers", and if the consultancy is short that amount, then magically the most experienced junior developers will find the title bestowed upon them.

Outside of consulting, I have a hard time seeing any legitimate purpose to the title, unless it is formally attached to a bump in salary.

</comment><comment><USER42> Look for the gray hair and the world-weary look in their eyes.

</comment><comment><USER43> This post self-admittedly fumbles as do many efforts at trying to tackle this question. The question is wrong: What makes a Senior Software Dev? That's a _title_ , subject to the vagaries, needs, politics, and culture of a specific business or organization.

We can and should be more precise. The real question is, what are the professional skill sets? And what do they look like at varying levels of competency?

This post reminds me of the famous Joel Spolsky post from over a decade ago where he says the Senior Engineer is one who (1) is smart; and (2) gets things done. That's all you need is the gist. But these should be the table stakes, not the criteria. There's a whole bunch of acquired skills that are missing in these kind of answers.

It's pretty easy to be smart and get things done. It takes years of practice to not make a mess of your work. To not build a money pit of a house whose plumbing is leaking behind the walls, whose structure is buckling. But the market is so short on these kind of professionals with real skills that we feel lucky if we've found one who meets this paltry criteria of smart, gets shit done, makes me not stress when I go on vacation...

</comment><comment><USER44> A senior developer doesn't even have to be a great programmer. They need to be good of course; they need to write code that works and is suitable for production, but I've heard of plenty of excellent, talented coders who can solve complex problems and rapidly stamp out a prototype, but can't finish the job, and end up with badly tested, hard to maintain code that still needs someone else to finish up the loose ends.

On the other hand, a friend of mine recently retrained to become a programmer, joined a startup where he's clearly the least experienced programmer, but he is now their lead developer, because he has the right attitude. He's honest (unlike their previous lead who left a mess) and he listens to to and learns from other developers, and he can make sure the code is actually finished in a way that doesn't fall apart when the customer pokes at it. He may not be the fastest or most knowledgeable, but he does deliver what's needed, and ultimately, that's what counts.

</comment><comment><USER45> I got promoted _en passant_ in my first job, three months after graduating. My employer was putting together a consultancy proposal including a list of team members and decided to inflate our seniority...

<comment><USER46> I worked at a place where the developers were all underpaid (due to it being a 'startup', and there being the promise of more down the line...). When annual reviews came round (after the company posted strong profits), nobody got their raises, and promptly handed in their notices. In an attempt to scramble to save the company, management agreed to bring them up to much more reasonable salaries, but could only do so with a promotion - since the payrise was too big for the board to approve without one. So everyone in the company became a senior developer at once...

</comment></comment><comment><USER47> Not a huge fan of the blog post as it left things in a nebulous state.

The thought of a senior person being someone who finishes tasks on his/her own time seems like a bad metric in the world of pair programming. As a senior developer, I prefer to get input from all of my coworkers rather than work alone. Two or more minds is always better than one, no matter how senior you are.

The thought of someone taking on more responsibilities than the rest also seems like a bad metric. A junior person has the potential to do just as much as a senior person. It can also create an environment where you are encouraged to work hard and not smart.

In software engineering, there is always 10+ ways to solve a problem, but there is typically only one or two actual correct solutions. I like to think of a senior person as the person who can evaluate all the options quickly and chooses the right one. This is a skill that takes a lot of experience to master.

</comment><comment><USER48> I have always worked along the lines of most people here and the article. A Senior Developer is one that has amassed not only solid development experience across multiple projects but also has a solid knowledge of your product code base. Someone that can just get stuff done and leads by example. Applies best practices and is pragmatic and always add's value to the code base.

I agree that titles are handed out too easily however, developers are partly to blame here. I have held numerous titles over my career but they are meaningless. Experience is built over years for learning and applying your trade and for those that want to continue doing that where do they go after "senior"? If developer's were not so desperate for the title then this discussion and the questions being raised would be moot and we'd all be back coding.

<comment><USER49> I read a great article a few months ago talking about how success as a developer could be looked at from a more wholistic POV which I agree with quite a lot these days.

It breaks down the "title" mentality into smaller responsibilities across three areas: _Technical Skills_ , _Leadership_ and _Community Involvement_. You can fairly easily isolate what _your_ company values from employees in these three groups and measure any individuals performance inside each group to weigh them accordingly. I think it would work very well with peer-review processes as well.

[http://frontside.io/blog/2016/07/07/the-conjoined- triangles-...](http://frontside.io/blog/2016/07/07/the-conjoined-triangles-of- senior-level-development.html)

<comment><USER48> That is a very interesting article.

</comment></comment></comment><comment><USER50> A couple metrics I've come to look for in seniors:

\- knows when to push back on stakeholders/management, especially on technology decisions

\- knows when to adhere to industry best practices, and when to ignore it because it doesn't apply to the domain/problem at hand

\- fights, strongly, against cargo-cult programming

\- actively seeks to improve the knowledge and skills of his/her team members

\- delivers solid, reliable, working code that can be trusted to work when they say it works

\- is able to work effectively with peers who they disagree with

Promoting anyone to the senior title when they aren't remotely close to the bar is damaging to the team and to the company overall. It's especially damaging since if you promote the wrong seniors, they will effectively put a lock on the capabilities of your team, preventing team members they disagree with from achieving the same title, leading to a talent drain.

</comment><comment><USER51> How do you buy a car? Do you look at fact sheets and compare, and choose the one that has the list that fits your interests best?

I hope not.

I buy cars talking to people who own that car. I read reviews. I test drive it multiple times. I do check the facts sheet, of course, but them I go and see if it's accurate.

And then I compare. Most cars are identical on the surface, but there are details - this one has a softer clutch, that one looks better (to my taste), and that other is said to do wonderful mileage.

I usually end up ranking them, and if they tie, I go for the cheaper one.

That's how you promote people. You take a few, compare them extensively (talking to others, checking facts, "test driving") and choose the one you feel it's the best.

So far, so good. The missing point here is WHY promote people. The author seems to forget about that.

</comment><comment><USER52> For us, a Senior Software Engineer is someone who can finish tasks on his own and on time, and make good architectural decisions for his tasks.

<comment><USER53> I think you mean 'their'

<comment><USER54> I think 'one' would be better than 'their' as one is undoubtedly singular, where 'their' hints at being plural.

The entire sentence could be rewritten to use 'their', but I think simply swapping our 'his' with 'their' could change what is being said.

</comment></comment></comment><comment><USER55> They'll tell you.

<comment><USER56> Bingo.

</comment></comment><comment><USER57> The common thing i can see about seniors developers are the length of his code.

A junior developer doesnt divide too much his code, repeat himself, the avg length of his code is high, etc.

A semi-senior developer knows how to divide his code, have a good analysis and design, knows some common patterns, try to have good practices, and repeat himself a little. (Sometimes takes bad decisions trying to not repeat without sawing his design) Normally have some methods with too much lines of code but not too much.

Seniors developers are embrace testing a lot, even test his tests (mutation testing), are carefull about decisions who impact on architecture, and the average of the lenght of his code is between 5 and 8 lines of code (and always simply readable). Cares a lot of dependencies and really knows how to use all of his tools. Specially when talking about refagtorings. Normally, they loved the job/books of some of these guys: Robert Martin (uncle Bob), Sandi Metz, Kent Beck, Martin Fowler, The Gang of Four, Alistair Cockburn and/or Alan Key.

Of course this seems a bit qualitative too, but its like a pattern i noticed.

Anyway, the preferred method here is: Developers categorize others. Between a team, or a company.

</comment><comment><USER58> It's a meaningless term. Senior implies 'qualified' which is not an end-state. Developers are always learning, our journey does not end.

</comment><comment><USER59> As always it depends on the organization or team.

I have worked on teams where the title was nothing more than a title and didn't relate to their skill level or work ethic.

One of my favorite posts on the subject comes from John Allspaw: [http://www.kitchensoap.com/2012/10/25/on-being-a-senior- engi...](http://www.kitchensoap.com/2012/10/25/on-being-a-senior-engineer/)

An important part of the equation is a companies engineering structure. Camille Fournier has a great set of slides about creating structure earlier rather than later and why it is needed: [http://www.slideshare.net/CamilleFournier1/how-to-go-from- st...](http://www.slideshare.net/CamilleFournier1/how-to-go-from- structureless-to-structured-without-losing-your-vibe)

</comment><comment><USER60> For me it's pretty straightforward:

Dev 0 - For companies that hire college graduates. A developer fresh out of college who has a lot of theoretical knowledge but not practical knowledge. They might still be learning the tools of a professional software developer (source control, testing suites, the debugger, building and deploying environments, etc), technologies (Linq for .Net, Angular for a web dev, etc), techniques (dependency injection, how to write clean code, the value of good logging, etc.), and/or how to operate in a professional environment (stand- ups, interacting with coworkers, dealing with having a manager, etc.)

Junior Dev - I expect you to have learned the things listed above. You should be proficient in the language or framework. You should understand the software development process and reliably write "good" code. Meaning correct, efficient, simple, readable, and maintainable. Junior developers are still learning design, architecture, domain knowledge, and when to break "the rules".

Senior Dev - The best way I can explain what I look for is, "I can give them any assignment and trust they'll get it done, well, with little to no help from me." Set it and forget it. Domain knowledge is underrated as a skill but it's a super important one. A senior developer should know the 'gotchya's of the particular type of software you make. (If you make billing software they should have a cursory knowledge of accounting as well as compliance issues). The code they write should account for not only the particular module they're working in but the system as a whole. It will follow best design patterns, fit inside of our architecture, but won't be so dogmatic that it sacrifices performance or maintainability. You should be able to stay in the senior role for the rest of your career if you want.

\----

As concisely as I can put it: new hires will as you how to do something. You'll need to ask junior devs, "have you considered..." Senior devs you don't need to think about at all.

\----

Careers diverge after the senior dev level depending on your preferences. If you want to stay pure technical and just write code all day some companies offer an independent contributor or technical expert role. If you really like the design and framework aspect of software you can move into an architecture position. If you want to explore management you can move onto technical lead which is a pseudo-management position.

</comment><comment><USER61> The question "What Makes a Senior Software Developer?" would only make sense given the context of what grades of engineers are present in a company. The definition will be different for a company with just 3 levels compared to one with 6 levels. I side with more levels. This is because, while we may argue that a "senior" engineer should have these 10 qualities, an engineer with 6 of those qualities is still better than one with just 2 of those qualities. So it makes sense to have the engineer with 6 qualities at a higher level than one with 2 of those qualities.

The question then becomes what are these N traits of a good engineer. The whole process of promotion and "senior"ity is irrelevant to that discussion. And I think most people here would already agree on those traits.

<comment><USER62> >would only make sense given the context of what grades of engineers are present in a company

I'm at a major bank and the senior and principal title gets used a lot for devs that are clearly in junior or mid level roles.

<comment><USER63> I couldn't agree more with this statement. I contract for numerous banks and find myself dealing with many "senior developers" who clearly have no idea what they're doing. It seems to be more of an ego thing as opposed to a capability bettering. I even have a "senior developer" who currently sits right next to me who falls under this "problem group".

<comment><USER62> I hope that's not me...I have a senior title and I _know_ I am not at a senior level.

</comment></comment></comment></comment><comment><USER64> I disagree with the article. Perhaps I'm too strict of a grader, but a developer who meets the qualitative criterion here--essentially, a developer you don't have to manage much--is not yet a senior developer. She is on her way, but to me the distinguishing factor is the extent to which the developer can mentor junior developers.

If a developer meets the criterion of TFA, then she helps her manager grow the team linearly, as the manager can then focus more on others. But if a developer can effectively mentor junior developers, then the team can scale. This is not to say that a senior developer must be a "manager", but a senior developer not only understands the importance of craft and can practice it, she helps apprentices appreciate the craft as well.

</comment><comment><USER65> The definitions will vary, and imho even having these titles is useless. If you don't know who is senior without having to print it on business cards you are in trouble. To me being a senior developer means, when faced with a hard problem I prefer to

\- not solve the hard problem. Make it go away instead. \- buy an existing solution to the hard problem. \- make a simple solution to part of the hard problem

Making a "simple solution to the whole hard problem" is of course the end game, but most of us never reach that level. Seniority is basically just a measure of battle scars and cynicism ("experience" also a nicer ring than aggregated cynicism).

</comment><comment><USER66> I always use the simple rule: Senior means you can finish a complex task on your own, without being told how to solve it.

Of course, now we have to define "complex", but the salient part is being able to work independently.

<comment><USER67> One small addition: you _can_ do all the work on your own if you have to.

But you also know how to delegate it to a team to get it finished more quickly. And how to keep the team on track so technical debt is minimised, while reliability and user usefulness are optimised.

Really, there are two definitions and two different skill sets.

One is "competent experienced professional developer". The other is "competent manager of other developers."

</comment></comment><comment><USER68> Similar discussion from a couple of months ago: [https://news.ycombinator.com/item?id=12603303](https://news.ycombinator.com/item?id=12603303)

</comment><comment><USER69> The programmer competency matrix:

[http://sijinjoseph.com/programmer-competency- matrix/](http://sijinjoseph.com/programmer-competency-matrix/)

<comment><USER70> As worthless as any. How do you apply it? Which items are arbitrary and which are necessary?

</comment></comment><comment><USER71> I use several levels for my team (1 is a new grad, 3 is somewhat experienced, 5 is senior, 7 is principal.) When evaluating someone, I rate them on 4 competencies (which depend on the exact role.) If they're currently being paid at level n, but the average of their competencies is >= n+1, I recommend a raise.

This approach still involves some subjectivity, but I find that it avoids many of the problems, such as not properly rewarding people who are fantastic on a few dimensions and weak on others.

<comment><USER72> I think it would depend on what those competencies are. Is it possible to be a 7 in two, and 2 in two? Because then by your criteria they'd not even be senior, even though in half the specified areas they are the best you could have.

<comment><USER71> That's theoretically possible, but in practice the biggest gap I've seen is when someone was a 6 in one and 3 in another.

I work at a startup though, where I need everyone on the team to be something of a generalist. If I was working at a larger company that benefited more from specialists, I would use a different scheme, e.g. dropping the lowest score or something.

<comment><USER72> Do you think that might be self selection bias then? You might be able to benefit from one or two specialists, but if you even make them an offer, it's as a 4 (or whatever), but another company might be willing to make them an offer as a 6 or a 7, because they have a place for specialists. Not that that's necessarily a problem if you do indeed need generalists, just an interesting possibility to think about if you ever find yourself needing specialists.

<comment><USER71> I use this framework for giving raises/promotions/feedback to existing employees, not for new hires. With actual employees you have a lot more information, so I believe companies should generally hire cautiously but give promotions and raises aggressively (most do the opposite IMO.)

I did actually have a case similar to one you described, where someone was a very advanced specialist in a narrow area, and relatively weak in others. I was willing to make him an offer at a 5, another company hired him at a 7. I think that was the best outcome.

In another, less extreme case, we used to have one "data scientist" role. We found that this required too much breadth, and people with the same role ended up doing very different things. So I've advocated for separate "data analyst" and "data scientist" roles, each with their own set of 4 competencies.

</comment></comment></comment></comment></comment><comment><USER73> I've recently been looking into this topic. Sales teams have fairly straight forward metrics for measuring performance as they can track calls made, revenue, etc...

Developer performance metrics are not as immediately obvious. Can anyone suggest some reading on the topic? I'd love to know how managers are tracking developer performance.

</comment><comment><USER74> It means you need know how to architect, integrate and hack/debug/write/patch whatever software, in the meantime you also need to do bitwise and shift of integers, balanced binary tree algorithm algorithms fast. The former you need for the real work, the latter you need for interview. You need cover both ends.

</comment><comment><USER75> Could someone lay out what is, and the difference between a junior(beginner) and an intermediate developer?

<comment><USER26> I would say if the programmer can show progression in coding, design and independently working on modules they can move up the junior, intermediate, senior ... ladder

<comment><USER75> Then knowing algorithms and data structures would be intermediate -> senior?

<comment><USER76> Algorithms and data structures are correlated but not causal.

Do they build things that work well and are easy to maintain and scale?

Rookies tend to make, well... rookie mistakes. N + 1 problems, O(n^2) algorithms, etc tend to creep in. This could be as simple as a missing index in the database.

Intermediate avoid the rookie mistakes, but design for the problem at hand. Their foresight is either lacking or they overbuild. Either way, new requirements often lead to being painted into a corner.

Senior developers try to minimize regret. They don't build unnecessary features, but they keep future requirements in mind.

This isn't an exhaustive description, but I feel it underscores why data structure and algorithms matter. Persistent data is probably the hardest to adapt to new requirements. Knowing how to structure data so that it can be accessed properly is a huge part of the difference.

<comment><USER75> Thanks. I was wondering at what level I could be considered. I'm still a rookie :)

> but design for the problem at hand.

Could you elaborate on that part?

<comment><USER76> Suppose I need to track whether items are in a processed or unprocessed state.

The intermediate developer would create a boolean field on the item, allow constant time lookup on that flag so we can easily fetch all unprocessed items.

A Senior developer would recognize a few core assumptions that would make the boolean field a problem. (1) It assumes there are only 2 possible states (2) It assumes that an item will only have one state at a given time. They would seek out ways to relax those assumptions without increasing complexity. They would likely use an Enum with two states rather than a Processed boolean. That would remove the first assumption with an almost negligible cost. As far as the second assumption, they might decide the cost of removing that assumption is too high compared to the likelihood of it mattering.

A month later, we have to track which items are assigned for processing. The intermediate engineer has to invalidate a previous assumption and convert the field from boolean to enum. The senior engineer just adds an enum.

A month after that, we find out we need to track multiple assignments. Both engineers have a lot of work to do (you can't win them all).

That's the difference I frequently see. Senior engineers can see problems down the road and recognize their implicit constraints. They aren't always right, but more often than you'd expect some decision they made pays off.

<comment><USER70> A senior developer would also know to not use an enum instead of boolean when not useful and just wasting performance. (because Java and C# make you pay a lot for abstractions you don't use)

What you described is an intermediate programmer trap. A senior programmer would make a design easy to refactor if such a change is needed, but not pay the unnecessary cost up front.

<comment><USER76> First, it's hard to come up with useful examples on command. :)

Second, I was thinking more at the data persistence level. Which is harder to change than a simple refactor, and depending on the data store has zero cost (for example in MySQL booleans are just ints). They might then treat it as a boolean on the application side if there are indeed costs there.

Either way, a Senior programmer has that conversation and recognizes the potential costs down the line. Then makes decisions about the tradeoffs.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER77> Sorry for off topic, but this text is illegibly huge. It reads nicely after zooming out until 50%, or at least 67% (though that's still a bit big). I think 55% or so is close to the text size that my task bar, tabs and hacker news also uses.

</comment><comment><USER78> Another essay answering the same question: [https://hackernoon.com/senior- engineers-reduce-risk-5ab2adc1...](https://hackernoon.com/senior-engineers- reduce-risk-5ab2adc13c97#.oebwciiom)

</comment><comment><USER79> To me, the chain from developer to senior to lead to principal etc is mostly driven by the desire to change from being "reactive" to "proactive" and offloading other people (higher and parallel etc) in the chain.

</comment><comment><USER80> Nobody wants junior engineers (or: get "senior" in your title as soon as possible):

[https://www.youtube.com/watch?v=ccxrFmIEAmQ](https://www.youtube.com/watch?v=ccxrFmIEAmQ)

</comment><comment><USER81> A senior software developer is one thing.

A person that voluntarily and passionately stands in front of a project to ensure its success and has the capability to do so.

</comment><comment><USER82> In my area it's 10 years of experience and can lead a team or you work like you've had 10 years of experience and can lead a team.

</comment><comment><USER83> I really like the "Software Inc." simulation's approach. Looks awfully lot like real life, although it's a game.

</comment><comment><USER84> If my current employer is anything to go by, absolutely nothing - at least, nothing that differentiates them from junior devs.

</comment><comment><USER85> When they understand the difference between software engineering and software development.

A senior software developer understands what it means to scale and align software engineers, as a unit or team. This along with understanding that the code is not what matters but rather what the algorithmic design, innovation, invention or discovery that can be done with a particular language or code (or notation in mathematics or music).

<comment><USER86> That sounds more like the difference between an engineer and a developer.

</comment></comment><comment><USER87> 0\. someone who stands up to management.

</comment><comment><USER88> Ideally real experience, but often just longetivity.

Competence and good communication skills assumed.

</comment><comment><USER89> Senior by definition means older person. I might be wrong but in other than software industry Senior usually means 20+ years experience from the field? I think person than is valuable for development perhaps should be called something else if s/he is young?

</comment><comment><USER90> I have already made the mistake you are about to make.

</comment><comment><USER91> it depends

</comment><comment><USER92>
      because 99% of the available work can be done by
      inexperienced kids.

Now spend some time thinking about the qualifications necessary for commenting and where you stand in that field, and what's the difference between what you produced and what a Senior Commenter would produce.

<comment><USER9> Are you seriously suggesting that a senior person wouldn't use the words "inexperienced kids" to describe inexperienced kids? Or are you just trying to make a low-brow insult look intellectual?

Come on. Being "senior" doesn't mean that you start blowing smoke to please random strangers.

<comment><USER92> I am seriously suggesting that a Senior Commenter would produce more intelligent and more enjoyable content compared to the no-effort nonsense you managed to come up with.

Have a nice day.

<comment><USER93> This sort of uncivil comment will get your account banned on HN, so please post civilly and substantively from now on.

<comment><USER92> Don't pester good contributors like me needlessly with childish and useless threats (my comment history is open for all to see). You can tell that to the OP (as you already did). My reply is not "uncivil" but perfectly appropriate, and my comment history suggests you are doing yourself no favor indiscriminately throwing ban-warnings around.

<comment><USER93> No doubt most of your comments have been fine, but "the no-effort nonsense you managed to come up with" was a breach of HN's civility rule. The commenter you were replying to broke the rule too, but under such conditions we need to be _more_ civil, not less, to avoid a downward spiral.

</comment></comment></comment></comment></comment></comment><comment><USER94> I'm going to take a different tack: a senior developer is a developer with enough experience that if you subject her to the bullshit processes that work on lower-level developers --- things like scrums, status updates, architecture reviews, and other command-and-control measures --- she either performs badly or quits.

Developer seniority is developer autonomy, and autonomy must be matched to skill level and scope.

</comment><comment><USER63> I have found it to be often nothing more than just a title unfortunately. So many developers I work with have the 'senior' title but struggle to do actual development, often spending most of their time talking or 'pair programming' which has completely put me off the concept as they hide behind others helping them all the time but claim they are 'senior' purely because the hiring manager filled that gap. Pathetic.

</comment><comment><USER95> You write less code and debug more code.

</comment><comment><USER96> The answer is simple: a software developer classified as 'senior' by the Government (e.g. age of 65 in Canada) :-)</comment>


Forested Overpasses Allow Animals to Cross Safely Over Highways - <AUTHOR> http://www.ewao.com/a/1-these-forested-overpasses-allow-animals-to-cross-safely-over-highways <comment><USER2> Um, has anyone taken a look at the other stories on this domain?

[http://www.ewao.com/a/1-scientists-prove-our-dna-has- telepat...](http://www.ewao.com/a/1-scientists-prove-our-dna-has-telepathic- abilities) [http://www.ewao.com/a/1-11-reasons-why-the-hollow-earth- actu...](http://www.ewao.com/a/1-11-reasons-why-the-hollow-earth-actually- exists)

</comment><comment><USER3> I took our kids to find one of these ("ecoducts" in the Netherlands) about a half hour drive from where we live. It was fantastic: no sign of humans anywhere except the speeding traffic under us on the motorway; just lots of animal footprints, and a single surveillance camera that I imagine is used to check out the furry users of the bridge rather than for any "security" related tasks.

The kids loved it :) They found it pretty spooky though.

It's very weird standing on what feels like a big hill with grass, sand and trees, knowing the motorway is rushing by under your feet.

<comment><USER4> I bet that's the same experience some people have with an aqueduct - [https://upload.wikimedia.org/wikipedia/commons/d/d8/Ie- akwad...](https://upload.wikimedia.org/wikipedia/commons/d/d8/Ie- akwadukt_01.JPG)

</comment></comment><comment><USER5> Forested overpasses are expensive, and so few will ever be built.

A simple, cheap, and unglamorous solution is to simply put culverts under the highway at regular intervals, open at both ends. Culverts come ready made in all sorts of sizes, just dig a trench cross-ways and drop it in during construction or repaving.

Highways tend to be above grade anyway, so the openings of the culvert can be above grade and it won't fill with water.

Of course, this does not preclude having a fancy forested overpass here and there as well.

</comment><comment><USER6> I still remember when these overpasses were first built, there was a lot of scepticism and animals were initially wary to cross. However it's nice to see how much of a success it's become.

Not too long ago I took the wife's family to Banff, we checked out one of the information buildings, they showed a time-lapse video of the various animals that cross (pretty much every type of large mammal in the park). Was very interesting and nice to see.

<comment><USER7> If I am a meat eating animal like a wolf or something, Do I just have to wait at this bridge to hunt?

</comment></comment><comment><USER8> I have a vision, inspired by this problem, where every major highway is a "forested overpass".

Instead of bisecting the top layer with roads and fences, build all major roads in tunnels, and bring the recovered surface area back to it's original state for all to enjoy.

Availability of suitable habitat for native species is only getting worse. If we blindly follow the path we are on, confrontation and compromise are inevitable, and humans don't typically lose this battle.

It's no surprise city centers and golf courses occupy the most desirable land (valleys along waterways). Southern California especially has a habit of teraforming natural waterways and fencing them to prevent access; it's amazing any water is still available to wild animals.

<comment><USER9> >build all major roads in tunnels, and bring the recovered surface area back to it's original state for all to enjoy.

How deeply have you thought this idea through? What happens in places like Florida where the water table is so high you can't dig deeper than a few feet? How do you manage entrances and exits, how do you make sure there's breathable air down there in case people have to get out of their cars? How do you vent poisonous gases? How do you keep the precious animals you're trying to save from getting in there and getting trapped or run over? What about emergency access? You can't open a gate on a service road and suddenly be underground.

Those are just a couple of simple practical considerations that don't even factor in cost, which would be prohibitive.

<comment><USER8> These are all problems that have been solved. There are many existing solutions for elevating people...

Are you suggesting that it is impossible to build a subway where groundwater exists? [1]

All sizable tunnels have ventilation. While we still run combustion engines, we could capture unburnt fuel vapor and use it. With electric vehicles the capacities needed are much lower.

> How do you keep the precious animals you're trying to save from getting in > there and getting trapped or run over?

Animals will not have a reason to enter if there is not something to be gained. Currently, they are provoked by the need for water and food, which justify the dangerous risks they must take. Living every day as a gatherer with no guaranteed access to water is not something I'm not convinced you have the empathy to understand.

[1] [http://scienceline.org/2010/02/what-would-you-do-with- eight-...](http://scienceline.org/2010/02/what-would-you-do-with-eight- million-gallons-of-water-every-day/)

<comment><USER10> "Are you suggesting that it is impossible to ..."

No, merely expensive. The Gotthard Base Tunnel is US$10.3 billion for "a route length of 57 km (35.4 mi) and a total of 151.84 km (94.3 mi) of tunnels, shafts and passages". (Quoting Wikipedia.) That's $290 million/mile.

The Fehmarn Belt Fixed Link is estimate to cost €4.7 billion for 17.6 km of immersed tunnel, or $480 million/mile.

The boondoggle that is the Alaskan Way Viaduct replacement tunnel is in the same range.

By comparison, a rural interstate road costs about $5 million/mile, or a factor of 50 cheaper.

</comment></comment></comment></comment><comment><USER11> In Grand County, Colorado, where I live, there happens to be a project to build just such an overpass happening right now:

[https://www.codot.gov/projects/sh9wildlife](https://www.codot.gov/projects/sh9wildlife)

[http://denver.cbslocal.com/2015/09/21/cdot-wildlife- overpass...](http://denver.cbslocal.com/2015/09/21/cdot-wildlife- overpassunderpass-work-underway-on-highway-9/)

This stretch of highway is so populated with wildlife that we would often see a handful of new unfortunate strikes every morning, and most everyone around had a story of a near miss or a hit. Underpasses and overpasses are being utilized and a fence runs along both sides to funnel the animals to them.

A fence was put in place along I-70 near us and has been rather effective but there are no underpasses and no overpasses in that implementation. In our area, the wildlife need to travel to the Blue River on one side of the highway for water and back up the mountains on the other side of the highway to graze (and give birth, etc.)

Money was raised not only from government sources but from a local resident pledge drive as well as a very gracious benefactor who owns land in the affected area.

</comment><comment><USER12> People in cities need something similar. It would be hugely beneficial to have a bustling business district lined up on the left and right side of urban freeway crossings.

<comment><USER13> Baltimore has an interesting network of outdoor walkways above street level connecting the inner harbor, convention center, and a few nearby buildings. I have long thought a city could do this for a much larger part of downtown at reasonable expense.

Crystal city VA on the other hand has an underground mall covering well over a mile including a subway stop. The upside is weather becomes irrelevant, but the downside it's a winding path making the surface faster and presumably it costs much more to build and maintain.

<comment><USER12> I'll have to check those out when I go to the area in the future.

In SF there are a few spots where active use occurs underneath freeways. Also, in Taipei I saw a huge marketplace for jade and for flowers underneath freeways.

Freeways cause so many ill social and economic effects on neighborhoods, billions are wasted every year in the big cities on dead space. There should be a huge investment toward restoring the urban fabric and bringing out the full value of neighborhoods around these structures.

</comment></comment></comment><comment><USER14> Wondering how/if they ensure the animals use the bridge rather cross the highway? Fencing? Natural selection (Animals who prefer bridges more likely to pass their genes down)?

<comment><USER15> the ones i have seen have fencing funnels to them, there are gates for humans to cross, but the fence runs from one overpass to the next. the animals have no choice but to use the overpass.

</comment></comment><comment><USER16> These should be mandatory for any new road construction through existing habitats.

Even driving on California's central coast (pretty populated area), you see a lot of roadkill like deer, foxes, bobcats, etc. Very sad and I'm sure not helpful to recovery of some of the species.

</comment><comment><USER17> In Australia, we have a similar bridge but on a much simpler scale - a rope bridge that spans the Hume highway (for animals that need a continuous bridge). For our native animals that glide (but can't fly), poles spaced 30m or so accomplish the same goal.

[http://theconversation.com/mysterious-poles-make-road- crossi...](http://theconversation.com/mysterious-poles-make-road-crossing- easier-for-high-flying-mammals-11323)

<comment><USER18> How about New Zealand?

IIRC I heard that some kiwis actively encourage drivers to run over anything that ventures onto the road, since any medium-sized animal that doesn't have wings is an invasive species in New Zealand. Not sure if it was a joke.

</comment></comment><comment><USER19> You see a similar idea quite often on the north shore of the St. Lawrence in Quebec. Usually they are underpasses, though, and usually combined with a 8-10', very sturdy fence system to funnel the animals into these crossing points and prevent them crossing the highway. Honestly, I think they are more motivated by preventing human fatalities from moose-vehicle collisions, which are exceptionally deadly, primarily, with the ecological concerns secondary.

<comment><USER18> Since a riverside highway is usually several meters above the water level, an underpass offers direct access to water. An overpass, on the other hand, would need to come down steeply on the other side, which is not only inconvenient but also very ugly.

But I've heard that some species don't like to go through tunnels, because predators might lurk in the dark corners (or something like that). So the architecture will have to adapt to the species it is designed for.

</comment></comment><comment><USER20> I'm curious how they are engineering these overpasses to not be slowly torn apart by tree roots, if they even consider that at all.

<comment><USER21> I think this is more a question of planting trees with roots that don't go too deep.

But, even if not - rebuilding them every 15 years might be cheaper than sound engineering for this problem space. After all, they don't have to handle 40 ton trucks or 50 cars at a time.

<comment><USER22> Agreed, but if you REALLY wanted to be sure, you could always put a large sheet of aluminum just above the bottom layer.

<comment><USER23> I thought there were problems with aluminum and plants.

</comment></comment></comment></comment><comment><USER24> In Germany "Grünbrücken", as they are called, are actually quite common. We have over 70 of them (as of June 2014).

<comment><USER25> It is part of the EU regulations to have them in Europe when you build or modernize highways. This is to prevent the isolated islands for animals (at the moment Belgium is the most fractured land in EU).

In France, I even spotted one for bats! [http://france3-regions.francetvinfo.fr/rhone- alpes/2012/11/2...](http://france3-regions.francetvinfo.fr/rhone- alpes/2012/11/21/balbigny-une-passerelle-pour-chauve-souris-au-dessus-de- l-a89-148988.html)

</comment></comment><comment><USER26> We have these in Montana, at least on the Flathead Indian Reservation where I lived until recently. It's a great idea and really helps preventable deaths to elk herds.

Here's a picture (note: the language on that sign is Salish) [http://www.sunnyskyz.com/uploads/2015/01/mpr6e-animal- crossi...](http://www.sunnyskyz.com/uploads/2015/01/mpr6e-animal- crossing4.jpg)

<comment><USER23> Cool. I cannot help but think it would be majorly uncool if the elk decide to fight on it and come down on my car. I passed within 3 ft of an elk on a slippery road during a blizzard in the 90's. Those things are scary dangerous.

</comment></comment><comment><USER27> Here's one that's been up for years on Hwy69 just south of Sudbury, Ontario, Canada: [http://www.sudburyelk.ca/index.php?option=com_content&view=a...](http://www.sudburyelk.ca/index.php?option=com_content&view=article&id=26:hwy-69-overhead- crossing-for-wildlife&catid=4:the-project&Itemid=32)

</comment><comment><USER28> It'll be on the order of $40 million for a big one in Los Angeles (Agoura):

[http://www.latimes.com/local/lanow/la-me-ln-caltrans- propose...](http://www.latimes.com/local/lanow/la-me-ln-caltrans-proposes- wildlife-overpass-on-101-freeway-20150902-story.html)

<comment><USER29> You'd think it would be cheaper just to breed more animals.

</comment></comment><comment><USER30> 1\. Never heard of this website

2\. Labeled as news, but not news

3\. Every ~10th word is an erroneous concatenation of two normal words, like "effecton" or "animalslike"

Conclusion: this is … some sort automated content piracy website?

</comment><comment><USER31> We already have a lot of those in the Netherlands. This is a step in the right direction. Ideally, I would like to see highways surfacing here and there between forests instead of the other way around. I think this is the direction we are heading in though. We are now at a point in time where we can afford to invest in beautifying our environment instead of just manipulating it to suit our needs.

</comment><comment><USER32> This site is frustrating on mobile. Every time I touch the screen to scroll the page, a menu that I don't want slides in to cover the article.

<comment><USER33> Perhaps not a better website for mobile, but I'm pretty sure the pictured crossings are from Banff national park in Alberta and probably more going into BC. You can see pictures and find more information here:

[http://www.pc.gc.ca/eng/pn-np/ab/banff/plan/transport/tch- rt...](http://www.pc.gc.ca/eng/pn-np/ab/banff/plan/transport/tch-rtc/passages- crossings.aspx)

</comment></comment><comment><USER34> The one drawback is that in order to get the animals to go over the overpass, you need to block them from just crossing the road. Some of the highway near Banff has a continuous chain link fence along the roadway. It kind of ruins the view.

</comment><comment><USER35> These seem very similar to the "lids" that are put over freeways in affluent areas around Seattle. They're basically parks; there's little wildlife in urban regions.

</comment><comment><USER36> I am suddenly reminded of this:

[https://www.youtube.com/watch?v=Avo0-8GvBlA](https://www.youtube.com/watch?v=Avo0-8GvBlA)

</comment><comment><USER37> Unfortunately in the US in many places we can't even get adequate paving, so expecting animal overpasses is a bit of a stretch.

</comment><comment><USER38> Very cool. Hopefully other geographies adopt this idea. Also, on a separate note, looks like the site was built with Meteor.

</comment><comment><USER39> I've read a lot about these, as I often drive under one in Montana. They are a tremendous success!

</comment><comment><USER40> I wonder how these will affect the predator/prey balance.

<comment><USER14> Indeed. Predators can just camp out on the bridge waiting waiting for prey. No idea what that means in the bigger picture of balance.

</comment></comment><comment><USER41> If we can't get humans to use crosswalks, how can we expect animals to use these?

</comment><comment><USER42> What a colossal waste of resources.

<comment><USER43> The problem is that Canada chose to route their largest national highway, Trans-Canada Highway 1, right through a National Park. This is just mitigating the downsides of that decision.

<comment><USER34> I'm thinking the national park came after the roadway? Or at least the railroad?

It's not like someone said "Hey, that's a nice national park, let's run a road right through it."</comment></comment></comment>


Apple Dev Portal Coming Back Online - <AUTHOR>

Now online:
Certificates, Identifiers & Profiles iTunes Connect iOS Dev Center Mac Dev Center Software Downloads Safari Dev Center	 Bug Reporter
Still pending:
Member Center Program Enrollment and Renewals Apple Developer Forums Videos Xcode Automatic Configuration Pre-Release Documentation App Store Resource Center Technical Support
Source: https://developer.apple.com/support/system-status/ <comment><USER2> Aleluia !!!

Hey, it's just a takedown. People? well I've to sleep...

If apple were so "cool", now they should have some detail, present, or something with the service users.

Or at a minimal, the corner grocery store, could do that at least.

I think.

</comment><comment><USER3> We @ Diffbot created a Twitter account using our Custom API Toolkit to track the status of individual services: [https://twitter.com/diffbotappledev](https://twitter.com/diffbotappledev)</comment>


How Palm Re-Enabled iTunes Sync - <AUTHOR> http://www.precentral.net/how-palm-re-enabled-itunes-sync

<comment><USER2> I'm still trying to figure out why iTunes only talking to iPod is (according to Palm) any more of a USB agreement violation than Nikon Capture only talking to Nikons, HP printer software only talking to HPs, or any other vendor software/vendor hardware combination that only works with the vendor's devices.

Palm's confused if they think a compatibility check is a violation as opposed to, say, faking a hardware vendor ID. USB hardware IDs and network MAC addresses clearly have to respect the vendors' address spaces or the hardware standard falls apart.

Seems more likely this is a play to, yes, have the Palm device get press, but also ensure their site gets Page Rank from all the unique news articles' and blog entries' inbound links.

<comment><USER3> It's one thing to only be compatible with one device, but it's an entirely different matter to _actively prevent_ other devices from working. I'm pretty sure no other camera companies are trying to get their cameras to work with Nikon Capture.

</comment></comment><comment><USER4> Palm should ask themselves whether flaky on-again/off-again integration with iTunes is really better for their users than writing a standalone sync program like Blackberry.

I don't really get Palm's reluctance to write good sync software. They've been avoiding it since the 90s.

<comment><USER5> Well, there's no need. Windows comes with good media sync software. Most Palm data syncs with web services.

What's missing is a quality experience with iTunes, particularly on OSX. Emulating an iPod seems like a quick and easy way to provide an optimal user experience. Plus, they get publicity when Apple pulls the dickhole move that makes them seem like a big, abusive corporation.

<comment><USER4> It's quick, but what about the Pre owners who don't follow Gizmodo daily and don't know what's going on when their phone suddenly stops syncing after an iTunes upgrade?

This episode is reminiscent of what I went through working as the 'integration guy' at an educational web startup in the early 2000s. We were in Palm's position, trying to pull data out of systems created by companies that were either indifferent or hostile to our product, so the integration tended to break frequently and without warning. It's not a good way to satisfy your customers. They don't care that you're striking a blow against the establishment - all your customers care about is that _your_ product broke without warning.

</comment></comment></comment><comment><USER6> Palm should've kept using their own USB ID and Manufacturer string, and allow users to override them to impersonate an arbitrary vendor. Including, of course, Apple. This way the Palm is in the clear, and it's the user that is responsible for the actual act of vendor/device impersonation.

But all things considered, all this will simply lead to Apple ditching USB or layering a custom encrypted protocol on top of it. So Palm's current hack is a temporary solution.

<comment><USER7> I'd guess the USB Vendor ID switch was to trap Apple into matching vendor IDs, so that they'd have a case with the forum. That's my assumption, as apple's response was obvious from the moment the Pre came out.

</comment></comment><comment><USER8> Instead of this pissing match over the horrible iTunes, Pre, Google, and Amazon need to get together and make better media software.

</comment><comment><USER9> Now that the Pre is actually masquerading itself, Apple could go after them for trademark infringement!

<comment><USER5> The result of Sega vs Accolade suggests that trademark protection wouldn't be extended to identification for interoperability reasons.

</comment></comment><comment><USER10> Back in the day, AOL and Microsoft went through a similar war their messaging service. It was great from the consumer's perspective, interesting from the hacker's perspective, and petty from a business perspective--like the insistence on trying to kiss the hot girl in the bar last Saturday, drunk.

Now, here's the other thought: Apple has a lot of reasons to block imitation devices from accessing iTunes, the least of which includes perhaps security issues for its users, but also for the fact that being able to access iTunes, iTunes Store, and iTunes content might have very specific clauses drafted in its agreements with Apple's content partners. By not protecting that, Apple in itself might be in legal trouble.

So, this isn't just pettiness that Apple is taking in full delight of. Just a bit.

<comment><USER11> I don't think that we can really site security issues on this, as the pre cannot access any DRM data at this point. So there cannot be any aggreements with vendors.

Only if the Pre was accessing DRM protected media would that be a valid point. I think there is more than a dash of pettiness involved here.</comment></comment>


Ask HN: Is all of FAANG like this? - <AUTHOR> This last year I finally landed a SDE job at a FAANG company! However, I'm considering quitting because I am not happy.
The good: I get paid better than my last jobs. I can browse internal resources to satisfy my curiosity about how things work.
The bad: Basically no work gets done and there's no motivation to do any.
The dev tools, docs and tech debt impart such a slow iteration speed that even when I am working a full 8 hours, only a few very small changes get done, yet somehow this is even more than most of the rest of my team can muster during an entire week.
Because of this, I normally work about one day trickle out my changes during the the week. The other days I only open my computer for standup and if I get an IM. As far as I can tell, if I can be just barely the best on the team by doing there's nothing the company will offer me to work harder. If I get asked about why it takes long to make a simple change I can point to the environment and shrug my shoulders. Of course, it's possible the rest of the team is doing that too, but I have no way of knowing.
This amounts to a glacial development pace and when I look back at the progress made since I joined and estimate the cost to the company (salary, servers, etc) it's frankly disgusting. I don't feel what I'm doing is ethnically wrong, because the company is evidently pleased with my current productivity, but I find it unsatisfying and like a waste of my time on earth.
So my question is: Is all of FAANG like this? If the market value of such incompetence is a FAANG salary, how can I do good/satisfying work and get paid proportionally? <comment><USER2> From your description, it sounds like you work at Amazon. I work in a SF tech giant but haven't worked at any of the FAANG companies per se. But from what I hear from ex-employees, the rest of FANG (and all tech giants for that matter) is fairly diverse (e.g. I hear there's a lot of overtime at FB)

Also, mind you that teams dynamics can vary a lot even within one company. You could try talking to coworkers you know to get a feel for how other teams function. You can obviously also apply at other companies, but then the team you ultimately end up at could be more of a gamble (e.g. I hear this is especially so at Google)

</comment><comment><USER3> As a customer and user of the services offered by FAANG companies, I don't get the impression that nothing gets done there, or that they iterate too slowly. I get a lot of updates from Google and Apple, and Amazon introduces significant new features and services on AWS constantly.

I know people who work at those companies and I don't think of any of them as incompetent or lazy.

Big companies that support millions or billions of users can't move like startups, because they can't just break things for their large user base that depends on them. I think that would be obvious even before you got hired at one of those companies. I've worked for large companies and seen them adapt and innovate quickly, because they can attract top talent and organize their resources effectively. I've worked for small companies that should be able to turn on a dime but can't because they are personality cults or starved of resources, especially money and talent.

So maybe it's just you or your team.

</comment><comment><USER4> I am not aware of any megacorp (FAANG or otherwise) that doesn't wind up sounding like your experience above. There is a certain degree of ownership and autonomy that is only possible when you work with a smaller team at a smaller organization with fewer policies and regulations around you.

If you are looking for excitement (aka stress/anxiety/massive payouts) then a startup might be more your speed. If you want a easy-going "don't rock the boat" experience, then I recommend sticking with what you have right now.

Stability in your current job may give you the ability to explore other interests. If you are in a startup and fully own a product, it is much less likely you will have the time & energy to pursue other interests.

</comment><comment><USER5> Sorry, blaming productivity on dev tools and documentation is just an excuse. If you can figure out how to hack around them you will be superbly valuable. Consider it a game or challenge and try to win it. Good luck!

<comment><AUTHOR> Right, that's how I get my work done so fast. Sure I could "be superbly valuable" but there doesn't seem to be any motivation to do so. The stick (a PIP) isn't going to hit me because I'm above average, and the carrot (additional compensation) is inevitable because I'm already a shoe-in for promotion as the top achiever on the team.

<comment><USER6> The real problem here might be that you're not actually interested in your project/work. Given all what you've said, if I was still interested in my work, or found a way to make it interesting I would still go as fast as I can sustain. The environment and speed-bump obstacles can be demotivating if you don't find a way to block them out. Given the 'extra' time that you seem to have let's you solve problems in a round-about interesting way. Even if something starts out as a Rube Goldberg contraption it might lead to something else.</comment></comment></comment>


Private Equity 401k - <AUTHOR> https://www.billiondollarstartupideas.com/ideas/private-equity-401k <comment><USER2> Everything I've ever learned about investing says avoid high-fee investment vehicles.

> PE funds have a monetization model of fees (about 2%) and carried interest > (20%).

To the average person who picks the "wrong" PE fund, not only will they get sub-par return, they'll also get high fees. Not how I'd want to set myself up for retirement.</comment>


A modern architecture for FP - <AUTHOR> http://degoes.net/articles/modern-fp/ <comment><USER2> A modern architecture for functional programmers</comment>


Filther.io – Search for images and only get the unsafe ones (NSFW) - <AUTHOR> http://filther.io

<comment><USER2> [http://search34.org/](http://search34.org/) has been doing this for a few years.

As the creator described it to me: it does a search, and a parallel search with porn filters, and returns the diff.

<comment><USER3> It appears this one works the same way. As the About page explains:

        Search for images and only get the unsafe ones. That's
        Filther in a nutshell. We give you only the stuff that
        Safe Search Filters leave out. This search is strictly
        NSFW. And let's be honest, this is what the internet
        was made for.

</comment></comment><comment><USER4> I guess the best use of this is to demonstrate how many false positives traditional filters have...

<comment><USER5> Even though you're making a joke it's actually interesting. The only search I've done (to see how ridiculous the internet is?) is "sunny walks on the beach". I chose the "destroyer of children" filter and once you get past maybe 10-15 dirty pictures its incredible the stuff that is actually completely safe for work that I guess Google somehow filters out lol

<comment><USER6> Try searching for "wax". The pictures alternate between what I expected and pictures of random buildings.

Hmm, don't try searching for wax on second thoughts. I scrolled a bit further and there's a tonne of man-on-man bondage (unless that's what you'd like to see).

</comment></comment></comment><comment><USER7> The very safe pics appearing in the middle of the nsfw ones came from domains with otherwise adult content (a chicken noodle bowl on i.e. pussyleaks.com) . In hindsight it seems obvious, I never thaught about the halo effect of adult content hiding the other contents from normal searches.

A bowl of noodles on an otherwise porn site is not a big deal, but if there was an interview site with half of it's contents nsfw (say they interviewed nudists or exibitionists) it would have to deal with the issue.

I know a bunch of site that use different domains to segregate contents(dmm.com and dmm.co.jp for instance), but I wonder what other ways there are to keep your safe content searchable while having an nsfw portion on the same site.

</comment><comment><USER8> The trending search term "noodles" seems to only give SFW pics of noodles or completely unrelated NSFW results.

<comment><USER9> I noticed that too. Which I guess means there's potentially a whole world of content filtered out as being NSFW when really it's fine...

</comment></comment><comment><USER10> This doesn't really work. My searches are very unrelated.

</comment><comment><USER11> The results are terrible, even using actual names from models gets you random results.

I even tried kurt cobain on "Destroyer of childhoods" mode and didn't get even one copy of the infamous coroner's picture.

On google is on top of all result with safesearch off.

<comment><USER12> You've answered your own question in that last sentence - if Google isn't filtering it using safesearch then it won't appear on Filther

</comment></comment><comment><USER13> The popular searches terrify me.

</comment><comment><USER14> "penis" barely returns any penii

</comment><comment><USER15> it did pretty terribly at 'fractal'.

</comment><comment><USER16> Any plans to open source it?

<comment><USER17> What reason is there to open source this? The whole algorithm is practically explained here, [https://news.ycombinator.com/item?id=6703714](https://news.ycombinator.com/item?id=6703714)

</comment></comment><comment><USER18> Wow

Much plus

<comment><USER19> so filth

<comment><USER20> many ponies

<comment><USER21> Y'know, I used the term 'Pony' because I thought it'd be the most innocent thing I could search for. There's nothing sinister about ponies.

This is one of those instances where I could not have been any more wrong. Eyebleach, please!

</comment></comment></comment></comment><comment><USER22> Might want to capitalize that warning, and add nsfw. I'm very happy one of my kids was not looking over my shoulder. I guess I'm with the late Mr Jobs on this one --thinking this is not necessarily advancing the internet or making the world a better place.

<comment><USER23> Mr Jobs opposed a product that was invented after his death?

<comment><USER24> Ask yourself: what would Jobs do?

<comment><USER22> Often did that as a younger entrepreneur. Paid off, thank you. He undeniably had the sharpest eye of his generation to find the angle that work with the market.</comment></comment></comment></comment>


Wikipedia Deploys AI to Expand Its Ranks of Human Editors - <AUTHOR> http://www.wired.com/2015/12/wikipedia-is-using-ai-to-expand-the-ranks-of-human-editors/ <comment><USER2> A bit more of a technical treatment from the Wikimedia blog yesterday: [https://news.ycombinator.com/item?id=10663208](https://news.ycombinator.com/item?id=10663208)

<comment><USER3> Thank you, I was wondering how it differed from Wikipedia's existing vandalism detector systems like ClueBot.

</comment></comment><comment><USER4> This kind of thing isn't anything new... here's a similar system that is less geared toward vandalism, but more to pointing out structural and lexical flaws in the articles: [https://github.com/jcla1/wikipedia_analyser](https://github.com/jcla1/wikipedia_analyser)

(Disclaimer: I'm the author)

It too uses neural-nets (and an up to 3-gram model) to detect flaws...

</comment><comment><USER5> What is this kind of thing written in, I wonder. How cool :)

<comment><USER6> >Using a set of open source machine learning algorithms known as SciKit Learn—code freely available to the world at large—the service seeks to automatically identify blatant vandalism and separate it from well-intentioned changes.

It's a Python library, available for free download [1]. I've got a book or two on it I've been meaning to read.

[1] [http://scikit-learn.org/stable/](http://scikit-learn.org/stable/)

</comment></comment><comment><USER7> All Watched Over by Machines of Loving Grace :-)</comment>


Bootstrap 2.2.2 is out - <AUTHOR> http://blog.getbootstrap.com/2012/12/08/bootstrap-2-2-2-released/

<comment><USER2> While Bootstrap is "great" it really needs a viable competitor. There's a tons of things that could be done better.

The competitor must be really nice looking by default, responsive, use Stylus/Sass not LESS, and be modular. There isn't one today, but I hope there will be one in 2013.

<comment><USER3> > use Stylus/Sass not LESS

I really like LESS. What am I missing out on?

<comment><USER4> The thing that finally pushed me off LESS was animations, and the contortions necessary to get to something even approximating DRY for some concepts.

I _think_ it might be a result of trying to be "better CSS" instead of "a language for generating CSS".

Say you wanted to delay a slide-in-right animation for 50ms per list item. (So item 1 slides in immediately, item 2 50ms later, item 3 50ms later, etc.)

For that portion, this is what the LESS looks like:

      -animation-delay(@delay) { animation-delay: @delay; ...vendor prefixes... }
      .delay-child-animations {
        &:nth-child(2n){ .animation-delay: 50ms;  }
        &:nth-child(3n){ .animation-delay: 100ms;  }
        &:nth-child(4n){ .animation-delay: 150ms;  }
        ... more things here ...
      }

In SASS, we could do something like

      @mixin delay-child-animations($max-children: 20) {
        @for $i from 1 to $max-children {
          &:nth-child(#{$i}n){ .animation-delay: ($i - 1)*50ms;
        }
      }

References:

[http://stackoverflow.com/questions/8294400/css-animations- wi...](http://stackoverflow.com/questions/8294400/css-animations-with-delay- for-each-child-element) <http://radiatingstar.com/css-keyframes-animations- with-less>

</comment></comment></comment><comment><USER5>
       Assets (illustrations and examples) are now retina-ready.

Too bad this is for the documentation pages only and doesn't include bundled icons. :(

<http://twitter.github.com/bootstrap/base-css.html#icons>

<comment><USER6> Bootstrap was going to ditch Glyphicons (and IE7 support) with 2.2.2[1] but it looks like they're either holding off on that or they changed their mind. I recommend using Font Awesome[2] instead of Glyphicons.

[1] <http://blog.getbootstrap.com/2012/11/09/glyphicons-font/>

[2] <http://fortawesome.github.com/Font-Awesome/>

<comment><USER7> We use fontawesome as well, it makes your site look much nicer.

You can also use <http://retinajs.com/> to scale stuff up if you want.

<comment><USER8> Even better, pack your own custom glyphs from icomoon.io.

</comment></comment></comment></comment><comment><USER9> Excellent. Can't wait for 3.0

</comment><comment><USER10> When will there be another update on the repository move!

<comment><USER11> Later this week.</comment></comment>


Ask HN: What would you build in a week that you could sell for years to come? - <AUTHOR> Considering you have $100-$500 and a week to build a product than the rest of 3 weeks to start marketing it, what would you build and sell to bootstrap a business? <comment><USER2> As a hypothetical this an interesting question, for me at least, but you're a bit too vague.

Obviously your talking about development, coding, but what's your area? Back- end? Front-end? Mobile? Desktop? Server? Which OS are you targeting? Macs? Windows? Linux?

Then of course, what's the number? How much do you need/want?

A vague answer for a vague question: Build something in an area you're familiar with that addresses a pain point you have or people in your network have, make them your first "customer", give it to them for "free" in return for feedback.

Another: Build something for a niche, spend a couple days researching your chosen niche and find a small-moderate sized community that you can easily (quickly) immerse yourself in. Be honest about your intentions.

More importantly though, adjust your expectations. Realistically there's not a single thing (that I can currently think of, off the top of my head) that you can build in a week that you can sell "for years to come" without work, if you're looking for a passive income the answer is real estate.

Technology moves fast, updates will be required. Maintenance will be required. Development is mostly an iterative process. Users will request features. Features will introduce bugs and so on and so fourth.

Also what do you mean by bootstraping a business? You can be a registered business entity within a couple hours. Which means shit if you don't have a product/plan.

Good luck :)</comment>