Archive for category BookReview

Book Review: The Passionate Programmer

The Book

Title: The Passionate Programmer

Author: Chad Fowler

Publisher: The Pragmatic Bookshelf

Review

This is the second edition of the book that was titled as ‘My Job Went to India (And All I Got Was This Lousy Book): 52 Ways to Save Your Job‘ in the inaugural edition. As the author admitted in the first few pages of the book, that title gave some impressions that the book is only about how to merely save the job.

The title for the second edition is more apt considering the intent of the author. If you read Andy Hunt’s books on Career Development, this book by Chad Fowler falls into the similar genre.

The key emphasis of the book is –

Think of your career as if it is the life cycle of a product that you are creating. That product is made up of you and your skills.

From My Notes

There are a lot of useful tips and sound advice in the book, just want to touch on a few of them –

How to choose a technology stack to work with and how to choose a business domain is discussed. I completely agree with the author’s view on how many of us end up doing whatever comes our way. In the author’s own words — “Our career is one big series of undirected coincidences“.

Fowler says that both ends of the technology adoption curve might prove to be lucrative. I see where he is coming from, although I haven’t seen many people intentionally taking up gigs to work on old/outgoing technology. Even the ones who take up such jobs, they are doing so because they can do only that.

These kind of folks they may call themselves specialists, but Fowler says that too many of us seem to believe that specializing in something simply means not knowing about other things. A very good case is made in the book why you want to be a generalist and at the same time being a specialist!

Fowler (being a musician in his past life) says it may be a good thing for being the worst guy in every band you are in — which translates to work and hang around with people who are smarter than you. Great advice, I can attest to that from my own experiences, especially from the early phases of my career.

Simply being good at programming alone is not good enough. You ought to make sure that you understand the business domain well enough. Without understanding the business domain is it even possible to do justice to the job — either making or saving money for the business.

One of the suggestions was to practice coding and read the open source code to learn new tricks of the trade. Great advice, but open source community is not immune from bad code, so choose your projects wisely!

There are some execution tips — productivity boost from do-it-now mentality, push yourself to accomplish something every day, working towards a team goal (your managers’ successes are your successes), don’t panic. Another important aspect is to question yourself are you adding enough value to justify your worth. Author suggests that there will be many opportunities that you can spot if you ask such questions.

Fowler explains why marketing one’s skills is important — If you kick ass and no one is there to see, did you really kick ass? Who cares? No one. Perceptions do matter and it’s not a wrong thing to manage perceptions. Build your brand (this concept is also explained well in Career 2.0 book by Jared Richardson. Richardson explains quite well the importance of writing and public speaking activities as a part of brand building).

Organization

The book is organized into short chapters under five broad categories / sections — Choosing your Market, Investing in your Product, Executing, Marketing, Maintaining your Edge. Each chapter ends with an ‘Act on It’ section. Author suggests a few items in this part of the chapter on how you can act based on the content discussed. Although they are nice, the real “act on it” is on the readers, coming up with the action items that is more specifically tailored for them.

You may actually finish reading this book in a few hours, perhaps in one sitting. I’d rather suggest taking your time, and go with a cycle similar to:

read_a_chapter –> introspect –> prepare_a_plan [act_on_it, of course]

Conclusion

As Chad Fowler suggests, this book isn’t about struggling to maintain the level of mediocrity required not to get fired. It’s about being awesome. It’s about winning. I remember Uncle Bob saying — you employer is not your mom. True. You have to make your choices and treat your job as a career, and develop the skills needed to keep you up-to-date. If you are currently looking for some inspiration or not so passionate about your career, then this book is for you.

Tags: ,

Book Review: Hello World!

The Book

Title: Hello World! Computer Programming for Kids and Other Beginners

Authors: Warren D. Sande and Carter Sande

Publishers: Manning Publications

Review

As I reviewed couple of Manning books earlier, they contacted me recently to find out whether I was interested in reading this book and provide feedback. I was not sure at that point. Later on I read somewhere that a dad and his 12-year old son have written this book, and that too using Python to explain the concepts of programming. So that background tempted me into reading this book.

