Lone Star Software Symposium: San Antonio - April 13 - 14, 2012 - No Fluff Just Stuff

Matt Stine

Lone Star Software Symposium: San Antonio

San Antonio · April 13 - 14, 2012

You are viewing details from a past event
Matt Stine

I Enable Early-Career Enterprise Software Engineers to Continuously Improve

My passion is taking a metaphysical approach to software engineering: what is the nature of the collaborative game that we continuously play, and are there better, more contextually-aware ways to play that game?

By day I lead a team tasked with taking a first-principles-centric approach to intentionally enabling programming language usage at the largest bank in the United States.

By night I write and teach my way through a masterclass in software engineering and architecture targeting early-career software engineers working in large-scale enterprise technology organizations.

What is the primary goal?

To win the game. More seriously: to get 1% better every day at providing business value through software.

Who am I?

I'm a 22-year veteran of the enterprise software industry. I've played almost every role I can imagine:

  • Software Engineer
  • Software Architect
  • Technical Lead
  • Engineering Manager
  • Consultant
  • Product Manager
  • Field CTO
  • Developer Advocate
  • Conference Speaker
  • Author
  • Technical Trainer
  • Technical Marketer
  • Site Reliability Engineer
  • Desktop Support Specialist

I've worked at Fortune 500 companies, a tenacious teal cloud startup, and a not-for-profit children's hospital. I've written a book, and I've hosted a podcast. I've learned a lot along the way, including many things I wish I'd known when I first got started. And so now I want to pass those learnings on to you, especially if you've only just begun your career.

Presentations

Effective Java Reloaded

Even with the recent explosion in alternative languages for the JVM, the vast majority of us are still writing code in “Java the language” in order to put bread on the table. Proper craftsmanship demands that we write the best Java code that we can possibly write. Fortunately we have a guide in Joshua Bloch's Effective Java.

Effective Java Reloaded, Part II: Hello, Project Coin!

Even with the recent explosion in alternative languages for the JVM, the vast majority of us are still writing code in “Java the language” in order to put bread on the table. Proper craftsmanship demands that we write the best Java code that we can possibly write. Fortunately we have a guide in Joshua Bloch's Effective Java.

Rock SOLID Software

Object-oriented programming was formally introduced in the 1970's with the advent of Smalltalk. C++ took it mainstream in the 1980's, and Java carried it to the next level in the 1990's. Unfortunately, if you examine the vast majority of Java codebases, what you'll find is a bunch of C-style structs (a.k.a. JavaBeans) and functions. As these codebases grow, a number of design smells can potentially crop up, which in turn cripple our ability to respond to change. We need SOLID principles that we can apply to keep our software clean and malleable.

Spring-Loaded Enterprise Integration

The book Enterprise Integration Patterns gave us a consistent vocabulary and notation with which to describe solutions to common integration problems that arise in the modern enterprise. Spring Integration (http://www.springsource.org/spring-integration) harnesses that vocabulary, providing a very natural extension to the well-known Spring programming model that enables the construction of loosely-coupled, messaging-based applications that can also integrate with services in the wild via a variety declarative adapters for heavily used protocols. This talk will provide an overview of the Spring Integration framework, it's relationship to the patterns, and to the problems they aim to solve. We'll also look at several integrated case studies.

Practical Lean for the Practicing Developer

Much is said today by the software methodology “talking heads” about the need for organizations to “go lean.” The question is, what does it mean to go lean? Is this the job of IT management? Or is it the job of the practicing software developer? And furthermore, does this simply mean the adoption of of another set of processes and procedures? Or is it something entirely different?

Ultimately, going lean simply means removing all of the impediments that prevent our organizations from achieving more of “the goal.” While that goal may differ from context to context, for the vast majority of us that means “making more money,” by improving our efficiency at moving from, as the Poppendieck's have so aptly said, from “concept to cash.”

While a great many of us do not have the role power necessary to spur top-down organizational change, there are many practical things each of us can do to bring the power of “going lean” to our teams. As we apply these principles and practices to our day-to-day work, we can build the credibility necessary to become change agents.

Cooking Up Infrastructure with Chef

Chef is a community-developed platform for automated provisioning, configuration, and integration of software infrastructure. It currently boasts 190+ individuals and 40+ companies (including parent company OpsCode) as contributors, and companies like EngineYard, ElectronicArts, GoTime, and Rhapsody as adopters.

Chef achieves fully automated infrastructure via three primary disciplines:

  • Automated provisioning of bare metal, virtualized, and cloud environments
  • Configuration of servers via roles (“webserver”, “appserver”, “loadbalancer”) and recipes, which are declarative descriptions of resource (e.g. Apache, MySQL, Hadoop) configurations written in a Ruby DSL
  • Systems integration via dynamic lookup and discovery

Master of Puppet

Puppet is a powerful framework for the automation of tasks typically performed by system administrators as part of software infrastructure provisioning and maintenance. Puppet adoption is rapidly increasing, boasting use by companies such as Google, RedHat, Constant Contact, Zynga, and Shopzilla.

Puppet is composed of three principle components:

  • a declarative language for expressing system configuration,
  • a client and server for distributing it,
  • and a library for realizing the configuration

Code Archaeology

Feature requests are steadily pouring in, but the team cannot respond to them. They are paralyzed. The codebase on which the company has “bet the business” is simply too hard to change. It's your job to clean up the mess and get things rolling again. Where do you begin? Your first task is to get the lay of the land by applying a family of techniques we'll call “Code Archaeology.”

Stop, DevOp, and Roll Out Software

What is the DevOps movement? It a nutshell, it is the idea that the days of silos are over. Development, QA, and operations can no longer be thought of as separate warring divisons with their own “turfs.” Instead, we must focus on the fact that we are all part of a single value stream for the customer. By collaboration and shared expertise, we can find real overlaps between our previously segregated areas of expertise and optimize that value stream.