By joining The Software Guild, apprentices embark on a learning journey that extends beyond immersive training. We also bring in thought leaders to our coding bootcamps, giving apprentices a chance to interact with individuals who are influencing the tech industry.

This summer, The Software Guild’s Louisville coding bootcamp welcomed Chad Green, Director of Software Development at ScholarRx. An active member of Louisville’s tech community, Green is President and Conference Chair of Code PaLOUsa. This annual conference hosts innovators who share emerging technologies and best practices with local software developers.

As an engaged sponsor of Code PaLOUsa, The Software Guild was excited for Green to share his passion for software craftsmanship with our apprentices. His presentation centered on the importance of writing clean code, and he offered tips for how new software developers can excel during their careers.

“What is software development? It is a craft. It takes a certain set of skills and knowledge to get things done. It is engineering. It’s mathematical. You test things, and there’s a burden of proof.”

–Chad Green, Director of Software Development at ScholarRx

Committing to Software Craftsmanship

Green began his presentation by introducing the concept of software craftsmanship. While the phrase carries a gravity that implies a select few can become a “craftsman,” it is a mindset that every software developer can adopt as they pursue excellence in their field, Green said.

“What is software development?” Green asked the audience. “It is a craft. It takes a certain set of skills and knowledge to get things done. It is engineering. It’s mathematical. You test things, and there’s a burden of proof.”

Green added that software development is more than programming. “We’re not programmers,” he said. “Anyone can be a programmer. We’re developers, which is something different.”

As software developers, apprentices should commit to writing clean code, Green said. He credits a small group of tech leaders with popularizing the idea that software craftsmanship leads to higher quality. The group expanded this concept to develop the Manifesto for Software Craftsmanship, which more than 30,000 tech professionals have signed in the past 10 years.

“The purpose behind the manifesto is to leave the code cleaner than you got it,” Green said. Building on this thought, he challenged his audience to exceed the quality goals of business requirements. “Think about how you can make the code even better than those requirements,” he said.

Beyond those ideas, the manifesto encourages developers to share knowledge while building professional partnerships to create genuine expertise throughout communities. “As you learn things, pass them along,” Green said. “When I started my career, most developers weren’t good at this. But when you pass along knowledge as you learn, you build community.”

“As you learn things, pass them along. When I started my career, most developers weren’t good at this. But when you pass along knowledge as you learn, you build community.”

–Chad Green, Director of Software Development at ScholarRx

Key Principles

Green built on the concept of software craftsmanship by offering fundamental principles for apprentices to follow. By following the principles he set forth, software developers can avoid ongoing issues, such as technical debt. Like monetary debt, technical debt carries compounding interest, Green said. “The longer you take to fix a problem, the harder it will be to fix it,” he said.

This escalating difficulty forces development teams to play catchup by rushing through tasks—which reduces the quality of code and worsens their technical debt. To keep technical debt to a minimum, software developers must commit to crafting quality code while avoiding band-aid solutions.

“That’s what we’re talking about here,” Green said. “Develop within the timeline but take that extra moment to craft your code.”

To frame ways for software developers to commit to quality, he shared the SOLID principles for object-oriented programming. This acronym stands for:

Single responsibility principle A single module should account for only one part of an application
Open/closed principle An application should be open for extension, but each extension should not be changed
Liskov substitution principle It should be possible to substitute a subclass or derived class with its base or parent class
Interface segregation principle Never force clients to use an interface that they or their customers will not use
Dependency inversion principle Entities should depend on structures that are abstract, not concrete

Green focused in detail on the open/closed principle, which says that an application should be open for extension, but each extension should not be changed. He added that software developers shouldn’t worry if this approach leads to more lines of code, as the fear of lengthy code is obsolete.

Green also told apprentices to follow YAGNI, a principle that stands for “you aren’t going to need it.” Avoid writing code before it will be used.

“Just write what you need now,” he said, warning against “gold-plating,” or continuing to work on a task beyond the point of adding value.

Time spent writing unnecessary code should be used for testing. Software craftsmanship demands developers take debugging seriously. Striving to write clean code isn’t enough—developers must take time to make sure it is flawless, and debugging should be comprehensive.

“If you found a bug, then guess what?” Green said. “There are five more in that code.”

Green believes testing is a team effort. For this reason, he dissuaded apprentices from being the sole tester code they write. “We know how our own code is going to work, but not the way people will actually use it,” he said. In other words, imperfections that a colleague could spot quickly may be hiding in plain sight from the primary developer.

“Develop within the timeline but take that extra moment to craft your code.”

–Chad Green, Director of Software Development at ScholarRx

Key Practices

Green stressed the importance of continuous development throughout his presentation. He encouraged apprentices to take advantage of katas, which are simple coding exercises available online. These training modules allow new software developers to gain technical skills while solving problems applicable to their craft.

“Opera singers will sing the same song 100 times. Why? The more times we do something, the better we get at it. The same goes for coding,” he said.

Green expanded on this thought by outlining key practices that strengthen a developer’s software craftsmanship. One practice explored the benefits of pair programming, a collaborative approach that he encouraged apprentices to explore once they enter the workforce.

“The idea is you have one person working and one person testing,” he said. This approach offers advantages by bringing two developers together to build and debug code while partnering to find solutions to problems that arise.

“Personally, this is how I teach a lot of my more junior folks,” Green said. “It’s a great way to learn.”

Another practice is to work to develop a sense of code smells. When a developer detects something awry in a code set, there may be a more significant issue to investigate. Developers should not ignore these issues—they should rely on their senses to discover what is rotten when code “smells” off, he said.

“Code smells are the characteristics in your code,” Green said. To maintain clean code, software developers must strive to keep every element tidy, from the high-level functionality to items as small as comments.

“Comments should be readable,” Green said. “They should be obvious, and they should be brief.”

Additionally, software developers must avoid the urge to stretch simple features into serving dual purposes. “Something that prints a report shouldn’t also calculate work hours,” Green said. Such misplaced responsibility of resources leads to clutter, and developers can streamline their code by segmenting functions across multiple resources.

“Opera singers will sing the same song 100 times. Why? The more times we do something, the better we get at it. The same goes for coding.”

–Chad Green, Director of Software Development at ScholarRx

Green’s Tips for New Software Developers

After his presentation, Green fielded questions from the group of apprentices. The first question focused on what employers will ask candidates during job interviews. Green said apprentices should be prepared to talk about projects to which they have contributed.

“Generally, my first question is, ‘What was your favorite project to work on?’” he said. “Don’t be afraid to cite a personal project. Employers are trying to find your passion and see what you want to do.”

This answer led an apprentice to ask which types of projects Green enjoys. He said he likes contributing to ROTC applications and robotics projects, and initiatives where he can help kids access educational opportunities.

“Employers are trying to find your passion and see what you want to do.”

–Chad Green, Director of Software Development at ScholarRx

Concepts that Green presented overlap with the curriculum and hands-on training offered in The Software Guild’s coding bootcamp. Taking an apprenticeship approach, The Software Guild introduces collaborative learning experiences to instill efficient practices for producing flawless code.

The Software Guild’s coding bootcamp features more than hands-on training. We deliver career support to help graduates find job opportunities and excel during interviews. Through this support, we helped 88.9 percent of Louisville graduates and 84.1 percent of Minneapolis graduates earn a tech job within six months of completing our coding bootcamp, per our July to December 2018 results.

Do you want to join a coding education program that aligns with the principles of software craftsmanship? Apply now to join The Software Guild. Our master instructors will teach everything you need to know for junior software developer roles in 12 weeks.