The Imaginative Universal

Studies in Virtual Phenomenology -- by @jamesashley, Kinect MVP and author

The HoloCoder’s Resume

 agile

In an ideal world, the resume is an advertisement for our capabilities and the interview process is an audit of those claims. Many factors have contributed to complicating what should be a simple process.

 

 ihaventreadyourresume

The first is the rise of professional IT recruiters and the automation of the resume process. Recruiters bring a lot to the game, offering a wider selection of IT job candidates to hiring companies, on the one hand, and providing a wider selection of jobs to job hunters, on the other. Automation requires standardization, however, and this has led to an overuse of key search terms when matching candidates to positions. The process begins with job specs from the hiring company -- which parenthetically often have little to do with the actual job itself and highlights the frequent disconnect between IT departments and HR departments. A naive job hunter would try to describe their actual experience, which typically will not match the job spec as written by HR. At this point the recruiter helps the job hunter modify the details of her resume to match the interface provided by the hiring company by injecting and prioritizing key buzzwords into the resume. “I’m sorry but Lolita, Inc will never hire you unless you have synesthesia listed in your job history. You do have experience with synesthesia, don’t you?”

 

clusteredindex 

All of this gerrymandering is required in order to get to the next step, the job interview. Unfortunately, the people doing the job interview have little confidence in the resume as a vehicle for accurately describing a candidate’s actually abilities. First of all, they know that recruiters have already gone over it to eliminate useful information and replace it with keywords instead. Next, the interviewers typically haven’t actually seen the HR job specs and do not understand what kind of role they are hiring for. Finally, none of the interviewers have any particular training in doing job interviews or any particular skill in ascertaining what a candidate knows. In short, the interviewer doesn’t know what he’s looking for and wouldn’t know how to get it if he did.

greatestweakness

A savvy interviewer will probably realize that he is looking for the sort of generalist that Joel Spolsky describes as “smart and gets things done,” but how do you interview for that? The tools the interviewer is provided with are not generic but instead highly specific technology skills. At some point, this impedance mismatch between technology specific interview questions on the one had and a desire to hire generalists on the other (technology, after all, simply changes too quickly to look for only one skillset) let to an increased reliance on behavioral questions and eventually Google-style language games. Neither of these, it turns, out, particularly help in hiring good candidates.

 polymorphism

Once we historically severed any attempt to match interview questions to actual skills, the IT interview process was allowed to become a free floating hermeneutic exercise. Abstruse but non-specific questions involving principles and design patterns have taken over the process. This has led to two strange outcomes. On the one hand, job applicants are now required to be fluent in technical information they will never actually use in their jobs. Literary awareness of ten year old blog posts by Martin Fowler are more important than actually knowing how to get things done. And if the job interviewer exhibits any self-awareness when he turns down a candidate for not being clear on the justified uses of the CQRS pattern (there are none), it will not be because the candidate didn’t know something important for the job but rather because the candidate was unwilling to play the software architecture language game, and anyone unwilling to play the game is likely going to be a poor cultural fit.

The other consequence of an increased reliance on abstruse and non-essential IT knowledge has been the rise of the Architect across the industry. The IT industry has created a class of software developers who cannot actually develop software but instead specializes in telling other people what is wrong with their code. The architect is probably a specialization that probably indicates a deviant phase in the software industry – but at the same time it is a natural outcome of our IT job spec – resume – interview process. The skills of a modern software architect – knowledge of abstruse information and jargon often combined with an inability to get things done – is what we currently look for in our IT hiring rituals.

whencanyoustart

This distinction between the ritual of IT hiring and the actual goals of IT hiring become most apparent when we look for specific as opposed to generalist skills. We hire generalists to be on staff over a long period. We hire specialists to perform difficult but real tasks that can eventually be handed over to our generalists – when we need to get something specific done.

Which gets us to the point of this post. What are the skills we should look for when hiring for a HoloLens developer? And what are the skills a HoloLens developer should be highlighting on her resume?

At this point in time, when there is still no SDK generally available for the HoloLens and all HoloLens coders are working for Microsoft and under various NDAs, it is hard to say. Fortunately, important clues have been provided by the recent announcement of the first consulting agency dedicated to the HoloLens and co-founded by someone who has been working on HoloLens applications for Microsoft over the past year. The company Object Theory was just started by Michael Hoffman and Raven Zachary and they threw up a website to advertise this new venture.

Among the tasks involved in creating this sort of extremely specialized website is explaining what capabilities you offer. First, they offer experience since Hoffman has worked on several of the demos that Microsoft has been exhibiting at conferences and in promotional videos. But is this enough of a differentiator? What skills do they have to offer to a company looking to build a HoloLens application?

