Becoming a better developer does not always mean being an expert in a programming language. Nor does it mean being the smartest person in the room. More often than not you will find that you aren’t an expert and you aren’t the smartest person. Work is more than just programming, it’s understanding and developing products that people will use and to do that it requires more than just a rock star programmer, it requires a person who is has the abilities to help their company succeed.
There is a very important product that you have complete control over: you. Your skill set, your personality, your overall career is completely within your control. Those are all features of your product and it’s on those pieces that you need to iterate and improve.
Good products are successful often because they have good product managers. It is up to you to decide how you fit into the world and what people are demanding of you.
I felt that I had a pretty good grasp of what the technology world was like when I graduated from college. After all I just built a series of programs for my classes (of varying quality), none of which had real world applications. I had built systems using live APIs like Twitter and used cool frameworks like Google Web Toolkit. So in the end I felt pretty confident in my abilities even though I had no exposure to the industry.