Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: I am the dumbest person in the room. What should I do?
196 points by byrain on Mar 26, 2015 | hide | past | favorite | 183 comments
I see a lot of articles and posts about hiring the right person, dealing with underachievers, etc, but still did not see one with underachiever's perspective.

I was hired 4 months ago to work for a quite desirable software company. On my interview and first days I was quite confident and a bit cocky I must admit. I thought I knew more that I actually did, but at the same time was aware that I was lacking specific experience needed for that particular job, but was very willing to work hard to develop myself, and actually saw that as a desirable challenge! I thought that mentoring and time was given to ramp up and learn the missing pieces. Non of that happened.

My teammates have tons of experience, and there is a clear “every man for himself” mentality. Most of them have big egos and really rotten and bitter attitudes. They are stars, they know it, and treat people who are not at the same level like idiots (like idiot me).

As a result, I stress through the work days trying to decode what my co-workers are thinking, and trying not to say the wrong words (which keeps me silent for most of the meetings, work days and then bleeds out into my personal life). By night I have a quick dinner and bury myself in intense study. Honestly, its horrible. My self esteem plunged, I am ashamed to communicate with talk with other people. It is wearing me out. I question myself several times per day if this is really worth it.


1. I feel I handled this wrongly, and started with too much confidence. If I am the least knowledgeable person, and a co-worker ignores, despises and almost makes fun of me for your lack of experience, how should I act in order to maintain my dignity but also be humble enough to acknowledge the co-worker's knowledge?

2. Is it normal to be hired as a junior and just being thrown to the lions, with no help or time to ramp up?

3. Do all star/ninja/rock-star software developers have rotten attitudes?

I'd go work somewhere else and here is why:

You can learn anywhere, why work with a bunch of people who are not going to build you up and encourage you to improve yourself and by extension, the team/project. What are you really getting from these guys if it's "every man for himself" anyways?

1. Forget that, be confident. Just focus on improving yourself and on things that can make you better at your job.

2. No. I expect my junior guys to learn on their own but am always willing to step in and provide guidance.

3. There can be some rough people in IT. If they're rotten they are probably less confident than you think they are, probably more so than you, but don't want you to realize it.

Lastly, I can tell you from experience, if you don't think it's worth it, it's not. There are fun jobs out there, go and get one.

Couldn't have said it better myself. There is nothing to be gained from elitist attitudes. Sounds to me like they want to hoard their own job security.

On top of all that, the "every man for themselves" mentality is a way to make sure that developers look out for themselves instead of the company as a whole. This is of no benefit to the company, and the leadership should recognize this and act accordingly.

What good can come from behavior that ensures other teammates don't improve at the rates they should be?

I heard a quote recently:

"What if we teach them everything and they leave?" "What if we don't, and they stay?"

The rule of "do unto others as you'd have them do unto you" applies just as much in work environments, and if you're working with a bunch of toxic/antisocial/whatever people it's bad all around - the company loses good people who don't want to put up with the toxic attitudes, coworkers don't benefit from working with the "experts," and of course the downside for the toxic folks: "Oh, yeah, I worked with him 2 companies ago. If you can put up with the prickish behavior he might do good things, but don't put him on my team."

Awesome quote! I'll definitely being using that in the future.

I agree with all that. I'd also add that I think the desire to get hired and be mentored is a common mistake. Coworkers don't have time to sit down and teach you 1on1. But what they do have time for is helping a coworker out if they are struggling on something. No they won't do your job for you but if theres something you don't understand ask for help. If you have to ask twice you didn't take good notes. Not asking more than once may seem insignificant, but people will notice that you don't pester them with the same questions over and over. They may know that you are not as experienced as they are but they will know you are on the right track and competent. Nobody learns everything overnight. You only get out what you put in. Lastly, if you don't like your coworkers, find a company with people you can work with.

I seem to remember being pretty overwhelmed by the whole system as a junior. A decent explanation helps. And documentation.

I agree, I think the environment sounds toxic.

This is a natural response.

But isn't this a spiral down? and impact your confidence with signs of quitter?

Say OP is in a startup currently , this downgrade will mean a jump to a big MNC to a services offering to a outsourcing company. The issue at hand has to be handled at some point right?

You would be surprised at how difficult it is in any company (large or small) to make a change on culture. That is completely driven top-down, and normally the "spiral" you speak of is more inline with a individual contributor (non-manager) trying to "change" the culture, even if it seems positive to the individual, in an even more toxic relationship.

"Signs of a quitter" should never be used as an excuse to continue with a toxic company. You should also not be surprised at working 70-80 hours a week, going "above and beyond" then being let go for a Sr. management bonus :)

Loyalty is pretty illusive now days on the side of companies it seems. It is still an employers market, despite the "we can't find talent" laments.

OP's not in a startup company; he said he was in a quite desirable software company.

On 2, I feel like I know enough to get by, but can't really level up and do larger stuff. I make features and fix bugs and most of the time they stick (who knows down the road though!), but I'm in a similar situation as OP but feel like my language knowledge is just behind and my job doesn't feel like a source of learning. Is this ultimately my responsibility or do I just need a mentor to break through?

Having been a sw PM for 20yrs I think self-awareness and willingness to explain highlight those that are truly brilliant. They recognize their abilities and become accustomed to explaining their ideas. Your awareness of your own limitations is credit to your intelligence IMO. Others who get frustrated when having to explain or posture do so from posturing or insecurity. Being in a new position requires computation of many more inputs than a old timer too, slowing down thought by an order of magnitude. Who knows, you may be the smartest dude in the room. Good luck!

Basically, intelligence is a speed of processing.

Assumedly every human being, given enough time, would be able to solve the same set of problems.

The thing is that we only have 80 years to solve them! And also, there are more problems to be solved than anybody can in this small time frame, even with a IQ of 1000 (speed of processing).

Now what does that mean for the slower minds, in a competitive environment?

You can still provide useful output, by restricting yourself to a small set of problems, and by employing more persistance and constance on solving a choosen problem.

The faster guys will often grow bored with a single problem and will have to skip from one problem to another (ADHD, etc). This is your opportunity: stay on the same problem longer than they can, and you will find solutions while they're busy approaching multiple other problems.

Yes, perhaps over a given period of time, they will be able to find ten solutions to ten different problems, but this doesn't mean that you cannot provide one solution to one problem, that they will have not approached and found.

People who are really great and competent at what they do, are usually very able and willing to teach (or at least give hints) to juniors and newbies, as long as you show signs of personnal studying and researching your problems. They don't like to spoon-feed lazy newbies. In general, you will also find this attitude on the Internet (irc, newsgroups, web forums), where you will find a lot of help, as long as you start by trying solving your own problems yourself, and are able to explain what you tried and where you're stuck.

If your professionnal environment doesn't allow you to learn with your colleagues, then you may consider changing it, because even if you were yourself a rock-star developer, you would still have a lot to learn.

> Assumedly every human being, given enough time, would be able to solve the same set of problems.

In the immortal words of Richard Karn: “I don’t think so, Tim.”

There are lots of things that are out of scope for a given person at a given time, and no amount of study will make them tractable.

The biggest issue with respect to the OP’s Impostor Syndrome is that very few of those things are relevant to the typical work of a programmer in a startup.

Since you provided no citations yours is just an opinion at best. I'll throw mine in. You are wrong, IQ is about context. The more context you have about a subject the smarter you will seem. Your IQ will increase proportionally with the number of subjects you acquire context in. It is better if the subjects are diverse. Also, the more context you have the faster your processing speed will seem to get (In reality it stays constant, your neurons will only fire so fast)

Sure, raw learning ability, or memorization speed which is what you are talking about, matters. But as long as you don't have a learning disability it pales in comparison to context. And we all have pretty much the same learning ability. Also, those people that are really smart have put in thousands of hours to acquire lots of context. The genius who can absorb new material by reading any subject in a single pass is a myth.

There is a strong correlation between IQ and reaction time. A leading theory is that IQ is basically a measure of reaction time.

On the other hand, IQ is steadily increasing on average. This may, however, reflect how as society develops better abstractions, it tends to increase our reaction time.

Experienced people seem fast at solving problems because they have seen similar solutions before. Not necessarily because they have a faster mind.

It's a mistake to assume that because someone is better than you at something, you are less intelligent. It simply doesn't follow, and as the OP is experiencing - leads to low self esteem.

Not all cultures are unhelpful and competitive. Take it for what it is - a tough culture rather than a group of unpleasant individuals.

You have little to lose by assuming that you are correct in your belief that you can learn and by being respectful but persistent in recruiting your colleagues to help with that.

Intelligence is not about problem solving but understanding. I can explain some complex topic to someone less intelligent ten times in all the ways I can imagine it being explained, I can try to break it up into pieces, I can try to take the pieces even more slowly... but in the end, if the person does not have the capacity, they don't grasp the whole picture.

Oftentimes intelligence translates into speed: speed of understanding new concepts; speed of doing things, but far from always. In fact the latter is typically just practice, no matter how smart you are.

That's your definition of intelligence. You could solve problems quickly with a failure rate of 2%, but that 2% error actually kills off, deforms, or ostracizes 10% of your population, and that 10% contains 100% of what you need to solve your next set of problems. You destroy yourself by creating a definition of intelligence in the first place.

Yeah, so, I would have said it the other way around, myself: speed of processing is an intelligence. To be sure, I subscribe to the multiple-tracks-of-intelligence view.

What. I can't even...

This is non sense. Intelligence is not speed of processing.

True: intelligence is speed of processing and the capacity of the person's working memory.

> The faster guys will often grow bored with a single problem and will have to skip from one problem to another (ADHD, etc). This is your opportunity: stay on the same problem longer than they can, and you will find solutions while they're busy approaching multiple other problems.


Companies need a balance between 'move fast and break things' and 'keep things stable so we can make money'.

Intelligence, the engineeringly problem-solving version anyway, looks like focus to me. So the superfocused win. The autistics win.

But those guys like to eat their own poo.

FFS, autism isn't about focus. Find a more meaningful and less insulting word.

You'll find that those on the spectrum who gravitate to technology jobs do so not because they can focus any better, but because they are more comfortable with systems that are predictable (computers) rather than capricious, condescending, noisy and random (humans).

Autism, being "on the spectrum" is very much about focus. It is permanent focus. A chronic pinching of awareness. You are stuck, focused. Bright and narrow. It is a different shape of human. It brings a strength and a weakness.

I speak from personal experience. I've been studying the subject my whole life. My family has much AS.

Also, the discipline of meditation sheds much light on it.

It is very tempting to classify people. It makes you have the illusion of understanding their behavior. Don't fall into the trap. People my think a certain way twenty years and change in a day. I have heard tjat people think in a million different ways....

I speak as someone "on the spectrum" and the father of a boy "on the spectrum" - it's not a sweeping generalization, it's a matter of how the brain differences affect the "theory of self" in the "autistic mind", to turn a phrase.

'Never underestimate the power of stupid people in large groups.' - George Carlin

Who cares if you can solve the wrong problem quickly. I'll take the person who knows what problem to solve. In my experience those are often independent.

Am going to say that it has more to do with the size of ones working memory capacity. The depth that one can examine things.

My rule of thumb is that I always try to be the dumbest person in the room. If I'm the smartest person in the room, I'm not learning. I want to surround myself with people that know more than I do about things I know little about.

My advice:

1) Shut up and listen

2) Ask them respectfully and professionally for advice when you need it

3) Shut up and listen some more

If you're an engineer, I also recommend the following:

1) Read everyone's commits, especially just before a feature launches. You'll learn their code styles and neat tricks that you never considered. If you have a question about why they did something, ask them respectfully. (e.g., "I've never seen that before. Why'd you decide to do it that way?")

2) Volunteer to be the bug fixer. When a support ticket comes in, be the first to grab it. Going in and fixing other people's bugs gives you more experience in reading new code and grokking it quickly, understanding how all the pieces of your app fit together, and everyone else will appreciate your initiative.

3) Ask your peers for code reviews every once in awhile. They will love that you respect their opinion, and they will be able to point out mistakes.

Above all, keep an open mind -- don't take any criticisms personally. They probably think you're a great person and your code sucks -- that's great! That means they can help you improve. If they think you're a shitty person, then you're in trouble... :)

Stay humble. Stay focused. Keep your eyes and ears open and learn as much as you can. When you feel like you're not learning any more or when you feel like you're actually the smartest person in the room, that's a good sign that it's time to go somewhere else.

