SlideShare a Scribd company logo
The Psychology of Computer
       Programming
 What a programmer of the 00’s can
        learn from the 70’s
          By Dan Stewart
       www.StewShack.com
The Psychology of Computer
                Programming
By Gerald M Weinberg, 1971
ISBN: 0-932633-42-0


Still relevant today?
Practice Egoless Programming
• There is a “myth that the best programming
  is the product of genius”
• Productivity is increased when programmers
  don’t “own” programs
• “Personality is more important than
  intelligence in programming”
• “Admit weakness”
Be Agile
• Programming is a “cyclic, or iterative” process
• “Who has not experienced a problem
  definition that changes as discoveries are
  made”
• “At the required date, all the definitions are in
  the hands of the project manger – but that
  does not mean that the project is defined.
  All it means is that the definitions are in the
  hands of the project manger”
Traits of a Successful Programmer
•   “Ability to tolerate stressful situations”
•   “Adaptable to rapid change”
•   “Neatness”
•   “Humility”
•   “Assertiveness”
Learn how to Learn
• Be motivated
• Learn concepts then details
• Computer education is irrelevant without
  computer training
• “Be willing to make mistakes”
• Try different methods of learning (books,
  audio, video, in-person), and see what works
Thank You
www.UglyHousePhotos.com

More Related Content

PPTX
The Secret Decoder Ring: Translating Client-Speak Into Drupal Requirements
PDF
CDW Presents the Future of IT - The Power of the Pen
 
PDF
Responsive: From Design to Philosophy
PDF
Zen and Art of Workflow Development
PPTX
Ted talk evaluation presentation
PPTX
Presentation12
PPTX
Large Scale Data Management
PPTX
Project Management Bootcamp for Event Professionals
The Secret Decoder Ring: Translating Client-Speak Into Drupal Requirements
CDW Presents the Future of IT - The Power of the Pen
 
Responsive: From Design to Philosophy
Zen and Art of Workflow Development
Ted talk evaluation presentation
Presentation12
Large Scale Data Management
Project Management Bootcamp for Event Professionals

Similar to The Psychology of Computer Programming (20)

PPTX
Agile Dev and Lean UX
PDF
Effective Tools for Effective Change
PDF
Putting the t in team
PDF
Design Thinking for Developers
PDF
Slides for Norman Chap 1
PPTX
Harvey Wheaton's Agile Gardening
PPT
Arch factory - Agile Design: Best Practices
PPTX
The Fundamentals of Continuous Software Design
PDF
The 360 Developer
KEY
Uxcamplondon Sharing risky design decisions presentation
PDF
Ten lessons I painfully learnt while moving from software developer
to entrep...
PPTX
Design thinking yuechi li
PDF
UX Week 2012
PDF
Agile and Secure
PDF
Why Thinking Like a Developer Makes You a Better Designer
PPTX
Workshop on software product development the backdrop
PDF
Validating Ideas Through Prototyping
PDF
Unleash Your Inner Unicorn
PDF
Leveling up Developers
PDF
Threat Modeling: Best Practices
Agile Dev and Lean UX
Effective Tools for Effective Change
Putting the t in team
Design Thinking for Developers
Slides for Norman Chap 1
Harvey Wheaton's Agile Gardening
Arch factory - Agile Design: Best Practices
The Fundamentals of Continuous Software Design
The 360 Developer
Uxcamplondon Sharing risky design decisions presentation
Ten lessons I painfully learnt while moving from software developer
to entrep...
Design thinking yuechi li
UX Week 2012
Agile and Secure
Why Thinking Like a Developer Makes You a Better Designer
Workshop on software product development the backdrop
Validating Ideas Through Prototyping
Unleash Your Inner Unicorn
Leveling up Developers
Threat Modeling: Best Practices
Ad

Recently uploaded (20)

PPTX
A Presentation on Artificial Intelligence
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Unlocking AI with Model Context Protocol (MCP)
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
cuic standard and advanced reporting.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Machine learning based COVID-19 study performance prediction
PPTX
MYSQL Presentation for SQL database connectivity
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPTX
Machine Learning_overview_presentation.pptx
A Presentation on Artificial Intelligence
Chapter 3 Spatial Domain Image Processing.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Dropbox Q2 2025 Financial Results & Investor Presentation
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Unlocking AI with Model Context Protocol (MCP)
“AI and Expert System Decision Support & Business Intelligence Systems”
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
cuic standard and advanced reporting.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Encapsulation_ Review paper, used for researhc scholars
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Diabetes mellitus diagnosis method based random forest with bat algorithm
Machine learning based COVID-19 study performance prediction
MYSQL Presentation for SQL database connectivity
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
sap open course for s4hana steps from ECC to s4
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Machine Learning_overview_presentation.pptx
Ad

