I'm a software engineer that believes that choosing the right tools is the first step to solve the problems at hand. Usually I pick Scala. It's concise syntax and functional approach allows creating easily scalable applications quickly. To meet the growing demands of the market I also employ Akka toolkit to build robust and resilient distributed architectures. These tools are needed to build 'the thing right', but understanding the problem domain is crucial to build 'the right thing'. Of course I don't know all the possible problem domains. That's why I use Domain-Driven Design to build a shared understanding and common vocabulary with domain experts.