September book review: Design Patterns

Posted on October 4, 2008 12:27 by Aleh Matus

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
Design Patterns: Elements of Reusable Object-Oriented Software

Design Patterns is one of my favourite technical books of all time. It has been highly influential on my understanding of object-oriented design and software engineering principles in general. It helped me hone my skills as a software architect early in my career and now serves as a reference material for many of my training sessions.

This book catalogs 23 commonly used design patterns:

  • Creational
    Abstract Factory, Builder, Factory Method, Prototype, and Singleton
  • Structural
    Adapter, Bridge, Composite, Decorator, Facade, Flyweight, and Proxy
  • Behavioral
    Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, and Visitor
  

For each pattern, the authors describe the design problem addressed, the circumstances in which the pattern is applicable, and the consequences of using the pattern to solve the problem.  Each pattern is supplied with relevant UML diagrams and simple C++ examples.

As design patterns are becoming mainstream, more and more books are published on this subject. You can easily find resources with examples in C#, Java, VB.NET, and other programming languages. My recommendation is to read the original book first.  I find it less prescriptive and more thought-provoking, leaving you with options for implementing design patterns in practice. Do not fall into the trap of thinking about patterns as prescriptive solutions to common design problems. Instead, think about each pattern as a multiple-step journey. At each step, you can and should review your design problem at hand as well as the trade-offs associated with using the pattern. You can stop, move to the next step, or to continue with implementation in a different direction. The choice is yours.

This is a must-read book for any software engineer and is highly recommended for first-line managers. As a minimum, it will allow you to speak with your team at a higher level of design abstraction. Happy reading!

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Data Architect / Developer needed

Posted on October 4, 2008 11:49 by Aleh Matus

NorthStar Capital Markets Services is looking for a Data Architect / Developer. Please, see the details of the position below.

Data Architect / Developer

Position: Data Architect / Developer
Location: Minnetonka MN
Employment Type: Full time
Starts: Immediate upon hire

NorthStar Capital Markets Services is one of the most respected names in the student loan industry.

We are looking for a Data Architect / Developer to join our development team in Minnetonka. This person will be responsible for designing and developing financial solutions using cutting-edge technology. The ideal candidate is someone who is looking to make a difference in the organization and performs well in a knowledge-based product development environment.

Requirements

  • Excellent analytical skills
  • Proficiency in relational and data warehouse database design
  • Hands-on experience with SQL Server tools, such as Integration Services, Reporting Services, Analytical Services, and Service Broker
  • Working knowledge of ETL
  • Experience with Excel Services and SharePoint is a plus
  • Exposure to C# and object-oriented principles is a plus

Please, submit your resume to itjobs@northstar.org for immediate consideration

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


From Subversion 1.4 to Subversion 1.5

Posted on September 8, 2008 16:06 by Aleh Matus

Last week, we upgraded our development environment from Subversion 1.4 running on Apache 2.0 to Subversion 1.5 running on Apache 2.2. The primary reason for this upgrade is the support of relative URLs in the svn:externals property introduced in the new version of Subversion. 

The upgrade process was smooth and easy. Here are the steps we followed:   

  1. Stopped our existing Apache Server
  2. Backed up our Subversion repository 
  3. Downloaded and installed Apache 2.2.9
  4. Downloaded and installed Subverstion 1.5.2
  5. Configured httpd.conf configuration file for our new Apache server and started the server
  6. Upgraded our repository by executing svnadmin upgrade
  7. Upgraded our indexes by executing svn-populate-node-origins-index
  8. Upgraded client tools - we installed Tortoise 1.5.3 and Ankh 2.0
  9. Upgraded Team City automated build and continuous integration server to the latest version 3.1.2
A couple of notes... 
 
  • In the past, in order to use Windows authentication with Subversion we had to write a custom mod_auth_sspi.so. We did not have to do anything for 1.5. Loading modules in the correct order and referencing them from the Subversion application folder did the trick for us:     
 
LoadModule sspi_auth_module modules/mod_auth_sspi.so
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module C:/Apps/svn-win32-1.5.2/bin/mod_dav_svn.so
LoadModule authz_svn_module C:/Apps/svn-win32-1.5.2/bin/mod_authz_svn.so               
 