I’m here to report that I do not regret that decision. In fact, I’ve enjoyed the entertaining narration of the book. Concentrating on the fundamentals of a programming language is essential, especially if you are about to begin learning the art of programming. The authors did a great job explaining the basics in simple terms.

After hearing rave reviews about Python, couple of months ago, I’ve ventured into learning it. I started to appreciate the beauty of the language. Python as a language of choice is a great one, that too if you are learning your first programming language. Python, in my opinion, is an easy to learn language relatively speaking. Authors made a great choice and introduced the concepts in a systematic way — variables,  Math functions, decisions, looping, lists, functions, objects, modules.

As a kid or an adult beginner you don’t want a book to overwhelm you with lofty jargon. What you need is a book that keeps you interested just enough so that you can learn the concepts, play with the language, and take out any fear you may have about programming. This book, I think, succeeds in doing just that.

Every chapter has got some assignment questions. A nice way to learn a programming language; learn the concepts and test your knowledge. Although I’m not a big fan of games, children would certainly love to learn a language and develop their own games. They can certainly take clues from the gaming examples provided in the book. Drawing, animation, sounds and events are all covered.

As this book is meant for beginners it doesn’t cover topics that a more advanced user would otherwise like to see. It would not be fair to compare this book with a book like  Learning Python (O’Reilly).

Last but not the least, illustrations in the book are really nice and will also play a major part through out the book and provide some interesting tidbits. I have no hesitation to say that this book would be a perfect gift for any 12-year old (or for any beginner) interested in learning a programming language but doesn’t know where to start.

Tags: ,

Book Review: Grails in Action

Grails in Action Cover

The Book

Title: Grails in Action

Authors: Glen Smith, Peter Ledbrook

Publisher: Manning

Review

The book is organized into four parts:

  • Introduction: The very first chapter is aptly titled as ‘Grails In a Hurry’. If you are a complete beginner to Grails you will be blown away with the productivity and the powerful feature set of Grails on display. Many concepts explained in detail in the later chapters are summarized with a simple example. Second chapter goes over Groovy basics, which is adequate.
  • Fundamentals: I think taking up a non-trivial example to explain the concepts of a framework is nice. A Twitter-like application is built during the course of this part of the book. This part explains about using GORM (Grails Object Relational Mapping Library), techniques for using Constraints for validation, power of Grails scaffolding, usage of dynamic queries, controlling application flow and the usage of services, introduction to GSPs and the discussion about views and layouts (along with AJAX stuff).
  • Building more features into your applications: How well different levels of testing (unit, integration, functional) are integrated into the framework is discussed. This part then continues with the basics of plugins and their usage. One of my favorite chapters in this book follows next, workflow with Grails Webflow. Security is discussed in some detail, but the chapter that follows really stands out (especially for a huge REST fan like me) — explains how to design and implement a RESTful API showcasing Grails support for this architectural pattern.
  • What you need to know for real work: The last part of the book explains about — messaging and scheduling, some advanced GORM concepts, how to use Spring and transactions with Grails, and about plugin development. The chapter on advanced GORM concepts is well written; folks who intend to use Grails for enterprise-level applications will certainly benefit from this chapter.