Good luck.

I second this. It's basically what I did, when I was the dumbest person in the room.

I was also the dumbest person in the room for 4 years. I spent a ton of that time studying,asking questions,and playing catchup.

It eventually paid off though. Persistence!

> You'll learn their code styles and neat tricks that you never considered.

I agree, it's a good thing to be the dumbest person in the room, BUT a good engineer or developer does not only shine in the work he/she produces, but also in making sure it's clear for his/hers coworkers.

Clear and documented code beats smart code and hacks, and often you can bundle it in a library making it optional to truly understand the workings of the library to use it. (Unless performance is that important or you are doing HFT-alike things)

>> If I'm the smartest person in the room, I'm not learning.


This is something that I cannot stress enough to junior developers that I work with.

This also applies to social and inter-personal skills as well as technical - just as you aim to continually improve your domain knowledge, there are always opportunities to identify and improve complementary skills.

If OP can determine strategies, survive and thrive in the environment described, this will be invaluable for progressing in a more accommodating workplace.

> 1) Shut up and listen

I like that but many people get irritated and feel you're not proactive enough if you just occasionally ask questions.

still it's better to listen and try to understand everything instead of suggesting stupid solutions without deep understanding of problem. I've seen many cases when new dev joins company and instantly suggests some solutions to some problems without any knowledge of domain. Unless you are expert at that domain, you should do that "shut up and listen" in the beginning. OR raise respectful questions to get that knowledge of domain/programming skills.

1. Act they way your Grandpa would have: with deference to their knowledge and a healthy dose of confidence (you did get hired by these people). There's a pecking order, and that's OK, but don't let the socially deficient define how you feel about yourself.

2. Sadly it's been the norm at both my jobs. It gets better after a while.

3. Yes and No. I've met some unbelievably smart people who are amazing teachers. "Rock Stars," however, are known for trashing dressing rooms. "Ninjas" are best known for backstabbing. And "stars" are divas.

My long view of every developer called a rock star, ninja, or other superlative around me: Burnouts, egotists, manic-depressives, except for a couple who healed and chilled out and became mature developers.

People who sign up for those roles get rode hard and put up wet.

I can't tell you how reassuring this is for me, and probably others.

For what it's worth I'm comfortable with the idea that you may want to switch jobs; there are an awful lot of fantastic software jobs out there.

If you do decide to switch I'd make sure you're willing to stick it out a few years wherever you wind up. There's very little stigma (if any) to changing software jobs frequently, but more than one ultra-short-tenure job can look suspicious on a resume.

Assuming, however, that you want to stick it out at this "desirable" job, the above are my answers to your questions. Starting a new job is always hard. If you stick it out you'll learn a lot. If you don't no one will judge you for it.

While this doesn't sound like a great working environment, my advice while you're there is to ignore the tone of your coworkers' comments and focus on their content.

If a developer condescends to you it's likely (a) accidental, because they don't know how best to explain something simply+accurately or (b) aimed at your current knowledge, not at you on a personal level. It might also be (c) they think you should have solved it on your own, which may/may not be true. In any case, all you can do is focus on the information and let the rest bounce off you.

The best favour you can do yourself is to be rigorous about following steps, checking your work and documenting things (just scratch notes for personal use).

Senior devs should be happy to help you learn, but won't like helping you fix sloppy/repeated mistakes. If you are confident that you've done your work with care, then others' bad attitudes shouldn't affect you as much (although it never feels good).

You may be able to turn this into a good experience. However, you may just be stuck on a team where where the pressure is on and nobody has time allocated to mentor you. If the situation doesn't improve, find a new job -- look out for yourself first.

First, recognize that this is the feeling of learning. Being the smartest in the room is great for the ego, less so for long-term growth and improvement. So be thankful.

As far as the prima donna attitude, first realize that in a typical software company everyone is insanely busy all the time and you need to negotiate some kind of mutually acceptable situation for how you can learn. Being on the receiving end of being interrupted 10x/day by a junior who doesn't know what's going on (voice of experience here) is incredibly disruptive -- so figure out what works for everyone by discussing it openly with your colleagues and manager. As long as you didn't misrepresent your skillset during the interview process, it's as much the company's job to make you successful (allowing them to get their money's worth from employing you) as it is your job to be diligent and work hard to advance your employer's interests.

It's always a give and take, that's part of working somewhere and business in general, you have to figure out how to line up your needs with the other party's (your employer in this case) for mutual benefit.

A word of caution: take all this feel-good "it's not your fault" stuff with a grain of salt. You're probably cocky because you're used to being the smartest guy in the room, but you are't anymore. That you've acknowledged this is a great first step, now work on fixing it.

Some practical tips: - Do you have a manager? Make sure you do. I define manager as "the person responsible for assessing your performance, making personnel decisions, and/or writing your review"

- Set up regular 1:1s with your manager. This is a reasonable demand and you should make it. Maybe once/month to start, 30 minutes, where you can discuss your needs. Make it a regular thing.

- Try to have the mentality of being open-minded and let it show through. You'll be surprised how far just being kind and admitting you aren't the expert will go with people.

Another small practical tip: Instead of asking questions 10x/day, arrange a daily chat (maybe half an hour) so you can combine them and interrupt only once a day.

Romans 12:20 "If your enemy is hungry, feed him; if he is thirsty, give him something to drink. In doing this, you will heap burning coals on his head."

Try being super nice to these guys. Maybe you will find that they are just as insecure as you and you can break through their shells. If you give that an honest effort and they don't break, get the hell out of there!

Your co-workers sound horrible. While I agree that you could learn a lot from the experience, even so I wouldn't want to work with those people.

Everything is relative. When someone is defensive and self-conscious, it's incredibly hard to give feedback of any sort without them feeling "like an idiot".

Yeah I have a hard time telling what's definitely going on from the OP's description.

I personally find the most difficult people to work with are the people who have trouble filling the gaps in their knowledge themselves AND are evasive when they don't know something.

Here's a different perspective: Don't compete along the dimension where you're outmatched. Sounds like you could win a lot of points by playing the grasshopper to their kung-fu master and act as the glue for the group working to gain a holistic view of the team.

What other holes in their skillset can you fit in?

Holistic hole-filling is pretty much my secret sauce. I endorse this tactic.

May you expound on this holistic hole-filling? Thanks!

I haven't read the other responses but here's my take

I'm going to go out on a limb here and say that humility might be the best course of action.

Keep learning, and growing. It's harder for some to do that when your coworkers are lower in skill because you won't have the mix of talent and experience. You need to learn not just in your field, but everything related to it: communication and interpersonal skills, business. Taking an interest in those and putting time into practicing or reading up on them is a great way to advance yourself.

Always be open to learning from your peers, but you don't have to think that their way is the best or only way. Even if they have more experience or seem smarter they're not always right (and the fact that they have the attitude of some mid-level developers means they are likely to still make the same mistakes).

Don't get too down on yourself for screwing up. Remember that you need experience just like everyone else and there's no shortcut for that. It will just be a matter of time before you're the same level of smartness that they are right now. You might close the gap some.

Keep kindling your passion for learning and improving.


The "worst case" scenario (in terms of this current company) is that you are let go or quit—that's not so bad in the grand scheme of things. So, what experiments can you try to either improve your reception or learn as much as possible before that moment..?

Ask questions.

Your 'supeeriors' may be ninja rock star behemoths, but they are not immune to simple psychological techniques, like reciprocity. Asking questions and requesting favors has a tendency to make the other person actually like you more and be more willing to help you out further down the line.

It's counter-intuitive, but it has a lot to do with the sunk-cost fallacy and leveraging others' cognitive dissonance; i.e.: "if I'm such a great person/talent and I spent the time/effort to help this person out, they must be more like me than I previously thought."

Beyond the persuasive benefits of asking questions, you'll (ideally) learn more about yourself and come across as more open and approachable to your peers, which is good.

More importantly, don't compare yourself to your coworkers to determine your worth for the company. Are you better today than you were yesterday?

The best leaders and most productive people I know ask more questions than anyone else and are very skilled at listening to what people are telling them. Just because you were "thrown to the lions" doesn't mean you have to become one via trial by fire. Lions have too much pride.

Just ask questions. Position yourself to be better tomorrow than you are today.

Worst case: you're out of there and on to something else (which could very well be the same). Best case: people start seeing your value and you improve your rate of learning.

You say you were confident and cocky during the interview. Think back. Did you mis-represent the depth or breadth of your knowledge and experience? You were aware that you lacked experience. Did you make the hiring committee aware as well. If you represented yourself as something you are not, that might explain a little of the attitude from others. Not excuse it, just explain it.

If you represented yourself honestly during the interview process and they hired you anyway, then someone had confidence in your ability to learn. Check in with those people and see if they think you are picking things up at the rate they expected. A good manager will check in with you if you are moving a little slower than expected. A great manager will check in even if things are going as planned. Good managers are rare, great ones even rarer. Reach out to your manager if s/he hasn't reached out to you.

Even if you represented yourself honestly, there are going to be some jerks. Period. Some people will be of the opinion that someone with more direct experience should have been hired. It wasn't their decision and they are not your boss.

Typically I'd say give it at least 6 months before making a decision about whether you'd want to stay in the job. Obviously at 4 months in you've already given it some time, but a little longer won't hurt (well, clearly from what you've said it will hurt, but I'd hang on a little longer, just to see if things suddenly 'click').

On the other side of the spectrum; I began a contract job about this time last year...and I gave it 4 days before jacking it in. The job was just awful, but the people weren't the problem; it was the system we were working on (their revamped mobile website). It was already a year late (and still unreleased to do this very day) and architected from scratch by another contractor in a weird and unorthodox way. It was painful to work with, and as a contractor you feel like you should "know your shit"; it's embarrassing to have to keep asking the permies how the hell something works. Fortunately for me IT contract jobs are plentiful in the UK at the moment, but I'm guessing you're not in quite such a cushy situation.

My experience is that these are the situations where you learn and grow the most. It might be horrible now, but think about boot camp (the real thing). It's horrible and miserable and you want to quit. But at the end you're stronger and (better) prepared for what might come.

Life is too short to spend it like that. Find a team that accepts you as you are and is willing to grow with you. The learning available from coworkers like that is not positive growth.

Ask the most questions. Do not "try to decode what others are thinking", ask them. If they are going to be terrible then let them be, your job is to ask questions.

1 month of hard learning should allow you to up your game pretty significantly.

6 month + hands-on experience should get you very close to level playing field.

It been said that 1 year is enough to become an expert in any field having enough focusing and persistence.

What important in this is not their attitudes. It's your attitude on stuff that surrounds you.

If you believe that you need to call yourself dumb and punish yourself with thoughts and feelings of guilt while being surrounded with people who has more experience in certain fields - that's your belief/attitude.

It does not need to be this way - but it's your decision whether it is something that you are benefiting from and whether it make sense to change your attitutes|belief|definitions toward certain things.

> 1 year is enough to become an expert in any field having enough focusing and persistence.

In this case I'd agree with you because the company probably does specific things and learning to do those well enables you to do your job well. But I don't think it's generally true that you can get an expert in any field within a year.

Yes to this! Just by virtue of you asking this question means you are not the dumbest guy. You at least know you need to learn. Truly dumb guys...well...

1.- Don't quit. 2.- This is only going to make you stronger. 3.- Rockstar developers are most of the times people with small social skills and/or with little empathy. This is a BIG generalization, but what you say proves my point. Dealing with this kind of people is not easy, you must entice them to show their skills so you can learn from them.

Plot twist: nobody has a clue of what they're doing either.

Related: Some of us know where we're trying to go, though. Maybe.

I suppose you could try looking for a new place, but seeing as you are just 4 months in I would try to make your situation work first.

My advice is to try to take advantage of this situation where you are working with people who are smarter or at least more experienced than you. This is a great opportunity to learn, except that it seems you are with people who may not be willing to teach you? But I think you just have to try to find a way to connect with them and show them that you are interested in learning.

It's scary but if they are talking about something you don't understand, make sure that you ask questions. You should be careful not to divert the conversation too much but it's important that you show them you want to learn, and that you realize you have stuff to learn from them. Most people actually do enjoy teaching others, or at least that's been my experience.

