Early in your career, it's better to be a small fish in a big pond than a big fish in a small pond.
When you are in a big company, you tend to work in very specialized areas. This can be very gratifying, but if that specialty is no longer needed, or you get laid off, you are screwed. You also have access to very smart people to help you solve problems, but often this means that you don't develop your own problem solving skills. You also get disconnected from business reality. You are rarely exposed to either the costs or benefits of that "really cool feature" or this really cool "architecture pattern".
When you are in a small company you have to know about lots of things. For example, as in a large company, you have to code and write documentation, but in a small company you may also have to understand loadbuild, deployment, data management and operations as well. In a large company, you may be just the "database" guy, or the back-end guy, while in a small company you may have to understand how to do everything from database design to user-interface design. In a small company, you often have to interact with customers and get to understand what really drives them. Many coders in large companies are insulated from that. My first jobs were in large companies and I was insulated from business reality. In small companies, I learned a lot about the business realities that drive software development, and I am still amazed how many people in large companies just don't understand.
When you are in a small companies, the buck often stops with you. If you don't have a solution to a problem, you have to divine one yourself. There are no recognized experts. The skills you develop solving problems are very useful.
My biggest regret 5 years ago? I regret not taking the time to learn Javascript, CSS, DOM to develop good looking web pages. The "front-end" is the product as far as most users are concerned, and if it looks clumsy, inconsistent, or cheap, they assume that your well-designed back end is also the same.