This is my first formal reading of a Grails book, but have some decent exposure to the concepts of Grails (from the available documentation, and by the presentations that I attended in the past). So for me, introductory chapters and some of the fundamentals are well-needed refreshers, but the last two parts really stand out. Some points from my notes:

  • For integration tests, Grails bootstrap the database and wires up all components just as it would for a running web app.
  • Domain class relationships (1:1, 1:M, M:N) are explained quite well from the Grails point of view — belongsTo variations, hasMany and GORM magic of automatically adding new methods to account for the defined relationships.
  • Groovy querying with dynamic finders: Dynamic finders take advantage of funky Groovy metaclass magic to intercept all method calls on a domain object; leverages Groovy’s methodMissing feature.
  • Use flash scope for passing messages to the user when a redirect is involved.
  • Extensive discussion on the Grails form taglibs, and on creating your own tags.
  • Mocking is built-in the framework for productive unit testing.
  • Webflow introduces a new scope: flow scope. Items put in flow scope live for the life of the flow. Favor flow scope over session scope — Webflow will cleanup the storage for you and give you more efficient server memory.
  • The chapter on implementing the REST architectural pattern is a must read; Grails supports the pattern out-of-the-box.
  • Grails uses OSCache as its default cache library (for Hibernate’s second-level cache). The reason suggested was that it plays well with Grails developer restarts, something I would like to understand further in reference to Ehcache. But the authors actually used Ehcache in the book suggesting that it is a better library (I agree!).
  • So easy to declare caching at the domain level:
    static mapping = {
        cache: “read-write”
    }
  • Discussion on integrating with legacy databases is interesting, but would like to see some case studies to understand the real pain involved.
  • Transactional services are implemented using Spring’s AOP mechanism (Spring’s TransactionProxyFactoryBean).
  • Integration tests run inside a transaction by default, which is then rolled back after each test finishes. This ensures that data changes don’t affect other tests, but it means you can’t check whether transactions are rolled back or not. If you want to test transactional behavior then you need to add a static transactional property to your test.

Conclusion

The book is very well organized and the topics chosen are well thought of. An easy conversational tone is used through out the book. In my opinion, this book succeeds in building a sustained interest about the framework. It is also an excellent reference book on the topic. Strongly recommend the book for all Grails enthusiasts.

Tags: ,

Book Review: Career 2.0

career20frontcover The Book

Title: Career 2.0: Take Control of Your Life

Author: Jared Richardson with Matthew Bass

Publisher: NFJS Publishing

Review

The career 2.0 talk (about which I blogged recently) made my interest grow on reading this book. So after reading the book, here I am to report my findings:

In a lot of ways this book strikes a chord with me. The very concept of actively managing your career is something that I’m sold on long back. What this book provides is the reinforcement of that concept and some more. If you are not yet convinced about the topic, here is a question on the back cover of the book that you may answer and decide:

Has your career been a random path dictated by your manager’s whims?

The target audience for this book are technical people, but the core concepts discussed can be extended easily to other fields. Book starts off with the discussion of why the topic matters, proceeding into the goal setting. The subsequent chapters are dedicated for tips and advice towards achieving the goals, and share what you learn with emphasis on writing and speaking. Three appendices follow – ‘Break it Down’, some practical examples of sample goals; ‘A Rogue’s Gallery’ has success stories; ‘Resources’ has the useful resources on the topics that are discussed in the book.

The book is structured according to the notion of decide, select, share and go. Decide first that you want to take your career one level up; Once you decided select the technologies that you want to learn; Share as you learn which improves  your own understanding and at the same time helps other people; Your goals are identified now go after them.

Chapter on Goals

In the Goals discussion Maslow’s hierarchy is used as a guide, but the focus is on looking beyond Maslow and improve on how we share the knowledge. Goal setting and the importance of short-term and tangible goals is discussed keeping the long-term vision in mind.

Chapter on Select

Point is well made about how just being a model employee alone may not help your career. There is a good chance that you are going to struggle when you are forced to look out for a new job because of not being in sync with the technical advancements. It is a common tendency just to concentrates on today’s crisis and leave the big picture out.

Further, the author discusses three options that you have when you select your goals . One of them is to try and bring in the new cool technology into your work place. That’s a valid suggestion but in some heavily structured organizations it is not that easy to bring in a new technology. Perhaps an option of working few hours a week on an open-source project or something similar to gain knowledge, is also a good fit in this list.

Chapter on Share

Author says, even if you master the whole world unless you share your knowledge you may not grow to the level that you aspire to. An excellent point is made in taking those extra few minutes and blog what you learned. For example, if there is a technical issue that you solved recently, do a quick write-up on that so that other people searching for solutions could find you and you may in turn learn from any feedback your receive.

Chapters on Writing and Speaking

