Real World Software Architecture

Real World Software Architecture is dedicated to providing information and experiences from the field of Software Architecture.



Subscribe with RSS or ATOM Add to Google

Links

  • Home Page
  • Real World Software Process Engineering
  • Suggested Reading
  • .NET Dev and Arch Collection
  • SEI Essays on SA
  • Software Architecture
  • Bredemeyer
  • wwisa
  • Product Line Engineering
  • PLEES
  • Software Product Lines
  • MSDN Architecture Center
  • patterns & practices






Thursday, October 27, 2011

Programming Reactive Extensions and LINQ Book Review

This book ended up being half the size it was advertised at when I pre-ordered it back in September. Amazon was kind enough to make up for it. I thank them. The author and the publisher also apologized for the miscalculation.

Although it is small this book gets 5 out of 5 stars. I recommend this book to anyone who wants to learn Reactive Extensions. The book does a great job of introducing a potentially confusing topic.

I have already spent a lot of time digging through Rx. If I had not already delved heavily into Rx, this book would have been perfect for me. I actually wish I had been introduced through this book instead of having to hunt down fragments of information all over the web. As I started reading the book I liked it so much I revisited all the topics I already knew and was happy the book provided me with some new information I had not seen before.

The book starts out with an introduction to Rx and LINQ and also introduces Enumerable and Observable collections. The book continues with two chapters titled Core LINQ and Core RX where it digs deep into each topic's syntax, most useful operators, IEnumerable and IObservable. The next chapter Practical Rx provides some examples of real world use and digs deeper into some of the more advanced features.

Chapter 5, Inside Rx, continues introducing more of the advance operators like Window, Buffer, When, And, Then, OnCompleted, and OnError. Chapter 6 in a chapter on using LINQ to SQL that includes a small Windows Phone 7.1 SDK sample that is pretty cool. The next chapter is Rx for JavaScript followed by one tilted ReactiveUI and then a small one tilted Testing with Rx.

The ReactiveUI chapter could be confusing. It is not very clear without all the downloadable code and although the chapter discusses the ReactiveUI Library, the book never really elaborates on the fact that it is available for download on github. ReactiveUI is pretty sweet and you should spend the time to get your head around it.

One of the things I like about he book is the authors make use of LINQPad. I find myself using LINQPad as much as I do Visual Studio. I use it for data analysis instead of SQL Server Management Studio. If you find you like LINQPad, get the subscription to enable IntelliSense. It is well worth it.

The bad news about the code is all the code from the book is currently not available. The good news about the code is some of it is on github and the authors plan on making it all available. The great news about the code is that they are enabling it for LINQPad.

I really found this book to be an enjoyable read. The authors did a great job of shortening the Rx learning curve. The way they explain things make the complex things easy to understand.

I highly recommend this book to anyone interested in learning how to use Rx. By the way, that should be every .NET developer out there.

Programming Reactive Extensions and LINQ

posted by tadanderson at 1:30 PM 0 comments

Tuesday, October 25, 2011

Effective Project Management Traditional, Agile, Extreme Book Review

I am not a project manager but as an architect I find I am usually managing a project and the team assigned to it. More often than not, a real project manager is not available.

I bought this book to find out what the latest project management best practices are. I own the 4th edition of this book and really liked it.

This book starts out defining what a project is and what project management is and then it covers the PMBOK Process Groups and Knowledge areas in great detail. After that it covers different types of life cycles like Agile, Extreme, and Traditional. He then covers topics like Portfolio Management and Process Improvement.

What I liked most about the book was the detail he goes into. This book contains a vast amount of information. He does a good job of providing summary overviews of what will be covered and then covering it in detail.

I will admit the quantity of information can become overwhelming at times. There is a ton of it.

One of the things I really like is that the author has created accompanying presentations. They are ready to use for training so your Project Support Office could use them for training across your enterprise.

One of my favorite chapters was Managing Distressed Projects. It offers great insight into how projects become distressed as well as great advice on how to get your head above water again.

On a decent size project I prefer to have a good project manager that I can partner with, it just makes the projects ten times more enjoyable. Mainly because I get removed from a lot of the politics.

Notice I said a good project manager above. I have had my share of bad ones and they can make the project pure misery.

I haven't met many project managers armed with the knowledge and the tools found in this book. I wish there were more. If you are a Project Manager, I beg you to read this book. If you are a CIO, Architect, Developer, or any other stakeholder on project large enough to have a Project manager, it would be good for you to read this book so you know what the project manager is working to accomplish during different phases of the project.

All in all I think anyone involved with decent size software development project should read this book. It will definitely help improve your project's effectiveness accomplishing adding business value.

Effective Project Management: Traditional, Agile, Extreme

