i have been programming for longer than i want to admit. one might assume based on the length of time i've done this that i am some sort of expert. but one interesting thing about programming is that as a skill it decays very quickly. languages change, platforms change, new languages arise, new patterns, methods, and techniques come about all the time. some skills remain, like core knowledge of programming structures. but the exact syntax is always changing.
in the summer sfpc class the level of programming skill ranges from basic to advanced. there are a few people here who program everyday as their primary job. for others it's either a hobby or a side aspect of their work. for me while i do program i do not work much in javascript or python, so despite my experience i feel a bit like a fish out of water.
as we all sat working on our poetry instruments yesterday one thing really stood out to me. everyone, no matter what level, was struggling in one way or another. whether it was code not performing as expected, a browser not working quite right, an unfamiliar toolkit or library. everyone struggled in one way or another.
this reveals one of the most important skills a programmer needs to have: patience. no matter how experienced or advanced one is there are always frustrating and challenging moments. this is ultimately true for all mediums though. paint can be a beast; getting paint to behave the way i want is quite a challenge for me. to some degree you are subject to the whims of your medium. and for programming the medium loves to throw curve balls.
so it was good to see that everyone handled the challenges with stride and helped each other overcome them. there was a lot of collaboration as we all learned the ins and outs of making poetry instruments with javascript. this was a stark contrast to the formal computer science program i attended where people were constantly trying to one up each other and prove they were smarter. this says a lot about the educational environment at sfpc. learning should always be collaborative.