The Psychology of Computer Programming

  • 1. The Psychology of Computer Programming What a programmer of the 00’s can learn from the 70’s By Dan Stewart www.StewShack.com
  • 2. The Psychology of Computer Programming By Gerald M Weinberg, 1971 ISBN: 0-932633-42-0 Still relevant today?
  • 3. Practice Egoless Programming • There is a “myth that the best programming is the product of genius” • Productivity is increased when programmers don’t “own” programs • “Personality is more important than intelligence in programming” • “Admit weakness”
  • 4. Be Agile • Programming is a “cyclic, or iterative” process • “Who has not experienced a problem definition that changes as discoveries are made” • “At the required date, all the definitions are in the hands of the project manger – but that does not mean that the project is defined. All it means is that the definitions are in the hands of the project manger”
  • 5. Traits of a Successful Programmer • “Ability to tolerate stressful situations” • “Adaptable to rapid change” • “Neatness” • “Humility” • “Assertiveness”
  • 6. Learn how to Learn • Be motivated • Learn concepts then details • Computer education is irrelevant without computer training • “Be willing to make mistakes” • Try different methods of learning (books, audio, video, in-person), and see what works

Editor's Notes

  • #2: Hello, my name is Dan Stewart. My Web address is Stew Shack dot com.
  • #3: There’s a fantastic book titled, The Psychology of Computer Programming by Gerald M Weinberg. I read the silver anniversary edition which has comments by the author.This book was on several people’s “must read” list and now I know why. Not only does it cover the human side of programming, it also has timeless concepts that we can use today. Is this book relevant? Definitely!
  • #4: Let’s start with the human side. Reading about egoless programming gave me a lot of confidence. The best programming is done by teams and not by a single genius. The team’s strengths make up for individual’s weaknesses. When a programmer’s ego is wrapped up in the program, they “own” it. What happens when the team finds a bug in it? The “owning” programmer feels embarrassed. Maybe the team picks on them, because they buy into this “owner” fallacy. We are not our code! If we refuse to own a program, we welcome the team into the process. Once the team realizes that they own it too, bugs are no big deal. We find them, we crush them, together! If a programmer’s individual intelligence is not important, then their temperament or personality is. They have to work well with the team. This means admitting weakness. Admitting that you do need help, that you don’t know everything, and that can be a humbling experience.
  • #5: The cycles and iterations that were mentioned in the book are the typical Waterfall sections. These include design, code, test, and release.I think we can agree that the Waterfall approach only works with software that has a set criteria. I’ve heard it said, “Walking on water and designing software to spec is easy if both are frozen.”Even in the 1970’s the business was constantly changing. New discoveries are made, turning in requirements to a project manager was pointless. The Agile approach embraces change by working in short iterations. The team designs, codes, tests, and releases sometimes in as little as two week cycles. Realize that change is inevitable and work towards showing your customer something that they can change as quickly as possible.
  • #6: What traits does a successful programmer possess? First, the ability to tolerate stressful situations. The author is not just talking about the bug that has your manager breathing down your neck to fix. He’s talking about long-term stress. Multiple days, weeks, and even months of grinding out a project. As programmers we have to be able to handle stress through diet, exercise, meditation, and even the occasional vacation.The code you write is like sand of a Buddhist Mandala. Each little colored grain is carefully placed to create a beautiful design. Then, when it is done and admired, the monk will sweep it all up into a jar. Nothing lasts forever. We have to relax and realize that change will come only after we are done placing the last grain of sand.Neatness, a clean desk is the sign of a clean mind, or is it a crazy mind? What is the structure of your program? Are things put where they belong? Are you using a patterns like MVC with clear places for models, controllers, and views?Humility with our own ability has shown to reduce bugs. If we humble ourselves and realize we probably made a mistake, we will look for it. If we humble ourselves to allow the team to review our code, they will find it. We should be happy the bug was found before it made it’s way into production. Without humbleness we would have false confidence in the code.Assertiveness sounds like the opposite of humbleness. It is, and we should not be humble about our ideas. We should not be humble about our morals. Don’t get stuck in analysis paralysis. Just do it! You know it will change later, so why worry about it?
  • #7: Doctors, lawyers, and programmers have to constantly learn. They have to study to provide the best service to their clients. Each person has their own unique way of learning. The way might even be depend on what they are trying to learn. The author gave an example on learning a programming language. Maybe to learn it, the programmer has to do it. Contrast that with learning a high level concept like Object Oriented Programming. Learning OOP might be best done in a classroom, or watching a video.The first step is to get motivated to learn. Ask yourself why? If you don’t get a good answer, then find a reward for learning. I will treat myself to a dinner if I finish this book on the Psychology of Computer Programming. Learn about the concept before you get bogged down in the details. A great example of that is Test Driven Development. You can’t learn TDD by writing unit tests. You have to start with how TDD helps, what makes up a good test, what should be tested, and end with writing a test.Try explaining how a computer mouse works to someone who has never used one. It’s pointless, because it is irrelevant to them. Now sit them down at a computer and ask them to click on an icon using the mouse. Now they have a reason to learn and the training to start.It’s ok to make mistakes. Learning can’t begin until you are willing to fail and fail often.Try to tackle a subject using different approaches. Read books, or blogs, download a podcast on the subject, watch a video, even attend a conference. What worked for you? You can tailor your learning to suit the way you learn.
  • #8: I would like to thank Ugly House Photos dot com for the wonderful 70’s home photos. After reading this book, I gained a lot of confidence in my abilities. I discovered my strengths and some areas that I’m working on. I realized that programming isn’t just about 1’s and 0’s, it about people and personalities.