In the end you should just not try to stress too much in my opinion. After all, it's just a job! I certainly hope you are "burying yourself in intense study" because you want to learn and not because you are afraid of not doing well in your job. Your lack of success in your job isn't only your own fault, it's also up to the company to make sure you have the resources you need.

Do you have a manager you can talk to about these issues? He/she may be able to help you navigate the team better. It sounds like you are working at a big company so there may well be some programs to get you a mentor too.

I work with both sides of the spectrum. Sometimes I feel like I am the stupid guy in the room. However

- I must remember that I might see myself as stupid, but remember, they still hired me, against intense competition.

- I have realised that even though I feel stupid, I am more able than some of these rock stars in some areas.

- I open my mouth in meetings anyway - I have nothing to lose really - either I make a contribution, or I get ignored, or I get taught something new.

- The smartest folks I know are also very kind, and very nice. This is because they apply the same intelligence to interpersonal relationships too - to quote one such smart friend - he says he asks himself: "Do I really have any reason _not_ to be nice?", and that reflects in his behaviour to everyone.

- The "smart loners", I have seen are that way because they are insecure. They either believe that teaching or talking about their knowledge devalues their own - or they may be scared of being "found out".

- As for myself, and for you - remember that its just a job. You show up, try to do what you are told, and hopefully get to come in again tomorrow to do the same thing. The opinions of your colleagues do not define your self worth - that must come from inside you, and from the act of caring about something greater than you.

Guess I'm in the rock star league, but I don't think I have a shitty attitude. I've worked with lots of weak programmers over the years and it can be disconcerning but that doesn't mean you should be an asshole for that.

When people you work with asks "what's this strange Dictionary class you're using?" you take a deep sigh (internally, not so that they hear it) and explains that "a dictionary is a hash" and then they ask "what is a hash?" and you say "it's something that converts from one type to another, say english words to german words"

It causes conflict no matter what you do so you try to reduce the risk of it. "What is a linked list?" you answer correctly and helpfully "It's like an array it's easy to insert and remove elements from. I've some books at home explaining data structures you might want to borrow?"

It's only when people refuse to take advice that you get the right to be impatient with them. For example, you might review someones code and point out the logical errors in it and if they don't believe you, you might even make a test case which crashes their code. If they then say "well, that's unlikely to happen in production anyway" then you know you're wasting your time with them. Better just let them "sink" on their own.

Btw, have you asked your colleagues for help? Maybe they are introverted and that is why you think they have a rotten attitude? Maybe they aren't as bright as you think because I've never met a great programmer who wasn't always willing to help underachievers.

If you're learning, it's really important to have the skill of narrowing down what it is you don't know and formulating a clear question about it.

I've seen all sorts of failure modes with that:

* People asking overly broad questions, e.g. if they are having trouble using, say, a dictionary class: "How do dictionaries work?" rather than "I'm trying to do x with a dictionary and I can't figure out how to make it work - I tried the put() method but it doesn't do what I thought." This makes it very difficult to dig into what's actually being asked and provide a relevant answer.

* People not admitting what they don't know. E.g. maybe they just don't have a clue what a dictionary is, yet won't admit it.

* People making a lot of assumptions and not articulating them. This tends to manifest as a really specific question that doesn't make sense. E.g. "I tried to build a spellchecker and dictionary is not returning the right thing." Then it turns out they assumed dictionary was prepopulated with the English language. This is even worse if the person can't/won't explain their thought process when prompted.

* Not reading any of the docs. I ran programming tutorials at one point and it was remarkable how many questions would have been answered by the introductory paragraphs of the tutorial if they'd read them instead of skipping it then spending 10 minutes struggling with a problem that didn't make sense to them.

* Unwillingness to talk through things systematically, e.g. explaining code line-by-line. It's surprising how often people will ask for help, then lose patience with you once you want them to spend any amount of time explaining things. This is enormously effective - half the time they realize their mistake on their own.

A lot of people are giving you some great feedback here, and I hope, at the very least, it's giving you more confidence in your actions at the workplace. I've definitely been in a similar situation, and I empathize.

A lot of people are suggesting you leave, but I think that's rash and there isn't enough to make that obvious. Here's why:

1) Your issue is a people issue, not a work-subject-matter issue. Is it possible to switch teams? Group dynamics can vary tremendously, even with some underlying company culture.

2) My take is that you need to find that middle ground between cocky interviewee and suppressed team member. Regardless of how you think reactions might be on the team, you certainly don't want to continue what's going on now if there aren't signs that things will get better. Take the extra liberties you have as a new member of the team and ask questions; your team really should be open to them. Otherwise, try hard to get to know your teammates, and otherwise be a genuinely good person to them.

To be clear, I'm on most people's side here that something needs to change, but it might be worth considering things outside of flat-out leaving right away.

The way I see it there's two possibilities here, and really these are possibilities on a person by person basis, but we're mostly concerned about the majority of your coworkers/teammates:

1) Your coworkers really are douchebags. In which case, you should find another job. Working with douchebags is never worth it.

2) Your coworkers are OK people (I think it's safe to assume they're not nice), but afflicted with all too common terrible tech industry inter-personal skills. Being more experienced and knowledgeable than you, they recognized your over confidence right away and it turned them off of wanting to be too friendly with you. They assumed you are the douchebag, not entirely wrongly.

The second case might be fixable, if you talk to them honestly. Ask for some advice or help. I wouldn't just come to them teary eyed with your heart on your sleeve, but try being friendly. Most people will take it as a compliment if you ask them for help.

Of course if they react badly to your inquiry, then yeah, they really are awful turds and you should find a new job. This time try to find one with a better environment.

1. Actually it is better to be the dumbest person in the room, you can learn. It is another problem if you are the smartest person in the room. How do you get new input/ideas. Take it as an opportunity to learn. "It's better to annoy someone with questions than piss them off with incompetence". If you get a task assigned just take your time, don't try to compare yourself with them, they will work faster than you. If you make something make sure you understand everything and you should ask questions if something is not clear, fuck their attitude. Make something you can defend by understanding everything. Take your time to understand it. If you half ass something there won't be time to fix it later on. Try looking into being assertive.

2. No it is not normal, but if you work a little longer you standup for yourself and ask questions, they may expect the same from you.

3. The best people are the ones that are open for discussions and discover new ideas or views.

My 2c... I do work inside a very knowledgeable team, so I can relate to some feelings (although the guys here are quite cool).

1. You were hired. That probably means your colleagues approved having you with them. Part of what you feel is the famous imposter syndrome. On the other hand the best way to handle that attitude from someone else is to be honest: "I don't know, I haven't worked with that, I've not experience on that" are valid answers and I hear them from the most experienced guys. Nobody mocks them. If you're open and honest and your colleagues mock you, well... No need to say you should move away :)

2. Not unheard of.

3. No idea, but success and accomplishment gives a sense of power. Power rottens a lot of people.

This is just another step on learning about life. I've been there and I still got some of those feelings, despite everyone around me being extremely supportive to each other.

Ask lots.

Its easy to feel intimidated in an environment where you perceive everyone as smarter (like my first job). Even what you consider stupid questions. That happened in my first job. Not so much big ego's but smart and introverted, and not very good at communication. Don't worry about looking stupid.

As a result I didn't do very well. Appraisal time came around and I was told I was close to getting fired.

Basically I took another job before that happened, and learned from my mistakes. At the time it seemed all my fault, but looking back it was pretty poor management. Next job I asked about anything I was struggling with (it helped the group were a bit more extroverted in general).

If it doesn't get better after a few more months, its probably time to move on. There are plenty of decent places to be a junior.

This is a classic fight or flight situation [0] where you are choosing flight.

There is no use being quiet at work. Everyone knows you are a junior so it's ok to act like one. Ask questions. Say "I don't know how to do this. Can you show me?" You'll find that even the "rock stars" don't know everything. It may be hard to ask those questions without feeling discomfort, embarrassment or even anger. Leverage those feelings to ask the hard questions. This might help alleviate some of the suffering you experience after work.

If none of that works then it's time to look for another job.


I have been in both junior employee and senior managerial positions during my corporate career ( I consult now ). While it's your superior's job to keep stock of morale etc. it can be hard at time to read people, especially when dealing with naturally introverted people.

Have you considered simply bringing this issue up with your colleagues?

There has to be a reason they hired you in the first place. Somebody must have seen potential in you.

From my perspective it sounds like you're either just not a good fit ( unlikely ) or aren't getting the nurturing you need.

Nobody is perfect, nobody knows everything. Everyone has to start learning somewhere. Some straight up honest conversation with your colleagues could go a long way.

I don't really like helping people but i don't think I have a bad attitude about it. I don't mind referring people to the same resources I found useful for learning. But spoon feeding you knowledge or skills, sorry, that's a different job and not one I signed up for.

Unless it's explicitly a mentor-mentee situation, that is. But I'm not gonna act like we're equals and then be teaching you all the time. It reminds me of when I was in school and was assigned "group projects" where I did all the work.

Consider the possibility that your feelings about their attitude is partially a manifestation of your bruised ego.

Google "imposter syndrome"

Well, to be fair, some people that have imposter syndrome are actually imposters.

Not implying this applies to OP, but in general.

This is relevant. I wonder how many of the people in OP's company suffer from this, and to what degree it's the cause of their behavior. OP should stay put (being the smartest person sucks too) and stop worrying about being thought of as an idiot. As soon as he does that, he'll start asking questions and engaging and my guess is it'll seem less and less like he's an idiot.

    1. I feel I handled this wrongly, and started with too 
    much confidence. If I am the least knowledgeable person,
    and a co-worker ignores, despises and almost makes fun of
    me for your lack of experience, how should I act in order
    to maintain my dignity but also be humble enough to 
    acknowledge the co-worker's knowledge?
There are two questions here. First of all confidence is not a bad thing. When too much confidence encounters reality then adjust but don't beat yourself up about it.

Second, admit when you are wrong but don't feel ashamed. Realize there is dignity in admitting you don't know. If the work environment is toxic and your coworkers are a barrier to learning then you might want to think about finding a new place to work. If on the other hand approaching them with humility breaks down those barriers then it might be worth sticking around and learning some things.

   2. Is it normal to be hired as a junior and just being
   thrown to the lions, with no help or time to ramp up?
In my experience it's roughly half and half. There will undoubtedly be times when you join a company and they expect you to just hit the ground running. There will be other times where the company won't expect you to be productive for 6 months. It varies.

    3. Do all star/ninja/rock-star software developers have
    rotten attitudes?
Personally I don't think there is such a thing as ninja or rock star software developers. And if someone actually thinks of themselves as one then they probably have too high an opinion of themselves. And that can often lead to rotten attitudes.

That said there is such a thing as experienced and wise developers. And when you find them then it's important to treat them as a valuable resource. Many times someone elses attitude is just as much about how you approach them as it is anything else. Being too cocky can lead to a little bit of teasing.

Bottom line don't get discouraged when you are surrounded by lots of smart people. That's a fantastic position to be in for growth. But carefully consider if the environment will allow growth for you or not. Toxic environments it may be better to get out and find a better pond to be a small fish in.

> Personally I don't think there is such a thing as ninja or rock star software developers.

Ingo Molnar?

Can you provide more detail? Like is it the technology being used? The way the technology is being used? Internal jargon about the business? The business process itself?

Maybe your co-workers are over complicating the solutions to things because it makes sense for them to do so. I've seen this before and it can be hard to follow and detrimental to anyone else trying to understand.

Take one of them out to lunch, pick their brain about stuff to get to know them a little better. It might help understand how they approach problems.

1. It's OK to feed their ego. Explain that you are impressed with their knowledge and experience, and you are interested in learning from them. Confidently assert your ignorance (it's better than misrepresenting your abilities) and work to improve. Provide value however you can (even if it means doing menial work, unrelated to your primary job).

2. I don't know what is normal. What is normal for me may not be normal for society at large, and this may not be normal for the company you've joined.

3. I sure hope not.

The environment you work in has a toxic culture that is absolutely hostile to junior level folks. Unfortunately, this is a sad state of affairs in our entire industry right now. You have to specifically look for environments where the management team is making a concerted effort to improve onboarding for new hires.

My suggestion would be to look for another gig. You learned a hard lesson about being humble and not inflating your ego during the crucial hiring process, but don't prolong this pain any longer.

I will answer them in the reverse order:

3. Absolutely Not. There are a lot of amazing Jedi like developers, who are not only the best at what they do, but elevate the level of the whole team, and help make everyone around them become incredibly productive.

