Becoming a Pragmatic Programmer Terry Cheng Nov 18, 2004.

Slides:



Advertisements
Similar presentations
Competences of student teachers: international context doc. Vitalija Gražienė, Vilnius College of Higher Education.
Advertisements

The Pragmatic Programmer I. About the textbook The Pragmatic Programmer is full of helpful suggestions for surviving programming It’s also enjoyably written.
Test Automation Success: Choosing the Right People & Process
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
AASCU Senior Communications Officers Conference Washington, DC March 2012.
A P RAGMATIC A PPROACH Brent Bradbury Joshua Bruning.
Building Leadership Chapter 3
Chapter 5: Bend or Break.  Write “shy” code.  Limits Visibility  Organize code into modules  Eliminates Unnecessary Interactions  Limit the number.
GreenWor ds This Old Application Front-End Quality Management and Your Mission-Critical Fixer-Uppers.
System Design and Analysis
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Creating Architectural Descriptions. Outline Standardizing architectural descriptions: The IEEE has published, “Recommended Practice for Architectural.
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Software Architecture Quality. Outline Importance of assessing software architecture Better predict the quality of the system to be built How to improve.
March 16, Calendar Next week: Thursday meeting instead of Tuesday (May 25) Web update later today.
General Issues in Using Variables
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Effective Methods for Software and Systems Integration
Section 29.2 The Marketing Survey
CS 4310: Software Engineering
AIM-IRS Annual Business Meeting & Training Seminar Decision Making and Problem Solving.
Introduction to Systems Analysis and Design Trisha Cummings.
Test Driven Development An approach to writing better code Jimmy Zimmerman Intel Corporation.
1 Design and Integration: Part 1 Nuggets about Design vs Project Management.
Free Mini Course: Applying SysML with MagicDraw
Abstraction IS 101Y/CMSC 101 Computational Thinking and Design Tuesday, September 17, 2013 Carolyn Seaman University of Maryland, Baltimore County.
Pragmatic Projects Prepared by Doug Glidden. Pragmatic Projects Pragmatic Teams Ubiquitous Automation Ruthless Testing It’s All Writing Great Expectations.
..OR SOMETHING THAT LOOKS LIKE IT SCOTT TURNBULL SOFTWARE ENGINEERING MANAGER EMORY UNIVERSITY LIBRARIES Agile Development.
CS345: Advanced Databases Chris Ré. What this course is Database fundamentals: –Theory –Old Crusty, Good SQL stuff –No/New/Not-Yet SQL New stuff: Knowledge.
Introduction to Computers
“Balanced Literacy” Independent Reading Viterbo EDUC 640 “Balanced Literacy” Independent Reading Viterbo EDUC 640 Sharon Garvey - Instructor Sharon Garvey.
Warm Up—Reading Comprehension Strand In a complete sentence, explain what the Reading Comprehension strand focuses on. You may refer to your notes to help.
The Passionate Programmer Igor Morozov By Chad Fowler.
The Writing Section of the SAT Strategies for the Multiple Choice Questions.
Cornell Notes Note-taking strategy that will improve your study skills and your grades!!
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
Software Engineering EKT 420 MOHAMED ELSHAIKH KKF 8A – room 4.
Intent Specification Intent Specification is used in SpecTRM
EDITORIALS Writer’s Craft Online Journalism Unit.
Moving into Implementation SYSTEMS ANALYSIS AND DESIGN, 6 TH EDITION DENNIS, WIXOM, AND ROTH © 2015 JOHN WILEY & SONS. ALL RIGHTS RESERVED.Roberta M. Roth.
Collection as the Cornerstone of Presented by Sara Bishop, Administrative Systems Development West Virginia University Office of Information Technology.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
SE: CHAPTER 7 Writing The Program
Chapter 6 Architectural Design.
DEBUGGING. BUG A software bug is an error, flaw, failure, or fault in a computer program or system that causes it to produce an incorrect or unexpected.
CS 111 – Nov. 22 Chapter 7 Software engineering Systems analysis Commitment –Please read Section 7.4 (only pp ), Sections –Homework #2.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Design Patterns IX Interpreter, Mediator, Template Method recap.
Software Testing and Maintenance 1 Code Review  Introduction  How to Conduct Code Review  Practical Tips  Tool Support  Summary.
1 Design and Integration: Part 2. 2 Plus Delta Feedback Reading and lecture repeat Ambiguous questions on quizzes Attendance quizzes Boring white lecture.
FDT Foil no 1 On Methodology from Domain to System Descriptions by Rolv Bræk NTNU Workshop on Philosophy and Applicablitiy of Formal Languages Geneve 15.
The Software Development Process
Nonbehavioral Specifications Non-behavioral Characteristics Portability Portability Reliability Reliability Efficiency Efficiency Human Engineering.
Product Management Or.. The most important thing most startups forget to do.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
Why A Software Review? Now have experience of real data and first major analysis results –What have we learned? –How should that change what we do next.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
1 GLOBAL BIOMETRICS Biostatistics Clinical Data Management Epidemiology & Patient Reported Outcomes Statistical Programming and Analysis Strategic Planning,
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Presented by… The Solutions Group. Two basic aspects of the 4 Communication Styles Expressiveness Assertiveness Your Communication = Awareness + Situation.
Introduction to System Analysis and Design MADE BY: SIR NASEEM AHMED KHAN DOW VOCATIONAL & TECHNICAL TRAINING CENTRE.
How to become a pragmatic programmer By Rick Mason, BusinessGrade.com.
CSE403 Software Engineering Autumn 2001 Gary Kimura Lecture #2 October 3, 2001.
Objects First with Java
Introduction to Systems Analysis and Design
Extreme Programming.
Introduction to Computers
Presentation transcript:

Becoming a Pragmatic Programmer Terry Cheng Nov 18, 2004

Why do I choose this topic What to expect for today ’ s seminar What is a pragmatic programmer Why is becoming a pragmatic programmer so important The keys to becoming a pragmatic programmer

Useful, workable, and practical Care about you craft Think about your work What is a pragmatic programmer

Why is becoming an pragmatic programmer so important What I have seen in the pass two years My view of China ’ s Software Industrial Impact of quality of code in software development life cycle. Quality of code is not just no bugs It is important to your career

The keys to becoming a pragmatic programmer Attitude and philosophy Practical tips for you day to day work Two main principles of writing “ good ” programs Other helpful hints It is all in your head

Attitude, Style and Philosophy You have to care about what you produce You have to be proud of your work Willing to take responsibilities Attention to detail, yet have the big picture. Power of AND

Behavior Tips Care about your craft Think about you work Provide option do not make excuses Do not live with “ Broken window ” Be a catalyst for changes

Behavior Tips (cont.) Remember the big picture Think long term Make quality a requirement issue Invest regularly on your knowledge Critically analyze what you hear and read Not just what you say, also the way you say it Always think about maintenance and performance

Programming tips,Avoid duplication Code, doc, data Imposed duplication Project Standard, Multiple platforms, Language,.. Use of Macro, filter, code generator,. Documentation in code, only lowest level Document and code Language Issue

Programming tips,Avoid duplication Code, doc, data Inadvertent duplication Mistakes in design, modeling Normalize data, avoid derived data Isolated duplication to the inner layer Example

Programming tips,Avoid duplication Code, doc, data Inter-developer duplication Large team, parallel development Communication, centralize documentation, frequently low level design review. Just ask for it.

Programming tips,Avoid duplication Code, doc, data Impatient duplication Laziness, taking shirt cut Resist temptation, keep big picture and long term view.

Programming tips (Be orthogonal) Eliminate effects between unrelated things Gain productivity Reduce risk How to maintain orthogonal Design independent, well-defined components. Keep code decoupled Avoid global data Avoid similar functions, refactor when it is necessary Validate with unit test

Design and planning Trace bullet Prototype Unit test Push decision to runtime

When you code Code need to be easy to test Little accumulate can become huge Do not program by coincidence Do not assume, if you do not have choice, assume worst and doc them Do not be slave of history Refactor early, often. Make sure you have test before refactor Finish what you start Decouple wit balance

Few important believes Quality is number 1. 1,10,100 rule 1,10,100 rule apply to everywhere Maintenance cost is higher than development China ’ s software future is in you hands, start with be a Pragmatic Programmer

Q&A Before we start, 2 direction of your career