Bruce Nauman On Clarity

Bruce Nauman

Having to say it out loud, having to explain what you are doing, forces you to be clear. You can’t just fumble through and get something and say “That’s what I meant to do all along”. That is the part I think about in my work: making sure that what I’m doing is really clear. Then it’s available, and those are the kinds of things you look for, in art, and this changes the structure of how you can think about art, and it’s there for you. And those are wonderful things when you are in their presence.

Bruce Nauman

This quote is from an episode of the show “Art in the Twenty-First Century” featuring the American artist Bruce Nauman. You can watch that episode online. He was drawing (no pun intended) a parallel between proof and clarity in mathematics, and clarity in art. I would extend the parallel to creative projects in general.

My career (so far), visualized simply

When I decided to start working on my blog more, I also decided quite consciously to maintain a healthy ratio between personal and professional posts. Mostly because I find blogs that are ostensibly about a person, but that only talk about their professional work, to be boring, as that’s only half the person really. That said, the professional identity is important, it puts bread on the table and maybe one day will pay for kids’s colleges, and so it needs its care and attention as well, especially since macro business cycles can be unpredictable. We are in the midst of quite a long boom cycle since the Great Recession of ’07-’09, and of course “winter is coming”, but it’s anybody’s guess as to when.

Furthermore, when I think about my professional career, I am optimizing for a 40-year run (ages 22-60ish). I doubt I will be able to retire before 60, and of course, it’s anybody’s guess as to how easy employment will be had or kept after the age of 50, age discrimination being the increasing reality that it is, so some of that planning does require a branch for self-employment out of necessity.

Furthermore still, the idea of career planning has always been a paradox. For some people, especially who spend most of their career at one employer, it can be quite straightforward, and I’ve found talking to those people unhelpful, as they don’t have the perspective of moving around, both geographically and between roles. Some people get lucky and don’t really realize the statistical uniqueness of that outcome. The paradox is between the job you have, and the job you want (the attainable kind, not the mythical). The dissonance between those two is quite a spectrum. And furthermore, a job is not a monolithic thing; you are solving for many variables at once (role, manager/IC, technologies used, team, growth opportunity, stress level, working hours, commute, location, etc). The personal weights assigned to those variables change over time.

If I’m aiming for a 40 year career, then I’m almost at the halfway point temporally, and when my “earning power” will max out is a deep topic for another time. If you think your salary is always going up and to the right, think again folks.

Due to all these realities, I’ve cobbled together what you could call a layered approach to career management. But before I even get into those details, I like to start with a holistic view of things. And so I present the following diagram, which neatly summarizes salient aspects of my career to date:

I’m a spatial thinker, so I find this kind of visualization quite helpful. In fact, it’s more helpful to me than it is to you, because while the visualization itself is sparse, I can use the data that is there as associative cues to other considerations in my brain that I haven’t explicitly represented.

Furthermore, the title of this post says “visualized simply” and I mean that. Data visualization has really become a thing in the last 10 years or so, and I’ve seen some really over-the-top viz. Now, the line between “data density” and “why are you showing me that?” is perhaps subjective, but I prefer to start simple, and focus on the broad strokes view of what I’ve done.

I would say, when I see that visualization, I see a lot of fragmentation along every possible dimension. In the past, that was fine and in part intentional. I wanted to be well-rounded and the only way to do that was to try different kinds of roles. But, I think that chapter of my story has run its course.

Instead, my goal is to really focus my attention on the areas that are most likely to realistically play a part in my career for the next 20+ years. This is a subtle point; it has to be something which is a stable or growing area (does the world need anymore Windows COM experts? Probably not), multiplied by what I’m intrinsically and intuitively interested in.

When I started working on mobile/iOS, I thought maybe that’s the right track to double down on. But I decided against that, in 2017, and I will blog about my reasoning there another time.

The area I do plan to focus on is applied machine learning. By applied I mean non-research-focused. I don’t have a PhD, so it is highly unlikely that I will find myself breaking ground at the theoretical level. Hence, a focus on applied works.

