Brett
Rants
Town vs Gown
Are autodidacts better programmers?
Or do they just use fancier words?
Full Disclosure
As in, the boring full disclosure.
After spending a few weeks at UC Berkeley, my college education consisted of the local community college; and then, the low level state university.
- Diablo Valley College (i.e. DVC)
- known by some back in the day as Danville Vacation Center (i.e. DVC)
- CSU Hayward
- which subsequently changed its name to CSU East Bay
In many ways, both were a joke. As always, individual results vary, and the times, they are a changing. But aspects of my educational experience included:
- My grade (in several classes) was determined by multiple choice tests
- In one class (and this just sort of sticks out in my mind as a good example of the general level of disinterest in the entire proceedings by most of the participants), I had a final day conversation with the instructor that I had no belief anyone else in the class understood
- so, maybe I'm just an arrogant cuss
- keeping in mind that this was a lab class and the entire quarter consisted of single experiment, so delving deep was the entire point
- of course, mastery may have been present, but interest in further discussion in the subject matter on the last day of class, most certainly was not
- Towards the end, I routinely enrolled in six classes, dropping five of them
- I shopped and I shopped hard
- Easy to say, I got what I was looking for
That last item is, perhaps, key. College (as with so many other things in life) ultimately boils down to what one makes of it. I, personally, did not make much of my college experience; the bar was not set very high.
Of course, that last sentence maybe deserves some qualification. I did not participate in extra-curricular activities. And I never considered reading extra books that might have gone over the subject material in a different way. I read. And I read a lot. But once I was done with the course work, I read mostly for pleasure (i.e. what I wanted) and not in some attempt to develop an expertise in any one subject area (like I do now).
So, anyway, the preceding is intended to be a sort of full disclosure and explain my personal experience, as this rant is (supposed to be... well, it was supposed to be way back when I started) about my perceived differences between self-taught programmers and those who go through a university course, keeping in mind that I never went through a university sponsored programming course and my college experience was a pathetic cake walk, which, of course, might not be how they do things at Big Name U... and in fact, one sort of hopes that it is not (how they do things at Big Name U).
But whatever. Maybe I should just look at things from my perspective and leave the other side hanging, an implied experience to which I can offer no first hand knowledge.
Yes, that does seem to be the better tact.
So, yeah. Turns out the foregoing was a long sort of aside that has very little do with the rest of the rant... outside of highlighting the fact that I know very little about what life is like inside a quality Computer Science degree program.
Random Thoughts Concerning My Self Taught Programming Experience
Because anything more structured than random would take too much effort...
Self Taught Programmer:
- Complete System Responsibility
- If I want to use a program, I have to load and maintain it.
- Every Project is a Greenfield
- I control all dependencies
- If I don't like or understand a resource (library, problem domain, whatever), I get to choose a new one.
- Failure is quietly swept under the rug (unless one posts it to their website).
- I determine the conditions of success, which can be dynamically updated
- Self Selected Problem Domains
- I don't care about O-complexity, thus I don't really understand O-complexity.
- I don't care about algorithms, so, ditto.
- In short, huge holes in my knowledge.
- These holes are filled with a diverse array of tid-bits from wide ranging fields.
- My solution set is not curated, but it is what I want... or needed... or thought that I needed.
- I am at liberty to maintain ignorance of core technologies.
- I am at liberty to pursue red herrings and other momentary passions.
- My maths are not what they would be had I gone through a traditional program.
I could go on. In that, I could think about this for a few more minutes, hours, days, weeks, or whatever, but the gist of what I would be dancing around, might well be summarized by:
- I was free to do What I wanted.
- I was free to do that how, when, and where I wanted.
- And I have pursued that What based on an internal Will for years on end, now.
Outside of possible technical holes (and I like to believe corresponding summits), from a group dynamic perspective, this also means:
- I've never had to work for a pointy haired idiot (of the managerial or academic breed).
- Actually, I have, just not in the world of code.
- I've never had the please to work with an inspired leader (of the managerial or academic breed).
- Actually, once again, I have (both), just not in the world of code. In code, I am a lone wolf. In the real world, not so much.
The Throw Down
In this corner, weighing in with a nothing sort of four year degree...
Of course, and as I am finding to be the case more and more lately, the preceding does not directly address why I started writing this rant. So, along with the rest, a traditional degree may have taught me to write better; but no, I have hundreds of units under my belt (many of which required writing a term paper), it's just that I've taken very few computer courses. Still, sometimes I wonder about my writing. But more so at the moment, I wonder:
Who is the better programmer?
How is programming skill determined?
And I would propose that an equation to determine the relative ranking of the same might look something like this:
Programming Skill = Decay(Time) * Decay(HandsOn) * Decay(Research) * Decay(Breadth*Depth)
Where:
Decay() is a time decay function, wherein more recent events are valued higher than those that happened long ago
Time is the total length of time spent in pursuit of the craft (beginning to end, less gaps)
HandsOn is the total clock time spent on practical applications (in coding, hands on keys).
Research is the total clock time spent reading books, solving maths, and so on.
Breadth is the extent of minimum knowledge awareness. It doesn't really matter how high or low this bar is, as long as it is consistent.
Depth is the maximum extent of specialized knowledge (a rating of best language).
In the academic world there is an influence rating metric (shame I can't remember the name) in which a researcher's importance is determined numerically by a recursive sort of formula in which a researcher must meet all the requirements for the previous rating and then have an additional paper that has been referenced f(x)
times.
Rating 0 = No requirement
Rating 1 = Not using any papers used to qualify for a Rating of O, the researcher must have authored a paper that has garnered 1 citation
Rating 2 = Not using any papers used to qualify for a Rating of 1, the researcher must have authored at least one additional paper that has garnered at least 4 citations
Rating 3 = Not using any papers used to qualify for a Rating of 2, the researcher must have authored at least one additional paper that has garnered at least 9 citations
So, by Breadth * Depth
, I mean some metric that reflects this sort of pyramidal (building upon itself) structure of competency.
And on the read through, it feels like this is an odd place to stop (hence, this little blurb). But that really is what I had to say. Mastery of most things can be quantified (abstractly if not completely accurately) by some Depth * Breadth
metric. And as to how one quantifies that? Well, I suppose that explains all the complaints concerning the white-board interview process. Does it do what it is intended to do? Or would reading a programmer's mindless musings on a personal blog serve the purpose better?
next
Brett
Rants
entry
Home
Brett
Rants
Index
Brett's Blog Rating Formula
Best Blog Entry * Number of Blogs
Gads, I hope they don't take off for wrong answers.
Avoiding stupidity is not my strong suit...
Nor is throwing printed matter into the
Recycle Bin
no matter how far off perfection
the word copy might seem at the end...
Which is seeming to be the case
more and more lately...
I should probably take a break,
refocus what I spend my time on.
Still, thanks for reading!
© copyright 2016 Brett Paufler
paufler.net@gmail.com