posted by tadanderson at 10:16 AM 0 comments

Monday, October 24, 2011

Microsoft SharePoint 2010 Development with Visual Studio 2010 Expert Cookbook Book Review

"Expert Cookbook" are the last two words in the title for a good reason. This book is for the advanced SharePoint developer. The book is a collection of small recipes that dig into some of the more advanced SharePoint 2010 programming topics. It does not mess around with introductions to topics, it just jumps right into the details of the solution.

The book includes chapters on List and Event Receivers, Workflows, Advanced Workflows, List Definitions and Content Types, Web Parts, Web Services and REST, and Working with the Client Object Model.

The author has made the code available for download. It is well organized and very usable, except for to old folders of code left in the upload. I just ignored them. You do need SharePoint 2010 on your Visual Studio 2010 development box.

The books examples build on one another so the best way to read this book is from cover to cover. The author has a nice writing style so that is not difficult to do.

I like that the examples where kept simple. It allows you to follow along and learn the technology, instead of having to learn the logic behind the sample. This also kept the sections of the chapters short and fast to read. The downside to this was that the examples were not all clean enough to be used as is.

An example of this would be when the author shows you how to do list item validation and create a custom error page. The user is told they entered incorrect data, but then all the data they entered is lost without a chance to correct the mistake and resubmit.

The thing I liked most about this book is that it get directly to the subject and stays there. It does not have a bunch of filler text and other non-sense that you find in a lot of books these days.

I also liked the solutions presented worked. The downloadable code needed the expected changes, like URLs, but it worked.

If you are a serious SharePoint 2010 developer, you should take the time to read this book.

You can read more about it here and here.

Microsoft SharePoint 2010 Development with Visual Studio 2010 Expert Cookbook

posted by tadanderson at 10:08 AM 0 comments

Thursday, October 06, 2011

12 Essential Skills for Software Architects Book Review

The two things I like least about being a software architect is doing documentation and exercising social soft skills. On a lot of projects there comes a time when there is nothing I want to do more than explain to a business user why they are wrong. Dead wrong. We all know that does not fair well with the egos most business users have, and does not fair well with your potential future on the given project. This book contains information that will show you how to use different skills to help you graciously handle the harder conversations.

This book is broken into three sections which cover, relationship skills, personal skills, and business skills.

Relationship skills has chapters on leadership, politics, gracious behavior, communication, and negotiation.

Personal skills has chapters on context switching, transparency, and passion.

Business skills has chapters on pragmatism, vision, business knowledge, and innovation.

I think the author does a great job covering the necessary soft skills for an architect. I really like the way the author shows the different skill levels using the technical glass ceiling.

The author's main point with context switching is that you must be able to do it and he provides some great tips on getting good at it. Another perspective that I find important is understanding how much time it wastes no matter how good you get at it. You also need to be aware that your team members may not be good at it. If you don't have a good project manager on the team running interference and limiting context switching, it falls on the architect to run interference. I find it more important to manage context switching than it is to attempt to master it.

Another thing I found with the book is it is all about the positive. That is not bad, but in the real world everything is not always positive and does not always end on a positive note. In the consulting world you are bound to end up with a teammate that is either not qualified for the role they are in or they are not mature enough for the position they are in. Although the ideal situation is to mentor them into becoming the ideal employee, time and budget constraints don't always allow for that. You will need to recommend having them replaced if you want to do right by your client. This is a much rarer situation in a full time employee environment. In those environments employees are not as disposable. Consultants are expected to hit the ground running.

Overall I found the book's content all great advice, but I find it more useful in a full time employee setting than in a consulting setting. As an employee I have to get along with everyone, I need to play political game, and I have to get deeply involved in the business. I am there for the long haul.

As a consultant I am not there for the long haul, I am there to accomplish a mission with a limited scope and usually with limited resources. I usually always start with all the advice in the book with regards to educating the business, playing some politics, and negotiating, but with limits. Those limits are in place to ensure a successful engagement. I find that I do not always have the luxury to of being politically correct or always being gracious. As a consultant you can get away with it since you are a high priced outside resource not considered part of the family, and in many cases babies need to be called ugly as graciously as possible.

I am not saying I disagree with anything in this book. I think it is all great valuable advice and dead on. I just think there is a little more to the story. That said, this book is the place to start learning the soft skills needed to become a successful software architect.

I think the book would be great for anyone who wants to improve relationship, personal, and business skills. Although the book is written in the context of Software Architecture, anyone could benefit from the advice in the book.

12 Essential Skills for Software Architects

posted by tadanderson at 10:25 AM 0 comments

Tuesday, October 04, 2011

Java The Complete Reference, 8th Edition Book Review

