Software engineers should write

來源:互聯網
上載者:User

標籤:

1. Reference

http://www.shubhro.com/2014/12/27/software-engineers-should-write/

 

2. src

In elementary school, there were “math kids” and there were “English kids”. You were classified by the other kids’ impression of your prowess in each subject.

I was a math kid. So I majored in computer science and set off to be a software engineer. Along the way, though, the “math kid”/”English kid” designation never really wore off. If anything, it got stronger. The engineers I meet today cringe at the thought of writing an essay. And the writers I meet cringe at the thought of writing code.

What a shame! An engineer who writes code should also write essays.

Software engineers should write because it promotes many of the same skills required in programming. A core skill in both disciplines is an ability to think clearly. The best software engineers are great writers because their prose is as logical and elegant as their code.

Code and essays have a lot more in common. Both begin as a blank slate and an idea, then end as a discrete product for an intended audience. The product is a sequence of logical statements, bundled into modular units– whether it be functions or paragraphs. Like good prose, good code is concise (think "expressive"). Bad code wastes CPU cycles; bad essays waste brain cycles. The writer’s draft is the engineer’s prototype.

When closing in on a finished product, the engineer feels the same uneasiness as the weary writer. As with essays, software never quite feels “done”. It nudges for more of the engineer’s time: another feature to be built, another module that needs refactoring. He/she’s afraid it won’t be the best representation of his/her work. Oh well. Ship it.

Software engineers should write because our craft is increasingly collaborative. Open source projects invite worldwide participation, while industry products often require an army of engineers. (Google Maps has 1100 full-time employees! ) Good writing– whether it be in a GitHub comment, code review, or technical documentation– facilitates clear, concise communication for projects like these to move forward.

Even if a project doesn’t require communication, writing about software in general promotes learning and important discussions. We don’t have to learn from RFC specs and technical manuals, thanks to tutorials written by other engineers. In technical discussions, only so much opinion can be stuffed into a Hacker News comment or a tweet. The rest begs to be channeled into a blog post.

On the topic of blog posts, put some time into them. Good writing takes time. It’s natural to write a “sloppy copy” off the bat, then improve the quality over serveral revisions. If you feel too busy to blog, at a loss for topics, or worried about your opinion being on the public record, give Steve Yegge’s You Should Write Blogs ten minutes of your time. Even if it doesn’t convince you, I think you’ll enjoy the read.

Software engineers should write because they might actually enjoy writing. Many of us are motivated by the potential for our software to have “impact”, to make a difference in people’s lives.

In the same way, writing is a powerful vehicle for impact. The blog post on management helps a manager invigorate his team with motivation. The tutorial on programming sparks a student’s interest in computer science. The essay on career advice inspires a graduate to pursue a new career path.

Even if nobody reads your essay, writing it will make an impact on you. It will clarify your opinion on a topic and strengthen– or even weaken– your beliefs. The process alone of putting jumbled thoughts into concrete words is valuable.

Writing offers the same sense of impact that motivates an engineer to write software. Combine this with how it promotes skills useful in software engineering and facilitates collaboration, then suddenly writing appears to be a worthwhile activity.

Even for the “math kids”.

 

3. Words

prowess

 [‘pra??s]

n. 英勇;超凡技術;勇猛

 

set off

 [,set ‘?f]

v. 出發;引起;動身;

 

designation

[dez?g‘ne??(?)n]

n. 指定;名稱;指示;選派

 

wore off

磨損;逐漸消逝

 

cringe

[kr?n(d)?]

vi. 畏縮;奉承;阿諛

 

prose

[pr??z]

n. 散文

 

concise

[k?n‘sa?s]

adj. 簡明的,簡潔的

 

Software engineers should write

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.