当前位置: 首页 > 编程日记 > 正文

艾伟也谈项目管理,敏捷教练的工具箱

学习并不是简简单单的阅读和浏览,而是一个积累的过程,一个通过持续的学习,对自己的知识体系不断丰富、索引的过程。接下来我会从四个方面入手分享我的经验。

  高质量的信息源和高效的学习

Google是一个很好的工具,通过它,我们可以找到很多很好的资源,但前提是必须先知道要搜索的关键字,没有关键字,就不知道该查什么。多数情况下,人们都是在不可能知道自己不知道什么(Unknown unknown)的状态,也就是不知道该用什么关键字去查询,因此也不会知道该去学习些什么。所有基于Google检索的模型是一种基于拉动的模型,而基于拉动模型的方式不可能让我自己去接触那些自己不知道的信息。

为了让自己接触到充足的信息,我需要建立一个信息网络和信息渠道,让那些可能感兴趣的信息不断推送到面前。推送渠道主要是以Twitter和Google Reader为基础。通过订阅感兴趣的内容源,我可以时刻了解业界正在发生的热点讨论、研究、工具、书籍,以便及时调整学习方向。

同时我所订阅的资源也起到过滤有价值信息的功能。从我欣赏和信任的专家那边推过来的信息或者被多次提到的关键字对我来说都是有价值的信息。思维导图是一种十分有效的快速学习的工具。在看书或者学到有价值的知识时,我经常会把学到的内容做成思维导图。

这样我既可以对所学到的内容有一个概要的、抽象的了解,同时又可以随时深入到细节。思维导图桌面应用工具, 我常用的是XMind。XMind可以方便地支持思维导图、鱼骨图、组织结构、树状图等多种形式,同时它提供了一些初始模板,包括头脑风暴、会议、项目管理、读书笔记、流程图等。在线的思维导图工具, 我使用Minemeister。它能够做到修改通知,甚至播放整个修改的过程,并且支持多个人同时在线头脑风暴。我经常在头脑风暴电话会议中使用这个工具。

  方便的笔记管理

学习是一个构建个人知识库并且不断建立索引的过程。每次接触到有价值的知识,我都会做笔记。好的笔记应用满足以下几个需求:

  • 记录多种形式的内容,包括文本、图像等。
  • 方便的标签功能,这样我可以方便地定位特定专题的内容。
  • 支持自由文本检索,这是标签功能的有效补充。类似于Google那样,通过一些关键字,去检索知识库。
  • 同步与备份,方便地在不同的电脑以及设备之间同步。

最初我使用微软的OneNote来做笔记。早期版本的OneNote能够记录多种形式的内容,并且可以方便地用关键字查询。它的分页功能在一定程度上起到标签的功能,但是一个笔记只能放在一个标签下,除非复制多份,而多数情况下,一个笔记是需要放到几个标签下面的。由于微软的应用是以客户端为主,所有笔记都放在客户端,因此我需要自己备份这些文件。每次重新安装机器,都需要自己手动复制文件。后来我选择了能够满足我对笔记管理工具的全部要求的Evernote。

首先,Evernote是一种客户端服务器架构,可以使用多种客户端应用来记录笔记,而笔记会自动同步到服务器。这样的话,每次更换机器或者更新系统,我要做的只是安装Evernote客户端登录,就可以自动下载同步所有笔记。Evernote做到了写入既存档,它会自动把最新的内容同步到每一个设备,这样我再也不用担心笔记丢掉。我比较反感很多应用中的保存功能,对于一个真正为了客户设计的系统来说,它不需要客户考虑是否保存这种琐事,每次客户输入,都应该自动保存在电脑中,而且客户根本不需要关心存放在什么地方,只要想找的时候能够方便地找到就可以了。

Evernote的Tag和自由文本检索也十分强大,它的自由文本检索甚至可以认出 Evernote笔记中图片里面的字符,如果图片中的文字符合检索要求,它也会可以帮我找出来。  另外Everno te支持多种包括PC、苹果电脑、手机、iPad等多种设备。当然,作为一个有心人,一定要随时记录学到的知识,随身一定要带笔和纸。

  知识库的备份与版本控制