2. I think this is pretty normal. You actually want to be in an environment like this early on in your career, so you can learn from these people and from the wealth of their experience. Experienced people are good at spotting design flaws, and common pitfalls in solutions to problems because of their experience.

1. This is actually a big red flag. You may want to see if everyone in the team is behaving like this with you. If so, either this workplace has extremely bad work culture, or they have a perception that you're really dumb. You cannot be dumb, or incapable, because hey! you did get hired at this place. But either of these two situations I mentioned is a big red flag. So what I would suggest is to try to look for smaller projects, or sub problems where you can work relatively independently, so you can have the satisfaction of having contributed to the company, and build that level of trust and reputation in the team, and also in parallel try to interact with others in the team with the intention of finding a 'mentor' who understands you and helps you guide through the politics of your workplace. If nothing works or improves in a say a month or two, it is a good idea to look for a different team within the same company, or switch to another company.

Good Luck!

PS - I work for msft

You should have an honest discussion with the co-worker(s) about their attitudes - speaking from experience of having done the same to another, it often is not intentional. It is usually done out of frustration from being overtasked and having to teach/walk someone through something on top of normal work.

For #1, say straight up that you don't appreciate the other person's attitude if it comes up. We are professionals, and so each person should be treated with respect. If someone fails at that, it needs to be addressed pronto, or it will just repeat itself.

For #2, from what I can tell, it is unfortunately - the expectation is sink or swim, the junior developers need to find a way to make things happen. I was fortunate and scored my first job at a non-profit, where I had the freedom to experiment & learn, as well as do heavy pair programming.

For #3, absolutely not. I personally stress that I am willing to mentor people when I interview them, and carve out time to help as much as possible. I have some stellar co-workers who do the same. I also have put in a lot of work to help change the culture at my company, especially on the engineering side. I stress mentorship and collaboration - even a junior developer can help change things for the better with the right people skills and strength of mind.

A ton of interesting comments - let me add my opinion in there too:

- Intelligence IMO is two fold. Speed of processing and domain knowledge. Clearly one with a lot of the former, gathers the latter faster though. Right now - The only thing I know about your co workers is that they outweigh you greatly in latter. Considering you were hired and assuming your confidence had some reasonable foundation, the only solution here is time.

- I try not to allow the attitude of others to define my experience somewhere. If it gets unbearable, I just leave - but in general, our field does seem to attract a varied set of folks instead of an uniformly 'nice' group. I give some bandwidth for this.

- getting one of them assigned as your mentor by your manager and making your success an explicit winning condition for him is a good option. Get it done ASAP.

- there is a little bit of ramp up here. Even a rock star team is going to have a set of work items no one wants to do because they are 'manual' or 'easy' or 'boring' and so on. Take these up first, ace them then progress towards the core.

- finally, no one is going to remember your interview as much as you do. That's a red herring. I have done about 400-500 of them, I definitely don't remember any promises. I hired based on the amazon fit + smarts. Rest usually gets lost in the mess.

Good luck!

I can say that i was in your shoes several years ago when i joined my first company.

Coming straight out of Uni with a good CV i lacked work experience. Academic code and Work code is two completely different worlds !

So at my job for the first 1 - 2 years I sucked ! Really sucked. I was working as hard as i could, trying to figure everything out, and having several massive programs that we were working on it made it extremely hard. And as you, all the developer were each person for him self. Nobody bothered in giving me a bone to help me out. They just throw me to the wolves.

Every time i asked a question i got a vague answer and even some times some rude comments about asking that question !

A few years after i stick in there i am as good as all the other developers which at that time i though they were exceptional ! So yes, for the 2nd question. Developers hardly care for any one else. I have told my CTO that it was every man for him self for several years in my reviews. If someone helped me out a bit in the beginning it would have been up to speed from the first year.

So not only the star/ninja software developers have rotten attitudes but i would say that 90% of them dont care about the junior developer.

My recommendation, is that if you like your job, stick in it until you get good at it. And trust me you will. If you CTO tells you anything, just tell him it is impossible for someone to catch up with out the experienced developers help and that they are all for them selfs.

I wouldn't think about quitting. The next job will most probably be the same.

Hey! I just want to share an experience, hope it helps. I am a mechatronics engineer who got into a software company in my last year. I did it for the experience, I didn't even know JS, just C++ and some java. They thrown me into front end develpment in a framework I didn't even know it existed. Some hard months came through. Some people where nice and humble, some well selfish and didn't bother to explain anything. So I kept on learning, started with JS, Html and CSS. I downloaded books and videos, read a lot of blogs (I got to know HN there and I am a user since), got into the world of develpment, started to ask questions on StackO, trying to answer some. Latter got into Angular, ExtJs, mongo and many other stuff, I am glad I got in in the first place, the fact that I didn't know anything and that I felt I didn't belong made me study harder. Nowadays I work there part time, got my first big project and some customer for it, and I am in charge in the whore software part. I got to realize that the software industry is a wide wide field, just look for something you feel confortable at and give your best. There is always news things to learn, that is why I love software develpment :)

This is how I felt going through my university course. I knew I needed to learn a lot at the beginning but it felt like everyone was way ahead of me. This made me nervous to talk to anyone and it also made me anxious about my grades. I didn't want to come across as an idiot and therefore I started doing what you are doing, intense self study and keeping to myself. Two things came from this, one (a good thing), I pushed myself hard, got a good final grade and I learnt how to progress. Two (a bad thing) I never interacted with my peers and the stress at some points was unbearable.

My advice (looking back at my experience), be honest, if I had just dropped my act and accepted that other people were ahead of me and stopped the measuring I would have found out that there were others that felt just like me and there were lots of people that were more than happy to help (I found this out way too late!). You will also find that the stress will be relieved and your days will become easier. Just keep up the self study and still have hard goals set. If you take this advice and things don't get easier at work - then I would take a long look at the environment at whether or not I would want to continue working in it.

I pity your situation. I've been there. I was still in school, when I got the opportunity to work as a contractor with a team that had their shit together in an epic way. Everything they wrote was tested. Unit tests, acceptance tests, integration tests, and thorough exploratory QA. They were working on a legacy system, but everything they touched got nicely refactored and wrapped in a big hug of tests. 100% agile, always pair programming, and their process was smooth. I had never heard of any of it, and it was amazing to experience.

Unfortunately, the domain was super deep and insane to wrap your head around, and almost the entire team was made of introverts who wanted their machine to keep whirring along perfectly. I'm an extrovert, and I was so green it was ridiculous. I was one of the best students in my classes, but I felt like an idiot when I was at work. I left questioning why I had chosen to become a developer everyday for about 5 months, when finally things started to click. Unfortuately, these people had already formed an opinion of me. My boss was superb though and offered to move me to a different team. I jumped at the chance. I joined a team of more junior guys that got more chance to work solo. I blossomed in that environment. I taught myself things without fear of judgment and banged out features like a champ.

My manager was considering me for hire when upper management laid off a sizable chunk of the IT/Dev staff and froze hiring. I already had been interviewing elsewhere and ended up in as a consultant, which was a perfect fit for me to learn and grow. My advice is this: learn what you can from them, try to sharpen your skills, and don't be afraid to jump ship when you need to. I hope that helps.

Having had to deal with a few people who were in your position, here are a few points to consider. - Realize that you being cocky at the beginning likely didn't help you with the way your coworkers are treating you. - NEVER pretend that you know or that you understood something unless you really do. Its okay to not understand something, everyone knows that if you do not admit it, you'll never learn and therefore are a lost cause. This is the major problem I have seen with people in your situation. - Do not get caught in details, focus on understanding the big picture and get the basics right. Always put things in perspective. - Volunteer to do grunt work, will make you gain experience and put things in perspective. - When something isn't clear, do not assume it works in a way thats practical to what you are doing and go on, go ask instead. Otherwise you doing grunt work will lose everyone's time. - When you don't understand something, explain what you understand or how you see thing and why, let your perception be corrected. - Do not get yourself too tired by studying outside of work. Some study is fine but you need rest to learn and perform.

The most important thing to remember and believe is that the most intelligent people ask questions. Not knowing something is totally fine as long as you recognize you don't know it and are willing to put in the effort to learn. These so called ninja rockstar engineers are just being assholes if they're walking all over you simply because you're a junior. They knew literally nothing at one point and I can guarantee they still have a ton to learn.

As for your questions:

1. Dignity? Seriously, having a question or not knowing something shouldn't affect your dignity. You'll severely limit your learning speed if you're afraid of what people think of you when you're not as knowledgable as everyone else in the room. That to me sounds like an excellent situation where you can learn a lot.

2. It's pretty normal to be hired at any level and just be expected to start producing. Scrappy startups will typically be more like this than larger companies.

3. No.

Lastly, if this place is as bad as you're making it out to seem, go find a better place to work. As engineers we literally have thousands of cool places to pick from and awesome teams are a dime a dozen. You're not a tree, pack up your shit and move!

For a beginner in high tech, it is rather common, that he or she feels incompetent.

Maybe you also can look at it the other way around: When you are not a beginner, but well settled in IT, will you always know things? No. I once was in a room filled with high paid persons where most where longer in the business than I did and where also higher paid than I did. But they just did not know what I knew. I had made the software to run 10x faster than before and they where amazed. I knew, that it just was naturally, but they did not, because they did not have my particular experience and did not know some of the details.

I think, much of the IT business is basically showing confidence. IT is about always being ignorant -- but ignoring this fact -- and get used to it.

Being in the IT business means always learn new things and always be beginner even when you have been in it for thirty years. The trick is to get used to it and don't show fear in the face of the wild dragon called "The Unknown".

That is just part of the business -- and don't fear to ask, because it is sometimes the only way to overcome the unknown.

When others make fun of you, just ignore them. Some day, they will have to ask you!

