When I was first starting my career, I was fortunate enough to have the choice between three companies. Only now do I fully appreciate just how lucky I was to have "gone with my gut" and picked the one I did.
IMVU's offer to me was $5k less than my other offers (I sucked at negotiating), and their product was not something I was interested in. Explaining the product to someone was never straightforward: "who would actually pay for virtual pants?" But, what they lacked in brand sexiness they made up for in engineering culture.
While I don't agree with everything Eric Ries would go on to say in The Lean Startup, IMVU's culture of quality, testing and speedy development cycles (at least during the time I was there) is something I've longed to find/recreate at other places I've worked. The freedom to ship code quickly, safely, and at all hours is, for me at least, incredibly motivating. None of that would have been possible, however, if it we didn't do the hard work to build the systems that enabled dark launches, experiments, automated testing, monitoring, and cluster health checks and rollbacks. Mostly, though, we had to care about our code quality and how that quality (or lack thereof) would impact the productivity of the company as a whole. If we are to truly call ourselves "engineers," we must live up to the level of responsibility and mindfulness that entails.
As a result of this being my first experience in the software industry, the naive engineer in me thought this was normal, or at least close to the norm. Testing makes sense (and it's better to err on the side of too much testing instead of too little), a developer's responsibility does not end the moment they've committed, and professional software engineering is a shared art, not a solitary venture (code must be sufficiently easy to understand if it is to be maintained). These things all made sense then and they still make sense today. I'm open to having my opinions changed, but having experienced other places, I've seen no compelling arguments against my professional beliefs.
If it is true that the schoolteachers we've had shape who we are, then the same can be said about companies. Crucially, the first company one works for has the potential to heavily influence all future beliefs, because that's the time when our minds would be the most amenable to change. Importantly, however, I also believe that a software engineer cannot stay at their first company forever if they are to truly test their newfound beliefs.
I've recently had the opportunity to see what could have happened had I taken one of my other initial offers, and, while it might have been slightly better for my bank account given recent valuations, I shudder at the thought of thinking the way that place operates is "normal." To use the clichéd analogy, life is a one-way journey down a branching path, but whereas Frost's metaphorical road diverged for good, mine has afforded me the benefit of containing at least one cycle. And, now, having traveled both roads, I can confidently say I took the better path.