How programmers use design patterns and anti-patterns to develop software.
You might think a software designer simply dreams up unique ideas based on a problem given to them by a client or a problem they create. The reality is a little different.
There are no truly unique software designs, for example. And some design solutions work more often than other solutions. As a result, software designers often work within a small universe of possible solutions based on their education, experience, and personal preferences.
Consider music as one instructive example. There are only so many instruments and, for each instrument, only so many notes to play and hear. Plus the combination of instruments and notes is finite. Yet the variety of music we hear in our lives is astounding even if the instruments and notes are limited. One reason, of course, is that musicians are human beings who might play a note or instrument differently from another musician. But the limits to instruments and notes, the constraints, also give us an amazing variety of possible music.
Software design has the same dynamic, a limited number of possible solutions yet an amazing variety of actual solutions you see in the real world. These constraints are what give shape to wonderful website and software application designs.
One constraint to possible software design solutions are patterns. These divide into design patterns and anti-patterns. Both kinds can yield interesting solutions.
What’s a Design Pattern?
Design patterns for software grew out of architecture design patterns. These patterns are ways to solve common problems found in architecture, software design, interaction design, and other disciplines. Instead of reinventing the wheel, software designers often look to see if a design pattern already exists.
Become a subscriber and get access to the rest of this article. Plus all our magazine articles.
Stories also include numerous links to help parents, kids, and teachers learn more. Get access today at just $15 per year!
Also In The April 2015 Issue
The Internet of Things (IoT) connects dumb devices like refrigerators to the internet and uses software to connect them to our daily lives.
There are many operating systems for internet of things devices, from existing software used to control electronic boards to efforts by Google and Apple.
Disney Infinity 3.0, Rocket League, and Super Mario Maker are three fun video games to consider for the 2015 holiday season
You can learn a little software programming and have lots of fun with any number of coding apps available for your phone or tablet computer.
Operating system software is a key part of all computers. But what are they and how do they work?
Working through a book can help parents learn programming with their kids or kids learn on their own.
Board games and card games are some of the best ways to learn about programming. You don't need a computer. Play as a family or group.
These robots also can be programmed to move around rooms, one way for kids to learn programming.
Six women were hired to use their math skills to program the ENIAC computer. They called themselves The First Programmers Club.
Nicky is a Linguistics major who learned coding skills to further her research. She's also finished a PhD, won a few big awards, and co-founded Grok Learning.
Two women created an innovative online service to teach teenage girls how to code by using video.
The new Rust programming language is designed to solve problems with operating systems and fix issues with C and other languages.
Data can become alive and pose questions as well as reveal answers to questions we have.
Links from the bottom of all the articles in this issue, collected in one place for you to print, share, or bookmark.
DRY is an acronym for Don't Repeat Yourself. It's a critical programming concept and skill to learn.
Interesting news stories about computer science, software programming, and technology for August and September 2015.
CoderDojo is a free after school club for kids ages 7-17 where kids, parents, mentors, and others play with technology and learn to code.