I'd say most humans beings would rather not work with assholes if they were given the opportunity to work with decent people instead. Just a hunch. So my advice is pretty stupid but honest: don't accept to work with assholes, period, then you'll make a tiny change in the world. Being a genius, a ninja or a rock star developer doesn't entitle you to be a jerk with anybody. I've always liked myself to be the junior in the room, you learn so much that way, you absorb so much that it's really rewarding in the long run. That part is really nice and you do the right thing feeling that way IMHO, there's always so many things things to grasp that you better go with this attitude. However, it's your choice to stay in such situation. I guarantee to you that are uncountable places out there with really nice people (equally genius, who don't call themselves ninjas or rock stars) who actually care about juniors in the room but you have to look for them instead of going along with this "be a macho, just take it! it's a wild world!" mentality of many IT people.

Don't confuse rock star developers with people being assholes. If your arrogant attitude turned off your coworkers, then when you stop being arrogant the situation should improve. If your coworkers are assholes it will not. There are people out there who will thrive in situations like this. I am not one of them. I have spent time in jobs with assholes like this and the time and money was never worth it.

1. Feelings can be useful tools. "Confidence" is not "worth" or "value". Self-Esteem can be confused with confidence. It's important to be precise. Being snubbed by a co-worker, your question is really related to social skills. People act like jerks for many different reasons, but a confidence founded in reality--and not others opinions--is a strong and real confidence. You are there to solve problems, create solutions, do that, your reality confidence will grow.

2. You ask if it's normal I suspect to see if you would encounter this "style" elsewhere. It's probably more common than not depending on the organizational culture and budget. Older, bigger, companies that bring you in as a "junior" level usually have mentor programs and some even formal.

3. I don't know the answer to that. The word "all" usually is a signal that the answer is no. But to achieve a very high level of expertise probably requires foregoing lots of other learning (i.e. social skills) that other people encounter as they mature. But rotten attitudes can be found everywhere.

You see this attitude on every tech answer board. Responses like: why the heck are you doing X, when you should be doing Y like me, I'm brilliant.... Since you've only been there for 4 months, stick it out, and deal with it as best you can.

I know this is going to sound ridiculous, but start going to the gym and build some muscle. This will build your confidence, and put your pencil neck co-workers on guard.

> 1. I feel I handled this wrongly, and started with too much confidence. If I am the least knowledgeable person, and a co-worker ignores, despises and almost makes fun of me for your lack of experience, how should I act in order to maintain my dignity but also be humble enough to acknowledge the co-worker's knowledge?

It sounds like you're in the same situation as the so-called "rockstar developers" once were. It's sort of like the perpetual rookie hazing process. Make the freshman feel like crap and once you become the upperclassman, it's your turn to treat the freshman like shit because you've earned it. Seems like this company has some of that going on.

> 2. Is it normal to be hired as a junior and just being thrown to the lions, with no help or time to ramp up?

Yes does happen but no it is not acceptable. Any company that does this--I would suspect they don't have amazing development practices overall.

> 3. Do all star/ninja/rock-star software developers have rotten attitudes?

As a rule of thumb, when I hear a company talk about their "ninja rockstar programmers," I run far far away. These are buzzwords typically used by incompetent companies with inflated egos. I'd actually be willing to bet that they're not as great developers as they make themselves out to be. Furthermore, good developers are good team players.

I previously worked for a company with "rockstar" developers. The company was so full of itself and the developers (while many were nice and friendly) were mediocre programmers that thought their domain expertise made them great programmers. There was one guy that would speak down to me as I was learning the domain when I was by far a better coder than him.

TLDR; Find a new place to work, your environment sounds toxic.

As someone who was in your shoes, lemme suggest the following - the enemy is not your coworkers with big egos, or the work days, or meetings or whatever.

The enemy is your own ignorance.

You are bothered because they know stuff and you don't. There is literally nothing they can do about this. You are not in a school where people will take the time to teach you how to do your stuff. This is work. Say you hire a carpenter and a painter to build some furniture & paint your roof. The carpenter feels very insecure that the painter is so good at painting. How exactly does this help the carpenter improve his skills ? So work on your studies. You say you are "very willing to work hard". So just do that. Ignore all this interpersonal he-sucks-self-esteem-rockstar-dignity etc. This is not some Lifetime drama. Ramp up fast. Focus on your skills & the rest of the issues will fade away in the background. Atleast, that's how I solved it when it happened to me.

That may work, but there's something wrong with him not feeling comfortable communicating with coworkers. The problem sounds bigger than his own personal issues.

You might be experiencing imposter syndrome, and it makes you question if you deserve to be there.

I suffered from imposter syndrome when I got moved to a new team (same employer) by myself after a cohort was moved.I felt like I wasn't properly onboarded and I did not have a fellow noob to ask "silly questions", and I suffered for it. I was tasked to do a major-ish feature and I completed it with no confidence: it was scrapped from the first release & I felt like I had failed. When a colleague was asked to 'redo' it, he only added about 5% more and called it a day. Looking back at the code: it was good work, and it was 95% of what was required (to me at the time it felt like 20%).

I will tell you what I would have told myself then: don't be afraid to ask "silly" questions - don't let your egobget in the way.(try to figure it out first though). Also: it's a great opportunity to learn.

I think you should understand a few things:

1. Experience is temporary. It means either you or your coworkers can be better or worse someday. For the moment they look more experienced than you are. But it's not forever if you keep learning while they think they can relax.

2. Experience is not a solid proof of knowledge and skills. It's only one of the many reasons that lead to success. What are the others? What are the things that you can't do without experience?

3. Both making fun of other people and thinking people make fun of you is a waste of time for the real genius. They know what make them feel good is not from others.

4. Keep learning is always the right thing to do. Don't think it's intense or tiring. It's always this intense and tiring. If you don't know if it's worth it, just keep doing it and you'll find out. You can't say if climbing a mountain is worthy unless you yourself is on the top.

(1) As long as your goal is to aggressively learn and grow and understand, then your dignity is certifiable. (I'll even print you out a certificate if you ask!) So act as one aggressively interested in learning. If these guys are really that good/worth their salt, they will appreciate your eagerness to learn from them.

(2) This isn't uncommon. Our industry needs to have better professional training for juniors IMHO.

(3) No. I've found that the better someone is the more interested they are in teaching and bringing others up to the task. The guys with rotten attitudes tend to plateau and remain B+ players at best.

A couple words of advice:

* While you should always seek good mentors, it's imperative that you take your growth into your own hands. Read and practice as much as you can on your own. Read the book "Mastery" by George Leonard.

* Read the book Mindset. In the parlance of that book, rotten attitudes generally equate with the "fixed mindset" and those guys will plateau.

* Focus on your self. It may be the right decision to run away from these bitter jerks. But you may find that by focusing on your growth some of them may loosen up and help you grow. You can still learn from jerks, and as long as you stay growth mindset, you will surpass them over time. Patient focus and study! (If the environment however is truly toxic for you, then, yes, flee. If you flee, however, flee to an environment that is still challenging and has expertise that you can aggressively learn from.)

* Focus on your (future) self. Don't think "I'm an idiot now" (even us experts are missing a huge mountain of knowledge and understanding and are idiots ourselves). It's a gift to "see" what you don't know. Because now you can go work toward filling that gap.

Hope this helps!

[edited. fixed typos and clarified advice]

Let me tell you my point of view. It is all about the company culture. There are cultures that breed stars, and that usually ends up being bad for the company.

The company I am currently working at, has a flat structure, with everybody at the same level basically. We have a lot of real celebrities here, people who are really know for what they have done, and exceptionally brilliant.

But the culture here is of knowledge share. People are open to share what they known. There is no real internal competition, the competition is focused externally. This has made our company grow faster. Junior developers are absorbed on entry, and they stop being Junior, and just become engineers.

What I have experienced in companies where stars are allowed to breed, is that the competition is internal, which damages progress and direction. Such stars start looking to the outside as fast as they can they never really integrate into the company.

I've been there.

I was hired for just having a phd in engineering (unrelated to CS) and knowing about hacker news (it was an interview question!).

I was in over my head technically and with little time to catch up. Most of my colleagues were chill, but three or four were jerks. Nasty types, who fed on other's pain. My manager was a cool guy.

I entered a feedback loop of negativity which affected my focus at work. Eventually I quit and returned to working in my field (which I don't enjoy, but at least I can perform while I'm training in something better)


I learned about programing practices, which is useful to my current work. Within my field, I was already a good programer. Now, for my colleagues, I'm a ninja.

Experienced start up life. The good. The bad. And the ugly.

The negative:

Wasted time.

My advise would be to figure out if you can make it for a year or so. If you can make it, hold on and move on afterwards. If you're about to break, pull the rip cord.

I pulled the cord after three months. No regrets.

1. Don't worry about the past. There are things you can do now that will be good for the project, the team and for you personally. You have things to contribute.

One of the simplest things you can do is ask for explanations. Listen actively. This is hard, but you will get the hang of it. You might even find that they aren't such jerks after all.

They might feel like you slow them down, until they see the obvious mistake they hadn't thought, then they should be grateful. If they aren't grateful, you are in a bad environment, start looking for greener pastures.

2. It doesn't make sense to do this, it is a waste of good potential, but don't assume malice. Instead, search for something to do that will give you time to catch up. Ask it outright. You are a professional, that implies trust. They trust you to make decisions, they trust you to make the best use of your time, they trust you to refuse a task when you are not up to it or you don't think it should be done. (You might still be required to do it anyway, but you get to have a written complain and you should be able to resign in good terms with everybody. If not, jump ship immediately.)

3. Relationships, even shallow work relationships, take effort. Understanding people is hard. Getting yourself understood is hard. There are plenty of jerks everywhere and sometimes there is no way around it. But sometimes there are workarounds. Few people are jerks all the time. Sometimes it is a misunderstanding. Sometimes you have to negotiate. If after trying other approaches, you still find them with rotten attitudes, find some other place. When you are surrounded by rotten people, life might seem to long.

Improve your communication and political skills[1], that will increase the value of your current technical skills and give you the ways and means to improve them even further. (If you wish so, you might find there is more to life.)

[1] "How to Win Friends and Influence People" is a classic book on the subject.

> Do all star/ninja/rock-star software developers have rotten attitudes?

I work at IFTTT, and honestly can't say enough good things about the women and men I work with. Thoughtful, smart, great programmers and designers. Although all are world-class, I don't think anyone on the team would describe themselves in "all-star/ninja/rockstar" terms.

If you do look for a new position, I'd encourage you to look at companies' "about us" pages to get a sense of their culture, environment, attitude, and so on. (Ironically, the IFTTT "jobs" page is in serious need of an overhaul. Working on it.) Companies that do it well: Etsy, Kickstarter, Dropbox, Airbnb. Also, this great video from &yet: https://vimeo.com/97239546

I just had a look at your "about"[1] page - In all seriousness, why do you have to name your "about" page as "wtf"? If it's for humour quotient, it doesn't look good.

[1]: https://ifttt.com/wtf

Wow. It sounds like you are working for the same company I worked - for a very brief time. Is this a JavaScript shop by any chance? ;)

Regardless, you've been there four months; that's long enough to have made it work. It's toxic and abusive and you have to remove yourself from the situation ASAP. If you can afford to quit before finding another job, do so.

I do appreciate all the advice of how to make this work, and it's good advice in general, but bad advice for this situation. While the abuse may ease up after a while, the pecking order will remain the same and they will still be assholes. It's hard to learn through a bruised ego or a broken spirit.

On a side note, I have been the dumbest person in a company. I compensated by being the hardest working. The "smart ones" loved that I did the work while they did smart things.

I would question your assumption that you are the dumbest person in the room. Your analysis points in quite the opposite direction. The rather toxic atmosphere you are describing, driven by egos with bitter attitudes indicates these people do not understand the meaning of the word team. And creating stressful atmosphere is usually counter productive to creative developments and innovation.

As a freelancer I worked in very many places. I have seen what you describe. I have also seen the opposite. Really smart people with educational attitudes helping juniors to fit in, learn and contribute to the team work.

My advice is focus on learning as you already do and find a more human/friendly environment to work in ASAP. Prolonging situation like this can take a serious toll on your life. And how long you want to work for/with assholes...?

3. Do all star/ninja/rock-star software developers have rotten attitudes?

No. The very best of the best know that work in a for-profit business corporation is teamwork, and they know how to build up their colleagues so that the whole team is stronger. (Source: an immediate relative who works in the industry.)

Meanwhile, don't let the bastards grind you down (to quote Joseph Stillwell). Just build yourself up. Learn new skills every day. That's what everyone in your industry has to do, really.

AFTER EDIT: Sensing disagreement from someone who has surfed by, I would like to know more about your observations of the workplace where you work. I'm in earnest about my comment; the developers I know who have the top skill levels as coders are also more than happy to help build up the skill level of the whole team.

If you are lucky you will be the dumbest in the room long after you aren't. Behaving as or even being the smartest isn't very productive toward learning. If you desperately need the job then you could be more cautious but if are you are not in a desperate situation then be the idiot, allowing you to soak up whatever you can learn or get fired by people too self-consumed to see the value in that. Keep in mind that there are probably others around you that do not understand everything but might be too shy to throw a wrench into things. And even people that do understand everything having a jester around to get to the basics has a valuable effect.

You'll only find an environment that fits you by getting booted from the environments that don't.

That just sounds like a shit environment to work in. I know it's easier said than done, but find somewhere else to work. These guys sound like dicks. They are not stars. A star would mentor you and help you to get a leg up. That said... there is a certain amount of karma being dished out because you were cocky in the interview. Perhaps they think you should be able to hold your own. I guess you learned your lesson :P Of course, you have to have a certain amount of confidence in an interview to get your foot in the door - don't make the mistake that confidence and cockiness are the same thing. Perhaps they genuinely liked your cockiness - it sounds like it fits in with their culture.

1. Handle it the way you would handle anyone else being a dick in your life. Hold them accountable for their behaviour - call them on it.

2. Yes, it's quite common to be thrown to the lions - in fact, it's more common for this to happen than not to happen. A certain amount of this career is an ability to dig in and figure it out - for right or wrong. It's not ideal and it's certainly not in anyone's best interest for it to happen this way, but more often than not, that's exactly what happens. The sooner you get comfortable with this, the better. If you honestly care about your craft, the first few weeks/months of any job worth having is uncomfortable as you get up to speed. The only thing you can do here is learn to cope with that discomfort and try not to let it stress you out until you're up to speed. Don't make any decisions, nor let anyone voluntold you to do something within a timeline that adds additional discomfort during this time.

3. No. People with big egos have this rotten attitude. "Star/Ninja/Rock-stars" usually get big egos by being treated like the world revolves around their [often exaggerated] abilities are the only thing that holds the company together. If you treat someone like a superstar long enough, eventually they succumb to thinking they can act however the hell they want. This is why "popular" kids at school act like brats - because nobody holds them accountable for their behaviour.

Put yourself in the other developers shoes:

Imagine you are under a lot of pressure to deliver and have been behind schedule for months. You are close to breaking.

Then management hires a new developer to fix the issue. Management says they are amazing. Only it turns out the new developer is a total newbie. To top it off the new developer is cocky, can't handle feedback, and doesn't really listen.

In that kind of environment a lot of developers will go "not my problem" and do the bare minimum to help the new team member. It is not right and it is a sign of a toxic work environment but it doesn't mean the other devs are assholes.

My advice: let a couple of the other devs know you are working really hard outside of work in order to get up to speed.

1. Yes you handled it it wrongly, just as most of us did. Shouldn't matter that much. Now you know, you can adjust.

2. No this is not normal, most managers understand that a new employee needs support to get started.

3. Definitely not, most of us are friendly people, keen to help our co-workers contribute to the projects we work on after all if you don't contribute it means the rest of us have to work harder (ok perhaps I'm not a rock star dev, but I'm pretty good).

Lastly, try to find out what's going on, make sure that you understand the dynamics of the situation so that you can adjust your own behaviour if necessary. But if the working environment is really just toxic rather than simply demanding start looking elsewhere.

The only questions I've regretted are the ones I didn't ask. If you don't understand something, speak up and ask about. Maybe it will cause some of these "rockstars" to think less of you, but honestly I much prefer working with people who take the time to ask a question when they don't know something, rather than trying to figure it out themselves, getting it wrong, and creating twice as much work along the way.

For what it's worth, all the smartest people I've ever met are not the ones bragging about everything they know, but the ones who are constantly asking questions and trying to learn more about everything.

Your efforts in burning the midnight oil are laudable, but becoming a good developer takes time and experience; there is only so much you can do to speed up the process. And you also need some work-life balance, especially at your age.

Nothing wrong with a bit of confidence. You need enough humility to ask questions when you don't know how to do something. But you also need a bit of attitude to carry you past the inevitable obstacles and push development projects to completion.

It sounds like you've fallen in with a bunch of idiots. You don't have to be apologetic about being a newbie; we've all been there. Get out and find another job. Good luck.

I consider myself a strong software developer, and let me tell you: if someone is acting like a dick now, it won't matter if you're on the same level as them or not. So long as you're treating them with courtesy, respect, and keeping communication open, if they're not treating you the same in kind then that is their shortcoming.

To your #3, while I'm confident in my abilities, I don't think truly excellent developers have rotten attitudes. Someone who thinks they're perfect already will stagnate. Personally I _want_ to look for rooms where I'll be the dumbest person there. It's how I grow as a developer.

You're probably on the wrong team, can you change? The developers are probably pretty good, but talent and attitude are completely orthogonal. My guess is that there's one or two folks on the team that have this sort of negative mindset naturally, and they've infected the whole team with this style of interaction.

Maybe it's for political reasons, or maybe it's just their own personal insecurity. Bottom line is that you're not doing yourself any real favors being around them. They are not the gatekeepers for engineering expertise. There's plenty of other great developers to study, look up to, and emulate.

I doubt you are the dumbest. Probably just the least knowledgeable.

You landed the job you wanted! That's awesome. That's success. In all seriousness everyone has a lot of holes in their knowledge. Nobody knows all these things, we don't live long enough.

The youngest/newest person on the team always has the advantage when it comes to the newest technology. You don't have as much to unlearn, so you will pick it up faster.

If you can get yourself a niche, become the expert/specialist in a particular new technology that the team needs (or could use), but has little experience with you can suddenly make yourself very valuable.

Wow, sounds like you landed into one of my previous jobs :)