This is part of the fascination of their “Work” page. It cannot describe any actual work since the company just started and hasn’t technically done any technical work. Instead, it provides a list of capabilities that look amazingly like resume keywords – but different from any keywords you may have come across:

 

          • Entirely new Natural User Interfaces (NUI)
          • Surface reconstruction and object persistence
          • 3D Spatial HRTF audio
          • Mesh reduction, culling and optimization
          • Baked shadows and ambient occlusion
          • UV mapping
          • Optimized render shaders
          • Efficient WiFi connectivity to back-end services
          • Unity and C#
          • Windows 10 APIs

These, in fact, are probably the sorts of skills you should be putting on your resume – or learning about in order to put on your resume – if getting a job programming HoloLens is your goal.

The verso side of this coin is that the list can also be turned into a great set of interview questions for someone thinking of hiring for HoloLens development, for instance:

Explain the concept of NUI to me.

Tell me about your experience with surface reconstruction and object persistence.

What is 3D spatial HRTF audio and why is it important for engineering HoloLens apps?

What are mesh reduction, mesh culling and mesh optimization?

Do you know anything about baked shadows and ambient occlusion?

Describe how you would go about performing UV mapping.

What are optimized render shaders and when would you need them?

How does the HoloLens communicate with external services such as a database?

What are the advantages and disadvantages of developing in Unity vs C#?

Describe the Windows 10 APIs that are used in HoloLens application development.

 

Then again, maybe these questions are a bit too abstruse?

The Javascript Cafeteria

cafeteria, 1950

The Nobel laureate and author Isaac Bashevis Singer tells an anecdote about his early days in America and his first encounter with an American style cafeteria.  He saw lots of people walking around with trays of food but none of them paid him any attention.  He thought that this must be the world’s most devilish restaurant, full of waiters but none willing to seat him.

The current world of javascript libraries seems like that sometimes.  New libraries pop up all the time and the ones you might have used a few months ago have become obsolete while you had your back turned.  Additionally you have to find a way to pick through the dim sum cart of libraries to find the complete set you want to consume. 

But maybe dim sum cart is also a poor metaphor since you can get in trouble that way, trying to combine things that do the same thing like knockout and backbone, or angular and asp.net mvc (<—that was a joke! but not really).  It’s actually more like a prix fixe menu where you pick one item from the list of appetizers, one from the main courses and finally one from deserts.

This may seem a lot like the problem of the firehose of technology but there is a difference and a silver lining.  It used to be that if you didn’t jump on a technology when it first came out (and there was a bit of a gamble to this, as witnessed by the devs who jumped on Silverlight – mea culpa) you would just fall behind and have a very hard time ever becoming an expert.  In the contemporary web dev climate, you can actually wait a little longer and that library you never got around to learning will just disappear. 

Even better, if a library has already been out for a few months, you can simply strategically ignore it and pick the one that came out last week.  The impostor syndrome epidemic (seriously, it’s like a nightmare version of Spartacus with everyone coming forward and insisting they feel like a phony – man up, dawg) goes away since anyone, even the retiring Visual Cobol developer, can become an expert living on the bleeding edge with just a little bit of Adderall assisted concentration.  True, it also means each of us is now competing with precocious 16 year olds for salaries, but such is the way of things.

Obviously we can take for granted that we are using JSON rather than XML for transport, and REST rather than SOAP for calls.  XML and SOAP are like going to a restaurant and finding that the chef is still adding fried eggs or kale to his dishes – or even foam of asparagus. 

moto, chicago

Just choose one item from column A, then another from column B, and so on.  I can’t give you any advice – who has time to actually evaluate these libraries before they become obsolete.  You’ll have to just do a google search like everyone else and see what Jim-Bob or cyberdev2000 thinks about it – kindof like relying on Yelp to plck a restaurant.  Arrows below indicate provenance.

Appetizers (javscript libraries):
jquery
prototype

Corso Secundo (visual effects):
jquery ui – – -> jquery
bootstrap – – -> jquery
script.aculo.us – -> prototype

Soups and Salads (utility libraries):
underscore
lazy.js
Lo-Dash – -> underscore


Breeze

Amuse Bouche (templating):
{{mustache}}
handlebars.js -> {{mustache}}


Main Courses (model binding frameworks):
angularjs
backbone.js -> underscore
knockout.js
ember.js -> handlebars.js
marionette.js -> backbone.js
CanJs

Wine Pairings (network libraries):
node.js
edge.js -> node.js
Go

