Design Patterns Quick Reference

So every time I am designing something new I find myself either searching Google or opening up a gang of four (GoF) book to aid me. I searched for a bit trying to find a handy-dandy flash card showing class diagrams and purposes for the basic GoF patterns but was unable to locate a good one (for free). So I made my own.If you see any mistakes or improvements please post here and I will update the docs.

If you find this useful, please consider making a donation, even if it is just a few dollars. The ad revenue for this site doesn’t quite cover rent…




There are multiple formats you can download in:

PDF Cards: Get it!

Poster: Get it!


Page 1:

Design Patterns Quick Reference (Page 1)

Page 2:

Design Patterns Quick Reference (Page 2)

Enjoy!

 


If you can’t trust your employees, let them go.

It is highly unlikely that you will find secretaries using typewriters in any modern successful business. So why is it that companies feel that they can maintain a mindset that is equally as old as much of the technology they have long since sloughed off? While it is important to have a handle on what is going on within your company employers can do so without being overly invasive or restrictive.

I was recently speaking with someone I know that does software development for a very large company and was astounded to find that the company severely limits the access their employees have to almost all content. If employees navigate to restricted sites a network administrator is notified and promptly forwards an infraction notice to the employee’s manager. I was especially taken aback to find that software engineers, who should be relying heavily on the internet to stay abreast of technology, are limited from such standard things as accessing people’s blogs, a place that can best be likened to an incubator for cutting edge software theory. The company has recently loosened their policy a bit but it is my feeling that, with the exception of “trouble” employees, there should be no policy at all – at least not one that is visible to employees.

Many businesses will argue that with the modern outsourcing, globalization, and price war trends that they must take measures to cut costs, which to many means making sure employees constantly have their nose to the grindstone. The simple fact of the matter is that the concept of an employee that works for 100% of the day is a fallacy. Even the best of employees require some down time in order to maintain a high level of productivity. However, despite this common knowledge, statistical data supporting whip cracking employers is quite easy to find.

One article states that “for every 13.5 minutes workers spend […] the cost to employers in lost wages alone exceeds $237 million” (My Shoulder – this article actually agrees with my stance but presents the statistic nonetheless). However, what this staggering statistic fails to recognize is that for that $237 million the nation’s employers are purchasing something very important: goodwill and productivity. While there will always be those that take advantage, the majority of employees actually work hard at their job, at least in my professional experiences. The half hour or more of “unproductive” time that workers use throughout the day is more than made up for when one considers the added productivity and goodwill employers gain from having a more relaxed and content employee. There are many theories revolving around workplace motivation, such as Maslow’s Hierarchy of Needs, most of which point towards the conclusion that an employee that feels secure and content in their work is likely to perform at higher levels and exhibit higher overall levels of motivation than one who is not.

The bottom line is that you must protect your business, especially in this age of rampant globalization and cost cutting. If this means monitoring employee activity then so be it. However, unless there is a reason to restrict their employees companies should opt for allowing basic freedoms and curtail practices of filtering emails, restricting web surfing, and reprimanding for being late every now and then. After all, when all things are considered the added productivity that comes from a less restrictive policy will likely far outweigh the gain that companies would get from closely monitoring every action of their employees. In fact, with all that free thinking time, perhaps employees will be able to come up with a true cost savings methodology.


Outsourcing and the economy

I watched a prior employer systematically send software engineering jobs to India, giving all domestic software engineers the option of becoming software analysts or showing themselves the door. Despite this, I like to think that I have a fairly open view of offshoring, globalization, and our place in the economy. While at first I was very angry with the decision and spent a good bit of time vehemently discounting offshoring, I have relatively recently come full circle to the view that offshoring is good as long as it is in the right context.

Cheap labor is nothing new. People have long complained about losing jobs to workers willing to do the same job for less money but the problem typically reaches a boil when the invading workforce is nomadic or the employer seeks foreign investments. This is because many see this job loss as a negative impact on the economy and their livelihood. However, just because a job is lost to an overseas competitor doesn’t mean the effect on unemployment is a negative one. Unemployment only encompasses those unemployed individuals who are actively looking for a job. Individuals who are not actively pursuing employment are not counted. The majority of domestic employees can find another job once theirs has been outsourced. It may not pay as much as they are used to or may be “a step down”, but it is still employment. For the most part we can ignore the negative impact on the economy as a result of offshoring. In fact some studies even show that offshoring has a positive impact on unemployment rates.

So if the economic argument for maintaining domestic jobs breaks up, what is left? Pride. The fact that we have lost our jobs to someone who is willing to work for far less injures our ego and leaves a bitter taste in our mouths for globalization (I can personally attest to this). To help illustrate the positive side of this trend we must change our perspective and look to the supply and demand of labor in the job market.

Assuming a successful service or product, the early days of an industry create a high demand for workers to maintain adequate supply for consumers. Assuming that consumer demand remains high, so will the demand for workers. Because of the perpetual demand for workers and the desire to maintain high profits and low costs companies will find ways of optimizing and improving processes to the point where they are at their optimum level of efficiency. Once a process reaches a point where it is at its most efficient, the action of executing the process takes second chair and becomes an exercise in following a well rehearsed script. At this point it is relatively easy and cost effective for companies to ship production and processes offshore where they can achieve the same results for a much lower price.

When this happens, the domestic employees are left with three decisions: don’t work, find another position utilizing the same skill set, or improve their skills. Most workers will opt out of the first option as a lack of income severely hinders one’s lifestyle. The second option is a likely jump for most employees however this option will only be viable for as long as there is a domestic job within their skill range. Once the domestic positions have dried up the deposed employees will be left with only the first and third option, meaning most will opt to improve themselves. This improvement ushers in the next phase of the cycle and brings us full circle back to where we began: employees are helping to drive towards efficiency in an economy.

The economy we now find ourselves entering is one where labor, and thus hardware, is cheap and readily available and information is truly where the power and money lies. Just look to companies like Apple and their designs for proof of this. The next phase of this cycle has already begun. The information economy is already starting to be shipped to less expensive venues and the domestic economy, at least in the software world, is starting to move towards an architecture and design economy where product specifications and OOD are pounded out here and then shipped overseas for quick assembly. The same concept can be seen in all industries, as was illustrated with the link to Apple hardware above.

The shift from an agrarian society to an industrial society took a long time. The shift from an industrial society to a data society took significantly less time. Already we are seeing the dawn of a knowledge society were data is just the avenue of exchange. As the working medium becomes more pliable we will see this trend continue to speed up. So how can you make sure you aren’t left behind in this cyclic evolution? Stay abreast of the trends and tailor your learning to accommodate. It is when we stop being mad at outcomes and start looking for opportunities in them that we will truly help ourselves and our economy truly excel.