Friday, July 11, 2014

What I Learned From a Year of Software Engineering

In my first job out of college as an investment banking analyst, people used to joke about the long hours and frequently disrespectful treatment of junior employees as a form of "character building." It was the kind of joke that people in the industry often made: uncomfortable realities that we referenced half in jest, and half in earnest as strange, deranged badge of honor. In spite of it being a hyperbole in a warped industry, the truth is I learned a lot more about myself than I expected and it did make me grow up. I learned that I was much more idealistic than convenient for the job I had chosen. I felt, deeply, my physical limits without enough sleep and my own brittleness under pressure. Eventually, it became almost impossible for me to cry over anything work-related, even when there were cuss words involved.

This joke of a phrase -- "character building", probably seems overly generous for nine-to-five jobs that might be productive but hardly dangerous or at the forefront of reimagining humanity. But in my ordinary life so far, every job has on some level illuminated, fortified or chipped away pieces of my mental and emotional being. Some of these are things I have always known about myself, others I have suspected -- still others I never knew. I worked for non-profits after banking and quickly realized that for all that -- I was perhaps not idealistic enough. I could not breathe and live a cause without a slow, systemic slippage into some level of intellectual doubt. Those tendencies, and a demanding perfectionism, were counterproductive when progress sometimes required a greater tolerance to kick-start. I learned these things that had at first felt like irrefutable limitations but now are clear insights of what I must let go of in part to grow.

And now, a year later into a career pivot that my 22-year-old self could not envision, I am sometimes more uncomfortable than ever about the things I am learning as a software engineer -- in that feeling outmatched by the pace of your necessary growth but nonetheless the most worthwhile kind of way. I have qualities that amplify well with the job, but there are also tendencies grate against the paradigm. One of the most difficult things for me has been inviting and diving into the necessary chaos to truly understand something -- the willingness to break things, to take things apart, to use things not as instructed to reach limitations and bare principles. Decades of education of wanting the right answer and a perfectly made thing feel, at times, slow to undo. But everyday it is more deeply impressed upon me that the ones who can really reinvent are those who learn how things work by experiencing them deeply rather than by simply being told.

It is often easy and gratifying to imbue one's view of technology with the air of magic and fantasy -- that was certainly a common default reaction of mine when I had limited technical knowledge, but that ultimately defeating. To equate complexity with mystery is not productive to learning, solving or inventing. Even the most complicated system is built by the same small components -- you have to believe in your ability to start somewhere. To really internalize that things are built, piece by piece, empowers the faith that you can build things. It does not always feel natural to simply stop accepting the system that you are given as some unchanging, partially understood truth. It feels exhausting at times to not be able to simply walk away and say, "I don't know." In my one year so far I try to remind myself constantly of the growth post that discomfit and to learn to live with that feeling of not knowing, but willing of discovery.

In an industry awed and driven by cerebral achievements, there exist the noisy games of some trying to assert intellectual prowess through various loud points of view. For personalities like mine that care a lot about "the best way to do something", it can be an intimidating and confusing navigation of opinions that all seem tremendously self-assured. I finally learned that this is basically an inimical waste of time. For every opinion that exists, there is almost always an inverse of it that can sound equally reasonable. Sometimes it is a matter of preference, other times it is a matter of circumstance. You can only really learn what is right for your set of constraints, aesthetics, and needs, if you are willing to be wrong occasionally through experimenting.

I realized that pride-induced-fear and fear-induced-pride are some of the most potentially destructive things for what I do.

A year and sometime ago, I had the crazy idea of trying to do something I had no idea how to do because I had a rather naïve desire to build some online non-profit community platform. I remember vividly I got into this because of the practical desire of wanting to build something that makes someone's lives a little better. I could not understand developers that had all that power to help people but chose to contain themselves in theoretical bubbles.

Yet along the way I discovered how much I loved solving technical challenges and appreciated code as its own abstraction -- and slowly I became more disengaged from real life problems and the people needing solutions. I immersed myself in the curiosities and intricacies of technicalities instead.

I suppose on some level that makes me a real software engineer now and there is some rite of passage for that. But there is a part of me that misses my own indiscriminate enthusiasm for what it could do, rather than what the code looked like (even if I will always appreciate a beautiful, maintainable piece of code). Striving for abstract perfection feels worthy, but it is not real life with its inherent messy designs and tradeoff. To be ruled by the dogma of your craft is to lose sight of the real engineering question here -- how do you balance a purely technical pursuit with actual impact? I hope I never forget that.

A year of software engineering -- perhaps not quite hyperbolically character-building, but there is some shifting and stirring for sure.

No comments:

Post a Comment