我的个人知识库不光包括日常笔记,还包括各种各样的文档,比如论文、PPT、视频、培训及咨询资料、个人资料等。我对于资料知识库的需求如下:

  • 版本控制,我需要总是在最新版本的文档上做修改,但不希望用时间作为文件名。
  • 保留历史,希望看到每份文档的历史。
  • 占用磁盘空间不要太大。
  • 资料同步。

我最初使用的工具是Subversion 和TortoiseSvn,Subversion是服务器,TortoiseSvn是客户端。每次对文件做完更新,在相应目录或者文件上用鼠标右键点击,选择更新,TortoiseSvn就会把修改提交到Subversion服务器。使用 TortoiseSvn可以很方便查询提交的整个历史。与Evernote不同的是每次都需要手动提交。相对于笔记在Evernote中的自动更新功能,我更希望手动更新资料,这样就可利用提交时填写的注释,记录整个文档变化的历史。

但基于Subversion的解决方案也有问题,由于Subversion是基于服务器-客户端架构的解决方案,每次提交必须连接到Subversion服务器,而这个服务器往往是装在另外一台机器上,因此如果出差中,就没有办法提交更新。与Subversion相比,Git是一种完全不同的版本管理工具。作为分布式版本管理工具,它的服务器总是在本机,因此我随时都可以提交文档的更新。Git的数据库比Subversion数据库要小几十倍。在Windows平台上需要安装MSysGit来安装Git,在 Mac平台上直接安装Git  就可以。另一个重要原因是我希望通过使用Git来学习这种新的工具,以及了解分布式版本管理系统的工作方式。基于Git的解决方案给我带来一个新的问题我的资料数据库和我的资料数据都存放在同一台机器上,万一机器崩溃或者丢失,就会带来不可弥补的损失。因此需要把数据库同步到其他地方。

我使用的是Mac自带的Time Machine,它会随时备份。Dropbox也是一个不错的备份方案,可以把资料同步到网上,但是对我不适合,因为我的个人资料库远远超出了Dropbox免费账户所提供的空间大小。而且Dropbox是采用自动更新的方式,这样我就很难利用手动提交时填写的注释来记录文档更新的历史。

  提高工作与学习的效率

我十分反感低效的工作和学习,因此在我的常用工具箱中有不少提高电脑使用效率的工具,主要包括:时间管理、检索、快捷键、黏贴板等。

1.时间管理

对于时间管理来说,基本需求是保证能够专注于最重要的事情。因此我需要一个待办事项列表工具和一个能够帮助保证时间箱的工具。我使用番茄工作法管理自己的工作和学习时间。具体做法就把时间分成25分钟的时间箱(番茄时段),每个时间箱中排除干扰专注于做最重要的那件事情。我使用Pomodario作为时间箱工具(从下图可以看出,我写到这个地方已经花了十个25分钟)。

我用的待办事项列表工具是Remember TheMilk(RTM)。它是一个在线应用,也可离线,具有丰富的标签功能,可与日历程序同步。美中不足的是不支持任务嵌套,我暂时通过标签来作区分。每次开始一个番茄时段之前,都会从RTM里面选择最重要的任务,然后在接下来的时段中,不受干扰地去完成这个任务。

2.检索

1111111111

多数电脑安装的操作系统都是基于图形界面的,为了寻找文档往往需要打开资源管理器(在Mac上是Finder),然后资源管理器会树形展开所存储的资源。为了找到资源,需要用鼠标不断展开/缩放树节点,去寻找文件。这种做法十分低效,找一个文件往往需要半分钟。因此,迫切需要一个工具能够从电脑中快速定位并且启动文件或程序,只要简单输入关键字,  就可以从电脑中把相关的资源列出来。在Windows系统上,我会用Everything和Google桌面。Everything会将系统里所有文件索引,输入关键字就可以把文件名符合关键字的文件列出来,Everything还支持基于正则表达式和通配符的检索,资源消耗很少,速度很快。

