Showing posts with label computer programming. Show all posts
Showing posts with label computer programming. Show all posts

Code Leader: Using People, Tools, and Processes to Build Successful Software (Programmer to Programmer) Review

Code Leader: Using People, Tools, and Processes to Build Successful Software (Programmer to Programmer)
Average Reviews:

(More customer reviews)
Are you looking to buy Code Leader: Using People, Tools, and Processes to Build Successful Software (Programmer to Programmer)? Here is the right place to find the great deals. we can offer discounts of up to 90% on Code Leader: Using People, Tools, and Processes to Build Successful Software (Programmer to Programmer). Check out the link below:

>> Click Here to See Compare Prices and Get the Best Offers

Code Leader: Using People, Tools, and Processes to Build Successful Software (Programmer to Programmer) Review"Code Leader" is a book for developers who have been on a few projects and are ready to take that next step beyond just the "code" part of "coding." The book covers topics like when to build components vs. when to buy them, good testing practices, automating your build, and analyzing your code to learn where to improve it. Each topic is addressed at a reasonable pace, not miring you in super-low-level detail but providing enough information to get the point across.
As you read it, you'll find that much of it sounds like common sense, like some long-forgotten tidbit that you didn't realize you already knew. That's the strength of the book - bringing those things to light and showing you the benefits. The best example of this is the "Done is Done" chapter, bringing up the idea that sometimes when a developer says that a task is "done," there really are things left to do... and ideas on how to solve that so when someone says something is "done," all of the i's are dotted and t's are crossed.
At the end, the book brings all of the lessons together in a case study showing a developer performing a task from beginning to end and using the tenets described in the book. It's a good way to put everything into perspective and solidifies the concepts.
If you already practice things like test-driven devleopment and continuous integration; if you already know about the benefits of the MVP/MVC patterns (and use them); if you already know what dependency injection is and how it affects your testability; if you've got some nicely structured source control policies and do branch/merge per task (and know why that's good)... you may not get as much out of this book. You're probably already doing most of the stuff discussed and don't need to be sold a car you've already bought (so to speak).
Only two technical downsides to this book:
First, while the content could apply to any software development project in any technology, most of the tools mentioned and code samples are specifically .NET-oriented. That may be a little off-putting to non-.NET developers, but if you can get past that, you'll be rewarded.
Second, the text is abnormally small. I compared it to some of the other Wrox books I've got and there's got to be a two-or-three point size difference here, which makes the book lightweight but might give you a little eyestrain.
If you're looking for complementary books to this one, check out Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy. The two offer similar types of advice - ways to go beyond "just coding" and take your projects to the next level. While there are some overlapping topics, the two really are more complementary, each offering great guidance to help you sharpen your saw.Code Leader: Using People, Tools, and Processes to Build Successful Software (Programmer to Programmer) Overview

