Stir Trek 2018, Part 1
Last Friday, the annual, one-day event brought developers together once again. Today, in Part 1, I write about my experience at the conference.
Stir Trek is a one-day technical event in the Columbus, Ohio area where developers can learn about new ways to write software, develop soft skills, and learn from your peers.
This year, Stir Trek had 48 content-packed sessions with some great speakers and served breakfast and lunch to all of the attendees.
I'm a little embarrassed to say, but this was my first time at Stir Trek this year. However, I have to admit, it was an absolutely awesome experience.
I would even call it a "Columbus's One-day Codemash experience" because it was that amazing.
Oh, and there's the Summer blockbuster movie at the end of the day which, this year, was Avengers: Infinity War (sidenote: which just crossed the $1 billion mark). Personally, I feel Stir Trek had a hand in helping this across the finish line as well. ;-)
Our workplace sent the developers to Stir Trek this year and we planned to see sessions pertaining to our interests.
Of course, "the best laid plans of mice and men often go askew." Everything didn't go as we planned.
"There's An App For That?"
Before heading to Stir Trek, I wanted to see if there was an mobile app to plan our attack of what sessions we absolutely had to see this year and which ones weren't interesting (The COBOL session wasn't interesting to us this year). ;-)
This is simply a shout out to Donovan LaDuke for his Android app called Stir Trek 2018.
It had a way to view all of the sessions for their timeslot, allow you pick your favorites, and even had a map for the location of each session.
It was definitely a handy app for this year's event.
8:30a - DI Why? Getting a Grip on Dependency Injection - Jeremy Clark
Jeremy gave a great talk on the basics of dependency injection and how it helps with generating less code.
He listed a number of DI packages to use like Ninject, StructureMap, Castle Windsor, and various others, but for his demonstration, he went with Ninject.
Jeremy's project was a WPF demonstration, but we won't hold that against him. ;-)
He explained how "new is glue" and how new-ing up an instance inside of a class attaches, or couples, the object to that class.
His presentation was really great for developers looking to dig into dependency injection and what exactly it could do for them.
I've seen Jeremy Clark before and I like him as an entertaining presenter. I've even watched his course on Pluralsight which I mentioned in my post called What is Loose Coupling?
I would highly recommend it.
9:45a - Front End is the new Back End - Benjamin Bykowski Hey, you got your TDD in my SQL DB - Jeff McKenzie
As I mentioned before, I planned to attend the "Front End is the New Back End" session, but there were no spots available. Three theaters...All. Filled. Wow!
Popular topic with JavaScript it seems.
Jeff McKenzie gave a brief introduction to how unit testing is done and then proceeded to explain how to use the open source library called tSQLt for unit testing SQL Server databases.
He presented a lot of code samples to the audience (too many to show here) including how to setup the initial unit tests. It looks a little quirky coming from the C# side of things, but after examining some TSQL code, I feel I could wrap my head around the unit test database concepts.
While I was familiar with unit testing, it felt like the introduction of unit testing was a bit fundamental, but I understood the need for laying the groundwork to explain the database side of unit testing.
Jeff gave a solid presentation. His discovery and use of tSQLt encouraged me to dig into it a little more as well.
11:00a - UI Tests Are Fun To Write (If You Write Them Right) - Seth Petry-Johnson
UI tests are becoming more important as we continue to write web applications because at one point, you will have to test the UI.
So why perform it manually when you can automate it?
Seth used the Selenium WebDriver for his presentation and gave some interesting techniques.
He broke down tests into the following categories:
- Unit
- Data
- Integration
- UI/Functional
One thing that stuck with me was the idea of placing business logic in the UI like an @If statement in an MVC View. If you have an if statement in your MVC View, this is considered business logic and shouldn't be there.
His suggestion is to refactor it into the business layer and then you don't have to write a UI Test. Simply a unit test.
He also mentioned each test should create it's own test data.
If you are into UI testing, I would recommend watching this presentation (when available). He has more ideas than I can comment on in this review.
And for Pete's sake, DO NOT use complex selectors (like "tr.foo > td > span[0] > a") and remember Checkov's Gun!
12:00p - Lunch (mmm)
1:00p - Refactoring with TypeScript - Dave Wasmer
I haven't worked extensively with TypeScript, but I saw the word "Refactoring" and was sold.
Dave's presentation was broken into four parts:
- TypeScript Primer
- Writing refactor-friendly code
- Automated refactoring
- Real world refactoring with confidence
Dave's first part of the TypeScript primer was a good introduction and then he proceeded into writing refactor-friendly code.
But what is refactor-friendly code?
He defined it as:
Code written today that is easy to change tomorrow -- or next year -- with confidence
The confidence part is what developers look for in code that won't ripple through the system.
The "Real world refactoring with confidence" aspect was confirming the code performed as expected using Unit Tests.
Since this was a 200-level session, it was a presented as such. As a presenter, Dave delivered a good session and gave me homework to examine TypeScript a little closer.
2:15p - Raising the Value of Your Unit Tests - Richard Taylor
Richard's session was broken into 4 sections:
- Define Unit Testing
- Explore Styles of Unit Testing
- Identify Weaknesses in Unit Testing
- How to increase the value of Unit Tests
Defining and exploring the different styles of unit testing were what I expected during the session, but I was looking for the meat of the talk which was the weaknesses and increasing value.
He identified low-value unit tests which included:
- Test names that do not convey what the unit test does
- Complicated Unit Test code
- Testing more than a single unit of work
- Brittle to System Under Test (SUT) code changes
- Difficult to maintain
- Unreliable
- Slow
So how do you fix them or convert them into high value unit tests? You make them:
- Clear, Simple, and Readable
- Give them a three-part convention (i.e. UnitOfWork_InitialCondition_ExpectedResult)
- DRY (Don't Repeat Yourself)
- DAMP (Descriptive And Meaningful Phrases)
- High Value by
- Using dependency injection where possible - Do you really need to "new" up an instance inside the constructor?
- Avoiding Global State objects
- Being careful with static methods
- Applying SOLID principles
- Favoring composition over inheritance
- Flexible
- Maximum of one mock per unit test
- Do not test private methods
- Test by scenarios rather than by method
I felt his presentation was good for introducing standards for unit testing and what is used in today's industry for software quality.
3:30p - Ditching the Office - Jon Kruger
Jon gives the audience his experience on transitioning his team to work remotely. He explains how they started off with one day and worked up to the entire week.
After the history and locations of his team, he goes into three factors as to why this works:
- Management Style
- Good People
- Communication
He breaks down each factor as well as to why each one works. For example, under Good People, he mentions:
- Self-motivated
- Responsible
- Don't need babysitting/hand-holding
After these factors, he continues by explaining the challenges/trade-offs to working remotely.
- Most people are in the office
- Communicating well
- People in different time zones
- "Let's wait until we're in the office..."
- Some people like the office
- Isolation
- No hallway conversations
- no separation between work and home
- Over-working
- Other people at your company
Of course, you'll have employees who abuse remote work, but that's where a one-on-one or discussion of responsibilities come into focus.
He also presented a list of resources his remote team uses like Google Docs and Skype.
It's great to see Jon present these issues based on his own experience and I consider this session valuable to anyone interested in pursuing remote work in their career.
Conclusion
This year, the venue was held at Easton Town Center Movie Theater and it was absolutely awesome.
To the organizers, this event was put together brilliantly. Great Work! The breakfast and lunches were provided in an organized fashion.
This year, there were a number of sessions I wanted to watch, but they were in the same time slot. Then I found out the sessions were recorded (Thanks, Mark Noble!) and will appear at the end of May on their YouTube channel (www.youtube.com/c/stirtrek). I've seen some of the videos already posted so you won't have to wait long until all are available.
Overall, I feel the event was well worth the money and would recommend anyone in the Ohio vicinity travel to Columbus, Ohio for next year's conference.
It's definitely worth the trip.
Next, Andrew Hinkle gives his perspective on the event in Part 2.
Did you go to Stir Trek? Was it better than last year? What did you think about Avengers: Infinity War? Post your comments below and let's discuss.