Pros
I've been developing software professionally for almost 18 years now. There are a few positive things about Asynchrony that really set it apart from other jobs I've had. 1. Pair programming - The majority of the time when I'm working I'll pair with another developer. And this is a common arrangement amongst almost all of our teams. I find that this greatly improves ramp up time for a project and allows us to learn from each other faster than we would learn on our own. The code quality improves drastically as you and your partner work together and feed off each other. And last of all it really breaks down knowledge silos so any one of us can leave for vacation with full confidence that the rest of the team will carry on fine without us. 2. TDD - Test-driven development is strongly encouraged and it's refreshing to see. Quality is improved so much with TDD and it's really incredible when it's embraced like this. 3. Agile (kanban) - Our way of agile software development has a way of simplifying my job while also improving our efficiency and even reducing the stress of a big project. 4. Learning - As you work here you'll probably be chosen for projects based on your past experience and existing skills to some extent. But I've seen time and time again people being chosen for a project who were missing the experience on a couple technologies necessary for the project. And yet they're given the chance to learn on the job with the safety net of other experienced developers around them to help. I've been on both ends of this and it's been awesome to learn some new technologies and even teach others in this way. 5. Ping pong - Yes, we have a ping pong table in the Denver office and there are several of us who play almost every day during our lunch break. It's a great way to re-energize before getting back to work.
Cons
1. I have heard some people complain about pair programming and that it just doesn't suit them. I think you have to be open to that way of working to really thrive here as a developer. But I still maintain that pair programming is a positive from my perspective. 2. Deadlines - Ultimately most projects are still going to have deadlines. Our agile process helps alleviate a lot of the pitfalls of failing to deliver within your deadline. But deadlines still serve as a stressor for each team at some point. The good news is that as many of our longer-term clients begin to trust us the deadlines are relaxed and we begin to focus with the client more on prioritizing, forecasting, and just simply working the stories most valuable to the client. When this happens our jobs as developers become less compromised as we're able to make better decisions every day without the external pressure of a looming deadline.