As voted on by several thousand members of StackOverflow in this article here.

The original question was:

"If you could go back in time and tell yourself to read a specific book at the beginning of your career as a developer, which book would it be."

Since it was first posed back in 2008, this question has become the second most popular question of all time on StackOverflow.

Here are the results:

    1. Code Complete (2nd Edition)
      By Steve McConnell
      Published: July 7, 2004
      Publisher: Microsoft Press
      Amazon Link: here

      Widely considered one of the best practical guides to programming, this book has been helping developers write better software for more than a decade. The second edition was updated with leading-edge practices and hundreds of new code samples, illustrating the art and science of software construction. Capturing the body of knowledge available from research, academia, and everyday commercial practice, McConnell synthesizes the most effective techniques and must-know principles into clear, pragmatic guidance. No matter what your experience level, development environment, or project size, this book will inform and stimulate your thinking, and help you build the highest quality code.

    2. The Pragmatic Programmer: From Journeyman to Master
      By Andrew Hunt and David Thomas
      Published: October 30, 1999
      Publisher: Addison-Wesley Professional
      Amazon Link: here

      Like any other craft, computer programming has spawned a body of wisdom, most of which isn't taught at universities or in certification classes. Most programmers arrive at the so-called tricks of the trade over time, through independent experimentation. In The Pragmatic Programmer, Andrew Hunt and David Thomas codify many of the truths they've discovered during their respective careers as designers of software and writers of code. The cool thing about this book is that it's great for keeping the programming process fresh. The book helps you to continue to grow and clearly comes from people who have been there.

    3. Structure and Interpretation of Computer Programs, Second Edition
      By Harold AbelsonGerald J Sussman and Julie Sussman
      Published: August 1, 1996
      Publisher: McGraw-Hill Science/Engineering/Math
      Amazon Link: here

      Teaches readers how to program by employing the tools of abstraction and modularity. The authors' central philosophy is that programming is the task of breaking large problems into small ones. You will learn a thing or two about functional programming, lazy evaluation, metaprogramming (well, metalinguistic abstraction), virtual machines, interpreters, and compilers. The book was originally written for the famous 6.001, the introductory programming course at MIT. It may require an intellectual effort to read, but the reward is well worth the price.

    4. The C Programming Language (2nd Edition)
      By Brian W Kernighan and Dennis M Ritchie
      Published: April 1, 1988
      Publisher: Prentice Hall
      Amazon Link: here

      Concise and easy to read, it will teach you three things: the C programming language, how to think like a programmer, and the C abstract machine model (what's going on "under the hood"). Co-written by Dennis Ritchie, the inventor of the C programming language.

    5. Introduction to Algorithms
      By Thomas H. CormenCharles E. LeisersonRonald L. Rivest and Clifford Stein
      Published: July 31, 2009
      Publisher: The MIT Press
      Amazon Link: here

      Introduction to Algorithms, the 'bible' of the field, is a comprehensive textbook covering the full spectrum of modern algorithms: from the fastest algorithms and data structures to polynomial-time algorithms for seemingly intractable problems, from classical algorithms in graph theory to special algorithms for string matching, computational geometry, and number theory. The revised third edition notably adds a chapter on van Emde Boas trees, one of the most useful data structures, and on multithreaded algorithms, a topic of increasing importance. 

    6. Refactoring: Improving the Design of Existing Code
      By Martin FowlerKent Beck, John Brant and William Opdyke
      Published: July 8, 1999
      Publisher: Addison-Wesley Professional
      Amazon Link: here

      Refactoring is about improving the design of existing code. It is the process of changing a software system in such a way that it does not alter the external behavior of the code, yet improves its internal structure. With refactoring you can even take a bad design and rework it into a good one. This book offers a thorough discussion of the principles of refactoring, including where to spot opportunities for refactoring, and how to set up the required tests. There is also a catalog of more than 40 proven refactorings with details as to when and why to use the refactoring, step by step instructions for implementing it, and an example illustrating how it works The book is written using Java as its principle language, but the ideas are applicable to any OO language.
       
    7. Design Patterns: Elements of Reusable Object-Oriented Software
      By Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides (Also known as "The Gang of Four")
      Published: November 10, 1994
      Publisher: Addison-Wesley Professional
      Amazon Link: here

      Design Patterns is a modern classic in the literature of object-oriented development, offering timeless and elegant solutions to common problems in software design. It describes patterns for managing object creation, composing objects into larger structures, and coordinating control flow between objects. The book provides numerous examples where using composition rather than inheritance can improve the reusability and flexibility of code. Note, though, that it's not a tutorial but a catalog that you can use to find an object-oriented design pattern that's appropriate for the needs of your particular application--a selection for virtuoso programmers who appreciate (or require) consistent, well-engineered object-oriented designs. 

    8. The Mythical Man-Month: Essays on Software Engineering
      By Frederick P. Brooks
      Published: August 12, 1995
      Publisher: Addison-Wesley Professional
      Amazon Link: here

      Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system. Now, 20 years after the initial publication of his book, Brooks has revisited his original ideas and added new thoughts and advice, both for readers already familiar with his work and for readers discovering it for the first time.

    9. Art of Computer Programming, Volume 1: Fundamental Algorithms (3rd Edition)
      By Donald E. Knuth
      Published: July 17, 1997
      Publisher: Addison-Wesley Professional
      Amazon Link: here

      The bible of all fundamental algorithms and the work that taught many of today's software developers most of what they know about computer programming. One of the book's greatest strengths is the wonderful collection of problems that accompany each chapter. The author has chosen problems carefully and indexed them according to difficulty. Solving a substantial number of these problems will help you gain a solid understanding of the issues surrounding the given topic. Furthermore, the exercises feature a variety of classic problems.

    10. Compilers: Principles, Techniques, and Tools (2nd Edition)
      By Alfred V. AhoMonica S. LamRavi Sethi and Jeffrey D. Ullman
      Published: September 10, 2006
      Publisher: Prentice Hall
      Amazon Link: here

      Known to professors, students, and developers worldwide as the "Dragon Book," the latest edition has been revised to reflect developments in software engineering, programming languages, and computer architecture that have occurred since 1986, when the last edition published.  The authors, recognizing that few readers will ever go on to construct a compiler, retain their focus on the broader set of problems faced in software design and software development.

      Follow @dodgy_coder

      UPDATE:  There was just too many great books that finished outside of the top 10 to ignore... below I've added the programming books which finished placed 11th through to 30th in the survey... enjoy!

    11. Head First Design Patterns
      By Elisabeth Freeman, Eric Freeman, Bert Bates and Kathy Sierra
      Published: November 1, 2004
      Publisher: O'Reilly Media
      Amazon Link: here

    12. Gödel, Escher, Bach: An Eternal Golden Braid (20th Anniversary Edition)
      By Douglas Hofstadter
      Published: February 5, 1999
      Publisher: Basic Books
      Amazon Link: here

    13. Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition)
      By Scott Meyers
      Published: May 22, 2005
      Publisher: Addison-Wesley Professional
      Amazon Link: here

    14. Clean Code: A Handbook of Agile Software Craftsmanship
      By Robert C Martin
      Published: August 11, 2008
      Publisher: Prentice Hall
      Amazon Link: here

    15. Programming Pearls (2nd edition)
      By Jon Bentley
      Published: October 7, 1999
      Publisher: Addison-Wesley Professional
      Amazon Link: here

    16. Working Effectively with Legacy Code
      By Michael Feathers
      Published: October 2, 2004
      Publisher: Prentice Hall
      Amazon Link: here

    17. CODE: The Hidden Language of Computer Hardware and Software
      By Charles Petzold
      Published: November 11, 2000
      Publisher: Microsoft Press
      Amazon Link: here

    18. Peopleware: Productive Projects and Teams (2nd Edition)
      By Tom DeMarco and Timothy Lister
      Published: February 1, 1999
      Publisher: Dorset House
      Amazon Link: here

    19. Coders at Work: Reflections on the Craft of Programming
      By Peter Seibel
      Published: September 16, 2009
      Publisher: Apress
      Amazon Link: here

    20. Effective Java (2nd Edition)
      By Joshua Bloch
      Published: May 28, 2008
      Publisher: Prentice Hall
      Amazon Link: here

    21. Patterns of Enterprise Application Architecture
      By Martin Fowler
      Published: November 15, 2002
      Publisher: Addison-Wesley Professional
      Amazon Link: here

    22. The Little Schemer (4th Edition)
      By Daniel P. FriedmanMatthias Felleisen, Duane Bibby
      Published: December 21, 1995
      Publisher: The MIT Press
      Amazon Link: here

    23. The Inmates Are Running The Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity
      By Alan Cooper
      Published: March 5, 2004
      Publisher: Sams - Pearson Education
      Amazon Link: here

    24. The Art of UNIX Programming
      By Eric S Raymond
      Published: October 3, 2003
      Publisher: Addison-Wesley Professional
      Amazon Link: here

    25. Practices of an Agile Developer
      By Venkat Subramaniam and Andy Hunt
      Published: July 1, 2005
      Publisher: Pragmatic Bookshelf
      Amazon Link: here

    26. The Elements of Style: 50th Anniversary Edition
      By William Strunk and E. B. White
      Published: October 25, 2008
      Publisher: Longman
      Amazon Link: here

    27. Test-Driven Development: By Example
      By Kent Beck
      Published: November 18, 2002
      Publisher: Addison-Wesley Professional
      Amazon Link: here

    28. Don't Make Me Think: A Common Sense Approach to Web Usability
      By Steve Krug
      Published: August 28, 2005
      Publisher: New Riders Press
      Amazon Link: here

    29. Domain Driven Design: Tackling Complexity in the Heart of Software
      By Eric Evans
      Published: August 30, 2003
      Publisher: Addison-Wesley Professional
      Amazon Link: here

    30. Modern C++ Design: Generic Programming and Design Patterns Applied
      By Andrei Alexandrescu
      Published: February 23, 2001
      Publisher: Addison-Wesley Professional
      Amazon Link: here

