“I am a little bit addicted to the feeling of shipping stuff,” said self-proclaimed music and software nerd, Jon Fazzaro, “just really doing the hell out of something and shipping it.” One of his shipments can be downloaded on iTunes, packaged as an eclectic mix of rock and progressive groove metal tunes on an album titled A New Shape.
Fazzaro has been writing music and rocking out on his bass since he was just a teen, long before he even had the proper equipment to record music. It all started on a dual cassette deck where he would record himself once and then play along with the recording. “It sounded like garbage but I started playing with other me’s and eventually I got something that sounded decent,” Fazzaro said.
It turns out Fazzaro was taking an agile approach to writing and recording music, long before he began applying it to software development. Within an agile framework, a project is completed through incremental iterations called sprints. At the end of each sprint cycle, there is a retrospective where team members discuss what could be changed in the next sprint to ensure improvements. Essentially, Fazzaro’s various recordings of himself, analogous to sprints and retrospectives in the software world, resulted in his next musical shipment sensation. Thanks to agile and the dual cassette deck, Fazzaro’s musical chops have come a long way since the inception of his songwriting career, similar to his passion for building sustainable software.
When not writing music, you can find Fazzaro busy with his next software “shipment,” where he’s more likely than not using a suite of automated tests. Stemming from the agile methodology, the Test-Driven Development (TDD) method consists of developing automated tests to run against software as it’s being developed. These tests run and then notify the developer if a part of the application is broken. Fazzaro couldn’t help but grin as he began talking about his obsession with automated tests. “I’m telling everyone I can about it,” said Fazzaro. “There’s so much software out there and it’s so complicated. We can talk about clean code all day, but the only way you’re really going to get to well-written, stable software is if you use the computing power that we have to make sure that it still works after it’s changed.”
Most recently, Fazzaro has been working with a client who has a 10-year-old legacy application. The application “needs to be changed architecturally but without alterations made to the face or functionality,” said Fazzaro. To accomplish this, he and his teammate have been wrapping parts of the application in automated integration tests from the outside, to stabilize the application as changes are made, and to make sure nothing breaks. He explained automated integration testing as building a robot that uses your website to make sure that nothing is broken. This is done by “writing a program that opens up a browser and uses the application like a person would,” but without the expense of a person. To develop these automated integration tests, Fazzaro has been using Canopy, a simple framework in F#.
Fazzaro is totally taken with TDD, but it wasn’t until later in his career he came across the answer to the sustainability issues he so frequently encounters. “Before Aptera,” he said, “there were actually many situations where I found myself on a team, where the code quality was actually holding the business back from opportunities and their ability to sell the system or deliver features to the existing customers that they wanted.” Often times, customers were turned away. Development teams struggled to technically meet customer needs for a reasonable budget because things would need to be rewritten from their brittle and fragile state. “I had never seen anything else, but I knew it had to be out there,” Fazzaro recalls, “but what does good code look like?” He got a little obsessed with that question, learned from more experienced developers, and began studying prominent developers within the agile community like Bob Martin, Kent Beck and Martin Fowler. “It has changed the way I work with software and it has changed the way I think about software and the way people relate to it.”
TDD has also changed the way that Fazzaro’s mentees develop code. Aptera Intern Christian Nitz worked with Fazzaro on an AngularJS single page application last summer, which is when Nitz was introduced to TDD. “I’m much more aware and more cautious of the code I write now,” said Nitz. “If I ever work somewhere that doesn’t practice TDD, then I’m going to be preaching.”
Software Development Intern Daniel Baughman is also spending some time in TDD 101 this summer, and all tests are automated. “TDD is not anything I was taught in classes,” said Baughman, and “it has completely changed the way I develop software.” Fazzaro has been using pair programming, an agile software technique, to teach Baughman.
“Maybe today I’ll teach them something and tomorrow they will teach me a few things,” Fazzaro said. “There is just this learning that is going on, almost constantly, and it’s never a dull day.”
Want more information on starting a career with Aptera? Here are our immediate openings:
Software Developer Intern
Web Developer Intern