In fact I have a loose conjecture that applied machine learning is just going to be another aspect of business logic for apps. This is something I also need to tackle in another article. The amount of specialized knowledge to wield it continues to drop rapidly. You generally don’t need to bust out a derivative or even hand-code an algorithm yourself, insofar as you can get started with many off-the-shelf packages and approaches. Of course, the cutting edge will always require bespoke operations, but the number of teams that will need to do that kind of work will drop over time, as approaches standardize, become “good enough”, and are composable.

Re: 25 years of coding, and I’m just beginning

An interesting article made the front page of HN the other day:

25 years of coding, and I’m just beginning by DeChamp.

This article touches on a number of key topics that have affected me as well, so now is a perfect time to get my thoughts on these issues down on digital paper. Please read the article yourself, but here is how I’d summarize the key points:

  • The author says that, after 25 years of coding (since the youthful age of 11), they have nothing to show for it “that is mine alone”
  • The majority of the author’s coding effort has been for others, either as an employee or work-for-hire
  • The author is generally proud of this work, and of their skillset as web dev:
    • Has worked on big projects that generate millions of dollars of revenue and have hundreds of thousands of users
    • Author studies every day, that is, they constant invest in themselves to learn more, get better, etc
  • But, the author has struggled to complete personal projects to the point where they feel comfortable publishing or sharing them
  • The author identifies a number of reasons for this:
    • Historically, they have done extra work outside of their main gig to pull in more money. But this has left them with the double curse of less time and more stress when attempting to work on side projects.
    • When they have worked on side projects, they ultimately don’t finish due to getting bored or their attention moving elsewhere (author calls this “forgetting”, but I think it’s less about forgetting and more about moving on)
    • Author identifies as a perfectionist, which makes it hard not only to finish projects, but to feel they are good enough to share
      • Perfectionism manifests itself in such things as going down too many rabbit holes and over-designing in the pursuit of making the best thing
  • The author identifies a few ways to deal with this, in order to actually get things done and feel good about the progress:
    • KISS (keep it simple, silly/stupid/etc) and Just Do It
    • Ditch the extra clients. The additional money did not lead to a step-change in their quality of life, so get rid of them. Frees up more time and lowers the stress level.
    • Picked and did a small project, and released it
    • Started to go down a rabbit hole, caught themselves, stopped, and just released what they had
    • Developing is much more social now. The best way to participate in this is to share code, articles, projects, etc.

There’s a lot to unpack here, and the things that resonate the most with me are the notions of Perfectionism, Boredom, and the Social nature of development. But before delving into those, it’s worth setting the historical context.

25 years ago was 1993/1994, and that’s a long time in Web-years. Even 15 years ago, 2003/2004, is a long time ago for the practicing developer. Google IPO’d in 2004 and had less than 2000 employees then. Twitter started in 2006 and GitHub was founded in 2008. Before GitHub, the main way to share code was either on your own website, or on SourceForge, neither of which was terribly motivating. If your career started after all this, you have a different mental origin story, you’ll assume, and not assume, things in a much different way than earlier generations, and you’ll be on the receiving end of this experience yourself once the current kids are all grown up.

But back to the main points:

Perfectionism is something I have struggled with all my life. I’m much more level-headed about it now, but to say it was disruptive is not an overstatement. For example:

  • In my senior year of high school, I dropped my art class because I couldn’t finish a particular artwork (I was copying a National Geographic cover with lizards on it). Rather than hand in something crappy, I quit. Worse yet, I didn’t know how to bridge the gap to get better, and my art teacher was useless to offer help and I didn’t know how to really force it out of him.
  • In college, I deferred finishing my neural networks class so I could finish the final project over the summer. I always struggled with picking final project topics in many classes, as I could never find something I was really interested in. I ultimately did finish, and I was glad to have had the extra time, but it’s taken me many years to hone the art of picking good things to work on, at my current skill level.
  • And on and on. I could give many more examples of this.

