Chinaunix首页 | 论坛 | 博客
  • 博客访问: 209217
  • 博文数量: 136
  • 博客积分: 2919
  • 博客等级: 少校
  • 技术积分: 1299
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-11 09:08
文章分类

全部博文(136)

文章存档

2013年(1)

2011年(135)

我的朋友

分类: Delphi

2011-05-19 08:49:25

ref:

What do programmers really do?

Programmers are translators of human ideas into the language of computers.

Translation Between Humans and Computers

There are three main challenges in translation:

  1. Language ambiguity. Human language is vague, complex and ambiguous – for example: “This program doesn’t provide good user experience”. Culture, background and context affect communication and meaning. On the contrary, any computer language is exact, straightforward and context-free.
  2. Levels of details. Humans communicate often in general terms without many details – for example: “I want this f* program work right”. It allows them to save time and energy, but cause two big problems – misinterpretation and possibility that important details are missing. And a computer requires all details – everything should be spelled out.
  3. Thinking style. Humans often think in terms of needs, outcomes and solutions – for example, “This report should run in 2 seconds instead of 2 hours”. However, computers need algorithms – sequence of steps how to achieve desired outcomes.

In order to write good software, programmers have to overcome these challenges, understand humans and translate their ideas into the computer language.

Skills of a Super ProgrammerAs we can see a super programmer should have two distinct sets of skills to deal with both worlds.

Understand humans and create solutions:

  1. Communication -ability to establish contact with humans, talk with them without alienating and even heroic attempts to share own opinion.
  2. Meaning - extract useful information from conversations with humans, decode and make sense from it
  3. Logic - clearing, removing ambiguity and controversy from human ideas for uncompromising reality of computers
  4. Creativity - dig, twist and play with human ideas to create good solutions
  5. Design - wrap programming ideas with human friendly interfaces and convenient interactions
  6. Big Picture – know how solutions fit into world of users, business and Universe to make your program useful.

Tell computers what to do and build solutions:

  1. Logic (again) – organize programmer’s thoughts into cohesive software ideas and instructions for computers
  2. Technology - uncovering and understanding the black box of technology (black box for 99% of population)
  3. Programming Languages – learn the beautiful, logical and unambiguous languages for feeding computers with programmer’s ideas
  4. Algorithms - master the most effective ways how a computer can accomplish a task
  5. Modeling  - create abstractions and models for grasping and manipulating ideas in software code
  6. Practices (as Refactoring, Unit Testing, Continuous Integration) – recurrent activities to keep system solid, healthy and possible to change
阅读(963) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~