This book is for the career developer who wants to take his or her skill set and/or project to the next level. If you are a professional software developer with 3–4 years of experience looking to bring a higher level of discipline to your project, or to learn the skills that will help you transition from software engineer to technical lead, then this book is for you. The topics covered in this book will help you focus on delivering software at a higher quality and lower cost. The book is about practical techniques and practices that will help you and your team realize those goals.
This book is for the developer understands that the business of software is, first and foremost, business. Writing code is fun, but writing high-quality code on time and at the lowest possible cost is what makes a software project successful. A team lead or architect who wants to succeed must keep that in mind.
Given that target audience, this book assumes a certain level of skill at reading code in one or more languages, and basic familiarity with building and testing software projects. It also assumes that you have at least a basic understanding of the software development lifecycle, and how requirements from customers become testable software projects.
Who This Book Is Not For: This is not a book for the entry-level developer fresh out of college, or for those just getting started as professional coders. It isn't a book about writing code; it's a book about how we write code together while keeping quality up and costs down. It is not for those who want to learn to write more efficient or literate code. There are plenty of other books available on those subjects, as mentioned previously.
This is also not a book about project management or development methodology. All of the strategies and techniques presented here are just as applicable to waterfall projects as they are to those employing Agile methodologies. While certain strategies such as Test-Driven Development and Continuous Integration have risen to popularity hand in hand with Agile development methodologies, there is no coupling between them. There are plenty of projects run using SCRUM that do not use TDD, and there are just as many waterfall projects that do.
Philosophy versus Practicality: There are a lot of religious arguments in software development. Exceptions versus result codes, strongly typed versus dynamic languages, and where to put your curly braces are just a few examples. This book tried to steer clear of those arguments here. Most of the chapters in this book deal with practical steps that you as a developer can take to improve your skills and improve the state of your project. The author makes no claims that these practices represent the way to write software. They represent strategies that have worked well for the author and other developers that he have worked closely with.
Philosophy certainly has its place in software development. Much of the current thinking in project management has been influenced by the Agile philosophy, for example. The next wave may be influenced by the Lean methodologies developed by Toyota for building automobiles. Because it represents a philosophy, the Lean process model can be applied to building software just as easily as to building cars. On the other hand, because they exist at the philosophical level, such methodologies can be difficult to conceptualize. The book tries to favor the practical over the philosophical, the concrete over the theoretical. This should be the kind of book that you can pick up, read one chapter of, and go away with some practical changes you can make to your software project that will make it better.
That said, the first part of this book is entitled "Philosophy" because the strategies described in it represent ways of approaching a problem rather than a specific solution. There are just as many practical ways to do Test-Driven Development as there are ways to manage a software project. You will have to pick the way that fits your chosen programming language, environment, and team structure. The book has tried to describe some tangible ways of realizing TDD, but it remains an abstract ideal rather than a one-size-fits-all technical solution. The same applies to Continuous Integration. There are numerous ways of thinking about and achieving a Continuous Integration solution, and this book presents only a few. Continuous Integration represents a way of thinking about your development process rather than a concrete or specific technique.
The second and third parts represent more concrete process and construction techniques that can improve your code and your project. They focus on the pragmatic rather than the philosophical.
Every Little Bit Helps: You do not have to sit down and read this book from cover to cover. While there are interrelationships between the chapters, each chapter can also stand on its own. If you know that you have a particular problem such as error handling with your current project, read that chapter and try to implement some of the suggestions in it. Don't feel that you have to overhaul your entire software project at once. The various techniques described in this book can all incrementally improve a project one at a time.
If you are starting a brand new project and have an opportunity to define its structure, then by all means read the whole book and see how it influences the way you design your project. If you have to work within an existing project structure, you might have more success applying a few improvements at a time.
In terms of personal career growth, the same applies. Every new technique you learn makes you a better developer, so take them one at a time as your schedule and projects allow.
Examples: Most of the examples in this book are written in C#. However, the techniques described in this book apply just as well to any other modern programming language with a little translation. Even if you are unfamiliar with the inner workings or details of C# as a language, the examples are very small and simple to understand. Again, this is not a book about how to write code, and the examples in it are all intended to illustrate a specific point, not to become a part of your software project in any literal sense.
This book is organized into three sections, Philosophy, Process and Code Construction. The following is a short summary of what you will find in each section and chapter.
Part I (Philosophy) contains chapters that focus on abstract ideas about how to approach a software project. Each chapter contains practical examples of how to realize those ideas.
Chapter 1 (Buy, not Build) describes how to go about deciding which parts of your software project you need to write yourself and which parts you may be able to purchase or otherwise leverage from someplace else. In order to keep costs down and focus on your real competitive advantage, it is necessary to write only those parts of your application that you really need to.
Chapter 2 (Test-Driven Development) examines the Test-Driven Development (or Test-Driven Design) philosophy and some practical ways of applying it to your development lifecycle to produce higher-quality code in less time.
Chapter 3 (Continuous Integration) explores the Continuous Integration philosophy and how you can apply it to your project. CI involves automating your build and unit testing processes to give developers a shorter feedback cycle about changes that they make to the project. A shorter feedback cycle makes it easier for developers to work together as a team and at a higher level of productivity.
The chapters in Part II (Process) explore processes and tools that you can use as a team to improve the quality of your source code and make it easier to understand and to maintain.
Chapter 4 (Done Is Done) contains suggestions for defining what it means for a developer to "finish" a development task. Creating a "done is done" policy for your team can make it easier for developers to work together, and easier for developers and testers to work together. If everyone on your team follows the same set of steps to complete each task, then development will be more predictable and of a higher quality.
Chapter 5 (Testing) presents some concrete suggestions for how to create tests, how to run them, and how to organize them to make them easier to run, easier to measure, and more useful to developers and to testers. Included are sections on what code coverage means and how to measure it effectively, how to organize your tests by type, and how to automate your testing processes to get the most benefit from them.
Chapter 6 (Source Control) explains techniques for using your source control system more effectively so that it is easier for developers to work together on the same project, and easier to correlate changes in source control with physical software binaries and with defect or issue reports in your tracking system.
Chapter 7 (Static Analysis) examines what static analysis is, what information it can provide, and how it can improve the quality and maintainability of your projects.
Part III (Code Construction) includes chapters on specific coding techniques that can improve the quality and maintainability of your software projects.
Chapter 8 (Contract, Contract, Contract!) tackles programming by contract and how that can make your code easier for developers to understand and to use. Programming by contract can also make your application easier (and therefore less expensive) to maintain and support.
Chapter 9 (Limiting Dependencies) focuses on techniques for limiting how dependent each part of your application is upon the others. Limiting dependencies can lead to software that is easier to make changes to and cheaper to maintain as well as easier to deploy and test.
Chapter 10 (The Model-View-Presenter Model) offers a brief description of the MVP model and explains how following the MVP model will make your application easier to test....