This is a great place to start learning Java. I think the book is good for beginners to start learning Java, as well as great reference for those experienced with Java.

The book does not use an IDE to create, compile, and run the programs. It uses javac and java commands to compile and run. I used both the SDK command lines and the IntelliJ IDEA Community Edition to compile and run the programs. Both worked fine, but I also have an interest in learning to use IntelliJ IDEA.

The book covers the Java language, the Java Library, Software Development with Java Beans, Swing, Servlets, and ends with building 2 sample applications.

The book covers Data Types and Operators, Control Statements, Classes, Objects, Methods, Packages, Interfaces, Exception Handling, Inheritance, I/O, Multithreading, Enumerations, Autoboxing, Static Import, Annotations, Generics, Applets, Events, AWT and Swing, Java's Documentation Comments, Varargs, Networking, Collections, Concurrent API, JavaBeans, and servlets.

All the code is available for download and is very well organize and usable. It is separated by chapter.

My favorite part of the book was that it spent a lot of time on UI topics. There were several good chapters on AWT and Swing. I also like the author's writing style. The book is a nice read as well as a good reference.

My main complaint about this book is that it includes almost all of the Java, A Beginner's Guide, 5th Edition. Anyone beginning Java would obviously start with Java, A Beginner's Guide, 5th Edition, but if I was to do it again, I would not bother with Java, A Beginner's Guide, 5th Edition. The only advantage the Java, A Beginner's Guide, 5th Edition book offers is that it is more of a tutorial oriented book. It has little extras like self-tests and hands on exercises.

My main complaint leads to my second complaint. I would have liked to see more on Servlets. There is a chapter that introduces them and then they are used in the sample applications, but I would have liked to see a lot more on them. I know the book is already huge, but if the Java, A Beginner's Guide, 5th Edition was not included in it, there would have been plenty of room for more on Servlets.

I have a C# background so the concepts and syntax were not that hard to pick up. What I needed was an overview of the libraries that are available with Java. I felt I got what I needed to jump start my Java learning path. I will be keeping this book handy to use as a reference in the future.

All in all I find this a great book for the beginner and the experienced Java programmer.

Java The Complete Reference, 8th Edition

posted by tadanderson at 9:46 AM 0 comments

Previous Posts

  • DevOps: A Software Architect's Perspective Book Re...
  • Scaled Agile Framework (SAFe) LiveLessons Video Se...
  • Bulletproof Android: Practical Advice for Building...
  • Swift for Programmers Book Review
  • Security in Computing (5th Edition) Book Review
  • Swift in 24 Hours, Sams Teach Yourself Book Review
  • Sparx Systems Releases Enterprise Architect 12
  • Learning Swift Programming Book Review
  • Android Security Internals: An In-Depth Guide to A...
  • Adaptive Code via C#: Agile coding with design pat...



Archives

  • December 2005
  • January 2006
  • February 2006
  • March 2006
  • April 2006
  • June 2006
  • August 2006
  • October 2006
  • November 2006
  • December 2006
  • January 2007
  • February 2007
  • March 2007
  • April 2007
  • May 2007
  • June 2007
  • July 2007
  • August 2007
  • September 2007
  • October 2007
  • November 2007
  • December 2007
  • January 2008
  • February 2008
  • March 2008
  • April 2008
  • May 2008
  • June 2008
  • July 2008
  • August 2008
  • September 2008
  • October 2008
  • December 2008
  • January 2009
  • February 2009
  • March 2009
  • April 2009
  • May 2009
  • June 2009
  • July 2009
  • August 2009
  • September 2009
  • October 2009
  • November 2009
  • December 2009
  • January 2010
  • February 2010
  • March 2010
  • April 2010
  • May 2010
  • June 2010
  • August 2010
  • September 2010
  • October 2010
  • November 2010
  • December 2010
  • January 2011
  • February 2011
  • March 2011
  • April 2011
  • May 2011
  • June 2011
  • July 2011
  • August 2011
  • September 2011
  • October 2011
  • November 2011
  • December 2011
  • January 2012
  • February 2012
  • March 2012
  • April 2012
  • May 2012
  • June 2012
  • July 2012
  • August 2012
  • September 2012
  • October 2012
  • November 2012
  • December 2012
  • January 2013
  • February 2013
  • March 2013
  • April 2013
  • May 2013
  • June 2013
  • July 2013
  • August 2013
  • September 2013
  • October 2013
  • November 2013
  • December 2013
  • January 2014
  • February 2014
  • March 2014
  • April 2014
  • May 2014
  • June 2014
  • July 2014
  • August 2014
  • September 2014
  • October 2014
  • December 2014
  • February 2015
  • March 2015
  • April 2015
  • June 2015
  • July 2015
  • September 2015

Powered by Blogger