天天看点

软件开发者的软技能

Overview

作为独立贡献者的软能力:

  • 学习能力:技术变化很快,需要不断学习,整理和归纳能力很重要
  • 解决问题:解决技术问题是每天都要做的。分析能力,抽象思维能力
  • 决策能力:设计决策、实现方案、乃至技术战略的选择等都至关重要

作为技术领导者(担当领导的角色或为了赢得尊重)

  • 沟通:因为需要与多方打交道
  • 创新并实施

Thinking Skills

What is Thinking Skill

Thinking is the ability to attack a problem or task and solve it intelligently (or rationally) and provide a reasonable explanation for the solution. Good thinkers (or skillful thinkers) are good problem solvers, they can withhold making decisions before they have all (or most of) the relevant information, they are not afraid of the unknown. Also, good thinkers have strong metacognitive skills. They are able to “think about their thinking.”

The following activities all need some kinds of thinking skills:

  • learning
  • problem solving
  • decision making
  • creative thinking

Core Thinking Skills

eight “core” thinking skills include:

  • focusing skills (attending to selected bits and pieces of information and ignoring others)
  • information gathering skills (skills used to bring to consciousness the substance or content to be used for cognitive processing)
  • remembering skills (activities or strategies that are used to store information in long-term memory and to retrieve it)
  • organizing skills (arranging information so it can be understood or presented more effectively)
  • analyzing skills (clarifying existing information by examining parts and relationships)
  • generating skills (using prior knowledge to add information beyond what is given)
  • integrating skills (putting together the relevant parts or aspects of a solution, understanding, principle, or composition. New information and prior knowledge are connected and combined.)
  • evaluating skills (which involve assessing the reasonableness and quality of ideas).

Thinking Techniques/Tools

  • Five Ws and One H
  • Cause Effect Analysis
  • Pareto (80/20) Principle (80/20原则)
  • Criteria based decision matrix (PUGH Matrix )
  • WBS
  • Force Field
  • PDSA (PDCA)
  • SWOT
  • Six Hats
  • DIKW pyramid(Data, Information, Knowledge, Wisdom)
  • MECE

Learning Skills

General Tips

  • 搞清楚该学什么,比学习本身重要得多,所以要经常关注技术前沿,技术的全局
  • 兴趣很重要,学自己感兴趣的东西
  • 设置虚拟项目,学以致用
  • 难学的技能可能更具竞争优势
  • 分阶段推进,逐步获得成就感
  • 多做笔记、总结、整理、勤思考
  • 多读好书,如manning,oreilly,Javalobby reader’s choise: the top java books
  • 差的、普通的书应该通读、略读,尽快总结即可,甚至浏览一下目录记一下不熟悉的技术术语即可,不该精读。
  • 深度广度交替
  • 越难的技术问题,越有学习的价值
  • 先模仿后创新,如多看开源代码
  • 利用网络资源,IBM developerworks、google、stackoverflow、wikipedia
  • 时间是最重要的资源,应当投入到最值得学习的方面
  • 真正宝贵的信息,在其他来源你也会接触到,好内容少的网站可以直接忽略,不必担心错过重要内容
  • 注意学习方法和思维方法
  • 设想将东西讲给别人听
  • 可以找找业界的牛人作为榜样,跟着他一起学

关于看书

Knowledge or Experience(知识和经验哪个更重要):

  • Which is more important in life, knowledge from the books you read, or personal experience you gain in reality? The answer may vary from person to person. The young, educated may emphasize the former, and the old may stress the later. But in my opinion, they are of the same importance.
  • Experience is priceless. How to become an efficient secretary? How to prepare for your first child to come into the world? There is so much experience we need in careers, in life and even in academic studies. It helps one deal with the problems with ease and confidence. Especially activities and to accumulate experience of different kinds is more crucial.
  • Experience,however,is limited in terms of time and space. For one thing, it is impossible for anyone to experience all the important events and meet all the famous people. For another, as the speed with which skills are obsolete and new problems crop up is unprecedented because of the fast development of society, experience is far less adequate. Depending too much on it only leads to narrow-mindedness and prejudice.
  • One way to compensate for it is to read books. Books of various kinds can bring us almost unlimited additional experience. From books you can not only trace back to the wisdom of our antecedents, but keep up with the latest developments of science and technology. To be sure, it's secondhand experience. But it is the ideal supplement to our own limited experience. Few of us can travel around the world, or live long beyond one hundred years, but all of us can live many lives by reading books.
  • Both book knowledge and personal experience are essential. While experience makes one more resourceful, book knowledge makes one more learned.

应该怎么看书:

  • 看书挑剔,只看好书、经典。
  • 对一本具体的书,要有选择的阅读。
  • 面对一本好书却看不懂,不要随意放弃,要搞清楚为什么看不懂。原因是多方面的,可能是需要去补基础知识,可能是缺乏实践。
  • 对于需要精读的书,尽量抽出整块时间看,避免看了后面忘了前面。
  • 书多了,要整理和分类,可按照主题分类。

如何挑选好书:

  • 可以看看Amazon上的评价
  • 看看是否是好的出版社
  • 是否是牛人写的
  • 书的实际内容如何。关注要解决问题、方法背后的理念、给出直观的解释而非方法的技术细节、给出各种方法的发现过程。

学什么

IT行业变化太快,学不变的东西:

  • 底层知识。所谓底层是相对的。
  • 算法和数据结构
  • 程序设计理论
  • 良好的编码习惯
  • 分析问题和解决问题的能力
  • 学习能力和求知欲
  • 思维方式

学习某个具体知识时,要关注:

  • 本质上是什么
  • 遵循哪些原则和理念
  • 整个知识的全貌是什么样的,各个组成部分在其中的地位和作用如何

平台入门:

  • 安装
  • 配置
  • 运行
  • 试用

编程语言入门:

  • SDK下载
  • Hello World程序
  • 重要的语法、特性
  • 如何组织程序(模块、包)

深入框架:

  • 它是什么, 为什么要有它, HelloWorld
  • 设计理念, 架构, 架构组件
  • 编程、实践
  • 生态系统、案例分析
  • 部署、运维

熟练开发:

  • 编程模型
  • 最佳实践

Methodology(架构设计,敏捷开发):

  • 价值观
  • 原则
  • 具体方法
  • 最佳实践

数据库系统(包括MySQL和NoSQL等):

  • 架构要点
  • 数据模型

Problem Solving Skills

问题解决能力

  • 知其然,更要知其所以然
  • 努力寻找最优方案。探索各种可能性,比较各种方法的优缺点

Technical Communication

Technical Documentation Types for Software Developers

  • white paper
  • datasheet
  • release note
  • user manual/user guide
  • tutorial
  • installation guide
  • troubleshooting guide
  • API doc
  • developer guide

What is a Good Technical Document

3C:

  • Clear
  • Concise
  • Completeness

How to Write Technical Documents

five steps:

  1. Determine purpose and audience
  2. Collect information
  3. Organize and outline information
    • chronological
    • parts of an object
    • simple to complex (or vice versa)
    • specific to general (or vice versa)
  4. Write the first draft

    The ABC (Abstract, Body, and Conclusion) format can be applied to the whole draft or individual paragraphs.

  5. Revise and edit
    • adjusting and reorganizing content
    • editing for style
    • editing for grammer
    • edit for context

References

  • http://en.wikipedia.org/wiki/Technical_communication
  • http://en.wikipedia.org/wiki/Technical_writing

继续阅读