Sides:
CoffeeScript
bower -> node.js

Desserts (polyfills):
modernizr
Mozilla Brick
polymer

Actually, I can help a little.  If you ask today’s waiter to surprise you (and we’re talking July of 2014 here), he’d probably bring you Jquery, Lo-Dash, Angularjs, Go, bower, modernizr.  YMMV.

The Open Office and Panopticism

open office plan

The magazine Fast Company has recently been on a tear critiquing the modern “open office” design ubiquitous in white collar businesses.  Several studies have found that marginal improvements in communication are offset by stress and productivity loss due to noise and lack of privacy.  Satisfaction levels for people who work in offices with doors that close are significantly higher.

How did we get to this place?  Open office plans arose sometime in the late 90’s as a response to the jokes about cubicle culture and densification which dehumanized the office worker while squeezing every  square footage out of usable office space. Open plans were intended to be more humanizing and to encourage social interactions, bringing the serendipity of water cooler conversation to the worker’s desk simply by lowering the height of cubicle walls and introducing a few plants.

Cubicles, in their turn, were also once seen as a humanizing and egalitarian effort.  Instead of low-valued employees being doubled or tripled up in fluorescent-lighted rooms while high-valued employees got more desirable windowed private offices, cubicles broke down the divide and gave more or less the same amount of space to middle managers as well as the people under them (corner offices still go to executives).  Moreover, to the extent that metaphors make up the furniture of our minds, we collectively moved away from the notion of smoky closed rooms as the space where decisions were made and generally redesigned our workspaces to emphasize transparency and equality.

This general trend towards greater and greater openness is captured in the name: “open office”.  Like some dystopic novel or Orwellian word game, we have somehow been placed in a position of seeking out and realizing our own discontent.  With only a little exaggeration, it resembles Michel Foucault’s notion of fascism as a force the leads us “to desire the very thing that dominates and exploits us.”  Fortunately for us, we’re only talking here about furniture fascism and it’s only middle- and upper middle-class white collar workers who are standing in for the exploited masses.

Even office workers have the right to have Foucault speak for them, however.  Were Foucault to perform a genealogical \ archeological analysis of the problematic of the contemporary open plan office, it might go something like this:

The initial move involved a misdirection concerned with repression.  Middle managers were seen as repressing their employees with a feudal style architecture that crowded office workers into shared spaces while they were allowed the luxury of having their own space.  Because of the preponderance of this repressive hypothesis, the ur-father from Freud’s Civilization and Its Discontents, now embodied in the middle-manager, could only be brought down by giving everyone her own version of the manager’s office: the modern cubicle.

There are two sides to these sorts of power dynamics, though.  On their side, managers were driven to the new office plans by their own bad conscience and desire not to be seen as authoritarian figures – they, as much as anyone else, bought into the repressive hypothesis.  On the other hand, bureaucratic movement requires expediency and expertise to justify change – this was provided by consultants more than happy to explain the cost-cutting that would be afforded by replacing office walls with removable cubicle walls.  On top of this, they touted the benefits of being able to put up new cubicles or remove old ones in response to fluctuations in the workforce.

Dilbert

The argument from economic necessity led to something Scott Adams, the creator of Dilbert, identified as “densification.”  Over time and as if by a natural law, cubicles became increasingly smaller.  Because the change was gradual it was difficult to notice.  Nevertheless, the cost savings produced by “densification” – a cost savings eerily reminiscent of Marx’s analysis of surplus value – could be touted each quarter as middle managers and executives justified their own value to the company. 

When employees began to complain more regularly about densification as they stood around the water cooler, it was quickly observed that through a trompe l'oeil.  The gradual densification could no longer be plausibly denied once cubicle walls had reached the point where they were taller than they were wide.  This awareness of densification, it was discovered, could be resolved by simply making the walls shorter and consequently making the perspectival distortion caused by densification less obvious.  All one had to do then was bring in a few architects to pretty things up and provide an aesthetic explanation for the changes.

Hence was born the movement toward greater openness and collaboration – as well as the eventual removal of water coolers.  As by products of this transition, we also saw the introduction of headphones into the workplace, the rise of music players, the increase in the fortunes of Apple, the proliferation of online music streaming services and eventually the necessity of workplace broadband, now considered in some circles a human right,  to pump all this music into our headphones to drown out the conversations of our neighbors in the open office.

What caused all this to happen?  Recall that for Foucault the repressive hypothesis is at best false and at worse a misdirection.  Management did not get together and plan out a way to decrease productivity in exchange for less expensive office space – all while convincing workers that the workers were getting one over on management by being allowed to spend more time talking and avoiding hearing other people talking rather than working.

