It doesn't really matter what the work environment is like if you want to be highly successful at your profession (or awesome as you put it). Sure a great environment is preferable, but good and great people exist in almost every type of organization and they have a few important characteristics that have little to do with programming techniques or other technical skills. What I am going to say is more about how to be awesome no matter what your profession is.
If you want to be great, yes you do indeed need to have competence at your job, first. But really most employees have basic competence. They possess the technical skills to do their jobs. If you want to be great, you need much more.
First great employees deliver what they promised and often a bit more than they promised. If they can't deliver for reasons outside their control, they immediately inform higher ups of what is blocking them and take steps to get the block removed. Great employees never passively wait for someone else to do something.
Great employees know their technical specialty in more depth than just what is needed day-to-day. They also under stand the business domain they work in and understand how other people's roles relate to what they do. They are the people who solve the difficult problems, who pitch in and learn what they need to in order to get the job done. They are also the people who help out other people even when it is something beyond their normal responsibilities. Every great employee I have ever worked with will move furniture or make copies if need be to get the job done and never whine about how it isn't their responsibility.
Developing in-depth expertise is a critical part of becoming a great employee but the type of expertise that makes you great takes 10,000 hours or more to develop. So they also don't expect to be great 1 year out of school. They may be working on great but not nearly there yet. They read and study their profession and, most importantly, they learn the details and don't keep throwing information away. You can't learn depth if you don't know basics without having to look them up. They learn to make connections between project B that I did five years ago and problem C that I am facing today. They know how to look beyond the obvious. They know how to get information in more detail and push back when what information they are given is not adequate to solve the problem. They ask questions instead of making assumptions (in the programming world this is especially true with requirements which are rarely adequate the first time you receive them).
Great employees have accomplishments not just responsibilities.
People who are great at their jobs own their mistakes. When they mess up (as 100% of all employees will), they come up with plan to fix it and get it fixed. They also recognize that they can't change other people, they can only change themselves.
Great employees have great attitudes. They are not prima donnas. They show when they are supposed to; they do tasks they aren't wild about in order to get to do the interesting ones. They learn from experience, they never have one year of experience repeated 10 times! They have increasing responsibilities over time. They are flexible, what the company needed yesterday is not what they need today and they can take those sudden changes of plans and work them into advantages for themselves and the company. Even when they didn't like the direction of the change. They have social and political skills because it doesn't mater how great you are technically if no one wants to listen to you. Sure there are political people who have great political skills and bad technical skills, we have all seen them. But great employees blow them out of the water because they have both.
Great employees work with people even people they don't like or respect. They understand that unless people can work together very little will get accomplished and they are paid to accomplish stuff.
Change is inevitable in all companies. Great employees drive change rather than being victimized by it. They have great ideas for what to do and they learn how to sell those ideas to upper management.
If the environment is toxic, great employees may move on, but only after they have learned what they need to learn from that particular position and only after they find something else that is better. Great employees don't run away from problems by finding new jobs; they find new jobs to get new challenges. Great employees also use their skills to make each place they work a better environment before they leave. They recognize that sometimes the worst environments are the ones where they can experience the most growth and that will lead to a much better job later.
In the programming world they recognize that good technical skills go far beyond the syntax of a language. That is basic entry level stuff. They know how to debug, they know how to track down the root cause, they know how to get information from the users that will help them get their jobs done, they know how to architect the database and how to understand the meaning of the data they are storing. They know how to make sure that their work is comprehensible to others a few years down the road when a change is needed. They know how to make sure that the project moves forward and that they don't just get stuck. They know when to ask for help and when to push through the problem on their own. They develop professional judgement (Maintaining bad code is great for learning what not to do!) They understand how to work with instead of against QA and how to work within the system but gradually refactor to make things better.