This is not a transcript of a brief panel talk I gave for the UVa Graduate English Student Association Career Panel. It’s based on what I hope to say, but I’m actually writing this before the event so it (and its links) can be available beforehand.
I’ve been interested in two things for about as long as I can remember: computers and literature. These intersected a little in science fiction and fantasy, but largely, the two obsessions remained strangely separate. I’d spent a lot of time reading, both "literature" and "trash"; but I’d also enjoyed playing computer games and trying to program my own.
It wasn’t until half-way through my PhD program at The University of Georgia that my interests started to come together. Initially, I just had a reputation for being able to help people format columns in Word. Then I got involved in digital humanities, then called humanities computing. I also created a website for a professor, and later I started doing web development and systems administration for the Linguistic Atlas Projects.
Although these jobs weren’t my primary focus in graduate school, I did take them seriously. I learned best practices, including version control and testing. This was good for the project, but it was also good for me: doing things right up front saved me pain and sweat later.
And this was how my two interests finally found common ground.
When I graduated I took a job doing a combination of corpus linguistics and software development. This was good, but when I needed to look for another job, I found that there were fewer options for corpus linguistics than for web development.
So I made web sites for a few years. I had a lot of fun, and I learned a lot, both about the work itself and about interacting with clients and stakeholders.
For the last almost three years, I’ve been senior developer here at the Scholars’ Lab. What does that entail?
- Software development: True to my title, a lot of what I do involves developing and maintaining computer systems and web sites.
- Mentoring and education: Our biggest focus is education and mentoring. Sometimes that means helping someone who walks in with a digital project. More often it involves helping one of the Scholars’ Lab’s fellows or one of the students in the Praxis Program.
- Documentation: An important—but often overlooked—aspect of software projects is their documentation. We don’t spend enough time on this.
That’s not all, but those three is probably how I spend most of my time.
What Kind of Work are we Talking about?
I’m a software developer, so I’ve necessarily focused on that in talking about my personal journey. However, software projects are large, sprawling, complex behemoths, and there are a lot of different tasks that need to be done and a lot of different specialties that are required to contribute. So even if writing code doesn’t appeal to you, other things might.
- Project management: Keep everyone on track.
- Community outreach: Publicize the project and be an active member of the project’s community.
- Design: Make the product usable.
- Documentation: A different way to make the product usable.
- Testing: Check that the product works and works correctly.
Gina Trapani has an excellent post talking about how crucial—but also how under-valued—many tasks are in a software project, especially in the open source world. You can read about it at Designers, Women, and Hostility in Open Source.
What Advantages do you Have?
Typically, people expect those in any technical job to have a STEM background. This is false, and in fact, a humanities background can be a great asset in almost any job in software development.
Let me count the ways.
- Communication This point is trite, but it’s true. At a fundamental level programming involves communicating. Your code must communicate to the computer, to other developers, and even to your future self. You’ll also need to communicate effectively to clients, to your boss, and to co-workers.
- Education and Negotiation An important part of software development involves educating and negotiating with others. For example, adding a feature may involve dropping another one. This doesn’t make clients happy, and you’ll need to explain why and argue your case.
- Research Learning new technologies as well as using ones you’re already familiar with both involve a lot of research. Knowing how to learn and how to research is an important asset here.
- Reading and interpretation Most programmers work from specification documents. Being able to interpret them appropriately is crucial.
- Multi-level focus I’m not sure what to call this point, but it may be the most important one. When you analyze literature you must command details from a variety of texts and sources and synthesize them to make a larger point. This involves paying attention to both the forest and the trees. Writing software involves the same split focus: on the one hand, you spend a lot of time in the weeds thinking about semicolons; on the other hand, you must keep the big picture in mind to stay on track and on schedule.
For some of the same points, plus some others, see Shelby Switzer’s post on How my “impractical” humanities degree prepared me for a career in programming.
What Can you be Doing Now?
Obviously, finish your degree. This is the most important thing you can do.
But in your spare time (ha!), there are some other things you can do, both now and in the future. (Again, apologies: this list is for software programmers, especially web developers.)
If you’re just getting started, don’t worry about getting a broad knowledge of different technologies. All of them are similar. You’ll be better served by going deep into one choice. What you learn will apply to the other systems, and you can learn them later when required.
Also, learn the tools you’ll use to work in these languages. Learn them thoroughly and learn them well. You’re going to live in them.
- A text editor This is probably the single-most important tool for a software developer. Know it inside and out. Know all of its tricks. Sublime Text is a popular choice right now.
- Version control Programmers use version control systems to track the changes they make to their code. Git is a very popular choice, and Github allows you to share your code and collaborate with others.
- Online documentation Find the documentation for your programming language, its libraries, and the web framework you’re using. Also StackOverflow is a popular site for asking questions related to software development.
Finally, get your work out there. There’s never been a better time for this than right now. You can put your code online for others to see on Github. You can also run web apps quickly and easily using Heroku. Having code up on these makes it easy for potential employers to see your skills. It also lets them know that you’re active and learning and capable. They won’t replace a good portfolio that directs potential employers’ attention and highlights your best work, but they are a good start, and they’ll set up above most other applicants.
In general, this is a great time to go into software development and other technical jobs. Hopefully this post tells you what you need to think about and plan for.