Google桌面也可以通过关键字检索来定位文件,而且比Everything更强的是它不仅仅对文件名作匹配,也会去匹配文件中的内容。问题是Google桌面功能太多,对我来说太过于重量级,所以我以Everything为主,以Google桌面为辅。 Mac系统自带了Spotlight,它实现了同样的功能。只要按下Command + Space,就可以直接启动Spotlight输入关键字。

3.快捷键

使用键盘比使用鼠标效率要高得多,对于常用的操作或者命令,我都会写一些脚本,定义一些快捷键。在Windows系统上,我用的是AutoHotkey。在启动机器后,我需要启动Git,然后到GitHub上拉最新代码,本地运行脚本去编译和测试,然后启Visual Studio打开项目。通过脚本和定义命令,我只需要按几个键就可以完成整个操作。

4.增强黏贴板

有一个功能实现起来不难,而且很实用,不幸的是它被Windows和Mac系统所遗忘。这两种操作系统的黏贴板仅仅能存放一个东西(文本、图像等)。如果按一下Ctrl + C (Mac下是Command + C),系统会把所选的东西放到黏贴板,替换掉原有的东西。我需要一个工具能够存放多于一个东西的黏贴板,这样它就成为一个临时存储区域,可以方便地把东西放到这个区域中,随时复制到其他地方。Windows系统上我用的是Cl ipX,在Ma c上我用的是ClipMenu。

以上这些工具能够极大地保证我的学习和工作效率,保证在电脑前所有的时间都用来做有意义的事情。这些工具是日常的一部分,我的工具箱在不断地调整,我也在不断地尝试比较新的工具。读者可以以这些为基础,建立自己的工具箱。这里还想分享一下选择工具的原则:

首先,不会为了选工具而选工具,选择的工具一定可以解决某个问题,这也就是为什么在分享工具的同时,也在分享这些工具解决的问题的原因;其次,选择能够发展自己能力的工具,比如Git,AutoHotkey等;最后,要不停地尝试和比较工具。

相关文章:

7.Odoo产品分析 (二) – 商业板块(3) –CRM(1)

查看Odoo产品分析系列—-目录 CMR:Customer Relationship Management。企业为提高核心竞争力,利用相应的信息技术以及互联网技术协调企业与顾客间在销售、营销和服务上的交互,从而提升其管理方式,向客户提供创新式的个性化的客户交…

用栈实现形如a+bb+a@的中心对称字符的检验