<Location /svn>
DAV svn
SVNPath C:\Dev\Repository

     AuthName "SVN Server"
     AuthType SSPI
     SSPIAuth On
     SSPIAuthoritative On
     SSPIDomain OURDOMAINNAME
AuthzSVNAccessFile "C:/Repository/conf/authz"
     SSPIOfferBasic on
     Require valid-user     
</Location>   

  • Team City 3.1.2 does support Subversion 1.5, but unfortunately does not support relative URL's in the svn:externals property. 

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


August book review: Toyota Talent

Posted on September 3, 2008 13:04 by Aleh Matus

Jeffrey Liker and David Meier
Toyota Talent: Developing Your People The Toyota Way

I am leading a product development team at a financial organization. One of my objectives is to create an environment supporting and motivating team members to learn all jobs within the team and continuously improve our work methods. This may not be an easy goal to achieve, but I see a huge value in having team members capable of performing multiple jobs and willing to assume different roles and responsibilities.  

While I was exploring ideas on how to organize training and skill development for our employees, I came across Jeffrey Liker's and David Meier's book describing an approach to training used by Toyota. At Toyota, managers and team leaders are responsible for establishing a teaching environment within their teams. They create development plans for their team members, work closely with the trainers to evaluate the progress and skill level of each individual, and keep an eye on the overall performance indicators.

  

Jeffrey and David provide excellent ideas on how to identify critical knowledge, analyze and standardize work methods, break down jobs into small pieces for teaching, run training sessions, and follow up to verify the results. Even though the approach described in the book is targeted towards manufacturing, I found it to be applicable (with little adaptation) to product development and engineering. 

Happy reading!

Currently rated 5.0 by 2 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5



Mike Cohn
Agile Estimating and Planning

Mike Cohn is an Agile Alliance co-founder, Information Technology executive, and the author of two excellent books: "User Stories Applied" and "Agile Estimating and Planning". His first book became de facto standard for creating user stories. His second book is often described as one of the best practical guides to estimating and planning agile projects. I really like and recommend both of Mike's books.

Estimating and Planning are necessary non-value adding activities on a software project. They are non-value adding because they do not add a direct value to the final product as perceived by the customer. They are necessary because the consequences of not doing estimating and planning are dire: we would end up with no data to support any quality decision-making process on the project. When is the project going to be done? What can we have completed by a certain date? Should we release now or shall we wait another month and release with more features?

  

You could argue that during estimation we analyze and evolve our requirements, which may be considered a value adding activity. I would agree with you. The trick is to make this process fast and lean by doing just enough analysis and eliminating all unnecessary wastes. You will need to figure out what works best for you and your team, but if you are wondering where to start, start with the "Agile Planning and Estimating" book. You will find simple, pragmatic, logical, common-sense methods and techniques to make your projects successful.

Happy reading!

Currently rated 5.0 by 2 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Senior Software Engineer needed

Posted on July 21, 2008 13:15 by Aleh Matus

NorthStar Capital Markets Services, the company I am working for, is looking for a Senior Software Engineer. Please, see the details of the position below.

Senior Software Engineer

Position: Senior Software Engineer
Location: Minnetonka MN
Employment Type: Full time
Starts: Immediate upon hire

Requirements

  • Proficiency in C# and Web Services
  • Working knowledge of object-oriented concepts and design principles
  • Experience with SQL Server applications: Integration Services, Reporting Services, Analytical Services, Excel Services, and Service Broker
  • Familiarity with Load Testing tools is a plus

About NorthStar

NorthStar Capital Markets Services is one of the most respected names in the student loan industry. Quickly becoming a key ingredient of NorthStar’s success are the T.H.E. Loan Programs making NorthStar one of the top student loan originators in the country.

If you are interested in this position, please, send your resume and contact information to itjobs@northstar.org

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5



Gerald M. Weinberg
The Secrets of Consulting: A guide to giving and getting advice successfully

As a consultant, I find it illuminating and resourceful as it puts rationality and structure around seemingly irrational subject area. As a manager, I find it full of wisdom and wit, but perhaps lacking clear message and specific take-aways. As a reader, I simply find it entertaining. What am I talking about? "The Secrets of Consulting" book by Jerry Weinberg.

