Download presentation
Presentation is loading. Please wait.
1
Disciplines Of A Superior Programmer
COSC 4345
2
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
3
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
4
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
5
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
6
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)
7
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
8
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)
9
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
10
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
11
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.