Category: General

Software and Mind: The Mechanistic Myth and Its Consequences

Author Andrei Sorin
Format Online PDF
Price free

Addressing general readers as well as software practitioners, “Software and Mind” discusses the fallacies of the mechanistic ideology and the degradation of minds caused by these fallacies. Mechanism holds that every aspect of the world can be represented as a neat hierarchical structure of entities. But, while useful in fields like mathematics and manufacturing, this idea is generally worthless, because most aspects of the world are too complex to be reduced to simple structures. Our software-related affairs, in particular, cannot be represented in this fashion. And yet, all programming theories and development systems, and all software applications, attempt to reduce real-world problems to neat structures of data, operations, and features. Ultimately, by restricting ourselves to mechanistic software, we impoverish all aspects of our life that depend on software.

Continue reading

Hacknot: Essays on Software Development

My image
  • Author:
  • Format: PDF
  • Price: free

This book contains 46 essays, each of which was originally published on the former HackNot site between July 2003 and October 2006.

Chapters include:

  • The A to Z of Programmer Predilections
  • The Hazards of Being Quality Guy
  • A Dozen Ways to Sustain Irrational Technology Decisions
  • My Kingdom for a Door
  • Interview with the Sociopath
  • The Art of Flame War
  • Testers: Are They Vegetable or Mineral?
  • Corporate Pimps: Dealing With Technical Recruiters
  • Developers are from Mars, Programmers are from Venus
  • To The Management
  • Great Mistakes in Technical Leadership
  • The Architecture Group
  • The Mismeasure of Man
  • Meeting Driven Development
  • Extreme Deprogramming
  • New Methodologies or New Age Methodologies?
  • Rhetorical AntiPatterns in XP
  • The Deflowering of a Pair Programming Virgin
  • XP and ESP: The Truth is Out There!
  • Thought Leaders and Thought Followers
  • Dude, Where’s my Spacecraft?
  • User is a Four Letter Word
  • The Folly of Emergent Design
  • The Top Ten Elements of Good Software Design
  • Oral Documentation: Not Worth the Paper it’s Written On
  • FUDD: Fear, Uncertainty, Doubt and Design Documentation
  • Get Your Filthy Tags Out of My Javadoc, Eugene
  • Naming Classes: Do it Once and Do it Right
  • In Praise of Code Reviews
  • Web Accessibility for the Apathetic
  • SWT: So What?
  • Debugging 101
  • Spare a Thought for the Next Guy
  • Six Legacy Code AntiPatterns
  • The Skeptical Software Development Manifesto
  • Basic Critical Thinking for Software Developers
  • Anecdotal Evidence and Other Fairy Tales
  • Function Points: Numerology for Software Developers
  • Programming and the Scientific Method
  • From Tulip Mania to Dot Com Mania
  • The Crooked Timber of Software Development
  • From James Dean to J2EE: The Genesis of Cool
  • IEEE Software Endorses Plagiarism
  • Early Adopters or Trend Surfers?
  • Reuse is Dead. Long Live Reuse
  • All Aboard the Gravy Train

The Guide to the Software Engineering Body of Knowledge

My image
  • Author: P. Bourque, R. Dupuis, A. Abran, J. W. Moore, and L. L. Tripp
  • Format: PDF, online HTML
  • Price: free

The software engineering body of knowledge is an all-inclusive term that describes the sum of knowledge within the profession of software engineering. Since it is usually not possible to put the full body of knowledge of even an emerging discipline, such as software engineering, into a single document, there is a need for a Guide to the Software Engineering Body of Knowledge. This Guide will seek to identify and describe that subset of the body of knowledge that is generally accepted, even though software engineers must be knowledgeable not only in software engineering, but also, of course, in other related disciplines.
Chapters include:

  • Introduction to the Guide
  • Software Requirements
  • Software Design
  • Software Construction
  • Software Testing
  • Software Maintenance
  • Software Configuration Management
  • Software Engineering Management
  • Software Engineering Process
  • Software Engineering Tools and Methods
  • Software Quality
  • Related Disciplines of Software Engineering


IBM Redbooks

My image
  • Author: IBM
  • Format: PDF
  • Price: free

A searchable list of the most recently published IBM Redbooks.

IBM Redbooks are developed and published by the IBM International Technical Support Organization, ITSO. The ITSO develops and delivers skills, technical know-how, and materials to IBM technical professionals, Business Partners, clients, and the marketplace in general.

The ITSO works with IBM Divisions and Business Partners in the process of developing IBM Redbooks, Redpapers, Technotes, workshops, and other materials. The ITSO is part of the IBM Global Content Services organization within IBM Sales & Distribution.

The ITSO’s value-add information products address product, platform, and solution perspectives. They explore integration, implementation, and operation of realistic client scenarios that include PeopleSoft, Linux, Windows, SAP, Oracle, and others.

IBM Redbooks are the ITSO’s core product. They typically provide positioning and value guidance, installation and implementation experiences, typical solution scenarios, and step-by-step “how-to” guidelines. They often include sample code and other support materials that are also available as downloads.

