Brooksisms And Other Nuggets of Programming Wisdom

Slides:



Advertisements
Similar presentations
Ch.1 Introduction to Software Engineering The Evolution 1.1 The Evolving Role of Software 1/15 In the early days: User Computer Software = Place a sequence.
Advertisements

The Mythical Man-Month By: Zac Lippard CS 470. What is the “Man-Month”? This is the idea that men and months are interchangeable between each other. This.
WARNING These slides are not optimized for printing or exam preparation. These are for lecture delivery only. These slides are made for PowerPoint 2010.
Misconceptions of Philosophy
Programming 1 Feedback Session. The unit has improved my understanding of programming. 1.Strongly Agree 2.Agree 3.Neutral 4.Disagree 5.Strongly Disagree.
Transitioning to XP or The Fanciful Opinions of Don Wells.
27-Jun-15 Profiling code, Timing Methods. Optimization Optimization is the process of making a program as fast (or as small) as possible Here’s what the.
SOFTWARE PROJECT MANAGEMENT AND COST ESTIMATION © University of LiverpoolCOMP 319slide 1.
Introduction to Programming (in C++) Conclusions Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC.
Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.
Stage-426-Feb-991 Ways to Excel as a Stage-4 Student Professor Clark Thomborson Computer Science Department Auckland University.
Duke CPS Bumper sticker CS Jon Bentley, More Programming Pearls l Optimization ä The first rule: don’t do it ä The fastest algorithm can frequently.
Software Design 14.1 CPS 108 l Object oriented design and programming of medium-sized projects in groups using modern tools and practices in meaningful.
Foreign language in my future career.
CPS What is Computer Science? What is it that distinguishes it from the separate subjects with which it is related? What is the linking thread.
CSE 403 The Mythical Servlet Goals Introduce basic servlet terminology Formally introduce homework 2 Walkthrough of build & deployment Group discussion.
Christoph F. Eick: Thoughts on the Rook Project Challenges of Playing Bridge Well 
Code Simplicity: Software Design In Open Source Projects Max Kanat-Alexander
Welcome to Software Engineering
AP CSP: Making Visualizations & Discovering a Data Story
Learning how to learn: Start your own internship program
Course Overview - Database Systems
Sending Binary Messages
Math in Physics!* *I am well aware that this is physics class and physics is considered a science. On some of our more math-heavy days, please refrain.
Why is software engineering worth studying?
AP CSP: The Need for Programming Languages and Algorithms
Software Project Management
Sample Wiki Comments?.
Vocabulary Big Data - “Big data is a broad term for datasets so large or complex that traditional data processing applications are inadequate.” Moore’s.
Brent M. Dingle Texas A&M University Chapter 6, Sections 1 and 2
Lecture 3: Organizing Teams
Best Practices for Software System Design
Reporting Overview Business Goals Demystify the report menu
The Effects on Development
Extreme Programming.
How to be a Good Developer
The Fundamental Laws of Software Development
Introduction Nick Rees 2 October 2017.
The Need for Algorithms 2 days
Foundations of Programming: Introduction to Programming
Taking an Iteration Down to Code
Roadmap to Programming work, right, fast KISS
What do you need to know about XP?
Course Overview - Database Systems
3-7 Sample Programs This section contains several programs that you should study for programming technique and style. Computer Science: A Structured.
Informatics 43 – April 19, 2016.
© Ian Davis 2017 Spring (c) Ian Davis.
Project Planning is a waste of time!!!
Informatics 43 Discussion 13 May, 2016
PARTS OF CHANGE 1. NEED FOR CHANGE 2. UNDERSTAND, EXPLAIN THE CHANGE
Why Object-oriented Programming?
Nuggets from The Mythical Man-Month Fred Brooks University of North Carolina at Chapel Hill ONR_Updated.
CS 350 – Software Design An Introduction to Design Patterns – Chapter 5 A proposition behind design patterns is that quality of software systems can be.
Computer Science Testing.
Introduction UI designer stands for User Interface designer. UI designing is a type of process that is used for making interfaces in the software or the.
RULE OF LAW Unit 1.
How you will learn the material for this course.
CSE 403 Scheduling These lecture slides are copyright (C) Marty Stepp, 2007, with significant content taken from slides written by Valentin Razmov. They.
(How Scientists Think)
Tonga Institute of Higher Education IT 141: Information Systems
Look, and then look again
Tonga Institute of Higher Education IT 141: Information Systems
Complexity Based on slides by Ethan Apter
slides created by Ethan Apter
Planning and Estimation
(How Scientists Think)
Refactoring Low Level/High Level.
Software Onboarding and Instructional Design
Chapter 19: Presenting a paper
Lecture 23: Computability CS200: Computer Science
Presentation transcript:

Brooksisms And Other Nuggets of Programming Wisdom Chris Clark May 12, 2016

Who am I? Some random programmer. Worked with some other random programmers. Managed programmers for a while. Opinionated.

You are a Programmer. Beware Imposter Syndrome. Who are you? You are a Programmer. Beware Imposter Syndrome.

Another programmer. Also managed programmers. Also wrote some books. Who is Brooks? Another programmer. Also managed programmers. Also wrote some books.

Adding manpower to a late software project makes it later. Brooks' Law Adding manpower to a late software project makes it later.

Hofstadter's Law It always takes longer than you expect, even when you take into account Hofstadter's Law.

Knowing the Problem X / Y Z

0th Question of Programming What is the problem we're trying to solve?

nth Question of Programming What is the problem we're trying to solve?

∞th Question of Programming What is the PROBLEM we're trying to solve?

Simplicity

Simple is better than Complex. Complex is better than Complicated. The Zen of Python

You can't communicate complexity, only an awareness of it. Alan Perlis's Epigrams in Programming #105 SIGPLAN (September, 1982)

If it is hard to explain, it is not a good idea. If it is easy to explain, it might be a good idea. The Zen of Python

Clear > Clever

Technical Debt Rigidity Time

Plan to throw one away; you will, anyhow.* Fred Brooks, The Mythical Man-Month

Every program has (at least) two purposes: the one for which it was written, and another for which it wasn't. Alan Perlis's Epigrams in Programming #6 SIGPLAN (September, 1982)

First make it functional, Then make it beautiful, Then make it fast. Unknown

Knuth's Optimization Principle Premature optimization is the root of all evil.

There are only two hard things in Computer Science: cache invalidation and naming things. Phil Karlton

Always code as if the person who ends up maintaining your code will be a violent psychopath who knows where you live. Unknown

Read more code than you write. Ask questions. Challenge assumptions. Seek honest feedback.

The stuff you don't know you don't know The stuff you know you don't know The stuff you know The stuff you don't know you don't know

Now go be programmers.