This year I had the opportunity join my Stout Systems colleagues at CodeMash for the first time. If you’re not familiar with it, CodeMash is a software developers’ conference hosted in Sandusky, Ohio each January. Apparently, it’s a tradition that CodeMash’s opening or closing be marked by a blizzard, and this year did not disappoint!
I have been to a handful of conferences, mostly hosted by Microsoft, in the past, and CodeMash is a much different experience. Because CodeMash is technology agnostic, it offers a wide array of technology sessions. Unlike the very business focused Microsoft conferences, you’ll see a significant number of kids running around, learning about 3D printing, making potato batteries, and engaging in epic Nerf battles. It’s a great experience, with lots of worthwhile sessions, and of course, cool vendor swag in the hallways. Here are a few of the highlights from my favorite sessions:
Real World Stories, with Jimmy Bogard
Jimmy Bogard offered two fantastic “lessons learned” sessions, “Avoiding Microservice Mega-Disasters” and “Domain Driven Design: The Good Parts”. It’s not uncommon to see conference sessions highlighting “the next big thing,” such as microservices or domain driven design. It’s highly refreshing and helpful to attend sessions like Bogard’s, recounting real world implementations of buzzword architectures, how they went wrong, and the lessons learned to make those implementations better.
In the microservices session, Bogard detailed a massive enterprise project to rebuild an ecommerce application using microservices. Millions of dollars spent, large teams of developers, and shortly before go-live, the application is completely non-functional. While developers were testing, no one had been testing in a realistic infrastructure, and the latency of hundreds of microservice calls brought the system to its knees. A simple product search took MINUTES to load. Bogard and his team were called in to fix the problem. It’s a great object lesson on the dangers of overly dogmatic architectures and unrealistic and delayed integration testing. It’s also an encouraging example of taking incremental steps to unwind a flawed architecture and make a system successful.
The “domain driven design” session walked through two iterations of a large project built using DDD. Bogard highlighted difficulties with using DDD in a large project, where the stakeholders can’t agree on terminology or even what’s most important. In the second iteration of the project, Bogard’s team used stakeholder disagreement to indicate that a project might be too large and should be broken down into more coherent units.
If you have a chance to hear Bogard speak, I highly recommend it. He’s smart, funny, self-deprecating, and extremely practical.
Xamarin, with Sam Basu
As a developer who primarily works on desktop or web-based applications, mobile development is always an intriguing, but elusive area of study. There are large barriers to entry, such as learning a new language paradigm like Swift, building for multiple platforms, and getting on to app stores. Sam Basu offered two sessions on Xamarin, the mobile development platform that Microsoft acquired in 2016. Xamarin takes away some of those challenges by allowing .NET developers like myself to use familiar languages and tools (C#, XAML, Visual Studio) to build true native applications. And Visual Studio App Center is a great cloud-based tool to handle some of the complexities of testing and deploying to the app stores. Basu did a great job, weaving his passion for aviation in with some useful examples of building Xamarin applications for developers familiar with .NET but new to Xamarin.
For .NET developers who want to make “an app for that,” Xamarin is an exciting option to have. It is becoming more mature as Microsoft assimilates it.
Remote Work, with Michael Eaton of Quicken Loans
As a remote worker myself, I was keenly interested in this session, offering tips and tricks to make working remotely successful, both in terms of results and perception.
Presenter Michael Eaton is a team lead for Quicken Loans, and a remote employee. He walked attendees through some of the political challenges to remote work, how to overcome those, as well as some of the functional challenges (e.g. don’t work at the kitchen table, you need an office with a door).
Remote work might be politically unpopular in some corporate cultures, but if you can show results by starting small (e.g. working at home one day a week), you can get buy in. In a typical modern office, with cubicles or open layouts, what are developers doing? They are wearing headphones to reduce outside distractions. Imagine how much more can get done in home setting, if distractions are controlled there?
Tech Talent, with Stout Systems
Finally, I was able to attend Stout's session on finding and retaining tech talent in today’s job market. Our president Peg Bogema and Chief Technologist Dave Sweeton offered insights into the job market, from both an employer and a developer perspective. One of the unique aspects about our field is the number of factors that can contribute to job satisfaction. While every employee is going to be concerned about compensation, benefits, and enjoying the nature of their work, developers add a few pieces of complexity.
There is currently a very tight market for hiring technical workers, so employers must be creative to lure talent, especially if they are constrained on the compensation side. However, there are a lot of non-compensation related factors that keep and attract developers. Ensuring your team has top quality hardware to make their work fast and efficient is important. There isn’t a one size fits all solution to this. Some developers will like working on a laptop, some will prefer a powerful desktop with multiple monitors. Giving your team flexibility and good tools is important. Developers are uniquely concerned with keeping their skills current. Staying on older, fading technologies not only makes development frustrating, but it sparks every developer’s worst fear: getting behind the technology curve. No developer wants to find their skills dated if they ever need to find another job. Making sure that your developers have ways to keep their skills sharp and current is vital. If your code base is dated, find ways to incrementally modernize it. Give developers some allotment of “on-the clock” time to sharpen their skills and learn new technologies.
Compensation can’t be ignored, but by paying attention to other factors, you can make your development shop considerably more attractive.
If you haven’t yet been to CodeMash, I would highly recommend it. It’s shorter and more affordable than some of the other conferences out there, and it packs a lot into a short window. You’ll get an opportunity to learn new technologies, hear from highly regarded names in our industry, and meet great people.
Our very own Dave Sweeton poses with one of our raffle prize winners.