用栈实现形如ab&ba的中心对称字符的检验 将&前字符依次入栈与前字符进行比较即可,下面是方法 Status match(char *a){ //match方法 SqStack s; char c; char *pa; InitStack(s); while(*p!&){ …

Typedef用法(转载)

在C的学习过程中,现在才发现,以前有那么多被忽略的重点;现在是慢慢拾起这些重点的时候,通过百度和博客,我感觉我学到了很多东西,自己只是在别人说的基础上,按照自己学习的过程在这里记录一下&am…

JavaScript基本知识

数组的排序 JavaScript可以实现多维数组,对象数组等排序,语法如下 arrayobj.sort(sortfunction) 参数 arrayObj 必选项。任意 Array 对象。 sortFunction 可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列…

七基于Fourinone实现MQ demo

2019独角兽企业重金招聘Python工程师标准>>> FourInOne也可以当成简单的mq来使用,该demo演示了队列和主题订阅两种模式的实现 一、队列 将domain视为mq队列,每个node为一个队列消息,检查domain的变化来获取队列消息。 Sender&…

Windows下安装XAMPP,Wordpress

配置XAMPP: 1、下载:https://www.apachefriends.org/zh_cn/download.html(下载速度日了狗!) 2、安装XAMPP; 3、启动apache,MySQL: Apache启动错误: …

原生js实现复制

最后我的解决方案是,在页面中添加一个 div,手动写入内容innerHTML,然后把它隐藏掉 function copy(targetDom) {let range document.createRange();range.selectNode(hiddenErrcode);window.getSelection().removeAllRanges();window.getSele…

C#条件判断-根据条件判断要走的路-if结构

什么时候要用到if结构语句呢?如果有一个班的学生期末成绩不是很理想,原因是考题太难,教师希望根据学生平时的表现给不同学生加平时成绩分,条件如下: 如果平时每次都交作业,加20分;如果平时交了超过所有作业…

既往出现中性粒细胞减少的患者可以重新应用依那西普

原文 译文 Clin Rheumatol. 2011 Aug 5. [Epub ahead of print] Re-challenge with Etanercept in patients with Etanercept-induced Neutropenia. Haroon M, Daly M, Harney S. Source Department of Rheumatology, Cork University Hospital, Cork, Irela…

RTTI(三)相关函数1【转自大富翁】

第三部分RTTI相关函数 GetTypeData 函数 GetPropInfo 函数 FindPropInfo 函数 GetPropInfos 函数 SortPropList 函数 GetPropList 函数 GetObjectPropClass 函数 PropType / PropIsType 函数 IsPublishedProp 函数 IsStoredProp 函数 FreeAndNilProperties 函数 SetToString /…

中序非递归遍历二叉树

二叉树的递归算法虽然简单,但是会导致时间复杂度比较高,下面给大家带来用栈实现的二叉树非递归算法 首先定义好二叉树,和元素类型为二叉树的栈 typedef struct BiTNode{TElemType data;struct BiTNode *lchild, *rchild; }BiTNode,*BiTr…

修改属性使按钮处于无验证状态

.net 页面中如果有验证不为空的控件,而且有重置按钮。此时需要将重置按钮的属性设置为无验证状态 如图将CausesValidation属性设置为false转载于:https://www.cnblogs.com/xiaopanlyu/archive/2012/06/28/2568823.html

poj3253

本文地址:https://www.cnblogs.com/maplefighting/p/9116850.html 题目名称:Fence Repair 链接:http://poj.org/problem?id3253 题意:农夫准备把木板切成n块,每块长度为Li,每次切木板时需要花费切时木板的…

一起谈.NET技术,C#中int和System.Int32理解总结

最近园里的TeamOne写了一篇《[C#] int与System.Int32有什么区别》,发现里面有不少精彩的评论,所以忍不住想这篇文章总结一下: 本文的主要参考资料: 1.《理解C#中的System.Int32和int:并非鸡和鸡蛋》Author:Dixin 2.《[C#] int与Sy…

java多线程编程01---------基本概念

一. java多线程编程基本概念--------基本概念 java多线程可以说是java基础中相对较难的部分,尤其是对于小白,次一系列文章的将会对多线程编程及其原理进行介绍,希望对正在多线程中碰壁的小伙伴有所帮助。 (一)进程、线…

Linux下查看Nginx,tomcat等的并发连接数和连接状态

1、查看Web服务器(Nginx Apache)的并发请求数及其TCP连接状态: netstat -n | awk /^tcp/ {S[$NF]} END {for(a in S) print a, S[a]}或者: netstat -n | awk /^tcp/ {state[$NF]} END {for(key in state) print key,"t"…

Java笔记整理-02.Java基础语法

1,标识符 由英文字母、数字、_(下划线)和$组成,长度不限。其中英文字母包含大写字母(A~Z)和小写字母(a~z),数字包含0到9。 标识符的第一个字符不能是数字(即…

android中The connection to adb is down,问题和解决 AndroidEclipseAntXML

1.报错:BUILD FAILEDD:\workspace\ganji\build.xml:144: The following error occurred while executing this line:D:\workspace\ganji\build.xml:271: Unable to delete file D:\workspace\ganji\tmp\proguard\tmp.jar解决:已经开了一个模拟器了&#…

建立可扩展的silverlight应用框架 step-4

通过外部配置文件加载模块module 在上一节中为项目引入了“Prism”框架,并建立了一个Hello Prism做测试。这里要把项 目好好的整理一下。使其更加的合理和具有可扩展性。 我的目的是,在左侧的导航栏目里点击按钮,相应的右侧的主体部分显示不同…

ntp时间同步服务

前言 NTP 网络时间协议用来同步网络上不同主机的系统时间。你管理的所有主机都可以和一个指定的被称为 NTP 服务器的时间服务器同步它们的时间。而另一方面,一个 NTP 服务器会将它的时间和任意公共 NTP 服务器,或者你选定的服务器同步。由 NTP 管理的所有…

C# GDI+ 简单绘图 (三)

感谢大家的支持,这几天从早忙到晚,一个字累呀!!!现在挺困的,但是又不习惯这么早睡觉,哎~~还是利用这个时间继续来写第三篇吧.前两篇已经基本向大家介绍了绘图的基本知识.那么,我就用我们上两篇所学的,做几个例子.我们先来做一个简单的----仿QQ截图,关于这个的例子其…

用java实现一个简易自动提款机

用java实现一个简易自动提款机,且有以下要求 如何实现呢?首先,我们定义一个用户类User,同时根据要求设计好属性(本人部分命名没有使用驼峰命名法,不够规范)。因为一个人可能有多个卡,卡号又不能重复&#x…

mysql java jdbc 如何 update select

2019年8月6日17:28:07 sql 不知道怎么写,也没去查,因为需求可能中途需要修改值,有点麻烦 直接用jdbc实现。 查询出来的值,直接根据update条件更新,写在一个方法里 public static void GetWeiLiaoMsg(String day) {try …

2000DC和DNS迁移到2003 R2

2000DC和DNS迁移到2003 R2 实验环境:一台TPLINK路由器,三台电脑,以下简称A,B,C。A当作公司的2000DC和DNS服务器。B当作公司要升级的2003R2 DC。C 当作客户机,测试用。1. 对TPLINK路由器&…

SAP EWM 代码实现Transportation Unit(TU)的创建

在EWM中很少有创建或者修改业务对象的BAPI存在,更多的是通过很多面向对象的类方法来实现。 以下这个简单的创建TU应该能很好的体现SCM平台中的OO特性。 REPORT yewm_tu_creation NO STANDARD PAGE HEADING. TYPES: BEGIN OF lty_key_wrk, tu_num TY…

libcurl 客户端实例

参考库 libftp (though its in C)ftplib (again, looks like C)libCurl seems to have FTP capabilities.ace源码&#xff1a;main.c #include <stdio.h> #include <string.h>#include <curl/curl.h> #include <sys/types.h> #include <sys/stat.h&…

哈夫曼树的生成及哈夫曼编码

首先构造哈夫曼树结构体&#xff0c;初始化哈夫曼树的四个无符号整型域&#xff0c;输入文本&#xff0c;统计各个字符的权值&#xff0c;然后构建哈夫曼树&#xff0c;从根到叶子逆向求哈夫曼树的编码。 #include"stdio.h" #include"string.h" #include&…

shiro(2)-架构与配置

认证就是用户确认身份的过程&#xff0c;确认登录的用户身份能够操作的内容。 使用shiro认证分为以下几个步骤&#xff1a; 1&#xff0c;得到主体的认证和凭据。 // lets login the current user so we can check against roles and permissions:if (!currentUser.isAuthentic…

unity中的UI状态机,用于各界面之间的切换和跳转

首先感谢姜雪松先生&#xff0c;大家可以去他的博客查看注释以及代码等&#xff0c;http://jxwgame.blog.51cto.com/943299/1613585 言归正传&#xff1a; 1.在开发项目的过程中&#xff0c;总是会遇到这样的问题&#xff0c;从一个界面跳转到另外一个界面&#xff0c;每次操作…

【转载】Session服务器配置指南与使用经验

作者&#xff1a;张子秋出处&#xff1a;http://www.cnblogs.com/zhangziqiu/ 原文链接&#xff1a;http://www.cnblogs.com/zhangziqiu/archive/2009/03/26/sessionserver.htm一、摘要所有Web程序都会使用Session保存数据. 使用独立的Session服务器可以解决负载均衡场景中的Se…