Two of the very best chapters in this book. Writing and Speaking are described as two powerful tools in the Career 2.0 toolbox. There are some good tips in this book about sharpening those tools.

I’m in complete agreement about how these tasks make you think hard and deep on the subjects that you would otherwise leave with peripheral knowledge. Blogging and its benefits are dealt quite well.

Writing forces our minds to think in new and creative ways. It’s easy to get trapped in certain patterns of thinking on a day-to-day basis. As developers, we get used to doing things the same way. Forcing ourselves to write about something helps us analyze what we’re writing about, and even take other viewpoints into account.

Orthogonal learning, picking a topic that is outside your comfort zone and something that you would not normally learn, can prove beneficial. There is some pretty good discussion on improving the public speaking skills.

Appendices

How often do you write about appendices when you write a book review? Not that often, I guess, but this book has got some great stuff in the appendices. Of the three appendices I like the second one the most, ‘A Rogue’s Gallery’. In this one you will find some of the successful people in the industry, writing about their own experiences of how they directed their careers and chased their dreams.

Conclusion

All in all this a wonderful book with lots of practical advice. As mentioned in my earlier post on the topic, the key really is not to wait for your ideal job. Do today something about it so that you are ready when a great opportunity is available. If a book is something that can motivate you in that direction, then I strongly recommend this book.

Tags: ,

Book Review: Groovy in Action

Nash.compBook
Title: Groovy in Action
Author(s): Dierk Konig, Andrew Glover, Paul King, Guillaume Laforge, Jon Skeet
Publisher: Manning Publications

Review
This is not a new book but it was in my wish list for a while. After working on couple of side projects with Groovy I’ve decided to read this book, in line with my new year resolution of getting back to the habit of reading more books. Structured formal learning in a form of book is still extremely valuable.

Being a Java guy for the last decade or so, it is not that difficult to get into Groovy. In fact, the language is so well designed for easy transition for Java programmers. Not sure whether transition is a right word here as you are still very much in Java as you work with Groovy!

This book is divided into three parts:

  • Part 1: The Groovy language — This is more like language-specific details
  • Part 2: Around the Groovy library — This is more like language reference
  • Part 3: Everyday Groovy — This part is more like day-to-day tips and tricks

The book is very well written and elaborate. First part of the book, you may read it at a relatively fast pace if you are already working with Java. Of course, you will always find something extra or something different that you get by using Groovy, not to mention the syntactical sugar! Chapter on Closures is very well written.

Second part goes into in-depth description of the Groovy library details. Here is where you appreciate Groovy even more. The chapter on Builders is a nice one. I skipped AntBuilder as I’m familiar with Gant, a Groovy based build system that uses ANT tasks. Also, skipped SwingBuilder as I’m not much into Swing.

Third part is more like a cook book, applying some of the knowledge from the first two parts. ‘Useful Snippets’ chapter is a must read and so is ‘Writing automation scripts’.

Learning Points

  • Further appreciate the beauty of Groovy with its ‘beauty through brevity’ approach
  • Groovy’s approach of everything is an Object and no primitives, its excellent operator overriding — the language bases its operators on method calls and allows these methods to be overridden.
  • GStrings is an excellent concept allowing placeholders in its literal declaration.
  • Working with collections in Groovy is a breeze compared to Java. Groovy not only uses the same abstractions provided by Java, it even works on the very same classes that make up the Java Collections API.
  • Closures: Arguably one of the most powerful features of Groovy. Very well explained in this book, along with Closure scoping.
  • Groovy’s mutimethods feature — its mechanism of method lookup taking the dynamic type of method arguments into account.
  • Groovy’s ability to work with files and I/O is top-rate. If you are a Java developer you would certainly like the ease with which these operations are carried out with very little clutter, from the code point of view.
  • DataSets is a great concept that brings parser approach of programming language for checking SQL select expression at compile time.

Overall, this is an excellent reference book for Groovy. Very detailed, and the examples are non-trivial. Strongly recommend the book.

Tags: ,