If things are really that way (and you aren't just feeling worse about yourself than is deserved) then leave.

Don't just up & quite unless you can afford that but take the time to find somewhere with an environment that fits what you want better and can allow you to grow.

Being thrown into a challenging project is one thing but with no support is quite another.

I had a similar experience and I was miserable. Add to that when anything I did went wrong people came down on me really hard but everyone else seemed to get a pass ...

Took my time and found something else and now I am super happy.

Most of us are too old to be treated like crap.

You perceive yourself to be the least knowledgeable person in the room, but consider a few things: - Knowledge comes with experience, it doesn't mean you're dumb - With experience comes perspective - You can become very knowledgeable in specific areas without having to be knowledgeable about all of them - Don't burn yourself out trying to catch up - Loud people are sometimes perceived as competent, it doesn't mean they are, they're just loud

All in all, this sounds like a very toxic work environment. Get out and find a place that you can enjoy, nothing is worth becoming bitter like your coworkers.

Good luck !

Hold on there as much as you can possibly tolerate. This toxic environment is indeed building up your personality and you will end up being a better professional (would you do those "intense study sessions" otherwise ?) and a better person (you are learning how to not treat people).

Embrace those rotten attitudes and bitter words. Feel joy when you get them, for it is for a higher goal. Feel sad for them, for they are pretty much worthless human beings.

Don't let them make you quit. Stay there, learn as much as you can and quit, with pride, when you feel those dumb asses have nothing to offer you anymore.

And then, you win. They lose.

Are you worried because you are lacking in domain knowledge that could only be known by working for the company for a significant amount of time? If so, I wouldn't worry so much, since that kind of experience only comes through time. Also, you're a Junior Developer, you shouldn't be expected to be an expert...yet :)

I do think it's troubling that you think everyone you work with is unhelpful. This is not normal and sounds like a potentially toxic environment. I'd make sure this is the case though before jumping to conclusions. Maybe some are just busy or you're asking for help at the wrong time (maybe try asking in advance through email/instant message and scheduling time on their calendar). Maybe it's neither of those, but just giving the benefit of the doubt. How often are you asking for help and have you already tried other (easy) means of assistance like the web/documentation/etc? Do you take notes to avoid repeating yourself or forgetting what you learned when you do get assistance?

Those in your team though should be the most helpful though since in theory, they depend on you and you depend on them, so assistance is mutually beneficial. Sometimes I will leave a junior developer to work out something on their own when they have already been through a similar scenario before. It can be hard to resist (learned that was rarely the best idea when tutoring a friend in school) rushing in and helping them too quick, but I tell myself they'll learn more if they try to think it through and refine those problem solving skills. In those cases, I have a pretty good idea that they know the answer, but it hasn't clicked yet. I mean if they get stuck on it for too long, I'll help them a long, but as a more senior developer you when you're helping and when you're just doing their work for them (the later rarely helps them to learn/understand).

My other thought it's maybe they're not helpful because they just suck at communication. Not talking so much about general communication as much as trying to convey a complex topic to someone else in a way that is relevant to the person trying to understand. Some just don't know as much as they claim about a subject to actually teach it to someone else or have the patience to do so.

> 3. Do all star/ninja/rock-star software developers have rotten attitudes?

Once you are proficient at some language/framework/library it seems (at least to me) hard to be humble about something you built with it. Sometimes, and hopefully, we're excited about what we've built!

How do the real star-software developers that don't seem to have a rotten attitude after years of experience do it? (I'm really honestly asking! I hate when I get excited about something I built and scare off or offend others, or start rambling about all the new things I've learnt or done)

Some of the smartest people I've met are also the most modest. Being excited about or even proud of one's own work is different from being arrogant and obnoxious about it.

I agree with most of the comments made here. I've always been a C student and understand what it feels like to be the "least knowledgeable person" in the room.

You really shouldn't focus so much of your time and energy thinking about your co-workers. This company clearly has a bad culture and it shows.

It's a good thing that you realize your weaknesses. Take some time off to truly understand what is it that you want in your career. Focus on things you are actually good at, and then figure out how to intersect those things with your career interests. Good Luck :)

If you are new or just starting out, keep being the dumbest person in the room but show them you know how to troubleshoot and solve problems and are willing to get up to speed quickly. If you feel like you're being misrepresented as an idiot when you have equal skills, start muscling your way into the really hard problems and show them you have what it takes to kick some ass and get shit done. This is the typical small fish in big pond scenario, you just have to get pumped up and show them your a big fish in a bigger pond.

Because I wrote "color", not "colour" to one of the comments in Android Resource directory, I got "USE PROPER ENGLISH" code review once, from a British guy who has 60K+ reputation in Stack Overflow, who was also the best Android Developer I've ever worked with.

I quit the job immediately, because you can't deal with those kind of people. It never works. However you can find great companies and people out there, the probability is higher than getting along with rotten engineers at least.

Sounds like a broken culture. I won't comment on the normalcy of your situation, but I do not think it's acceptable.

If you want to stay, talk to your manager and explain you need more mentoring. Talk to the friendliest senior you can. You may just need to work on building g a relationship with someone. Junior employers should get mentoring, trading; they should be encouraged to make mistakes. You can find that somewhere, but you may need to search that not only excel technically, but also excel at managing people.

You said you are in a "quite desirable software company", so I assume it is not a small one (especially if people have a bad mentality). Just hang on for a while, and try to move on to another team: you can claim that the culture in your current team doesn't fit, and try to find one that's more open to juniors. From my experience a lot of senior engineers are more than happy to help if you "do your homework first", which you seem to be doing since you work very hard every night.

All I can say to that is that you modt likely do know. Given from persinal expeeience, not only has intelligence demonstrated itself to me in the form of concise communication but also at a level best expressed in high overview. And being able to bring up the details as you go from there. In essence I would be focused on refining a particular area of your intelligence that you'd want to focus on. And learn how to best iterate struggle and the understanding in the back of your mind.

A "quite desirable software company" is one that can attract people who are smart and socially competent, and can weed out employees who are toxic. Your current company clearly can't do that, and I'd question the basic premise that it's desirable.

I've worked with some brilliant and horrible people in the past. It doesn't get better, and my general opinion is that life's too short spend tethered to such people. Get out and don't look back.

When you can truly learn to stop caring (or assuming you know) what other people think about you, you will find yourself much better equipped for this type of situation. Find that confidence that got you hired, and wear it to work every single day.

You know yourself better than any of your coworkers. If you think you can do a good job, know your stuff or can learn it, then you can. It doesn't matter what they think!

If you enjoy the work and want to succeed there, do it. If not, go somewhere else.

Normally, I'd say if you're the dumbest person in the room, you thank your lucky stars you get to learn so much.

But the problem here isn't that you're dumb. The problem is you're in a toxic (for you) culture. Get out of there! I don't know if it's them, or if it's you, but it doesn't matter. Clearly, you're not suited for the environment. Quit, and be conscious of the culture you're stepping into at the next job.

> how should I act in order to maintain my dignity but also be humble enough to acknowledge the co-worker's knowledge

There's no lack of dignity in asking questions and trying to improve oneself.

I've seen very smart and respected people asking basic questions during meetings (where I was trying to hide my ignorance... and thus not learning anything, which make things worse).

Remember you're a junior, so you're expected to know less than your expert colleagues.

"Most of them have big egos and really rotten and bitter attitudes. They are stars, they know it, and treat people who are not at the same level like idiots (like idiot me)."

With that environment, and the stress it is putting you under... quit. No job is worth the negative impacts on your life and your health that an unhealthy work environment will bring. And there is no shame in recognizing that a new job is not working, and taking action.

Do all star/ninja/rock-star software developers have rotten attitudes?

If they think of themselves as a star/ninja/rockstar developer, then yes.

> Most of them have big egos and really rotten and bitter attitudes. They are stars, they know it, and treat people who are not at the same level like idiots (like idiot me).

This is not a place you want to work, these are not people you want to work with. Even if you are their equal. A truly desirable employee doesn't have these qualities, you can't use ability to make up for being a bad person.

>My teammates have tons of experience

i think it's too early to judge these guys either positively or negatively. it might be that the friction you're experiencing at this point is a result of things like working with rotten code, them withholding the specific domain knowledge, etc. and what you take for your own incompetency in reality is someone else's mess dropped on your head.

Bro, life is too short to let other people dictate your life.

They might be smarter than you, yet here they are in the same room as you. Second there is no shame in not knowing, so as long your willingness to improve is there. In the rare case, in the parking lot, intelligence (or there lack of) can always be augmented with fist. YMMV.

You need a double dosage of kanye. Hope you get your swagger back.

Good luck.

If you're the dumbest person in the room, become the hardest working now.

Also, if management are OK with your work, screw your coworkers opinions.

I've met three types of very good developers:

1. Humble and quiet

2. Bullies that grow to respect you

3. Bullies that stay bullies

From my experience:

- Never tolerate working with 3), it doesn't matter how good they are.

