Disciplines Of A Superior Programmer

Slides:



Advertisements
Similar presentations
What Employers are Looking for in YOU!. Objectives Discuss key skills Employers look for in a successful Intern or New-hire. Discuss key skills Employers.
Advertisements

Wrap-Up Wednesday/Friday 10th Week. Goals of this course Give students a broader, more realistic view of the discipline of computer science as they decide.
Unit 2: Self - Awareness By Dr. David Agnew and Mr. Jim Wendell Arkansas State University.
Computer Science 240 Principles of Software Design.
Cheng-yu yu.  Assign two People every part of Project  Review every line of code  Require codes sign off  Route good code examples for interview 
Personal Character Chapter 33. Outline  Isn't Personal Character Off the Topic?  Intelligence and Humility  Curiosity  Intellectual Honesty  Communication.
CJ Castellani presents: Managing Construction and Personal Character.
Learning goals.
Computer Science 240 © Ken Rodham 2006 Principles of Software Design.
17 April Reverse Engineering Ethics Privacy Introduction.
ORGANIZATIONAL BEHAVIOR - 5 Motivation. What is it motivation? What are the differences between motivation and stimulation? Why motivation is important.
YOU DON’T HAVE TO BE AMAZING – YOU DO HAVE TO BE HONEST CHARACTER & LEADERSHIP.
Genie Pal A Versatile Intelligent Assistant To Help Both Work And Personal life.
Engineering Design. “There is a great satisfaction in building good tools for other people to use.” -Freeman Dyson Biology Engineering “Cells are tiny.
What you always wanted to know about life as a professional software developer but were too afraid to ask.
Human Resource Practices
CS240: Advanced Programming Concepts
33. Personal Character CSC-3004 Introduction to Software Development
The use of interior design as an investment
Soft Skills for Workplace Success
Intentional Leadership
Fundamentals of Information Systems, Sixth Edition
Performance Management
THE VALE PRIMARY SCHOOL Co-Headteachers’ Leadership Presentation
Yeah but.. What do I do? Software Leadership
Making Oral Presentations
Kevin C. Chang University of Illinois, Urbana-Champaign
The importance of project management
Self Esteem is a way of thinking and feeling about yourself.
It’s not all about the tool!
Social Stress Resilience Guide to giving an interesting talk
Eight steps to becoming a more creative teacher
Vocabulary Algorithm - A precise sequence of instructions for processes that can be executed by a computer.
Foundations of Programming: Introduction to Programming
Bowie High School’s Pre-AP Classes
15 Learning about Yourself. 15 Learning about Yourself.
Skills for a Healthy Life
Introduction to Computer Programming
Personal Mastery (Senge’s Five Disciplines)
Investigating Your Career
Investigating Your Career
Fostering Creativity in Yourself and Your Team
UNIT 3 CHAPTER 1 LESSON 4 Using Simple Commands.
Introducing the Ideas One of Six Traits:
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
How to Get Your Paper Rejected
Yi Ma What is Research and How to do it? Visual Computing Group, MSRA
Introduction to Collaborative Learning and Programming Practices
Emotional intelligence
Rebuilding Trust after Transition
March 4 & 5 Welcome Assignment
Do you want to be a By: Ashity Patel.
Department Of Commerce S.M.Joshi College Hadapsar,Pune.
Applied Software Project Management
Software Design Principles
Tonga Institute of Higher Education IT 141: Information Systems
YOUR FUTURE AND INFORMATION TECHNOLOGY
Tonga Institute of Higher Education IT 141: Information Systems
Naming & Code Reviews.
Bowie High School’s Pre-AP Classes
Hello World C By Anand George.
From Technical Professional to Leader
Some Important Skills Every Software Testers Should Have
Soft Skills Part 2 Self-Confidence.
THE GOAL PLANNING RULEBOOK, A 4-WEEK STRATEGY DOCUMENT
Analytical Paper 9 June 2015.
33. Personal Character SCMP-318 Software Development Spring 2018
Success in the Real World! Being a Leader! NARENDER SINGH CHAUHAN.
Decision-Making during Depression Guide to giving an interesting talk
Managing Self Kamal Nayan Pradhan Shital Moktan 10/25/2019
Presentation transcript:

Disciplines Of A Superior Programmer COSC 4345

Personal Character Engineers in every discipline learn the limits of the tools and materials they work with Electrical Engineers – conductivity of various materials and a hundred ways to use a volt meter Structural Engineer – Load bearing properties of wood, concrete and steel Software Engineer – Basic building material is human intellect and the primary tool is you Software engineering - One of the most purely mental activities you can do

This is abstract, but important The intense inwardness of programming makes personal character important Programming is essentially unsupervisable because no one ever really knows what you’re working on Usually a project is 20% interesting and 80% uninteresting If you want to make yourself a great software engineer, you have to make yourself great You can’t do anything about your intelligence, but you can do something about your work ethic

Intelligence and Humility (Is this off topic?) Intelligence is only loosely connected to being a good programmer Nobody is really smart enough to program computers Best programmers – Realize they are not the smartest person in the room Worst programmers – Degrade other people’s work, complain, build themselves up Humility – Is not degrading ones self, but rather talking/thinking about oneself less, and other people and their work more

Compensate For Your Limitations Understand your organization and your company How does your company make money and what is your role? How does your project fit in the company big picture? Learn how to decompose a problem to make it simpler to understand Learn how to conduct reviews, inspections and tests as a way to compensate for anticipated human fallibilities Learn how to choose solutions that make the most sense as a solution rather than those that are “cool” Write programs in terms of the problem domain rather than in terms of low level implementation details

Curiosity and Simplicity Complex code does != super intelligence Write code that is easier for you and others to understand (This is not easy) Just because you get it working doesn’t mean it is easy to understand Keep up with the latest technologies; it makes you more valuable Many web programmers have never had to program in Microsoft Windows Many Microsoft Windows programmers have never had to program in Linux Programmer Life Span – Short, unless you can keep up with new technologies (curiosity)

Things You Should Do Read about problem solving We don’t always discover clever problem solving strategies ourselves Analyze and plan before you act Talk to managers, your peers, people in other organizations Learn about successful projects Study the work of great programmers Thomas Kuhn points out that any mature science is a set of solved problems that are commonly recognized examples of good work in the field

Commitment To Professional Development Beginning – A beginning programmer is capable of using the basic capabilities of one language (classes, routines, loops, conditionals) Introductory – An intermediate programmer is capable in multiple languages Competent – Knows the intricacies of more than one language Leadership – Realizes programming is only 15 percent communicating with the computer and 85 percent communicating with people An expert programmer writes code for an audience of people rather than for machines (i.e., crystal clear, documented, extensible, and with very few defects)

Intellectual Honesty Refusing to pretend you are an expert Readily admit your mistakes Try to understand compiler warnings rather than suppressing the message Clearly understand the program rather than compiling to see if it works Provide realistic status reports Provide realistic schedule estimates Hold your ground when management asks you to adjust schedules

Creativity and Discipline As an undergraduate, your largest program is about 500 lines As a professional, the average is about 5,000 to 25,000 lines Programming requires discipline If you don’t analyze requirements and design before you begin coding, much of your learning about the project will occur during coding and the result will look more like a two year old’s finger painting rather than a work of art

Key Points Personal character directly affects your ability to build software Characteristics that matter – humility, curiosity, intellectual honesty, creativity and discipline Becoming a superior programmer has almost nothing to do with talent and everything to do with commitment to personal development Good character is mainly a matter of having the right habits Develop the right habits and the rest will come naturally