User Interface Design for Programmers

My image
  • Author: Joel Spolsky
  • Format: online HTML, (print edition available for purchase at
  • Price: free (print edition $19.77)

User interface design is straightforward, easy, and most of all fun. There is no reason to be afraid. It is all about making people happy by providing them with what they expect. The rules are simple, and all you have to do is follow them. This book will explain what those rules are, so you can design user interfaces that work and behave as expected and cause less frustration to the user.

Chapters include:

  • Controlling Your Environment Makes You Happy
  • Figuring Out What They Expected
  • Choices
  • Affordances and Metaphors
  • Consistency and Other Hobgoblins
  • Designing for People Who Have Better Things To Do With Their Lives
  • Designing for People Who Have Better Things To Do With Their Lives, Part Two
  • Designing for People Who Have Better Things To Do With Their Lives, Part Three
  • The Process of Designing a Product

Print edition contains 7 new chapters not found in the online edition.

The Programmers’ Stone

  • Author: Alan & Colston
  • Format: online HTML (formatted for easier printing)
  • Price: free

This book is an eight day beginner level course, non language specific, delivered two days a week for four weeks. The goal is to put the fun into programming while you are learning and to help the reader either become a better programmer, understand what less experienced programmers are struggling with, or communicate more effectively with other experienced programmers.

Chapters include:

  • Thinking about Thinking
  • Thinking about Programming
  • The Programmer at Work
  • Customs and Practices
  • Design Principles
  • Prudence and Safety
  • Some Weird Stuff…



Text and Monographs in Computer Science: A Practical Theory of Programming

  • Author: Eric C. R. Hehner
  • Edition: 2007-5-30
  • Format: PDF, PS (lecture visuals in PDF, only)
  • Language: English, Chinese
  • Price: free

This book is a beginners level non language specific introduction to programming. All technical terms used are explained. Each new term is underlined. There are no abbreviations, acronyms, or other obscurities of language to confuse you. No previous knowledge or experience is assumed.

Chapters Include:

  • Basic Theories
  • Basic Data Structures
  • Function Theory
  • Program Theory
  • Programming Language
  • Recursive Definition
  • Theory Design and Implementation
  • Concurrency
  • Interaction
  • Exercises
  • Reference

Solutions to exercises are available to course instructors.



Buy Print Edition (paid link)

As an Amazon Associate I earn from qualifying purchases made through Amazon links appearing on this website.

How to be a Programmer: A Short, Comprehensive, and Personal Summary

  • Author: Robert L Read
  • Format: online HTML
  • Price: free

This book presents the basics of how to be a programmer, without being language specific. It is geared towards beginners, intermediate, and advanced level programmers, presenting many skills that are ignored in other programming books.

Chapters include:

  • How to Debug by Splitting the Problem Space
  • How to Remove an Error
  • How to Debug Using a Log
  • How to Understand Performance Problems
  • How to Fix Performance Problems
  • How to Optimize Loops
  • How to Deal with I/O Expense
  • How to Manage Memory
  • How to Deal with Intermittent Bugs
  • How to Learn Design Skills
  • How to Conduct Experiments
  • Why Estimation is Important
  • How to Estimate Programming Time
  • How to Find Out Information
  • How to Utilize People as Information Sources
  • How to Document Wisely
  • How to Work with Poor Code
  • How to Use Source Code Control
  • How to Unit Test
  • How to Recognize When to Go Home
  • How to Deal with Difficult People
  • How to Stay Motivated
  • How to be Widely Trusted
  • How to Tradeoff Time vs. Space
  • How to Stress Test
  • How to Balance Brevity and Abstraction
  • How to Learn New Skills
  • How to Do Integration Testing
  • How to analyze data
  • How to Manage Development Time
  • How to Manage Third-Party Software Risks
  • How to Manage Consultants
  • How to Communicate the Right Amount
  • How to Disagree Honestly and Get Away with It
  • How to Tradeoff Quality Against Development Time
  • How to Manage Software System Dependence
  • How to Decide if Software is Too Immature
  • How to Make a Buy vs. Build Decision
  • How to Grow Professionally
  • How to Evaluate Interviewees
  • How to Know When to Apply Fancy Computer Science
  • How to Talk to Non-Engineers
  • How to Tell the Hard From the Impossible
  • How to Utilize Embedded Languages
  • How to Fight Schedule Pressure
  • How to Understand the User
  • How to Get a Promotion
  • How to Develop Talent
  • How to Choose What to Work On
  • How to Get the Most From Your Teammates
  • How to Divide Problems Up
  • How to Handle Boring Tasks
  • How to Gather Support for a Project
  • How to Grow a System
  • How to Communicate Well
  • How to Tell People Things They Don’t Want to Hear
  • How to Deal with Managerial Myths
  • How to Deal with Organizational Chaos



Buy print edition (paid link)

As an Amazon Associate I earn from qualifying purchases made through Amazon links appearing on this website.