- You can have a good working relationship with 2) and make friends with them.

- You should be able to differentiate between 2) and 3) after a month - if you can't assume they're 3).

- Obviously seek out 1) and learn all you can from them.

From what you're saying (and here we have only YOUR point of view and description) there's something poisonous in that company/position/sector/department and it's gonna end bad no matter what. I don't think any team can run a marathon successfully with that kind of attitude towards team-mates.

A couple of advises:

1) Since you had this experience, try not to be a dick on newcomers when your time comes. You said that you were a bit cocky. Now imagine how the other guy in the room must have felt.

2) Generally being kind and humble will get through lions or lambs equally unharmed. I've seen it happen. I'm talking about being humble even to the ones that are openly rude to you - that kind of thing - by giving them a second and third and forth chance.

3) IMHO it's better to stand your ground accept who you are and ask what you don't understand. Make them teach you one way or another. Since you're there try to take away whatever you can. Again try being humble and kind. Maybe there are others that feel exactly like you do but don't come forward because they lack the same strength of character that you do. It takes guts to say I don't know in a hostile environment. Stick to what you know, try to do your homework and when the time comes, state your arguments. The explanations might not as convincing as your first thought and as a result this might turn to be a more liberating change of attitude for the entire team.

4) Those guys that you call 'ninja' others call 'newbies'. There's no rock-star developer IMHO, except from prominent figures that have prove themselves over time (e.g. Wall, Torvalds, Thompson, etc.). But even with those guys, you first and foremost have to be yourself: If you feel that you need more detailed explanation ask for it. Politely but firmly, trying everything possible to avoid conflict, state your arguments and questions as best as you can.

5) As Socrates, Plato and Aristotle said, every man has to pursue one and only thing in his lifetime: Happiness. A series of wise choices could make you happy. If the current situation makes you unhappy, try to find out the real reason, make peace with yourself, accept who you are - by accepting who you are you should respect those with less or more knowledge than you at any domain - and if you can't change the environment around by changing yourself, leave. However keep in mind that 3 out of 5 times, the problem is within you.

> Do all star/ninja/rock-star software developers have rotten attitudes?

Yes. That's pretty much a definition of "star/ninja/rock-star" developers - cocky know-it-alls who openly consider themselves smarter than the rest. Doesn't mean they are actually skilled or senior though.

First off, a suggestion: leave. It's not worth staying in a toxic environment full stop. On to your questions:

1. Self-confidence is fine, as is the expectation that you will receive mentoring, especially if it has been made known that you are lacking in experience. In your immediate situation, ask open questions after trying to figure it out yourself, and be firm in the knowledge that there is NOT an expectation upon you to know all this stuff already. Some of the best engineers I know ask dumb questions all the time. It is expected, outside your area of expertise, and healthy. As a junior your area of expertise is... minimal.

2. Not in a good company, with strong leadership. Junior personnel are there to be molded and guided. You can expect to be set problems outside your comfort zone, but someone should be stepping in at some point to lend a hand.

3. Absolutely not. In my experience, supposed rock-stars with shitty attitudes are not as good as they think they are. Poor attitude is often a cover for ineptitude and/or severe self-esteem problems. People who are genuinely good are usually willing to help someone who can show that they are motivated, and not wasting their time.

If you are the smartest person in the room you are definitely in the wrong room. You have great opportunity to learn so much from others. Also I am sure you can't be the dumbest person in the room. There will be few things where you would be pretty good at. You just need to discover those.

Is there someone you could talk with at the company who won't judge you for being honest? If you're going to leave anyways if it doesn't work out, then talking with someone there who might sympathize with you cannot hurt.

If there is no one there you can confide your feelings in then leave.

You may be inferior to them in term of skills, but let me write what I think of your situation: You would be in the same exact miserable state even if you were 10 times better than all of them combined.

I think the big problem here is that your co-workers are assholes, no skills level can change that.

Generally there is not much happiness in software development. More often than not the job is little more than prostituting your brain for some cause that you don't really care about. That's why many people have shitty attitudes, in spite of their royal paychecks.

This sounds like a fucking toxic environment, and the "rockstars" don't know as much as they claim. Arrogance is often a shield for incompetence. I would recommend GTFO and finding somewhere where people are interested in growing with each other.

>I am the dumbest person in the room. What should I do?

Be grateful of how lucky you are. You're surrounded with people who can teach you awesome things. You're in a challenging environment, no boredom in sight. YOU'LL LEARN.

Just put a smile on you and seize the opportunities.

Find someone in the company to mentor you. Shoot for someone two or three levels above you with whom you share some outside interest or other personal connection.

Senior people in companies need to act as mentors to advance their careers as well so this will form a symbiotic relationship. Don't underestimate the need to "feel the pain" some of the time. In other words, don't ask to be or allow yourself to be spoonfed. Put in the effort, but escalate quickly. If you get stuck on something for more than 15 minutes, take a break and come back to it. If it happens again, escalate to your mentor, but not more than once or twice per day.

It is a difficult series of steps but it sounds necessary. If you can't accomplish these steps because there is noone with whom you can connect, you should leave. I'd say try for three months and try two or three different people.

+1 to everyone. F that place. Hop on one of the 100s of job sites or find a recruiter to help you get a better gig. This career path can be hella fun and there are many awesome teams to build cool shit with. Too short for that mess.

Life is too short to spend it being unhappy and unfulfilled. If the situation is as you present, then get out as fast as you can, and go find something you can care about with people who are stimulating to be around.

Always vote with your feet.

Quoting Woody Allen:

"Confidence is what you have, before you understand the problem".

I really dislike working with people that don't collaborate. If they can't help you out, then I'd suggest you to move on to somewhere else, specially if they know you were hired as a junior.

Even if you had "rock star" skills, would you really want to work with these types of people? They've already shown their true colors like someone who treats their waitress like crap.

RUN! Don't walk but RUN! That's a horrible environment to work in and you deserve better. I've worked with a ton of talented developers and I'm hiring more. If I ran into a developer like you mention I WOULD never hire them and if they did slip through I'd push very hard to have them shown the door quite quickly. "Rock-Star"'s can be more productive than less talented developers but they will never beat a great team.

Secondly not all great dev's have that attitude, not by a long shot. In fact in my experience those with that attitude are emperor's with no clothing types.

You're not the dumbest person in the room, you're just the only one that's not a fucking asshole.

This company and these people are failing you, not vice-versa.

Be cocky, but be humble too. People are more willing to help someone who admits where he is weak. Also help others when you can; they will return the favor.

1. You didn't. They knew. Ask for help/guidance. 2. Yes. Code review is your friend. 3. Not all. Learn from them. Ask for help.

1. You should get into a situation where you are not the smartest one in the room.

2. Good, you've done that one. Now you should learn everything you can from the others

3. Oh but this have a catch. You want to avoid elitist people, bitter people, shitty people, negative people, etc... Those you don't want them to be in the same room as it will not bring you up but rather... bring you down.

4. Consider being with less talented people who will bring you up.

5. Now consider how you are and try to avoid being like those bad people surrounding you right now.

If you're the dumbest person in the room... STAY. It's good to surround yourself with smarter people.

1. Eat that humble pie, confess that you don't know as much as you thought, get past it. To maintain your dignity, focus on the work, not the politics.

2. Unfortunately quite common.

3. No. Try not to dwell on it. Pity them quietly, stay focused on the work, don't lose yourself in their negativity. Treat others as you'd have them treat you (even though they don't yet), and lead by example.

If any consolation, you're going through what I call "celebrity training." Since moving to LA, I've noticed particularly successful/famous people can be particularly difficult, demanding, and even insulting.

When you meet their assistants and see them graciously cope with their superiors being completely insulting, demeaning, abusive, awful human beings, it suddenly becomes clear: That is why you want to get to know the assistants.

It's like they know how to speak a foreign language reserved for a special few- some of the most powerful, intelligent, successful people in the world. They all speak verbal abuse.

Most people when they hear verbal abuse freeze in shock, do as instructed, feel embarrassed, explode in retaliation, or run. But if you're fluent in verbal abuse, you learn how to ignore it, see past it, even reform it, but most importantly, they learn how to work around it.

Also, keep in mind that a lot of your fellow bad-asses may have mild autism/aspbergers, which makes it hard for them to tell when they're offending you. If you get up in their face about their shitty behaviour, you might be surprised by their surprise. They may not even be able to detect how much they're upsetting you.

If you haven't already given them feedback, then you should. A simple "Hey, it kinda stresses me out. Maybe less of that?" will do. Remember to do it immediately after an infraction. People are like dogs, and the sooner you interrupt and correct and throw it away, the more likely it'll stick. Also like dogs, people need gentle reminders, as they'll keep slipping up for a while until it sticks.

Keep it light and funny, not dramatic. Try a quick, soft-spoken "rawr?" with about the delivery and tone you'd use to say "lip?" while pointing out they have a suggestive dollop of sour cream on their upper lip at a house party, and you just want to bring attention to it very subtly for their benefit.

Also remember that an important part of training your dogs is to reward, not just punish. While looking for infractions, you also want to look for spontaneous moments of good behaviour and thank them for it immediately, even with only a smile and a nod.

Best of luck!

You might be the smartest person in the room, as you've only stated that you have the least experience.

Software development involves a lot of 'error' feedback. Its not rotten - flattery is rotten.

I've worked with those bitches. They were sharp, worked crazy hard. But ya, big fat dirty autistic bitches.

I retaliated by calling them rainman behind their backs. It worked surprisingly well to make me feel better.

I think that engineering gives people braindamage, or chars their soul, or something like that. I'm serious.

Yes, I left at end of contract.

You know why this made it to the front page? Because we've all been there.

Before you write off your company and teammates, get over your own ego and learn how to learn from others.

A defining characteristics of rockstars is that they know what they know and they know what they don't know, and they are honest with others about the boundary. An idiot is not someone who says "I don't know how to X" - it's someone who says "I know how to X" but really doesn't.

Here is how I learn from people smarter or more experienced than me:

1. I look at a problem someone else is working on, and ask myself "how would I solve this?".

2. Then ask myself "why would I solve it the way that I did?". Is it because it's the only solution I could think of? Or is it because there were multiple approaches but the one I chose was best for reasons and assumptions X, Y, and Z. The important thing here is to be honest and rigorous about why I made the decisions I did - no settling for "just because"

3. Then I look at what the other person did. If it's identical to what I would have done, I give myself a cookie! If it's not identical, then I spend time to answer the following questions: - How is their solution different from mine - Does each difference matter? If so, how/why? - For each difference, why is their choice better than mine?

4. Now this is the important step - I then talk to the person. And instead of giving them an open-ended "why did you do solve this problem in this way", I describe to them what I would have done and ask them the same questions from the previous step. These are small, simple, efficient questions so you're not wasting the other persons time, but by confirming your own answers, you are reinforcing your ability to learn and are avoiding living in ignorance.

5. I observe the other persons reaction to this interaction. The vast majority of professionals I have interacted with have at the very least been willing to help me in this way because they understood that teaching a teammate is overall a net positive to the team. And it should increase their confidence in the quality of the work that I do on my own.

If the person refuses to make time to even answer simple specific questions or is actively hostile towards the very act of me asking these types of questions, I write them off as assholes and move onto someone else.

Now I really suspect that most of your team will not be assholes. But even if they are, assuming you're being compensated well enough to tolerate them, all you need is one non-asshole who is "better" than you to learn from and bam - you have a mentor.

If literally everyone is an asshole (per the definition earlier), then I look at how much I'm being compensated (cash, equity, status, pedigree) and will either get out or check out.

But the important first step is making an effort to become better, and using the other people you work with as resources. It's okay to do this stuff offline - if your team is having a high-level design session, don't open your fool mouth to ask "why don't we just write all this in a single function" and waste everyones time. But if that's really the best solution you could come up with, pull aside one of the other people and confess "I would have done this all as a single function - why is that wrong and why did you break things out in this way?"

Sounds like a "stage 3" tribe, in the Dave Logan sense.

"If I am the least knowledgeable person, and a co-worker ignores, despises and almost makes fun of me for your lack of experience, how should I act in order to maintain my dignity but also be humble enough to acknowledge the co-worker's knowledge?"

If you are being all but mocked, humility is not called for, leaving is. There is no excuse for mockery.

"Is it normal to be hired as a junior and just being thrown to the lions, with no help or time to ramp up?"

It is at least not uncommon to take a junior person and throw them at a task that we do not expect you to fully understand out of the gate how to do. It's difficult to do much else; a project is a constantly-moving target, and while I do my best when onboarding someone to find a bug they can handle without having to know the whole system, there's no time to create a "curriculum" or formal training on the system or anything like that... by the time it was created it would already be out of date. So "here's a bug" is the only decent option I have.

However I always make it clear that many questions are expected, and support will be given. Plus, one nice thing about this approach is that it self-tunes... if you hire someone who actually tears through things unexpectedly quickly you aren't sitting there explaining things they find elementary to them.

Failure to provide support is unprofessional and downright bad business. It basically ruins the employee not being supported, and few people are so blessed with "headcount" that they can afford to be hiring people, then just leaving them to rot.

"Do all star/ninja/rock-star software developers have rotten attitudes?"

Ha! Probably a question of definition more than anything else. Some people use the term pejoratively and do include "bad attitude" or "extreme short term focus" in the definition. But I'll modify your question slightly to "good programmers", and no, being really good at programming does not require "rotten attitudes" and if you look at those who rise to heroic levels, they're generally known by their peers as very sympathetic and ready to explain things to anybody.

So far, it sounds like you've described a really hostile environment, because even if you are not really up to the job, the experience you are receiving is incorrect. You should not be getting mocked and psychologically run down by your coworkers. You might be getting taken aside by a manager, put on a performance plan, etc., and that sure as hell doesn't feel good, but it's still of a different nature than what sounds like being run through high school again.

Only you can really judge whether you're actually able to keep up. I'm not going to blow smoke up your ass and say everybody is really, ultimately suited for every job if they just try hard enough. That's elementary school lies-for-children, not reality. You could be in over your head, but making that decision requires more information than you could possibly stuff into a text post. The only two things I can say are 1. Yes, that is a possibility, but, 2. Don't measure yourself against the other people who have been there a long time, and CERTAINLY don't measure yourself against the swaggering personas they may be projecting! Measure yourself against the tasks, whether you can complete them, and whether the solutions are good enough to ship (as opposed to abstractly perfect). And, likewise, measure them against their tasks, whether they complete them, and whether their solutions are any good! (It's usually a lot easier to recognize good code than write it.) See if the swagger is really justified, or if they're just swaggering because they are the only ones capable of navigating their own mess. If you're closing bugs on a reasonable schedule, and they're staying closed when QA tests them, you're at least keeping up. Also consider the difficulty of the tasks... if a "fix the font" bug turns into a multi-week endeavor because the code is just crap, well, maybe this job isn't worth fighting for anyhow. (No programming job is perfect or easy but some are worse than others for no good reason.)

