4 ms·
I've been programming 40 years, turned 66 this year and I'm just as enthralled by computers as I was when I started, still working full-time, and still learning
by zanethomas 10y ago
I've been programming 40 years, turned 66 this year and I'm just as enthralled by computers as I was when I started, still working full-time, and still learning as often as my girl-friend will allow time for.
I was contacted by Google several times but chose not to submit myself to an interview process which I feel is biased in favor of CS graduates and consists of exercises which provide little insight into the most important characteristic of a good software engineer; the ability to understand the nature of a given new domain, the problems to be solved in that domain, and good ways to solve those problems.
I cut my teeth on MIT's Computations Finite and Infinite by Minsky (now out of print), Donald Knuth's three volume classic, and later The Structure and Interpretation of Computer Programs, which, at least, I suppose recent CS graduates are familiar with. And many many books after those.
Over the subsequent decades I have developed many unique algorithms to solve specific problems. Most recently, the past month, I increased performance of a graph database issue by an order of magnitude by creating an abstract representation of the graph connections in RAM. That is not a terribly unique approach but somehow it never occurred to the CS types here that the cause of their performance problems was a failure to understand the fundamental nature of the problem being solved.
If Google's filtering consisted of solving a real-world problem, one requiring some days of research and development, then I'd be happy to go toe-to-toe with recent CS graduates. I know how to use The Google to find related domains, problems, and solutions. After understanding the nature of a problem research is step #1, regardless of whether I think I already know a good solution, it is almost always the case that someone has already solved a similar problem (if not the exact same problem), there is value in understanding the differences.
But I suppose that's not a practical filtering process for a company hiring many engineers and not having the resources to evaluate real solutions to real problems.
Also, side note, approximately 5% of the population do not imagine the same way the other 95% do. Like me they cannot, to varying degrees, actually visualize anything with their eyes closed. I never see anything but black with my eyes closed, when not dreaming. I suspect that this is related to my inability to do whiteboard exercises. I don't visualize, I think.
'nuff said
- geoelectric 10y agoI have what's been coined "aphantasia" too--no mind's eye--and I do fine on whiteboard interviews as a general rule. That suggests to me that it's either not your root cause, or it's one you can work around. Personally speaking, I can still conceptualize code (typically as a semi-physical machine, actually), I just can't "see" it. If you're a successful programmer, I'm sure you have some way you conceptualize algorithms too, even if it's not visual. The one thing I'll say is that with your background, it's a shame you filtered yourself out. You might not have gotten through the interview process, but if you retained anything significant from what you cut your teeth on you also might have been more successful than you think.
- zanethomas 10y agoWhat you say about white board exercises is interesting. Maybe I just don't like them. :)
- zanethomas 10y agoAlso, about algorithms, I walk through them a step at a time, keeping track of where things are in my memory. :) Once upon a time I could play an amateur level game of blindfold chess the same way. It never occurred to me that when Walter Browne was playing blindfold chess for money on the beach at Santa Monica before the 1976 US Open, with money and time odds 5:1, that he could actually see the board. I'm less impressed now, but was nowhere near his level anyway even if I could see the board.
- geoelectric 10y agoYour memory is better than mine. I work from an abstract level downwards in a "how would a machine that does this thing work" sort of way, decomposing the machine into parts as I go. Interesting how different people have different approaches.
- zanethomas 10y agoon a related note http://nautil.us/blog/why-blind-people-are-better-at-math http://nautil.us/blog/why-blind-people-are-better-at-math It seems that I'm better at doing math in my head than most people. I've wondered whether that might be related to aphantasia.
- geoelectric 10y agoThat is interesting. I'm pretty excellent at math concepts in general (750 SATs in math once upon a time) but can't do arithmetic in my head to save my life. It wouldn't surprise me at all if there's a relationship there, especially for processes like multiplication or long division where you have to hold an intermediate result.
- ryanobjc 10y agoThe best real world problems I encounter at Google take months of learning to fully comprehend. They are not trivial, and have a huge base. Even a simpler real world problem whereby it takes days of research is not respectful of your time. I've seen people note they can't take a 6 hour time-out of their busy work/home lives to do coding challenges that are popular among startups. So the balance is in-person interviews. Ones where you have to give difficult problems, ones you haven't seen before and ones that don't take days to explain. This usually means algorithmic, data structures, or mathematical in nature. They have subtleness, depth and complexity. As for 'reverse a string', you'd be surprised how many people who have "programming jobs" who apparently can't do basic programming. And do I use these skill sat my job here? Yes. All the time. I'll spare you the spiel about "everything's different at scale". Google is a different kind of company that attempts to solve as many problems as possible with CS. For reference, I work at Google, given interviews here, and passed the interview bar twice. Once at 29 and once at 39. Some of my coworkers are older than me. Many of them have children. Some are younger than me. I see plenty of people in the office with grey hair (I work in the SF office). I refuse to defend past practices, but I believe the company currently sincerely overall seeks to be the best employer for any age. Small pockets of suck happen, but the internal transfer rules let you switch without your manager's permission. The interview process is known to not be perfect, but that is inevitable for any process - nothing is ever perfect! However, the interviews do involve whiteboard problem solving. I understand some can't do it, and this is one of the blind spots. I personally love diagrams, and think visually, so it works for me. I also prefer when my colleagues use diagrams as well.
- zanethomas 10y agoGood points. I do understand that Google has no reason to modify its interview process to accommodate my personal style, but then I'm not really complaining, I just never wasted my time applying. About diagrams. I had the whiteboard experience once and will avoid repeating it. When I get a problem I want to sit back and think about it. The interviewers kept insisting that I draw diagrams, and that interrupted my thought process, they were not impressed. However that does not mean I am incapable of making diagrams once I've sorted the problem out in my mind. After I've arrived at a proposed problem solution I like to produce a written document with just enough information to convey the problem and the solution approach, together with whatever diagrams, data structures, and pseudocode are required to communicate. That's how I roll. ymmv :)