Perfectionism is a real mental stumbling block. So if you’ve struggled with it too, you’re not alone as they say, and I’m still dealing with getting over it too. Like the author, I don’t have the problem at work. It really applies when I’m trying to do something outside of work, that I want to be proud of for its own merits. I don’t have any “silver bullet” answer, but here’s a quick summary of my current plan of action:

  • First, I only tackle things I’m truly interested in. If there’s a technology I’m trying to learn, I always try to find an example that resonates with me, even if it’s not cool, flashy, etc. If I feel like I’m doing to meet social or other expectations, it’ll fail, so I won’t go there now.
  • Second, I set reasonable expectations. I have only so much time and energy outside of work and family. I don’t need more stress, so I only tackle projects that feel good not only to work on them, but to make progress and finish them.
  • Third, I’ve redefined the unit of effort. There’s so much emphasis these days on full projects. I’m much more interested in using programming as an exploratory tool. So the output of that isn’t so much a full project, but smaller-scale things: experiments, small examples and exercises, etc. Think programming “in the small”.
  • Fourth, the author mentions “fear of judgment” and I’ve always found that accompanies the perfectionism mindblock. And honestly, the biggest judge isn’t you, the audience, its ourselves and our own self-perception of our work and accomplishment. So I deal with this judgment fear in a few ways:
    • First and foremost, focusing my efforts on my blog, on my domain, not somebody else’s turf. My house, my rules. It’s a control thing, absolutely. But it works.
    • Secondly, fully developing out the ideas here on the blog, then having them permeate elsewhere (ie to GitHub etc) when the time is right, in stages. This is actually a key point: lead with your strongest skill. For example, I’d rank my skills in this order: 1) Writing, 2) Coding, 3) Social. Thus, I’m most comfortable writing and developing my blog first, and then getting pieces of work (be they experiments etc) onto GitHub, then engaging more directly on the social front. For other people, the ordering might be the opposite.

As mentioned above, Boredom often overlaps with Perfectionism. But I would redefine things a bit. Boredom is definitely a symptom, but I think the root cause is what you could call Disengagement (for lack of a better word), the feeling that you’re not genuinely invested in something, that you’re doing it based on expectation or obligation, real, perceived, or otherwise.

I think a common place this shows up is how many companies do whiteboard interviews of algorithmic questions. Many people feel like they are studying that material to just “pass the test”, and find the end-to-end experience really frustrating.

Similarly, with side projects, I’ve always battled in my head with work that established your Professional Identity (the “hireable” you), vs the stuff that you just enjoy sake (that you could say develops your core “personality”, as expressed not by your clothes or choice of music, but your project-based artifacts and choices).

I’ve struggled with this dichotomy for a long time too. I always felt external pressure to focus more on the “professional portfolio” side, but when I’ve gone and looked at other people’s portfolios (be they developers or designers), sometimes i’ll see some real flashy output, animations, screenshots etc, very glossy and eye-catching and all, but I find myself wholly unimpressed by the substance once i get past the style. Like, it’s clear you just wrote that app to get a job, the lack of genuine engagement and enthusiasm is generally evident.

My current feeling is just to recognize that your Professional and Personal identities are in fact separate, both are important (the professional work puts food on the table, and personal work offers deep satisfaction), and sometimes the two identities overlap, but that’s a very subtle topic for another time.

Of course, time and energy are scarce, so you have to pick a kind of ratio for spending that time and energy on personal vs professional projects. For me, the ratio doesn’t work out at 50/50, so I’m focusing more on the personal right now. The pendulum will swing over time and that’s fine.

As for the final topic, the Social side of development, GitHub and pull requests and open source and all the like, well, I’ve run out of steam for now, so I’ll get back to that later, but it’s probably the topic I have the least insight on.

Now the perfectionist side of me would say this post is too long and rambly, and could use editing, etc. But that’s fine. I’m going to post it. I can clean it up later, in proportion to how much interest it generates. I can also “refactor” writing, to pull good ideas into separate articles. It’s amazing what you can do with words when they are not stuck in dead-tree form!

I’ve been coding for about 20 years now (since 18 in college, I was not an early starter), and I can definitely I feel like I’m just beginning too. But what I’m really beginning, is taking not only this skillset (programming etc) that has historically just been a job for me, but the whole exploratory mindset of just trying things for the sake of it, and making it my own.