TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: What is the difference between a junior and senior developer?

101 点作者 nchuhoai大约 11 年前
I&#x27;m about to graduate from college and have been contemplating about this question a lot lately, especially in regards to specific languages&#x2F;frameworks (ruby&#x2F;rails in my case)<p>I know that I&#x27;m not that most raw-engineering talented, but I believe I have dabbled a lot with web development (full-stack and again, Rails) that should give me a significant competitive advantage, so i was curious:<p>How do you specify&#x2F;categorize junior&#x2F;senior developers? Is it production-experience, language&#x2F;framework knowledge, knowing best-practices or just raw engineering talent?

44 条评论

hapless大约 11 年前
Most of the important skills have nothing to do with technology<p>- Requirements gathering<p>- Customer interaction<p>- &quot;Managing upwards&quot; (dealing with PMs, product people, designers)<p>- Estimation and planning<p>- Becoming a team player (Most college students only do a few, short-term group projects. This does not adequately prepare graduates for tight-knit teams in a professional setting.)<p>Anyone with a little bit of coding background can learn rails in a few days. The hard-won assets are all &quot;soft skills:&quot; professionalism, teamwork, planning. As far as I know, there&#x27;s no substitute for real industry experience. (It would be awful nice if there were!)
评论 #7493697 未加载
评论 #7493661 未加载
评论 #7493978 未加载
评论 #7494237 未加载
评论 #7493645 未加载
评论 #7494314 未加载
评论 #7494418 未加载
评论 #7494199 未加载
评论 #7493548 未加载
jraines大约 11 年前
Here&#x27;s the best take I&#x27;ve read on the subject, by John Allspaw of Etsy: <a href="http://www.kitchensoap.com/2012/10/25/on-being-a-senior-engineer/" rel="nofollow">http:&#x2F;&#x2F;www.kitchensoap.com&#x2F;2012&#x2F;10&#x2F;25&#x2F;on-being-a-senior-engi...</a><p>Choice quote: &quot;I expect a “senior” engineer to be a mature engineer.&quot;<p>He elaborates at length about what that means in the post.
评论 #7493585 未加载
评论 #7493899 未加载
评论 #7493552 未加载
jgable大约 11 年前
In terms of getting a title of &quot;Senior Engineer&quot; at most companies, it is mostly a function of experience. It is highly unlikely you will be hired as a Senior Engineer straight out of college.<p>Don&#x27;t focus on getting the title. Instead, focus on what you can control, and the titles and career advancement will take care of themselves.<p>There&#x27;s a well-known, well-written essay on the qualities that a Senior Engineer possesses: <a href="http://www.kitchensoap.com/2012/10/25/on-being-a-senior-engineer/" rel="nofollow">http:&#x2F;&#x2F;www.kitchensoap.com&#x2F;2012&#x2F;10&#x2F;25&#x2F;on-being-a-senior-engi...</a><p>Technical maturity comes from working on and finishing large projects. As with anything else, you can work for years and have lots of &quot;experience&quot;, but if you are not critically thinking and learning during the journey, you won&#x27;t get anywhere. Learn the pros and cons of high-level, architectural decisions so that you can be prepared to make those decisions someday in the face of uncertainty.<p>Personal maturity means working effectively on your own and especially with others. Pay attention to the highly respected engineers in your organization, and observe how they work with others.<p>Good luck!
评论 #7494270 未加载
评论 #7493847 未加载
joeevans大约 11 年前
Let&#x27;s be honest.<p>The qualifications for being a Junior developer are (1) familiarity with new frameworks (2) nimbleness with polyglot approaches (3) ability to code considerably more than sit in meetings (4) an approach towards getting things done, rather than spend time considering getting things done.<p>Not every developer has the chops to be a Junior developer, but if a Senior developer has the interest and is willing to work hard at it, they can make it.
评论 #7493995 未加载
ryanobjc大约 11 年前
To answer your question directly ... a senior engineer MUST absolutely have had the responsibility of taking several systems to production and maintaining it there for some period of time.<p>Ultimately there is just a whole area of experience that you cannot short circuit. While we laud genius programmers who brought something to the world (eg: Bram Cohen of bittorrent fame), there is a lot of luck involved, and ultimately no one is an island, there is a lot of supporting work to make something truly successful and widely adopted.<p>Good luck in your job hunt, but my best advice is to have patience, be humble and realize that your experience is a starting point, and you have much to learn.
rjd大约 11 年前
I haven&#x27;t seen the term &quot;pragmatism&quot; in this thread. Thats a major difference I&#x27;ve noticed over the years. Something that used to drive me nuts when I was a junior dev, and something I get torture my underlings with these days.<p>I&#x27;ve found most junior debs I&#x27;ve worked with over the years (and have memories of my own behavior) of being too cock sure of approaches, to keen on new techniques etc...<p>Over engineering is a major problem I see from younger people, often leading to fragility and bugs, blowing out support in 6-12 months. The other issue is using frameworks for everything, which I&#x27;ve found on questioning reveals fundamental lacks of knowledge about the domain they are experts with (being instead framework experts). Using massive library packages for access to one util class is very very common.<p>Sometimes I deliberately ask for nonessential 3rd party framework changes, or the utility class to return it slightly different just to make sure that juniors have to look into the framework and understand the domain they are working with. Quite entertaining at times, even if you have to throw out there code and rewrite for them :)
mrpoptart大约 11 年前
You are now an expert in College. What do you know now that a freshman does not? Not just the schooling, but the ability to use the school more efficiently. The people you know, the places with which you&#x27;re familiar, and the little nuances of college life are all part of your achievement. Similar processes happen in the software world. With time, your toolset grows, your professional capability grows, and your ability to produce higher quality with less effort grows.
tsenkov大约 11 年前
One of my first mentors once said to me - the junior developer solves easy problems with complex solutions. The regular (simply) developer solves complex problems with complex solutions. And the senior developer makes problems disappear.
puppetmaster3大约 11 年前
I am CTO and 20+ years: Difference is just the role assigned, sometimes 10K hours of hands on, mostly not. Jr. dev is sometimes there just to fasttrack to manager roles.<p>A Sr. Dev. role is the one that people go to when an issue is not resolved for a period, one example is a month long intermittent bug. <i>They are Sr. because Jr. ask for this bug to be assigned to Sr.</i>. Sometimes Sr. do the real training new people.(I&#x27;ll show you how it should work, go to X to show you how it works).<p>And here is the effect: If Sr. dev. has the tile to go w&#x2F; role, has to train and fix strange bugs, they use their position to KISS. Sadly, in most orgs, Sr. dev. is a role, not a title, it&#x27;s just as common that Jr. dev. has a higher org. rank.<p>A role test: so lets say you want to add another 3rd party library. Who&#x27;ll fix the bugs? Now you know who the Sr&#x27;s are.<p>These roles are not new, this is very old: &quot;Fools ignore complexity; experts avoid it; geniuses remove it.&quot;
analog31大约 11 年前
When I was a manager, I had a stack of job descriptions for different &quot;levels&quot; of engineers as I prepared a case for promoting a couple of my people. To generalize from what I saw: The formal levels are based on things like autonomy, authority, and interaction. A senior engineer is expected to do things like choosing best practices rather than simply following them. Making presentations to non-engineers, including customers. And so forth.<p>Granted, making out this rule in an actual workforce might be a challenge, because job titles are affected by a number of practical factors such as the lack of other options for retaining people. A business can become top-heavy with senior titles, but people will seldom be demoted to reflect disparities between their job descriptions and their work. A hot candidate will be hired into a senior level, to put them into a more favorable salary range.
implicit大约 11 年前
It&#x27;s useful to consider developer maturity in terms of the maximum project complexity they can handle:<p>A junior developer can effectively build a software solution to something, given some advice about the interfaces and algorithms to be used.<p>A senior developer just needs a high level description of the desired technical solution. They can be trusted to instrument, refactor, collaborate, rewrite, invent, and get the problem solved.<p>A lead developer can be given bigger problems and organize an entire team of developers to tackle it.<p>This line of reasoning still works if you keep going:<p>A product manager can be given a metric to improve or a customer to satisfy. No further direction is required. They can be relied upon to do research, come up with a plan, hire staff (technical and nontechnical) and organize it all.<p>All CEOs have the same problem to solve: &quot;Grow the business.&quot;
robert_tweed大约 11 年前
It&#x27;s a bit of both, but it&#x27;s mainly about experience rather than knowledge.<p>A senior is expected to be able to handle anything that comes up during the course of a project (including when things are on fire), to be able to delegate, to be able to mentor juniors and quality-control their work.<p>Juniors are expected to be learning as they go (to a greater extent) and likely to make mistakes or need help now and then.<p>In particular, a senior will know when they have something wrong or it&#x27;s not good enough. A junior is reliant on others to tell them what&#x27;s expected in a given situation.<p>If you are a recent graduate you are, by definition, a junior. After a few years you might have the experience necessary to become a senior, if you have earned the trust of your peers, especially those in charge of that decision.
nchuhoai大约 11 年前
FIrst of all, thanks everyone for chipping in, great insights here.<p>It seems to me that the majority of people here have defined &quot;seniority&quot; with professionalism and a large repository of social skills acquired over the years.<p>I guess independent from that issue, the reason why I originally asked the question is when it comes to job postings. When companies advertise positions marked as senior, do they then actually mean it in the above definition?<p>Call me naive and unexperienced, but I&#x27;m somewhat surprised by the heavy emphasis on experience over knowledge. Is someone with more domain-knowledge but less experience more junior than someone with little to zero domain-knowledge but more experience?
评论 #7494292 未加载
评论 #7493981 未加载
jmspring大约 11 年前
Ability to understand not just the language and project you are working on, but the system and how to adapt or troubleshoot when met with challenges you don&#x27;t understand. The ability to convey concepts and mentor people when they are in a bind. Knowing when to take a step back, look at the problem a new or ask for help.<p>Some of that comes through experience, but I&#x27;ve met people with time put in that can&#x27;t get their head around more than their niche. (I&#x27;m talking general programming here, not deep specialization)
danjaouen大约 11 年前
To me, the most important distinction between a &quot;junior&quot; and a &quot;senior&quot; developer is that a senior developer isn&#x27;t afraid to work with and maintain legacy code.<p>When I first started out, I was obsessed with only using the latest and greatest technologies, but I&#x27;ve come to realize over the course of my career that this is simply infeasible for many organizations.
评论 #7493843 未加载
peterhi大约 11 年前
For us a junior is someone who is starting, possibly a graduate or even just out of school. This is someone who is still learning the craft of programming (gathering real world experience) rather than the text book skills.<p>After a year they should no longer be junior. They are just a plain old developer, if not then perhaps programming is not for them.<p>Senior developers are simple those people who have a say in planning the direction that the company will take with their software. Strategic thinking in relation to the business needs of the company.<p>Developers tend to have a very flat hierarchy so senior is just as likely a management position rather than a recognition of outstanding skills.<p>In our company at present we have no juniors as everyone has been there more than a year, but we also have no seniors. To be honest I think that senior developers only appear when the head count gets into double figures and management cannot hold meetings with everyone over every little thing. Hence senior as a management position &#x2F; title.
jasallen大约 11 年前
Junior Dev: Needs more help &#x2F; guidance<p>&quot;Dev 2&quot;: Mostly works independently, knows when to ask for help<p>Senior Dev: Provides more help &#x2F; guidance
lutusp大约 11 年前
&gt; How do you specify&#x2F;categorize junior&#x2F;senior developers?<p>Experience. A very skilled young programmer with &quot;raw engineering talent&quot; won&#x27;t automatically be described as a senior developer on that basis alone. Also, keep in mind, in a very ageist profession like programming, being called a senior developer can be taken as an insult.
memracom大约 11 年前
A major difference is that a senior developer does not limit themselves to just software development. They learn something about ops, they learn about tuning a database (whether SQL or noSQL), they learn about business problems and so on. The most important difference is that a senior software developer is evolving into being an engineer who understands the total solution space, not just the software. By choice, some people stick with software development rather than moving into software engineering or devops, but a senior person makes that as a choice, not because they are ignorant of engineering and devops.<p>What is the difference between a software developer and many other professions? A software developer is constantly learning new techniques, new languages, new technologies. Therefore a senior software developer knows a lot more than a junior one and has more hands on experience with more aspects of the trade.
d0m大约 11 年前
As a senior developer, you&#x27;ve got some war stories under your belt and hopefully learnt from those. When people use senior developer, I suppose they only mean dev with some years of experience. I.e. There&#x27;s a big difference between the theory in school and working on a real project with various stakeholders.
phantom_oracle大约 11 年前
Just to add my 2 cents worth:<p>Sometimes companies consider a &#x27;junior&#x27; to be someone with &quot;at least x years experience&quot;.<p>I&#x27;ve seen this situation play out at least 3-5 times now. I&#x27;m not exactly sure where someone who is a &#x27;junior&#x27; is meant to get experience for a year (real work) and then apply for a &#x27;junior&#x27; position that has shitty pay just so that you can add up more exp.<p>I&#x27;ve also seen a lot of intern positions saying &quot;work for us, slog your guts out for 3 months with no pay, you will compete with at least 5 others and at the end we will use any valuable code&#x2F;work you&#x27;ve done, not hire you all and give the guy with the most hours&#x2F;productivity the job and the rest of you can fuck off&quot;.<p>This industry is fucked... For a skill like programming I&#x27;d expect even a junior with no exp. to earn at least $5-$10 dollars per hour.
MortenK大约 11 年前
Different companies have different definitions for junior, senior etc. Like other comments mention, it&#x27;s mainly length of professional experience.<p>Many places defines senior developers as having +5 years of professional experience (i.e. excluding college). But it varies a lot from company to company.
IvyMike大约 11 年前
At my previous company, I liked their ranking system. Basically, you moved up as you became responsible for larger and larger systems.<p>A brand new junior employee is responsible for very little--most of what they do is going to be reviewed by more experienced engineers.<p>A senior engineer might be able to be tech lead a small month long project, a principal engineer might be responsible for a large subsystem, an architect would be responsible for an entire product.<p>Finally a distinguished engineer (essentially a VP-level position, but on the tech side of things rather than the management side) would be responsible for the technical direction of the entire company and be a strong input to the overall design of brand new products.
评论 #7494094 未加载
lipanski大约 11 年前
If I were to be cynical, I&#x27;d say age and wage (and the <i>feeling</i> of knowing it all).<p>However, contrary to some of my previous experiences, a senior is that person that has an answer to most of your questions (and the disposition to answer them). It&#x27;s that person in the office that can pull a project or a team on his own on the long term, without major fuck-ups and with a clever solution for all unexpected problems.<p>And if you&#x27;re interested in the more superficial description: human resources would call a <i>senior</i> someone who&#x27;s been mastering his domain for at least 3 years.
Jach大约 11 年前
I think it depends on the particular individuals and the company. Sometimes the only difference may be salary. There&#x27;s already a bunch of different responses here on what the difference could be. My own rough heuristic is that a person in a senior position should have a clear sense of the influence on business value that they and their decisions make. A junior developer is engrossed with solving a problem, a senior developer is engrossed with the business improving on some metric by means of solving a problem.
pekk大约 11 年前
The difference is how much they want to pay you, and how much scope and accountability you get.<p>The same person could be reasonably senior at one place, and reasonably junior at a different place.
jason_wang大约 11 年前
To me, the differences between a Jr. and a Sr. Dev are the experiences gained from getting burnt by bugs, quick estimates, production issues, etc.<p>Essentially the number of battle scars.
michaelwww大约 11 年前
A senior developer has the sense of carrying the responsibility of the project forward, a junior developer does not and relies on the senior to carry that load.
bowlofpetunias大约 11 年前
I can tell you what the difference <i>isn&#x27;t</i>. It&#x27;s neither about age nor experience. And I&#x27;m saying this as an old fart who has been doing this for 25+ years.<p>Sure, time helps, if you learn from your mistakes, both in engineering and life itself.<p>But I&#x27;ve seen 40 year old developers who I would consider juniors in every way that matters, and 20-somethings who I would trust to take the role of <i>lead</i> developer.
评论 #7493928 未加载
评论 #7494254 未加载
sabinazafar大约 11 年前
I think the simple answer is being able to make decisions and think more critically about the problem and the business implications. Junior developers usually require very specific and structured directions to achieve something ( even though they may be incredibly smart), senior developers on the other hand can work with fewer requirements and fill in the gaps when requirements are not clearly define.
techtalsky大约 11 年前
I definitely don&#x27;t think it&#x27;s just raw engineering talent. I agree that there&#x27;s most certainly a social aspect to it. I think it has to do with professionalism, architecture chops and experience, a sense of good workflow and process, a sense of accountability, and a proven record of getting projects done and done right.
trhtrhth大约 11 年前
Dabbling a lot does not make you a Senior Dev. It&#x27;s the part where you create and debug complex systems, such as you don&#x27;t see while doing your small school projects. That, plus hopefully a little more wisdom when deciding which frameworks or design patterns to use and how slavishly to adhere to them.
joshcrews大约 11 年前
You can tell a senior engineer what needs to happen, and the engineer can manage the rest.<p>A jr. engineer, not yet.
QuantumChaos大约 11 年前
A senior developer has to be able to lead a team of engineers in the creation of a product (or maintenance of an existing one).<p>What this requires depends on the job, but it is a mix of technical virtuosity, social skills, and ability to navigate the corporate environment.
burntroots大约 11 年前
The real difference between a junior and senior developer? A senior developer was able to convince a manager to give him the title and pay raise. It&#x27;s more of a political distinction than anything else.
yoyo1999大约 11 年前
Ideally, a senior developer should be somebody whom &quot;been there, done that&quot;.<p>However, most &quot;senior&quot; developers were made by political fight.
bradb3030大约 11 年前
I&#x27;ll share my coaching criteria as a manager:<p>an acceptable Junior Software Engineer... uses tools to make properly formatted code<p>produces readable code, mostly self-documenting<p>becomes a &#x27;goto person&#x27; on code after spending 2 total weeks in it.<p>rarely goes 3 days without obvious progress or output to the sprint team<p>is comfortable making estimates about new work<p>is comfortable re-using existing patterns for new work, even in unfamiliar code<p>can explain the &#x27;why&#x27; of processes and rules, and be able to see situations where they may not apply<p>understands agile development and participates effectively<p>----------------<p>a Senior Software Engineer... is also a Software Engineer with everything that comes with it<p>is a team representative of code, projects, and end-users<p>has a running list of 5 things the team or the team&#x27;s code is weak in, and could be doing better<p>considers edge cases well, writes bulletproof code<p>understands integration points with other teams and projects<p>reliably resolves tickets in team&#x27;s estimated timeframe.<p>does code reviews and design reviews that are kind and instructive<p>is able to refactor code to improve maintainability without being too aggressive and causing additional problems<p>is able to help any other dev with problems in any of the team&#x27;s code<p>is capable of teaching a new employee about all of the team&#x27;s code, projects, and end-users<p>brings innovative ideas back to the team from reading, experimentation, and conversations in addition to normal work<p>is a student of agile development and can effectively coach and mentor others in agile development<p>maintains good relationships among cross-functional team members<p>can boldly estimate very low or very high for new work, keen prediction for the very easy and very hard<p>can sense CPU, memory, and computation time problems in code invents new patterns and solutions rather than always using existing patterns<p>sees the give and take in processes and rules, uses them as a tool for guidance not to be followed rigidly 100% if not best for the company<p>understands feelings and history about codebases and projects, not just the immediately apparent facts<p>is not just extremely knowledgeable, but also with passion and proper application and improvisation of concepts
ecolner大约 11 年前
There is only one thing that makes you a senior developer: years in the industry. That&#x27;s it. Ask your manager the minimum amount of time on the job for promotion. They&#x27;ll use a formula to figure out if you&#x27;re ready for more responsibility, but the gating factor is years on the job.
bjeanes大约 11 年前
Competency at negotiating.
bakhy大约 11 年前
experience. and price :) (which, IMO, is 90% of the reason why older devs have trouble finding jobs, and not so much the supposed difference in ability. young = cheap.)<p>also, to me it seems that it&#x27;s more about your position in a company, than skill. i.e. being a senior does not mean being better, it means having more responsibility. being a senior is a position, not a level of skill. although, they would normally correlate.<p>you certainly won&#x27;t be a senior as soon as you get out of college.
kosso大约 11 年前
Experience. Time-served in a startup&#x2F;dev environment.<p>Ability to communicate (hopefully) without offence.<p>Skin thickness.<p>&#x2F;* amusing, yet inspiring and educational comments *&#x2F;
评论 #7493866 未加载
enterx大约 11 年前
a senior knows why.
Eleutheria大约 11 年前
&gt; What is the difference between a junior and senior developer?<p>10 years.
TYPE_FASTER大约 11 年前
Two things I expect a senior developer to understand: threading and some details of networking. Examples: effectively making some operation run concurrently in another thread without adding too much or not enough locking. Understanding how HTTP keep alive works. Being able to troubleshoot TCP connection issues using WireShark. Even if you&#x27;re a Rails developer and never see the details of the HTTP implementation, they can be valuable to know and can save you a ton of time when troubleshooting production issues.
评论 #7494221 未加载