Silicon Valley Code Camp : October 6th and 7th, 2012
Theo has been designing and implementing .NET based applications, components, and frameworks since .NET 1.0 with a focus on scalable and maintainable solutions.
Accidentally, becoming a manager in 2012, Theo has embraced the engineering manager path currently working as a Senior Director of Engineering at AppDynamics. He contributed to the success of AppDynamics, scaling from 70 employees to over 2000 and being acquired three days before the IPO for $3.7B by Cisco.
Theo's expertise is understanding systems, identifying patterns and defining and implementing best practices in software, architecture, or organization.
We will dive into the basics of Inversion of Control (IOC) and Dependency Injection (DI) to review different ways of achieving decoupling, using and exploring both: Best Practices, Design and Anti Patterns.
This presentation requires knowledge and understanding of basics like DRY, SoC, SRP, SOLID etc. which are building the base for decoupled architecture. However, we will start at the basics of DI and will work towards intermediate and advanced scenarios depending on the participating group.
In the past, applications where created as monolithic entities running on a single server.
If this is the past for you, too, you will have experienced the downside of modern distributed and cloud applications, as debugging, troubleshooting, and monitoring is not easily accomplished with traditional approaches.
Within this session, we will explore different possibilities for collecting and analyzing the needed information to solve issues on modern distributed application and discuss the advantages and disadvantages of each approach like debugger, log files, performance counter and third party solutions.
The focus of this session will be on Developer and DevOps need, as increased release cycles and third party dependency more and more result in the need for troubleshooting also on production system, rather than in an isolated test environment.
This session requires a solid understanding of distributed applications and knowledge of SOA, but most principles also apply to and can be beneficial for more traditional application design approaches.
The used code examples are in .NET but the shown principles generally apply to other languages, too, and shown software is often available for a variety of environments.