Pragmatic Programmer: From Journeyman to Master
Author: Andrew Hunt & David Thomas / Addison-Wesley
This book is similar to Coder to Developer: Gives advice on a lot of topics to improve your skills as a developer (to stop being a simple developer and get into the path for an analyst or software architect). One difference though is that this book doesn't even talks about .NET, using C++ or Java examples instead (if you work with C# that shouldn't be any problem!).
Overall, the book has an inspiring, motivating speech. The authors have fought a lot of battles when developing software and most of the tips are really useful and will make you avoid common (and not so common) mistakes.
In each chapter, small tips and advices are given to the reader, even with small tales and metaphors to make you understand easily some concepts or problems.
In some advices they are a bit too extreme, like "learn one new programming language each year" (a bit hardcore), or ttrying to have 100% of your code uncoupled (performance, or customer requirements to give two examples may force you to tightly couple some components). But this are the minor ones.
It gives a lot of intersting principles, like the DRY (don't repeat yourself), WYSIAYG (what you see is all you get), "design to test" or the very interesting "testing saboteur" (place someone in the project to brach the source and place bugs to see if the test batteries catch them or not).
I like the "tracer code" concept. Instead of prototyping (throwing away code and redoing it), making a framework and adding code in tiny bits, with constant feedback to change what is wrongly implemented. Looks like saving future effort, and we sometimes do it unconsciously. It just requires having a clear view of the overall system.
The book has chapters about prototyping, estimations, "basic tools", code coupling, code structure, the Law of Demeter, multithreading, design patterns (including the now so famous Model-View-Controller), testing, using use cases in requirements definitions (I actually did this recently at work!), web-based documentation ...
Touches multiple ways of doing "defensive programming": Design by contract, knowing when the impossible has happened, assertive programming,...
Another nice point is that along the whole book the message for the reader is "you're not just a developer, think!"
Some topics lack a bit more of depth, but the starting point given is more than enough for becoming a "pragmatic programmer".
to Developer: Tools and Strategies for Delivering your
Author: Mike Gunderloy / Sybex
I'll point out small bits of comments of this book.
For example, the author misses the usefullness of virtual machines, encouraging readers to buy cheap pcs to test their software projects. Having Virtual PC or VMWare for free, it is a much cheaper solution.
Another "warning" comes from the lists of tools, maybe too much in my opinion. A developer can unfocus from the most important point: coding and thinking correctly. At least, the author notices that they should be used with caution.
Overall, gives very good advices and practices for developing, bot lonely and in small groups. It gives good tips about managing projects too.
There are chapters about source code control, testing, visual studio tooltips, code analysing and generation, bug tracking, logging... even automation techniques and tools (continuous integration software included!). Great for newcomers to this critical components. The documentation chapter is very good too, mentioning even developer diaries and postmortems.
Some of the tools mentioned are outdated, and some tools like Resharper, Virtual PC or Reflector are missing, so their chapters seem uncomplete, but software development is a very fast-evolving world so it's logic.
I recommend it to anyone who just have developed with Visual Studio "standard applications" and wants to learn more professional tools and techniques oriented to the development lifecycle.
XML Web Services - Step by Step
Author: Microsoft Press
I've recently readed this book while travelling to and from work, and my goal was to learn more about Web Services, and precisely those that gave XML responses, so this book was a good candidate.
The book contains what it says: all about web services in .NET. This is good, because you can always have it as a reference book whenever developing web services. It covers SOAP, HTTP POST and GET protocols, ASMX web services and WSDL-created proxy classes, UDDI and DISCO files, state management, caching, session and state management, and even asynchronous examples.
The only "bad" thing about the book that I've found is the "STEP BY STEP"
sub-header... At least in this book it means "complete examples in every
The book is 373 pages long (apart from the appendixes), at least one third of that being code examples. And of that 100+ pages of code, the majority is trivial basic WS code that seeing one is ok, twice maybe, but the third time you just skip to the bold part that marks the "important" code.
The authors could have avoided full samples from later chapters, instead only showing the relevant code snippets.
But anyway, as I started saying it is a recommended book to learn (or get deep into) .NET web services development.
Title: Blog Profits Blueprint
Author: Yaro Starak
When I came to this free ebook I first thought "why reading it if I don't want to monetize my blog?". I'm a big fan of "don't do to others what you don't like done to you" (or however it is said in english). I hate ad-populated pages, I don't like advertising in RSS feeds... hell, I've been using Ad-block since it appeared!
But anyway, I love reading so why not learn something about how to earn money with a blog and maybe, just if I feel is not agressive to readers, apply one or two techniques here?
The book is a bit too optimistic. I've seen lots of blogs and I don't think all of them can make money. This is no "super-secret", you need to have good content to be able to generate visits and potentially money sources. But it is true too that by not doing anything clearly you won't get anything ;)
It provides a small non-technical approach to what a blog is and what benefits it brings, very well explained, before entering in how to monetize one. Inside the "business" part, gives away some suggestions, clarifies what your goal should be, etcetera.
Includes interesting topics as "passion vs profit", pilars for building a good blog, marketing a blog, available communication channels (mostly as traffic sources for your blog)...
There is a big section about generating incomes, as the tittle suggests, which is the most important part. I won't enter in details, but gives good examples and ways of making money.
Not a bad reading to get some interesting ideas, but does not discover any magical formulae apart from "spend time and effort on what you do".
Title: Videogame Marketing and PR
Author: Scott Steinberg
The book is clearly aimed at development studios. It is basically a compilation of suggestions, success stories, usual mistakes and recommendations related with marketing and public relations in the videogame industry.
It is interesting however for a more broad audience to read it and learn how difficult is creating a videogame this days. The book contains money sums, stime chedules, estimates of team people numbers, handicaps... I like too the real-world examples that any avid gamer will notice.
Some sections are like a big speech, others are a group of points, and others have a question-answer format. A chapter with advices from the industry professionals is also here (and quite interesting). It has some auto-advertising (the author is of course in the game PR sector), but nothing annoying or excessive.
While I'm not becoming a PR agent (at least in the near future ;) it was more like a casual reading that a serious one. I already knew some of the examples, but others may be of use for a game dev. studio.
Title: Writing Secure Code for Windows Vista
Author: Michael Howard & David LeBlanc
Initially I didn't liked Windows Vista. A resource hog, some incompatibilities... But I had to use it at work so I installed it and worked with it for two months. After that, I really like the security features it has, but I felt like missing more details about specific topics... So I decided to buy this book.
Writing Secure Code for Windows Vista comes as a, mostly C++ oriented (although contains some C# examples), "how to use all new features" book. Very well structured, with lots of code examples, best practices, direct to the topic, and one thing I liked a lot: very sincere. If something is working bad, the authors state it clearly (for example, the Windows Firewall API, which has bugs), and they even provide workarounds to avoid them.
Down to the content, the book covers a lot of topics: New safer C functions, banned APIs, new APIs, UAC, token manipulation, integrity levels, code signing, virtualization, buffer overrun defenses, IPv6, Secure Socket extensions, Windows Firewall (Vista version, of course), IE7 security mechanisms & defenses (very interesting), Windows services development best practices, protected mode API and DEP, and the new CNG (Cryptography API: Next Generation).
Even if you don't usually develop with C++ I highly recommend this book. With it you will learn a lot about all the new security features of Vista. You just need some basic knowledge of standard Windows security features and some C++/API programming.
Title: The Design of Everyday Things
Author: Donald A. Norman
The Design of Everyday Things is not a common book. It is a book about thinking how things are made, and more important, why they are made that way. It's a fantastic way of speaking about usability, about utility, and about design.
After you read it, you'll start to look all around you. You can apply it to software design: Remember those hellish tools nobody could master even reading once and again the help? Or remember that tool that was so easy to use you didn't even opened the help... And analyse them, extract that factors make it good (or bad).
But you can apply it to your life. Are you dumb because you can't program your dishwasher, or maybe is that having 10 buttons is a mess?
I am left-handed and a lot of times I've thought "I can't do this well because it's designed for right handed". Now, sometimes I look more closely and see that even for them it's hard to use.
Something not common to read to learn something about usability and design, but a good source to learn them.
Title: Organiza tus ideas utilizando mapas mentales
Author: Jean-Luc Deladrière, Frédéric Le Bihan, Pierre Mongin, Denis Rebaud
Mind Maps are a technique I found interesting when I first read about it, mainly because I tend to make incredible "packed" abstracts and indexes about things. When at the university, I compacted some books in 15 pages to study (and it worked ;)
So, when I read about drawing just the ideas, expanding them like tree branches, focusing on not writing redundant info but the topics, the facts, the critical info... I thought "this is perfect for me".
The book is enjoyable, easy to read, with lots of examples, sample mind maps, and per-chapter abstracts (of course presented as a mind-map).
I recommend it without any doubt, very very interesting.
I think I've catch the idea of how to make mind maps perfectly. Let's see if I can put it into practice at work :D