MarkO's Tech Page

'C' Programming
Coding Standards
Trouble Shooting Skills

MarkO's Resume`
MarkO's VEX(tm) FAQ

VEX Robotics

VEX Robotics Forum
Vex Robotics Fans Site
Intelitek EasyC and VEX Users
Chief Delphi EasyC Forum
Chief Delphi VEX forums
Kansas City Robotics VEX

Vex Programming, Non Easy-C
Hobby VEX Site

AndyBrain's Review
the Robot Group's Review

MarkO's OS/2 Pages

Quick 'n'Easy (QnE) Un-Official Mirror

WatFor Interim Distribution Page

Status Report
Mission Statement
Setup for Parallel Testing

MarkO's Tech Pages


'C' Programming

Learning to be a Good Programmer



    The "pat answer" is "get a book"....

    But in reality People learn things in different Ways; The four Broad categories are, Visual, Auditory, Tactile, and Kinesthetic. (see Learning Styles for details) Discover "your" Top Two learning styles, and focus on material in that style.

    (I am writing this to "you" a Programmer of a Team)

    I will start with these four things (and I got them to all start with 'E'):
        1) Execution.
            a) Problem Solving.
            b) Articulation.
            c) Trouble Shooting.

        2) Experience.

        3) Education.

        4) Experimentation.

    [An Aside]
    There are many more you will learn as you go, I am not Perfect, by a long shot.

    My Number 2 adage is, "Use the right tool for the job." (My number 1 adage is I dont know everything.)
    [/An Aside]

    Now, for some details:
        1) Execution (to carry out) (e.g. A Robot Arm is designed and not working properly.)
            a) Problem Solving. (Engineering the Arm, and finding the Problems with the Arm)
                Relating to the problem with the Arm, Is it Mechanical, is it Logical (programming), is it the Operators? Was it Designed correctly, Does it work as Designed,  Do operators know how it works, know the limitations of the Arm?
            b) Articulation. (Communication with other Team Members)
                Did the "engineers" of the Robot Arm, tell you what you needed to know in programming for the Arm, Did you tell the "engineers" of the Robot Arm "your"  requirements, limitations, restrictions in making the program for the Arm, Do the Operators know how it works, know the limitations of the Arm?
            c) Trouble Shooting.
                Does the Mechanical part of the Arm do what it was designed to do. Does the Programming part do what it was designed to do. Are the Operators doing what they are suppose to do?
            (Repeat Loop, keep at "refining the problem". Ask questions, ask Mentors)

        2) Experience
            I do Embedded Programming for my Day Job, and I have a couple of Co-Workers and a Boss that Program too. We learn from each other, we find each others errors ("Steel sharpens Steel" is how the saying goes) So the Exposure to Programming opportunities I have are great, the more you do, the better you should get. Directly related to that is "Learning from your Mistakes". Program and Problem Solve all day in your head (unless you get tired, then do Mindless Activity for a bit).

        3) Education
            Books and Magazines and the WWW are good resources (Visual Learning), but maybe also a Mentor or Classmate to ask questions (Auditory Learning). Of Course, making Robots and Writing Programs (Tactile Learning) and seeing what they do. (This is sometimes referred to as "The School of Hard Knocks".) And of course "School Classes".

        4) Experimentation.
            (Ties in with Education) Making Robots and Writing Programs. Looking at others Robots and Programs if possible.

    So this is (kind of) a starting place...

Copyright 2006, Mark D. Overholser. All Rights Reserved. 

VexRobotics and IFIrobotics are divisions of Innovation First, Inc., and are marks of Innovation First, Inc.

All other product names/marks of others are the property of their respective owners.