SlideShare ist ein Scribd-Unternehmen logo
1 von 7
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

Weitere ähnliche Inhalte

Ähnlich wie The Psychology of Computer Programming

Agile Dev and Lean UX
Agile Dev and Lean UXAgile Dev and Lean UX
Agile Dev and Lean UXKarri Ojanen
 
Effective Tools for Effective Change
Effective Tools for Effective ChangeEffective Tools for Effective Change
Effective Tools for Effective ChangeJennifer Davis
 
Design Thinking for Developers
Design Thinking for DevelopersDesign Thinking for Developers
Design Thinking for DevelopersMatthew Banz
 
Slides for Norman Chap 1
Slides for Norman Chap 1 Slides for Norman Chap 1
Slides for Norman Chap 1 drewmargolin
 
Harvey Wheaton's Agile Gardening
Harvey Wheaton's Agile GardeningHarvey Wheaton's Agile Gardening
Harvey Wheaton's Agile GardeningMind the Product
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesIgor Moochnick
 
The Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software DesignThe Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software DesignJeremy Miller
 
The 360 Developer
The 360 DeveloperThe 360 Developer
The 360 Developerenteritos
 
Uxcamplondon Sharing risky design decisions presentation
Uxcamplondon Sharing risky design decisions presentationUxcamplondon Sharing risky design decisions presentation
Uxcamplondon Sharing risky design decisions presentationAna Roji
 
Ten lessons I painfully learnt while moving from software developer
to entrep...
Ten lessons I painfully learnt while moving from software developer
to entrep...Ten lessons I painfully learnt while moving from software developer
to entrep...
Ten lessons I painfully learnt while moving from software developer
to entrep...Wojciech Seliga
 
Design thinking yuechi li
Design thinking yuechi liDesign thinking yuechi li
Design thinking yuechi liVijay Prabhakar
 
Agile and Secure
Agile and SecureAgile and Secure
Agile and SecureDenim Group
 
Why Thinking Like a Developer Makes You a Better Designer
Why Thinking Like a Developer Makes You a Better DesignerWhy Thinking Like a Developer Makes You a Better Designer
Why Thinking Like a Developer Makes You a Better DesignerOlga Voskoboinikova
 
Workshop on software product development the backdrop
Workshop on software product development   the backdropWorkshop on software product development   the backdrop
Workshop on software product development the backdropJoy Prabhakaran
 
Validating Ideas Through Prototyping
Validating Ideas Through PrototypingValidating Ideas Through Prototyping
Validating Ideas Through PrototypingChris Risdon
 
Unleash Your Inner Unicorn
Unleash Your Inner UnicornUnleash Your Inner Unicorn
Unleash Your Inner UnicornMatt Baxter
 
Leveling up Developers
Leveling up DevelopersLeveling up Developers
Leveling up DevelopersJeff Dickey
 
Threat Modeling: Best Practices
Threat Modeling: Best PracticesThreat Modeling: Best Practices
Threat Modeling: Best PracticesSource Conference
 

Ähnlich wie The Psychology of Computer Programming (20)

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

Kürzlich hochgeladen

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 

Kürzlich hochgeladen (20)

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 

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

Hinweis der Redaktion

  1. Hello, my name is Dan Stewart. My Web address is Stew Shack dot com.
  2. 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!
  3. 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.
  4. 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.
  5. 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?
  6. 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.
  7. 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.