How do I learn to think like a software developer?
June 11, 2013 8:44 AM   Subscribe

I'm a tech writer who writes customer-facing documentation. I have a vague goal of becoming the kind of tech writer who can write developer documentation. So I'm trying to begin to understand what that would look like and what kind of skills I would need to pick up.

Meanwhile, I've joined the infrastructure team at work, and will be doing RailsBridge in a couple of weeks. At a minimum, I'm trying to understand what my developers do, so that I can better translate that for clients.

As I go through Codecademy, it occurs to me that it's all well and good to be able to read and write code, but that I'd like to be able to use the code to solve problems.

Uh, I was an English major. I was generally terrified of math throughout school, but my mindset is different now, and I'm ready to learn (and start from the bottom).

How do I learn to think in terms of solving problems by writing a program? Do I need math courses, logic courses, CS courses, science courses? Something else? Am I asking the wrong question entirely?
posted by woodvine to Technology (8 answers total) 15 users marked this as a favorite
 
You learn to think in terms of solving problems by writing a program by solving problems by writing a program. 2 CS courses and time spent writing samples for the APIs you document ought to do it.
posted by crazycanuck at 8:51 AM on June 11, 2013


How do I learn to think in terms of solving problems by writing a program?

As much as anything, you need a problem to solve. Do you need to take courses to figure out how to do that? Maybe. Probably not yet. You definitely don't need to take math courses unless you're solving very specialized, math-heavy problems.

You, of course, don't need to know any of this to write customer-facing documentation, but when you mention "developer documentation" I assume you mean something more like this, right?

You can't write technical documentation of an API without understanding the API *very* well, because the types of questions that developers are likely to ask, and look to the documentation for, can get very specific. It's not uncommon to look to developer documentation for information on things like "Who's responsible for freeing the memory pointed to by the return value to this function?" or, What's the time complexity for insertion into a list in this library?"

So, normally, you don't write this documentation unless you've also written the code to which it refers.
posted by tylerkaraszewski at 8:58 AM on June 11, 2013 [3 favorites]


Or, the person who wrote the code has to explain it to you and you have to ask the right question.
posted by Obscure Reference at 9:16 AM on June 11, 2013




Best answer: Here's an example of a job like one I might eventually want to apply for.

That job's description basically requires you to be a professional writer and a junior-level developer. Presumably you'd be getting rough drafts and informal explanations from a development team and turning those into complete and polished outward-facing products.

I assume you already know the writing part. You become a junior-level developer by writing software for a couple of years. If you have the luxury of more experienced colleagues around to help you, you ask them to review the software you've written and tell you what you've done wrong. This is a long process. You can take classes or you can start practicing. Either will work as long as you get some feedback.
posted by tylerkaraszewski at 9:35 AM on June 11, 2013 [3 favorites]




Best answer: If you aim to write great documentation for developers then aim for writing predictable things. The best documentation I read affirms what I expect. This means that the function names are consistent and the amount of side effects are minimal. Some of this may be out of your control, but in my observation good technical writers reproduce the state of the system but great ones help guide the development team in making a coherent interface before it gets documented.

The link above about API design is a great read for this sort of thing.
posted by dgran at 12:26 PM on June 11, 2013 [1 favorite]


How do I learn to think in terms of solving problems by writing a program? Do I need math courses, logic courses, CS courses, science courses? Something else? Am I asking the wrong question entirely?

The three great virtues of a programmer are:
1. Laziness
2. Impatience
3. Hubris

I'm only sort-of joking when I say you should think about software and how those apply.

posted by blue_beetle at 2:13 PM on June 11, 2013


« Older You there! With your delightful Canadian city!...   |   A micro Tour de France? Newer »
This thread is closed to new comments.