Ultimately, you can't get a yea or nay answer from anything anybody says here, so one last bit of meta-advice... after you read this, just sleep on it for a day or two before coming to any decisions of any kind. Let your subconscious chew on this too.

(Also, I post even though many already have because I see few people are directly addressing your very reasonable questions.)

if you're suffering, just move on to a more friendly place.

> tons of experience

> every man for himself

> big egos and really rotten and bitter attitudes

> co-worker ignores, despises and almost makes fun of me for your lack of experience

> treat people who are not at the same level like idiots

I hire. I'm on the lookout for Ninjas and Rockstars and all of that. Those mythical 12345x codars. It's easy because I'm a 67890x coder, and at around 1024x, we're all taught a secret handshake.

Ya, right. When interviewing you, I'll try to set you up to both succeed and fail; you'll be given ample opportunity to correct me on anything from blatantly idiotic/wrong statements to minute technicalities (the ones you catch). I'll try to see your patience, assertiveness, helpfulness, communication skills, etc.

You could be $#1_in_the_world in $thing_im_hiring_for. If your ego extends beyond your physical boundaries and into others' minds, you can fuck right off. I'll get a 1234x guy instead that will occasionally help the 123x guys as well. And I'm not creating a toxic environment.

According to my [limited] experience, heck yeah there are ninjas that make it for both themselves and their companies and environments, while a) having good enough social skills so as not to offend unnecessarily and b) have the desire to mentor and guide people, rather than verbally throw acid in their faces. It's an attitude problem more than anything else. Organisations that foster such toxic environments will later on hold meaningless seminars for team building in a band-air attempt to fix their churn.

It doesn't make much sense not to help someone, especially on the same team. So often he'll just be missing some minor concept. A few kind keywords from a more knowledgable person will get him googling and on track[2].

Your environment is toxic. If you're learning even a bit, stay as long as you can stomach it. When you've (learned|had) enough, go somewhere nicer and remember to be nice to your "inferiors".

[1] Hasn't happened yet. To me at least.

[2] This likely won't be the case if there is too big a divide between your levels - e.g. Linus may not answer your polite question about memcpy

[3] bonus orphan footnote: look up impostor syndrome. Ensure you aren't suffering from it. Computing is a vast, vast universe - as deep as it is wide. There'll be someone who knows something you don't, in just about any techie-filled room. Actual impostors often behave in the manner you're describing, which (ironically?) causes impostor syndrome to people who actually know quite a bit.

Let me guess: Google?

Become the manager!

Suppositions: * You can't keep this up. You'll either quit or be fired sooner or later. * You really do have a lot to learn from your coworkers.

If you believe those are true, a radical change of strategy is in order, and you should keep in mind that you have very little to lose. Your worst plausible professional outcome is that you get fired soon, and you cannot use this employer or coworkers as a reference. That definitely sucks, but it's already a pretty likely outcome, so don't worry about making things worse.

Sucking hard at the beginning of something is normal. Lacking the support that would help you not-suck faster is sad but common. Having a hard time relating to people further along in the process is sad but common. What will you make of these things?



1. Remember what several have said here, that those with superior attitudes are often themselves insecure.

2. Memorize and internalize swampangel's guidance on taking feedback.



Do not worry about your dignity or your image. Why did your self-esteem plunge? Were you impressed with yourself because you thought you were smarter/more skilled than other people? You were then and you still are. It's just that now you know a lot more people you are not more skilled than. Unless and until you become one of the tiny minority at the true peak of your profession, this will happen to you over and over. (Even if you reach the peak, many of those who came before you produced work more profound and seminal than yours, and many of those after you will build on your work to do even more awesome things.)

But it's lucky when this happens to you, when you suddenly find yourself in a bigger pond. A much better basis for self-esteem is your character and your progress. "I'm smarter than most of the people I know" is a win condition only sustainable by avoiding opportunities for growth. "I'm more skilled, more wise, more loving than I was a year ago" is a win condition you can hit every year without it ever getting old.

Ask for the help you need, but read <http://catb.org/~esr/faqs/smart-questions.html>. Do not flatter people or debase yourself, but ask directly, showing concisely whatever work you've already put into solving your problem. "Showing your work" has several good effects (1) it shows you are not intentionally wasting someone's time; (2) it helps your respondent understand what level to answer you at and (3) you may often come to the solution just by formulating your question and work so far carefully.

When you don't understand something, take notes and look it up. If you can't figure it out, just go ask the person who mentioned it--or someone more approachable who is likely to know. Don't worry about your dignity, don't worry about humility.

People understand (and need to understand) themselves in light of their actions. If they don't think much of you, but you get them to help you anyway, you've raised a small contradiction in the back of their mind: "I don't really care about him, but I helped him. Why did I do that?" They will often resolve this contradiction by beginning to think of you as a person they like pretty well after all, or by thinking of themselves as a mentor type. In the future, they will be more likely to act out of their newly-developing concept of you or themselves.

Whenever someone helps you, look for a genuine way to make them look good. E.g., in a status report or team meeting: "I was tasked with adding feature Y to the Frobulator. I was not familiar with the way we use Sporks in the Frobulator module, but Jones took a couple minutes to bring me up to speed on Frobulator Sporks, and I was able to complete feature Y."

If they think of you as their junior, so what? You'll be their junior. If you make good on their investment of time by giving credit and getting better, they will grow to see you as a good investment, and they won't want their investment to be wasted by losing you to another job.


Maybe this doesn't work. All the stuff I said confidently above might miss the mark because of weird or unusually pathological quirks of you, the people, or workplace. There are a thousand factors we can't guess at from an Ask HN post. I'm just some guy on the Internet.

It sounds like you landed on a shitty team and you should try to find another team, look for a mentor, or move on. There are a lot of programmers with terrible personalities, and not only are you not the first one to encounter this, but you're not rare in having this experience.

There's so much in this field that no one knows it all. I've been doing this for almost a decade and I still encounter concepts and technologies that are new to me. I've gotten deep into Haskell of late, but I still don't know what "homotopy type theory" is or much category theory beyond the superficial. That's OK. Just learn things and, if you have time, build things. You'll get better over time.

Also, the false sense of incompetence (impostor syndrome) is very common in the early years. It's depressing and brutal, but you can beat it.

[H]ow should I act in order to maintain my dignity but also be humble enough to acknowledge the co-worker's knowledge?

Find people who you are comfortable asking for help from. You have nothing to be ashamed of. No one was born knowing how Git works.

Is it normal to be hired as a junior and just being thrown to the lions, with no help or time to ramp up?

Dysfunctional but fairly common, especially in the "hot" Valley startups that are often run by adolescents. You're not alone. You'll get through it. Just keep learning, not because you feel a need to, but because you're interested. Of course, if you're not interested in learning more about programming and CS, then it's time to consider something else.

Do all star/ninja/rock-star software developers have rotten attitudes?

First, I'd bet that they aren't that good. There are plenty of people who can talk a good game, who know buzzwords and hot technologies and trends, but are mediocre programmers. They write code fast and they're great at making themselves seem smart (especially to non-technical business operators) but their code is often of low quality.

Most of the really good programmers are humble, just because it's really hard to get any good-- you have to consistently fight your way to better projects, which often gets political and that can be very draining-- and it takes a long time. Although our industry fetishizes youth, almost all of the great programmers are over 40, just because it takes so long to develop the skill.

"My teammates have tons of experience, and there is a clear “every man for himself” mentality. Most of them have big egos and really rotten and bitter attitudes. They are stars, they know it, and treat people who are not at the same level like idiots (like idiot me)."

I'd get the fuck out of there as fast as possible. With that kind of environment, it is only a matter of time before it crashes and burns.

George W. Bush should have known better than to have run for President.

Now if Bush had posted the same questions on here I am pretty sure we wouldn't be seeing any of the responses we have seen so far.

So I'll just end by paraphrasing from the Gita - You have freedom only to take action

You have no claim on the reward of that action

Whenever you take a risky action keep those (including yourself i.e. be self aware) that might get effected in the loop

If your actions are good rewards will come.

If your actions are misguided you will sooner or later suffer. And others will too.

I don't think you're surrounded by people who are smarter than you. I think you're surrounded by people with more experience than you, and bigger egos, and warped personalities. The personality issues make them feel the need to make you feel less than them, so that they feel better about themselves. If they're smarter about anything, it's how to manipulate your emotions.

You either need to learn to ignore the emotional manipulation, or you need to get out of that toxic environment. And you need to hold your head up. Learn what you can, but don't learn the attitude. It will ruin you.

To give an idea I'll tell you what my employee had to bear with me:

1) He was a fresh out of college, and had no job for an year. He started working on Ruby on Rails for me. Every day, I'd make sure I let him know when he wasn't performing upto the mark, sometimes even going to extremes where I ended up making him cry. (I know it was bad on my part, and I apologized). 2) I did however make it a point never to tell him anything to solve his issues. If I thought/noticed that he isn't progressing, then I'd just drop a word or two, and leave it upto him to figure out that I have left him a hint. 3) I considered myself the worst senior to have, but today, due to him being hard working and the go-figure-yourself attitude I gave him, he is currently very successful at him current job, and is able to take on problems and come up with solutions by himself.

Coming to how is this relevant to you: Are you sure your colleagues are not giving you hints, or pushing you to find answers by yourself? Lending a hand is okay, but mostly I have seen that ending up creating a spoon feed me mentality.

On how to keep your dignity, I'd say there is no other way than to keep learning. If you are a software dev, attend hackathons/talks/etc, and keep yourself updated on the latest.

Rotten attitudes is not always the case, but sometimes the pressure to be the best pushes you to that side. It's important to remember where you started at to remain a human.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact