>nobody on staff has ever had to fend off Russian hackers attempting to take down your code at 3 am, nobody on staff has had to deal with thousands of users who wake up one morning, can't log in and no money is coming into the company. These are the battles that most programmers learn in the trenches of big companies, fighting tough battles, fixing complex problems under fire. It's not ideal, but I'm not sure if you can really become battle-hardened without going through real battles with real jobs on the line.
You make an interesting point, though I'm not sure that learning these lessons has to happen at a big company. I'm currently an engineer at a startup, but I came here from a small company—a ~30 person digital agency—where we were dealing with a lot of what you mention quite regularly. Because we had so many applications in production for a diverse range of clients (some at fairly large scale), and a small team of developers, the sorts of challenges you mention came at us much faster than they appear to arrive for us at my current company, which is focused around one product.
The fact that the dev team at my agency was small meant that, when facing issues like this, we were flying by the seat of our pants, learning as we went along and jumping between roles, and learning was happening very quickly. I've come to realize, after having left, that the range of experience I had in the small-team agency environment was, I think, extremely valuable.
You make an interesting point, though I'm not sure that learning these lessons has to happen at a big company. I'm currently an engineer at a startup, but I came here from a small company—a ~30 person digital agency—where we were dealing with a lot of what you mention quite regularly. Because we had so many applications in production for a diverse range of clients (some at fairly large scale), and a small team of developers, the sorts of challenges you mention came at us much faster than they appear to arrive for us at my current company, which is focused around one product.
The fact that the dev team at my agency was small meant that, when facing issues like this, we were flying by the seat of our pants, learning as we went along and jumping between roles, and learning was happening very quickly. I've come to realize, after having left, that the range of experience I had in the small-team agency environment was, I think, extremely valuable.