I'm going to be a bit different here and say that it's important, but not something you should have through your entire career. That's because in my opinion, teams where you're the best in the room and teams where you're the worst in the room both have their pros and cons, and I believe a good developer/software engineer should experience both.<p>For instance, here are some benefits of working at least one job where you're the 'smartest' in the room:<p>1. You get to experiment more with new technology, and learn more skills and languages that you may not otherwise have bothered with.<p>2. There's no one to turn to if things are tough, hence you're given a real reason to put the work in and learn things for yourself. Being the 'dumbest' in the room all the time makes it too easy to coast on the knowledge of others.<p>3. It gives you a chance to experience what it's like when a major responsibility or project is on your shoulders, as well as how you deal with working under pressure (like say, being the one guy who has to fix a major client's website after the database crashed at 4pm on a Friday).<p>4. You get the responsibility of teaching others, rather than always being the one taught by them. Again, that's a nice thing to have experience with, especially if you want to get started with conferences and ebooks or what not.<p>5. And if you're literally the lead developer there, it also teaches you a lot about how to talk with management and make your case for new technology, best practices, etc. Yeah that's more people skills than tech ones, but you really need both if you want to do well in your career, and being the go to guy forces you to get better at that.<p>So yeah, I'd say while it's important to be with peers you can learn from, you also want at least a few jobs where you're the one other people are learning from as well. Don't always be the dumbest or smartest in the room, mix it up a bit and use both situations to learn as much as you can. You'll be a better developer or software engineer for it.