Monday, February 27, 2012

Method of Learning

Last week I came across one of Jesse Liberty's blog posts titled "OMG, where do I start?"

It is mostly geared for someone just starting with Silverlight, and while experienced, I still found it very insightful.

Here is the link:
http://jesseliberty.com/2009/07/28/omg-where-do-i-start/

One thing that I thought was particularly interesting is the following quote:


Top Down vs. Bottom Up

I’ll define these as follows (and let’s not quibble about corner-cases)
Top Down – Learn Silverlight by starting with what you want to build and learning how to build that – learn just enough  of each skill to build your product.
Bottom Up – Set your project aside, learn the core skills, then look to combine them to successively approximate your project.
Of course, very few thoughtful people will take one approach to the total exclusion of the other but it is startling how many folks really try the Top Down approach. 
I’m pretty sure some folks succeed with Top Down,  but I’ve never seen it.
As I'm trying to figure out some stuff for a personal project, I realize I followed this pattern. I'm trying to learn just enough animation to solve this problem, and I'm trying to accomplish it by reading and learning some open source code, and while that technique usually works for me, its not working in this case. Because of my fail, I've started looking at some about the basics of animation in SL, including reading some tutorials, blog posts, and the new book I mentioned in a previous email. I've discovered I need a foundation in Silverlight animation to accomplish my goal. So, Pete's blog post was insighful, and the quoted bit above is particularly relevant.

While I think there's nothing wrong with reading code to figure things out, I do think that there are times, when the problem is sufficiently difficult, where it might not be enough.

Sunday, February 26, 2012

Design Patterns Explained: A New Perspective on Object-Oriented DesignDesign Patterns Explained: A New Perspective on Object-Oriented Design by Alan Shalloway
My rating: 4 of 5 stars

The book covers the basics of UML and object oriented design, some common patterns, and commonality and variability analysis.

While I was reading it, I didn't think the authors chose a very apt title for the book; after finishing it, I realized that the authors are trying to explain how patterns are derived. In fact, at one point in the book the authors point out that it is much more important that you understand the basic principles of design patterns than it is to memorize patterns and diagrams.

The material is presented clearly with plenty of examples and is easy to read.

If you're looking for a book on patterns, you'd be better off with something like Design Patterns: Elements of Reusable Object-Oriented Software, in fact I think this book would make a good segue to that one.

View all my reviews

Thursday, February 9, 2012

The Design of Everyday ThingsThe Design of Everyday Things by Donald A. Norman
My rating: 3 of 5 stars

If you aren't a "designer of things", this book is still worth reading. The concepts are easy to understand and apply. The book points out common flaws in design that are all around us. It is a little dated, but I didn't find that to be a problem and it was interesting to note how things have changed, for the better, since the book was first published. Clearly people have read this book and applied the ideas within...in my mind, that is reason enough to read it.

View all my reviews

Monday, January 23, 2012

Machine Learning Class

Both Stanford and Harvard are offering free online courses. They have a machine learning class starting in February that I'm going to be taking. Here is the email you get when you sign up for the class:
Thank you for signing up for the Machine Learning online class (http://jan2012.ml-class.org). The class will start in February 2012, and we will contact you again via email before the class starts. Feel free to forward this email to your friends who might be interested in Machine Learning or any of the other classes offered. See you in class in February 2012! Andrew Ng Machine Learning
I'll be posting updates as I work through the class. Another class I'm considering is Human Computer Interaction but I'm leery of biting off more than I can chew; most likely that means that I'll be taking that class next quarter instead of this one.

Tuesday, January 17, 2012

Facts and Fallacies of Software EngineeringFacts and Fallacies of Software Engineering by Robert L. Glass
My rating: 3 of 5 stars

A lot of interesting stuff in this book. I was surprised to find that so much of what seems like current material has been around for so long.

I found this book referenced in Code Complete as a good intro book to software engineering, I would agree with that assessment. This book makes for a good complement to Clean Coder, in particular the "facts" regarding maintenance.

View all my reviews

Sunday, December 4, 2011

Book Review: Code Complete, 2nd Edition

Code CompleteCode Complete by Steve McConnell
My rating: 5 of 5 stars

This book provides a solid foundation of the things you need to “construct software”, as the author describes it, and covers a very broad topic.

The author isn't shy about referring the reader to additional reading materials; in fact, that’s a big part of the book and I love it!

The book goes over things that were barely mentioned, if at all, in my college courses. Things like: debugging, refactoring, measuring code complexity, when the right time to optimize code is and whether it even makes sense to optimize it. The author does a good job of showing different approaches to solving problems and gives many examples of “good” versus “bad” practices.

On the surface this book is similar to The Pragmatic Programmer, but goes in to a lot more depth. The book goes well with Clean Code.

View all my reviews

Sunday, November 27, 2011

Create your personal brand

I love channel9.

If you've never heard of it, you should definitely check it out. It’s a site filled with interviews, keynote speeches and demos in video format. It’s one of my favorite learning resources.

I was browsing channel 9 the other day, and came across this keynote. In it, Scott Hanselman talks about social networking, something that I’ve never been really crazy about. Despite my aversion to the topic, the title interested me, so I watched the hour long video clip (and the 25 or 30 minute follow up).

Scott argues that every developer should have a blog and use twitter, I’ll leave the details to the video, but the gist of it is that you should think of it as creating your own personal brand.

I liked the idea of a personal brand so much that I extended the concept to that of a virtual business for my online “persona”, to steal a term from Alan Cooper. By thinking of my online self as a business, I can filter what I am willing to blog about by whether or not it’s good for the business. I know, it’s a bit silly, but it makes me more comfortable with the idea.

Once I changed the way I was thinking about it, I had a philosophical moment where I realized that, not only can I apply this to blogging and my career, but the concept could be applied to virtually all aspects of life. It reminded me of a podcast I listened to a while back about relationships.

I think it could be interesting, as well as, motivating to come up with a mission statement and a set of business rules. At the end of the day though, I think it will make me a better developer and that is what really matters.