from:http://www.internetsecuritydb.com/2011/09/top-ten-most-influential-programming.html

posted @ 2012-05-15 22:07 .net's 阅读(9) 评论(0) 编辑

1. Never Stop Learning and Reading
Read books, not just websites.
Read for self-improvement, not just for the latest project.
Read about improving your trade, not just about the latest technology.
Some of the books listed here would be a good start: The most influential programming books of all time

2. Work With People Smarter Than Yourself
Working with smarter and/or more experienced developers will teach you a great deal.

3. Become a Polymath (or 'Jack-of-all-Trades')
Decide to be a 'Jack-of-all-Trades', allowing you to avoid becoming 'pigeon-holed' into one specialty, which can stagnate your programming skills, as well as hurt your future employment prospects.

4. Read and Document Other People's Code
Writing code is significantly easier than reading someone else's code and figuring out what it does.

5. Get Programming Experience on a Real Project
There is nothing like getting in and coding, especially under pressure - work on a real project, with real fickle customers, with real, ever-changing requirements and with real engineering problems.

6. Teach Others About Programming
This will force you to understand something at a completely different level, since you have to explain it to someone else.

7. Learn One New Programming Language Every Year
One year gives you enough time to get past the basics - it pushes you towards understanding what's beneficial in that language, and to be able to program in a style native to that language.

