So How Much Programming Experience Do You Need?

A common question I get asked about the ProjectWise V8i SDK training is:

 “How much programming experience does someone really need to take the class?”

 The course description has the following requirements and recommendations:”

 

 Recently a ProjectWise Administrator asked me this familiar question, but with a new twist: 

 “Someone told me that they had ZERO programming experience, went to the PW SDK class and started developing numerous applications right away!  How is that possible when I have heard that you need many years of C++ experience to even attempt to be productive using the PW SDK?”

 Well, as my track coach use to say, “There’s no substitute for talent but you still have to work hard to accomplish anything worthwhile!”

 Talent

I had a classmate back then that never ran track before, but beat me in the mile run in gym class!  So I convinced him to go out for track and he set a school record in the mile run for sophomores that year.  He clearly had natural talent because he did this without going to practice very much and he smoked cigarettes!  Needless to say that eventually he got kicked off the team for his less than ideal work ethic despite his talent for running.

 Obviously a certain amount of “talent” (i.e. ability) is required to create programs that are reasonably robust and useful, but for most of us, experience is what allows us to solve more complex problems in a reasonable amount of time.

 Experience

For most of us with talents closer to the mean, “experience” helps make it possible for us to create better programs.   And it is hard to measure experience in a way that can be compared.  A person who has been doing something relatively easy for many years has experience, but someone else who has less time invested but has been doing much more difficult tasks and growing their skills can typically accomplish more in less time.

 The kind of experience also is a factor.  If your programming experience is “only” with VB, VBA or some other “scripting” language, you are definitely at a disadvantage when attempting to complete the exercises in the ProjectWise SDK course guide, but at least you understand assignments, if tests and looping.  Users with “only” this kind of experience have taken the class and most of them do well enough.  However, if you are truly new to programming, you really need to take some programming classes first or come with a partner who can help you with the exercises.

 Difficulty

How quickly and how many different applications you can create using the ProjectWise SDK depends of course upon what exactly you are trying to accomplish as well as your abilities and experience.  Creating an application that creates new users from a list of some sort is actually pretty easy to design and code, while trying to “integrate” ProjectWise with a system like SAP is much more complex.

 So, how much experience do you need?

The real point behind the prerequisite for the ProjectWise V8i SDK class is that the course is about the ProjectWise SDK and not about ProjectWise and especially not about how to program.  Since the SDK APIs are “C” based, the class is taught using Visual C++, as that was the development environment of choice when the SDK was first released and continues to be a viable development environment.  The material covered in the class is not very complicated because the goal is to help users get a “running start” into using the SDK.  It is probably more important that the users who take the ProjectWise SDK training have some experience, or at least exposure to ProjectWise than actual programming experience.  It is hard to solve a problem that you don’t understand.

 The class instructors do try to help each student as much as possible, including those struggling with the mechanics of Visual Studio as well as “programming” topics, but typically the amount of available time for this is pretty limited, especially if the class has more than 6 or so students.  So, each student has to determine just how ready they are for taking this class.  A simple measure is to take a look at the sample code provided with the SDK.  Take a look at the code that compiles into applications, not custom modules as that requires some knowledge covered in the class.  For example, take a look at the “vaultlist” project.  If you can follow the flow of the program and understand most of the syntax of the code, then you probably can handle the programming aspects of the class.  If you don’t understand what “vaults” are (AKA “projects” or “folders”) or what documents are (they are not files), then you probably should study up on ProjectWise a bit before taking the class.

 The real value of the class comes from the probability that it will likely save a programmer at least two weeks of time in trying to understand how the SDK is organized, how to use the documentation, how to compile and examine the sample code as well as some “tips and tricks”.  Some students have reported that taking the class saved them a lot more than 2 weeks of effort, but of course it depends upon the skill of the student as well as the effort they put behind it.  Just like my track coach use to remind us...