Culture

I’m proud to be a programmer

I’m a programmer. If you think that means I write code, you’re wrong. As a programmer, my job is translating ideas into a working computer solution. Beyond coding, this involves a myriad of tools, processes, and communication.

Translation and coding

Writing source code, or coding, is something I often do but it’s just one of the skills I need. It’s similar to an accountant entering numbers into a spreadsheet or tax program — an essential part of their work, but just one of their tools.

The story of how, and why, I produce source code is what defines me as a programmer.

It starts with an idea, from a client, from management, from an end-user, or even from me. I wrangle that fuzzy, grandiose, real world idea into something suitable for our rather limited computers. As that idea mutates and adapts during development, I keep the stakeholders informed about its progress. In negotiations with product managers, designers, and users I represent the computer.

Constraints and stakeholders

I consider all the people I work with to be software developers: the graphic designers, the product managers, the testers, the technical writers, etc. Development is a common company goal that we’re all working towards. These people have roles in the process, and it’s vital I understand them and can communicate effectively.

To get the right aesthetics, I work with a graphic designer. I must share their vision, and I must convey the constraints to them. Hundreds of little decisions I make will impact the final visuals; the more I understand, the better the result will be.

To get the right features, I work with a product manager. The path from ideal use-cases to implementation can be complicated. Different programmers have different abilities. We’re forever bound by time constraints. There are thousands of hardware and cloud options. It’s important that the product manager and I stay in sync to ensure we’re creating a useful application.

To create a usable product I work with the technical writers and community managers. As much as I tell them how the product works, they relay to me how it’s used, and how much sense it makes.

I can’t program in a closet. The quality of our final product hinges primarily on our ability to communicate effectively. I think too few people understand this part of our role: a good programmer is a social person.

Responsibilities and engineering

Engineering is where the ideas become a real product. This includes the source code, the scripts, the graphic files and other imported assets. This includes the hardware and cloud setup and configuration, as well as deployment. This includes the final installers and packaged libraries. Bringing all this together is a fundamental responsibility of a programmer.

I’d like to say we’ve figured this part out, but we haven’t yet. We have a huge list of potential tools and an endless number of ways to combine them. It’s an ever-evolving puzzle where I regularly find and replace pieces.

Just packaging it all together isn’t enough, we have to ensure that it works as intended. Of course, we have to verify all the core functionality, but we also need to meet fuzzy non-functional requirements like security, stability, and performance.

Let us not forget this all needs to be maintainable. Releasing a product is not a one-time affair. As the product evolves, we continually ensure everything is up-to-spec. The team is also changing; our processes need to survive rotation in programmers over the lifespan of the product.

I suppose one could lament the difficulty of this challenge; it can be frustrating and overwhelming at times. But I love the feeling of ever improving. Every project can be done better than the last. I relish in this permanent position of looking for new answers. It brings out the scientist in me!

I am a programmer

My skill as a programmer is measured as the sum of these abilities. While I may specialize on specific projects, I always contribute to the entire spectrum of programming activities. I need to keep up with this fast-moving field. Remaining static would relegate me to becoming a relic of the past.

I take great joy in seeing people use the products I’ve created. I care about the users and want to make their lives easier. I like being part of a flourishing product and the company that grows around it.

There’s no other job nor title I’d rather have.

I’m proud to be a programmer.

5 replies »

  1. i feel like youre accurately capturing what startups and big companies want from programmers, and saying “thats what makes a good programmer. and a good programmer is a social person”

    and theyre all good things. at the same time, there was a time when being a “good programmer” didnt stress every one of these aspects, and so at least it *was* possible to be a “good programmer” without them.

    whats changed is the expectations and the nature of the teamwork. its more ad hoc, more “startup-like” with more turnover and competition now. so these “extras” are more vital than ever. they were always good qualities– your description of a “good programmer” is sounding more and more like a 1950s description of a “good wife” — in other words, “everything your boss could ever dream of!” poor “programmer,” that word is constantly being revised; it will never have a stable definition– not that youre wrong.

  2. Just a side note, something weird is going with word “pride” — I am proud because I am gay, I am proud because I do my job, I am proud because I have round butt, I am proud… I wonder if dolphins are proud they can swim. I am from the era when pride was associated with pushing the limits, saving somebody’s life, achieving breakthrough in science, but funny thing people who excelled used word “proud” sparingly if ever, today ~everybody is gold medalist in something.

    • You might be exaggerating the intent of the word pride. I’ve never associated it with having that extreme meaning. From thefreedictionary.com, first entry: ” A sense of one’s own proper dignity or value; self-respect.” or from Merriam-Webster “a reasonable or justifiable self-respect”

      I think “pride” is correct here. This is an industry where many people try to redefine their job, invent new titles, fail to find the value in their work, or are stereotyped by social images. I want to emphasize the value in being a “programmer”: it’s not a title, nor job, to avoid, ignore, or be afraid of.

    • I agree @mortoray. @macias, I think “pride” in this case means that when you do your thing honestly, with complete effort and enjoy every bit of it. Also, doing something with real dedication, which is not to fit into the society, but which comes from the within, has a different feeling. Then you start to enjoy every bit of what you do. At the end of the day you feel tired, but fulfilled. I think the pride here is personal and internal.

    • “taking pride in your work,” going that extra bit, as opposed to just doing the minimum.

      there are other meanings of pride, but this one is a classic.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s