Jerry defines consulting as the art of influencing people at their own request. Even this definition alone makes me think hard and deep about my role as a consultant... or as a person who needs consulting help. In a casual conversational manner, Jerry introduces rules and laws helping a consultant become more effective and ultimately more successful at what she/he does.

  

To give you a taste of what this book is about, I listed a few of my favourite rules and laws below:

  • The Duncan Hines Difference: It tastes better when you add your own egg.
  • Prescott's Cucumber Principle: Cucumbers get more pickled than the brine gets cucumbered.
  • Rhonda's First Revelation: It may look like a crisis, but it's only the end of an illusion.
  • The Harder Law: Once you eliminate your number one problem, you promote number two.
  • Fisher's Fundamental Theorem: The better adapted you are, the less adaptable you tend to be.
  • The Bolden Rule: If you can't fix it, feature it.
  • The Principle of Least Regret: Set the price so you won't regret it either way.

Happy reading!

Currently rated 5.0 by 3 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


ReSharper 4.0 is finally released

Posted on June 14, 2008 05:22 by Aleh Matus

It is finally here. The long waited ReSharper 4.0 has been released: http://www.jetbrains.com/resharper/.

Since we moved our .NET development to Visual Studio 2008 and .NET 3.5 at the end of last year, we have been using daily builds and betas of ReSharper 4.0. I am happy to see our favourite C# productivity tool released! 

Currently rated 5.0 by 2 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Next OTUG meeting is on Thu, June 26

Posted on June 14, 2008 05:07 by Aleh Matus

OTUG usually meets every 3rd Tue of the month. Usually, but not this month... Please, note that there is no OTUG meeting on June 15. Our next meeting is on Thu, June 26. As usual, check http://www.otug.org for more information.

Who: Dale Schumacher
What: Actors Make Better Observers
When: Thursday, June 26, 2008, 5 pm
Where: O'Shaugnessy Science Hall, University of St. Thomas, St. Paul, MN

See you there!

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5



Welcome again. Here is what I picked for this month's review:

Michael N. Kennedy
Product Development for the Lean Enterprise: Why Toyota's system is four times more productive and how you can implement it.

I first learned about Toyota production and product development around 5 years ago. Their numbers are truly impressive:

  • Toyota is consistently named at the top in owner satisfaction surveys
  • Toyota's  milestone dates are never missed
  • Toyota's engineers and managers achieve incredible 80% of value-added productivity (vs. 20% auto industry average in the US)
What does Toyota do differently from everybody else? How can we apply their principles to IT? Product Development is substantially different from Manufacturing. Which one is a better fit for an IT organization? 
  

While there is plenty of information on wildly admired Toyota Production System (Lean Manufacturing), there is considerably less data on Lean Product Development (Knowledge-Based Development). In order to better understand how these two systems are different, take a look at the table below:

  Lean Manufacturing Lean Product Development
Cycle Time: Short (minutes, hours) Long (days, weeks)
Core Material: Physical material Knowledge and information
Teams: Smaller, focused Larger, more diverse
Focus: Focus is on executing predefined tasks and automation Focus is on defining new solutions and building knowledge and expertise


In his book, Michael Kennedy introduces the principles of and key elements behind Lean Product Development:

  • Set-Based Concurrent Engineering
  • System Design Leadership
  • Responsibility-Based Planning and Control
  • Expert Engineering Workforce

In an engaging and humorous manner, he explains how these principles can be adapted and implemented in your organization. The book is thought-provoking, sophisticated, and extremely fun to read.  It appeals to my sense of humor and has a plot and engaging characters that no reader will forget. It will keep you occupied until early morning hours... ;-)

Principles of Lean Manufacturing work well for IT maintenance and support. Lean Product Development fits well IT software development teams. If you are a technical or functional leader in an IT organization, this is a must-read book for you!  I am sure you will enjoy it.

Happy reading!

Currently rated 5.0 by 3 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Welcome to ModelBlog

Thank you for visiting ModelBlog. We hope the time you spend with us will be both entertaining and worth your while. Have fun!

Authors

Search