
I am a terrible programmer.
Or, at least, that’s what I tell people is the reason I gravitated away from code and towards organizational behavior, dysfunction, and systems thinking. I’ve decided not to be a “doer”, but rather, someone who doesn’t actually do anything: an Agile coach. When I think about programming, I feel envious of those that create and master the art of coding. When I think about programming with Agile–and the organizational environment to cultivate amazing people–I sense that I can contribute to others’ realization of success. While that feeling is joyful, I admire those “doers” every day as they build software that delights customers.
(At a recent employer, after my hire, a programmer casually quipped that the company “hired someone who doesn’t do anything to help do something.”)
The quiet truth is that I’ve always questioned my intellectual ability to grow beyond someone who can “write some code” and into a great software developer. My mind doesn’t seem to easily take steps along the pathway to simple, elegant, and clever code. Worse, even easy concepts sink in like my cranial matter is made of depleted uranium (my under-graduate colleagues clearly felt it important to make sure I graduated with this knowledge).
At the great risk of succumbing to the unrelenting pressure of impostor syndrome, I’ve decided that it’s unfair for me to request the privilege of serving teams and software organizations without having at least a competent ability to code myself. Certainly not to help solve problems for an Agile team, but rather, to enhance myself as a trustworthy human being in software development. I want technical people–who may be distrustful of someone who “doesn’t do anything”–to feel a commonality that I relate. That I understand.
Therefore, I am teaching myself C# with the help of online lessons from a rather enthusiastic gentleman named Bob Tabor (suggested by Jason Kerney – thank you!). As I mentioned in my introductory post, the last line of code I submitted was close to eight years ago–in PL1–and my college coding experience was never true object-oriented programming.
For now, I’m allowing myself the patience to work through the most basic of lessons, despite the fact even I know enough about using basic variables and arguments. I suspect that major progress-blocking challenge will occur soon, but I haven’t yet experienced anything that feels suitable for a discussion here.
With that said, here are a few observations from two days spent working with C# from scratch:
- Already, I feel a deep desire to pair with someone on this project. I’ve spent years studying, observing, and tuning my thought to discover the benefit of collaborating within complexity. And here I am, working in a silo, with no one to talk with.
- I cannot stop my desire to take a test-first approach to everything I am doing. I’ve experienced the value of TDD and I’m afraid I am missing learning opportunities.
int[] numbers = new int[] { 4, 8, 15, 16, 23, 42 };
Console.WriteLine(numbers[1].ToString());
Console.ReadLine();
Would I even write a test before I write something as simple as this? Why (or why not)? How?
- I don’t yet understand the technical concepts behind object-oriented programming. But in comparing to some of my procedural experience, the idea of using classes to create a “blueprint” of potentially many “things” seems quite helpful. It’s easy to understand classes of tangible concepts (e.g., a car, a person) over conceptual things I know will likely confront me. “Private”, “public”, and “static” are all just intimidating words, right now, however.
For now, I feel quite at ease making console windows bend to my will by writing nearly useless string-modified output from files. It’s intimidating to know how rudimentary everything thus far has been, in the face of acquiring knowledge that gets me closer to my goal.
Until then, I suppose I should take some satisfaction from my console program that validates user input to return a complimentary (i.e., “you’re awesome!”) message when responding to the question, “Do you like puppies?”
I’ll remind myself to emphasize small steps and adapt to what I learn.