8. Complete One New Pet Project Every Year
Start a "pet" project and follow it to completion and delivery; a good pet project will push your boundaries and keep you interested.

9. Learn Assembly Language
Learning a low level language like assembly gives you insight into the way computers 'think' without any high-level abstractions; the elegance at this level is surprising.

10. See Your Application From the End User's Perspective
Interact with the end-user to see, through their eyes, how they use the software; end users are typically not technical, and they often see software as a magical piece of work, while you see software as a logical set of steps.

11. Start a Physical Exercise Program
You work a whole lot better when you're in good physical shape - problems become easier and less overwhelming, wasting time is much less of a temptation, you can think clearer, and working through things step by step doesn't seem an arduous task.

12. Learn Touch Typing
Learning to touch type is a quick and effective way to give your productivity a boost as a programmer.

Cross posted from: Dodgy Coder - How To Become a Better Programmer

posted @ 2012-05-15 22:01 .net's 阅读(9) 评论(0) 编辑

Each connection pool is associated with a distinct connection string. When a new connection is opened, if the connection string is
not an exact match to an existing pool, a new pool is created. Connections are pooled per process, per application domain, per
connection string, and, when using integrated security, per Windows identity. In this case, the connections are configured to use
integrated security. Each user has a discrete Windows identity resulting in the creation of a connection that is pooled separately.
There is one connection per connection pool.

posted @ 2012-05-13 20:34 .net's 阅读(1) 评论(0) 编辑

It’s important to note that a cascading delete in the Entity Framework works only if the de-
pendent entity objects are loaded. This can be accomplished using the Include or Load meth-
ods.

posted @ 2012-05-08 14:22 .net's 阅读(3) 评论(0) 编辑

EXAM TIP
For the exam, understand that the XmlReader provides the fastest means to access XML
data and is read-only, forward-only.

posted @ 2012-05-07 13:46 .net's 阅读(0) 评论(0) 编辑

The DataContext object manages object identity for you so that rows retrieved from the
database table are automatically logged in the DataContext object’s internal identity table
by the row’s primary key when the object is created. If the same row is retrieved again by this
DataContext object, the original instance is handed back to you. Your application sees only
the state of the row that was first retrieved. If, for example, you retrieve a row in your applica-
tion and the row is modified in the database table by a different application, you won’t get
the updated data if you query for this row again because the row is delivered to you from the
DataContext object’s cache.
It might seem rather weird that querying for the same row returned the original state of
the row, even though the row had been changed by another application. In essence, the new
data was thrown away. The reason for this behavior is that LINQ to SQL needs this behavior to
support optimistic concurrency. DataContext contains a method called SubmitChanges, which
sends all your changes back to the database table. This is explained in more detail later in this
lesson.

posted @ 2012-05-07 11:15 .net's 阅读(3) 评论(0) 编辑
摘要: Transactions have four essential attributes: atomicity, consistency, isolation, and durability (known as the ACID attributes). ■ Atomicity The work cannot be broken into smaller parts. Although...阅读全文
posted @ 2012-05-05 09:47 .net's 阅读(4) 评论(0) 编辑
摘要: When DbDataAdapter is used to retrieve or update data, it examines the status of the con- nection. If the connection is open, the DbDataAdapter uses the open connection and leaves the connection...阅读全文
posted @ 2012-05-04 21:28 .net's 阅读(4) 评论(0) 编辑
摘要: A DbDataReader object provides a high-performance method of retrieving data from the data store. It delivers a forward-only, read-only, server-side cursor. This makes the DbDataReader object a...阅读全文
posted @ 2012-05-04 21:04 .net's 阅读(5) 评论(0) 编辑