orderly rows

Instead Foucault identifies a general trend toward scientific regularity and the privileging of visual metaphors he identifies as the “empire of the gaze” and, eventually, “panopticism”.  Let’s try to make this plausible and show how it is relevant to the rise of the open office.

In his book Discipline and Punish, Foucault introduces the notion that modern civilization, built on firm scientific principles, has had regulation and observation built into it on a cultural level.  As an example, he cites the development of geometrical plans for the laying out of military camps starting in the 17th century.  Military manuals from that time spell out explicitly how camps were to be laid out, how far tents needed to be from one another, how high they must be, etc.  The goal of these standardized layouts was to make the entire camp visible and an easy object of surveillance from a given point of view.  More importantly, soldiers were made to know, by the layout of the camps that they themselves built, that their conduct was being observed by their superiors and that they needed to fall in line, so to speak.

“For a long time this model of the camp, or at least its underlying principle, was found in urban development, in the construction of working-class housing estates, hospitals, asylums, prisons, schools: the spatial ‘nesting’ of hierarchized surveillance … The camp was to the rather shameful art of surveillance what the dark room was to the great science of optics.

“A whole problematic then develops: that of an architecture that is no longer built simply to be seen (as with the ostentation of palaces), or to observe  the external space (cf. the geometry of fortresses), but to permit an internal, articulated and detailed control – to render visible those who are inside it; in more general terms, an architecture that would operate to transform individuals: to act on those it shelters, to provide a hold on their conduct, to carry the effects of power right to them, to make it possible to know them, to alter them.”

The fault in each of these geometries is the point of view required to perform surveillance.  It is a weakness in the system that constantly draws attention to itself as the observer.  When a soldier in the camp knows who is observing him – that is, whose opinion matters most – he can choose to be obsequious to his officer, to buddy up to his officer, to flatter him, to bribe him, and in other ways undermine the surveillance culture that is being developed.  In this sort of scenario, the soldier merely has to “act” as if he is behaving and only when he thinks someone is watching; whereas the true goal of a surveillance culture is to mold people to behave well all the time and to do this sincerely rather merely as an act.

panopticon

Foucault finds the architectural fulfillment of this managerial vision in something known as the Panopticon.  The Panopticon is a concept for a prison designed by Jeremy Bentham, the father of utilitarianism.  The idea behind it was to have a prison designed in a ring so that every prisoner was constantly being observed by other prisoners.  Additionally, there was a tower in the center of the ring that provided the only privacy available in the prison layout.  The tower housed guards, but inmates could never be sure how many were watching them at any time.  What is important in the design is that prisoners always feel as if they are being watched.  Under constant surveillance of this sort, it was hoped, would cause prisoners to behave morally and hence undergo rehabilitation through self-discipline as well as punishment.  The Panopticon would put them on their best behavior.

How does this apply to the open office?  Just as there are design patterns in architecture – patterns that repeat themselves to the point that technicians can use them as guides for architectural design – there are also patterns in civilization.  These patterns mark epochs in culture. Thomas Kuhn, when discussing scientific revolutions, called them “paradigms” – from which we get the overused term “paradigm shift” that, technically, describes the transitions between scientific epochs.

For Foucault, the cultural epoch we are currently living through is ultimately one guided by the notion of surveillance.  Surveillance patterns inform our managerial practices as well as our modes of self-governance as a nation, our architecture as well as how we do interior decorating, our city planning as well as how we raise our children.  Surveillance entertainment, more commonly known as “reality television”, is a media staple.  And of course, surveillance design patterns inform our office spaces.

In discussing living in a surveillance society, in this particular time and place, it feels overly heavy handed to even link to articles about Edward Snowden, WikiLeaks, NSA spying or project PRISM.   These are the design patterns of a world we have simply learned to accept as a matter of course.  It is worth reflecting, however, that Foucault worked through his insights on surveillance and panopticism in the 60’s and 70’s; Discipline and Punish, in which he laid out these observations, was published in 1975.

The picture at the top of this post is of the office I work in.  It is an open office plan.  There happen to be offices with doors for managers.  Their office walls, however, as well as their doors are made of glass.  This allows management to more easily observe us, just as it allows us to more easily watch management.  It is the fulfillment of panopticism because it has no area for guards whatsoever – everyone inhabits the empire of the gaze.

The greatest office design innovation here at work are the two tiny rooms designated for nursing mothers.  They are the most used spaces – not because we have that many nursing mothers but rather because they are the only places in the office where people can hide.  This requires correction.