Want to learn more information about Code Leader: Using People, Tools, and Processes to Build Successful Software (Programmer to Programmer)?

>> Click Here to See All Customer Reviews & Ratings Now
Read More...

Beautiful Code: Leading Programmers Explain How They Think (Theory in Practice (O'Reilly)) Review

Beautiful Code: Leading Programmers Explain How They Think (Theory in Practice (O'Reilly))
Average Reviews:

(More customer reviews)
Are you looking to buy Beautiful Code: Leading Programmers Explain How They Think (Theory in Practice (O'Reilly))? Here is the right place to find the great deals. we can offer discounts of up to 90% on Beautiful Code: Leading Programmers Explain How They Think (Theory in Practice (O'Reilly)). Check out the link below:

>> Click Here to See Compare Prices and Get the Best Offers

Beautiful Code: Leading Programmers Explain How They Think (Theory in Practice (O'Reilly)) ReviewThe idea of this book is that thirty software developers and/or researchers (respectable ones, no doubt there), had to find the most beautiful piece of code and present its study. Each of them then writes a chapter and there you have it - a volume of "beautiful code" ! Simple as that.
If there was somebody to fully support the idea of such book, it would be me - I believe that the software industry already spent too much time and effort neglecting the art-and-craft in programming, pretending that it all can be reduced to hard math. Didn't work so far, did it ? Then I very welcome books like this one. But not exactly the one.
Let me put it this way - I couldn't say anything good about this book except that I adore the concept and found may be ten of thirty three chapters interesting (not necessarily beautiful). Beauty is in the eye of the beholder they say, but this lame excuse is the last good thing I could say for this book.
It was supposed to be pedagogical. Did not happen. Rather than making it timeless reference for the readers, the book made a tribune for the authors to talk about, uhm, just about anything. We know how programmers love to talk about what they do, and it's ok. But we also know that they often mumble instead of talking and it's very difficult for us to understand one another, no matter friendly or hostile. This is not to mention that there are no commonality in topics or style or language (programming or English) or anything. The editor had simply glued it together.
Not so bad you say, a good assortment is fine you say ? Let me tell you more, and it's all downhill.
It's as though you expected an album of paintings but instead got a book of random excerpts from chemical specifications for producing paints.
Exemplary conventional antimicrobial, antimildew, or antialgae agent includes 3-iodo-2-propynyl butylcarbamate, diiodomethyl-p-tolylsulfone, 1,2-benzoisothiazolin-3-one, 2-methylthio-4-tert-butylamino-6-cyclopropylamino-s-triazine, 2-(4-thiocyanomethylthio) benzothiazole and the mixtures thereof.
See how beautiful it is that can be painted with that ?
If you ask me, a book like this ought to have structure. Remember the classic one by Gamma et al - they also presented abstract things from different areas or levels, but they kept the information stylistically uniform and structured against a clear taxonomy. Not the case here.
Each chapter is about different matter, presented in a different way. One author presents a performance hack in which he compiles code on the fly. The chapter will then contain several pages of dynamic assembly. The other will show an interesting approach to syntax parsing. This one will have 50 short snippets of something JavaScript-like. Yet another will tell you how to automate debugging by automatically mutating the application. This one won't have code at all. Yet another will show a slick algorithm for counting bits in a word. This one will have a lot of bitwise arithmetic.
And I just loved the one that has NASA in it's title. There - "A Highly Reliable Enterprise System For NASA's Mars Rover Mission". Wow ! How promising ! Want to know what it says ? It says - "In NASA they love their software reliable, even a web-based file server, and so we present you a web-based file server built with JavaBeans in three-tier architecture". Ahem, Mars Rover anyone ?
Don't get me wrong, some of the chapters are reasonably interesting. Interesting ! Not beautiful !
With a little exception, the authors don't even mention the word "beautiful" in their texts. They allure with "There, we have this system, it works like this..." . What exactly the author finds beatiful about it and why - remains secret.
The most impressive standout was the chapter written by Yukihiro Matsumoto, the creator of Ruby. Three pages in which he simply speaks about what he believes a beautiful code is. He explains to you his understanding of a beautiful code. This is what the book is all about !
Instead, many chapters just demonstrate a few pages (!) of code and conclude - it is beautiful, see !
Many times I wasn't unable to grasp the problem - what was it that required that so called beauty to emerge ? I couldn't see the whole picture, but the authors sort of presume I do and so my possible appreciation of beauty requires deep understanding. What if I show you a magnified fragment of Mona Lisa's background, some 3x3 blackish pixels ? No doubt, Leonardo had to paint them too. But what was that beauty again ?
Only a few authors were wise enough to use a pseudocode. Something that anyone can read, no matter from which camp. Otherwise it's just weird when the authors present their beatiful code in Ruby or Perl or LISP. Look, I didn't touch Ruby yet, I hate Perl and I can't imagine using LISP in practice. Nevertheless the authors repeatedly say something like "It's easy, I'll show you, this bracket does this and that character does something else. Now you see how beautiful it is ?". They literally show you a piece of poetry in foreign language and ask you to appreciate it.
A classical example of awful poetry in Russian is (transliterated)
Ya poet, zovus' Neznajka,
ot menya vam balalajka.
Can you tell whether it's good or bad and why ? What if I told you it's beatiful ? Would you believe ? Does it appeal to your sense of beauty ? Same thing about this entire book.
Awful implementation of an idea that I fully adore. In fact, implementations like this undermine the idea, that's why I rate this book so low and put it away with disgust.
Beautiful Code: Leading Programmers Explain How They Think (Theory in Practice (O'Reilly)) OverviewHow do the experts solve difficult problems in software development? In this unique and insightful book, leading computer scientists offer case studies that reveal how they found unusual, carefully designed solutions to high-profile projects. You will be able to look over the shoulder of major coding and design experts to see problems through their eyes. This is not simply another design patterns book, or another software engineering treatise on the right and wrong way to do things. The authors think aloud as they work through their project's architecture, the tradeoffs made in its construction, and when it was important to break rules. Beautiful Code is an opportunity for master coders to tell their story. All author royalties will be donated to Amnesty International. tion.

Want to learn more information about Beautiful Code: Leading Programmers Explain How They Think (Theory in Practice (O'Reilly))?

>> Click Here to See All Customer Reviews & Ratings Now
Read More...

Programming Perl (3rd Edition) Review

Programming Perl (3rd Edition)
Average Reviews:

(More customer reviews)
Are you looking to buy Programming Perl (3rd Edition)? Here is the right place to find the great deals. we can offer discounts of up to 90% on Programming Perl (3rd Edition). Check out the link below:

>> Click Here to See Compare Prices and Get the Best Offers

Programming Perl (3rd Edition) ReviewIf you're like me, and you're shopping for a book, you immediately start reading the negative reviews and work upwards. So I started reading the reviews and read through them all, bought the book despite the many negative, and frankly, snippish comments made by many reviewers and decided that I need to respond.
Many say that the examples are convoluted, or that he focuses on obscure language references. One says the book starts quickly with a discussion of the splice function. The first mention of splice is on page 355, which I certainly don't define as 'quickly'....
Others say that there are no examples, or they are not explained clearly, but there's a short sample program right on page 18, and then 4 pages are devoted to analyzing the program and how it works. Further review through the book shows many small examples, especially in the sections that outline the core functions of Perl, and the core modules of Perl.
Others come here and criticize Perl the language, and use this as a platform for their own advocacy of other languages. This is just silly. If you're interested in Perl, or you've been using Perl and you want to know more, buy this book. In the universe of computer programming, every language choice you make is controversial, and subject to debate, and just because some reviewers do not like Perl the language, it does not mitigate the quality of this book.
That all being said, and debunking the frankly lousy reviews, I'll caution that this is NOT for beginning programmers, or people with limited technical knowledge. O'Reilly knows this, and anyone who has read this book should know this too. There is a book called 'Beginning Perl', also from O'Reilly, and written by one of the other top minds in Perl. It is easy to follow, provides many concrete examples and is where a beginning programer should begin. If you have a technical background, you will probably be able to start with this book, though Learning Perl is still worth reading.
What this book provides is not only an exhaustive guide to the language of Perl, and it's abilities, but also insight into it's design, the decisions of the creator of the language (Larry Wall, the main author of the book created Perl), and the major philosophy behind Perl.
This is a valuable reference and worth having.
This is the book that I turn to when I have Perl questions.
And this book is worth every penny I spent to get it.Programming Perl (3rd Edition) Overview
Perl is a powerful programming language thathas grown in popularity since it first appeared in 1988. The first edition of this book, Programming Perl, hit the shelves in 1990, and was quickly adopted as theundisputed bible of the language. Since then, Perlhas grown with the times, and so has this book.

Programming Perl is not just a book about Perl. It isalso a unique introduction to the language and its culture,as one might expect only from its authors. Larry Wall is the inventor of Perl, and provides a unique perspective onthe evolution of Perl and its future direction. Tom Christiansen was one of the first champions of the language,and lives and breathes the complexities of Perl internalsas few other mortals do. Jon Orwant is the editor of The Perl Journal, which has brought together the Perlcommunity as a common forum for new developments in Perl.

Any Perl book can show the syntax of Perl's functions, but only this one is a comprehensive guide to all the nooks and crannies of the language. Any Perl book can explain typeglobs, pseudohashes, and closures, but only this one showshow they really work. Any Perl book can say that my is faster than local, but only this one explains why. Any Perl bookcan have a title, but only this book is affectionately known by all Perl programmers as "The Camel."

This third edition of Programming Perl has been expanded to cover version 5.6 of this maturing language. New topics include threading, the compiler, Unicode, and othernew features that have been added since the previous edition.


Want to learn more information about Programming Perl (3rd Edition)?

>> Click Here to See All Customer Reviews & Ratings Now
Read More...