-
忆靓仔二三事
最近连续两个老友离职去干新的事业,一个是澳洲的Perryn,另一个是黄亮。看到前后这些邮件时,颇有点百感交集。因为我在ThoughtWorks的第一个项目,就是这两个人把我带上路的。
我们都管黄亮叫“靓仔”。他是我们中国区的第一号员工,2005年我刚进ThoughtWorks时,靓仔已经算老员工了,干了好几个月了都。所以我刚去厦门的时候,靓仔很照顾我,周六中午飞机到厦门,下午他就带我去逛南普陀。寺门口有个放生池,靓仔看着池子里众多的乌龟看了半天,然后幽幽地说:“它们为什么都把龟头露在外面?”——后来因为这种经典语录太多了,我决定要给他结集出一本《黄亮语录》,他呢就一直想杀了我灭口,不过我俩拖延症都很严重,所以这两件事都没有发生。
靓仔是很SUI的一个人——SUI这个字是我厂现任中国区CTO徐昊的发明,只可意会不可言传。怎么个SUI法呢?有年在西安,靓仔中午出门去买过年回家的火车票,过一阵悻悻地回来。原来他先去银行取钱,发现银行搬家了。然后周折半天取到钱,到售票点一问,那趟火车停开了。他回到办公室就把鞋一脱,一边休息走酸的脚一边骂骂咧咧,我坐在他对面就一直嘲笑他,他终于不耐嘲笑伸脚踹我,砰的一声踹在桌子下面我俩之间那块铁板上。第二天靓仔一瘸一拐地来上班,到办公室把鞋一脱,大脚趾上裹着绷带。徐昊说SUI并不是靓仔本身的问题,他只是SUI的良导体,进入了我厂这个强大的SUI场之后切割SUI力线就产生了持续的SUI流。
骂骂咧咧这是靓仔的一贯作风。2006年我们在澳洲做Selenium的时候,他看见一块烂代码就开骂:“妈蛋这是谁写的代码,妈蛋以后写代码不写测试老子砍死你……”开源项目嘛贡献的人又很多,大家对代码质量的追求参差不齐,于是他就每天都在不停地骂骂咧咧,一边骂一边补测试、重构。Selenium曾经有一块超级难懂的JavaScript,用来控制浏览器行为的,靓仔就这么一边骂骂咧咧一边把这块JavaScript给理清楚了,现在的WebDriver归根到底就是从那块代码演化出来的。我在澳洲跟他pair的过程中,学会了一种最大化团队效率的pair方式:靓仔一边骂骂咧咧一边写程序,我翘着脚看并适时鼓掌——做一个不拖后腿的pair是很不容易的,不信你试试看。
2008年底在塘沽,我又跟靓仔扎到一个项目里了。其时华北地区一片天寒地冻,靓仔的情绪就跟天气似的长期处于冰点,一来是值得骂骂咧咧的事情实在太多了,二来是因为他的慢性肠胃炎使他到了几乎没什么东西可吃的地步。我们曾经考虑过用靓仔做食品安全试剂,他吃了十五分钟之内不拉肚子的饭馆我们才继续吃,但是很快这个计划就被搁置了,因为我们发现按照这个标准塘沽就没有可吃的饭馆。饶是这么不能吃不能喝,靓仔还把一个嗜酒成性的国企办公室主任搞得定定的,主任对我们这个团队别提有多喜欢,没事儿就把靓仔拉到他办公室开聊。后来他结婚之后肠胃炎总算是好了,但是我觉得少了一个长期存在的骂骂咧咧的声音总觉得缺点什么。
当时没想到,塘沽之后我俩就再没机会pair了。大概这个就是成长的代价之一,你最欣赏的那个战友,随着你俩都变得越来越强,肩上的责任越来越多,两人的距离也就越来越远,能在一起工作的机会也越来越少。后来的几年中,我还会时常想起我跟靓仔(还有WPC)在墨尔本的那些时光,一边听他骂骂咧咧一边写代码,下班以后天花乱坠地神侃各种做网站赚大钱的点子,日子过得不亦乐乎。
现在靓仔终于战胜他的拖延症,真的要去做网站赚大钱了。希望他一切都好。
-
在穷国实施电子病历:国家先行,医院跟上
电子病历,或者叫电子医疗记录(EMR),有时也叫电子健康记录(EHR)——虽然有人认为后两者还是有不同的定义——是医疗信息化的一个核心组件。比如中国卫生部就提出 “以电子病历和医院管理为重点的医院信息化建设”,其他国家也有相似的提法。毕竟,保存正确且完整的个人医疗健康信息记录,可以提高医疗服务的效率和质量,这是医疗信息化的一个关键所在。
在路径上,发达国家的做法是优先建立完善的医院级电子病历,而全国共享的电子健康记录则远没有那么实际的计划——从前面卫生部的文件可以看到,中国也在跟随同样的路径。然而这个思路有三个重要的假设,使得这个路径在贫穷国家行不通:
- 假设1:上规模的正式医疗机构是提供医疗卫生服务的唯一主体。在贫穷国家尤其是偏远山乡地区,居民距离基层医疗点很远且缺乏卫生意识,“有病去医院”并不是他们的习惯,大量的医疗卫生服务要靠乡村医疗队走进乡村上门提供。以医院为主体建立电子病历系统,就会将乡村医疗队隔于电子病历体系之外。
- 假设2:一个病人只需在一个医疗机构(可能是连锁医院)就医。贫穷国家医疗人才极度匮乏、基层乃至地区医疗机构能力严重不足,需要大量的转院治疗,一个重病患者的治疗很可能会涉及从乡村卫生所直到国家中央医院的各级机构。如果优先建立各级医院的电子病历,对于减少转院——风险最高的病人——的信息错漏并无太大帮助。
- 假设3:办好医院就能提高全民健康水平。仍然是由于医疗人才和资源的严重匮乏,政府必须牵头承担大量事关全民健康水平的国家规划,例如母婴保健、防治疟疾、防控艾滋病等等。如果电子病历分散在各家医疗机构,政策制定者将很难获得支持决策所需的数据。
所以贫穷国家在实施电子病历这件事上,必须有突破常规的创新思路:国家先行,医院跟上。不是首先关注医院的电子病历实施,而是优先实施国家级的健康信息交换(HIE)体系,尤其是其中的共享健康记录(Shared HealthRecord,SHR)系统,使全国各级医疗服务提供者——从乡村医疗队直到国家级医疗专家——能随时获得和更新病人的医疗记录。通过优先实施全国范围的HIE体系,可以获得三大收益:
- 乡村医疗队乃至居民本人能直接获得有针对性的医疗卫生指导,切实提高基层医疗卫生水平。
- 各级医疗机构能及时获得完整且正确的患者医疗记录,提高医疗服务的效率与质量。
- 政府相关部门能及时获得全国范围的医疗健康统计信息,为国家级的卫生政策制定提供支撑。
综上所述,电子病历是医疗信息化的核心,但贫穷国家在实施电子病历时不应照搬发达国家的经验,而应该突破常规跨越式发展,首先建设国家级健康信息交换体系,快速让全体国民从医疗信息化中受益,然后再自上而下拉动医院级电子病历系统建设。
-
数据采集的新时代
中午帮同事订餐,大家都想吃点什么?周末搞个团队建设,大家想去哪里玩?买保险,要提供个人信息。进医院,要先挂个号。
这几件事有什么共通之处?答案是,它们本质上都是在做数据采集。如果把这些收集信息的过程放到电脑上做,可能会用个Excel表格;如果要做个软件来处理这些事,大概最主要的界面就是一张表单(form),有文本框啦单选按钮啦多选按钮啦下拉列表啦之类的,最后还有个“提交”或者“完成”之类的按钮。
这些表单比乍一看的要复杂。比如说,你会希望表单有校验,明显不合法的数据最好就不要填进去了。再比如说,表单会有条件判断在里面,例如男性就不用问是否怀孕女性就不用问是否做过结扎。当然了,表单还应该长得好看,而且最好在电脑上和手机上都好看。更不用说还有一些并非HTML直接支持但颇为常见的数据类型,比如地点经纬度,比如照片。
你还在用HTML一个字段一个字段实现表单吗?你的开发工作量还和表单长度成正比吗?那弱爆了好吗?
金数据是一个在线创建和管理表单、收集数据的工具。不用多废话介绍它,网站上一看就知道了。有趣的部分在于,金数据提供了JSON格式的API,你可以把放在金数据上的表单拿给别人去填,收到新数据的时候通过这个API推送给你自己的服务器程序。觉得金数据的表单还不够好?或者压根儿不想让金数据知道你采集了哪些数据?你还可以把表单定义抓下来,自己写程序解释这个JSON定义,得到完全自己控制的表单——听起来有点麻烦,但至少有意思,总好过一个字段一个字段写HTML。
如果解释金数据的JSON格式表单定义确实有点麻烦(或者技术挑战),这儿还有个更简单一点的解决方案。Enketo也是一个在线设计表单和手机数据的工具,不过不像金数据,Enketo更多像是一个帮助软件开发者的工具:你可以用Excel设计表单,然后把Excel格式的表单定义上传到FormHub(Enketo的一个部署),然后就可以让用户在线填表;更妙的是当你把表单定义下载过来,Enketo还提供了开源的Javascript Library帮你显示和操作表单——所以就不用操心“自己写程序解释表单定义”什么的啦,毕竟要实现那些常见的表单功能并不是件很容易的事。
如果感兴趣怎么使用Enketo来做你自己的表单,我做了一个简单的Demo来演示。
$ git clone https://github.com/gigix/shivaganda.git $ cd shivaganda/village-enketo$ npm install$ bin/server.js
然后就可以去 http://localhost:8002 看这个表单了。代码非常简单,40行HTML加100行Javascript而已,表单就搞定啦,而且做成手机应用也完全没问题。点“提交”按钮的话,你得到的是一个XML格式的数据包,所以程序员就只管处理数据就好啦。
还是那话:你还在一个字段一个字段拿HTML写表单吗?那弱爆了好吗?……可是这真的还在很多我所知道的项目里发生呢。特别是来自发达国家(尤其是南太平洋发达国家,嗯,你懂的)的项目,客户似乎对于花这点工夫也不在意,毕竟一个项目上线就能赚很多钱回来嘛。但是在,比如说,UNICEF在非洲的项目里,我们没钱啊,我们资源非常受限啊,我们舍不得把程序员宝贵的时间拿去复制粘贴HTML表单字段啊,所以我们就得想破脑袋找这些法子,让程序员做必须做的事,可以自动化的全都自动化。其结果呢,就是项目做得很有意思,每段程序写下去都是有创造性的——没创造性的那些都被自动化了。
所以呢,穷人的孩子早当家,穷人的项目更好玩 :D
-
穷人的医疗信息化
联合国2000年发布的“千禧年发展目标”当中,与医疗卫生直接相关的有这么几项:降低儿童死亡率;改善产妇保健;对抗艾滋病、疟疾及其他主要疾病。当初的计划是在2015年在全球范围实现这一系列发展目标,现在2015年已经近在眼前,而千禧年发展目标的达成(尤其在最低收入国家)还有明显距离,任重而道远。
这几项与医疗卫生相关的发展目标,其实并不需要太高的医学技术。只要普及一些基本的卫生常识,养成良好的卫生习惯,并在有状况发生的时候能及早发现及早治疗,国民整体健康状况就会有显著改善。比如说吧,疟疾在撒哈拉以南非洲地区发病率很高,尤其对五岁以下儿童的生命威胁极大,而防控疟疾和降低儿童死亡率的一个重要措施,说起来简单得令人惊讶:正确使用蚊帐。再比如说,很多得疟疾的病人在自我感觉身体恢复之后就会停止服药,结果没有尽数消灭体内的疟原虫,使得疟疾通过蚊虫继续传播。解决这些问题,不需要高精尖的医学技术,却需要将广大贫穷——通常同时也缺乏教育——的人们与原本就匮乏的医疗资源与医疗信息联系起来,使有限的医疗资源(主要是指专业医疗工作者)与医疗信息覆盖尽可能多的人群。
怎么样,听起来是不是很像信息技术能发挥价值的地方?确实如此。千禧年发展目标中专门有一条提到了“使更广大的人群受益于新技术,尤其是信息和通信技术”,主要指提高电话、个人电脑和互联网的覆盖率。有了硬件,软件也得跟上,这就是“穷人的医疗信息化”要解决的问题。
在贫穷国家和地区,医疗信息化不可能遵循发达国家的即成轨迹、按部就班地发展,必须得抓住问题关键,积极地开展技术和业务创新,跨越式地发展医疗信息化。举个例子,发达国家的电子病历都是从医院建起,医院与医院之间再慢慢展开集成和数据交换;而像乌干达这样的国家,医疗设施本来就极度匮乏,再从医院开始建立电子病历,就不知猴年马月能全民覆盖了。因此乌干达政府选择了一条跨越式发展的路线:跳过医院级电子病历的普及,直接建设全国统一的共享健康信息记录云——讽刺的是,发达国家因为从医院层面开始建立电子病历,各家医院之间差异颇大,现在想搞全国统一反倒困难重重,奥巴马医改强力推动建立全美健康信息交换(HIE)系统尚且推不动,倒是有望在撒哈拉以南非洲的贫穷国家先实现了。
技术创新之外,业务模式创新也是贫穷国家医疗信息化的主旋律之一。居民离基层医疗点距离远,来往不方便,怎么帮助他们建立良好的卫生习惯,怎么有效跟踪每个人的健康状况?须知这些贫穷的乡村不光是偏远,而且条件恶劣,很多村庄不通公路,甚至连电也没有。在UNICEF(联合国儿童基金会)和WHO(世界卫生组织)的一系列项目中,大量使用了短消息(SMS)——尽管电脑和互联网的覆盖率很低,手机尤其是价格便宜又耐摔的featurephone在非洲却有很高的覆盖率。乌干达的mTrac就是这样一个创新的项目:通过短消息将广大居民与医疗工作者、医疗信息联接起来,使他们能通过简单的短信交互告知自己的健康状况并得到医生的帮助。缅甸也在UNICEF的帮助下启动一个类似的项目,用手机短信来改善母婴保健水平——怀孕几周应该注意什么,新生儿是否健康,父母都可以通过短信得到帮助。
而且这类“穷人的医疗信息化”几乎都是开源的——贫穷国家出不起那么多钱来购买那些天价软件。于是这个领域形成了一个活跃的开源技术社群:OpenMRS/OpenERP/OpenELIS等几种开源软件结合起来,就成了一套完整的医院信息化系统,已经有亚洲国家计划在全国主要医院中推广这套系统;RapidSMS、Motech等技术使开发者们可以快速搭建起面向featurephone的应用;你还在一个输入框一个输入框地往页面上画表单吗?那弱爆了好么……Open DataKit、Enketo/FormHub这样的技术直接就能生成整个表单逻辑,校验啦嵌套啦什么的都不在话下,你只要设计表单内容就好了;就连全国医疗信息整合这种高端话题,也有OpenHIE这样的组织在积极讨论。
技术创新、业务模式创新、而且完全开源。对于软件技术专业人士来说,“穷人的医疗信息化”简直就是一个宝藏。现在大家都讲“Frugal Innovation”,在条件受限的情况下最大程度激发想象力来解决问题,那种感觉真是挺爽的。
更何况,在这里解决一个“问题”,很可能就挽救若干人的生命呢。
-
睁开眼,看看贫穷国家的医疗问题
医疗是一个很大也很复杂的行业。在这个生态系统中,有医生、护士、麻醉师在提供医疗服务,也有行政管理和企业管理人士在经营医院,有供应商在研究生产各种装备和药品,也有保险公司和医保基金在支付大部分医疗开销,有政府在制定各种相关政策,当然,还有接受医疗服务的病人——或者叫“顾客”,因为进医院的人并非都有病,例如孕产妇就不应该被称为“病人”。医疗是与所有人息息相关的行业。
医疗行业有多大?据估计,2013年全球医疗行业收入总量将达到6.5万亿美元。这个数字也不怎么直观,可以跟其他一些行业做个比较:医疗行业的市场总量相当于食品饮料产业的一半,超过保险、广告、服装、软件几个产业的总和。
这个巨大的医疗开销,在全球各个国家的分布是极度不均匀的。经济合作与发展组织(OECD,也即全球收入较高的国家)在全球医疗开销中占了88%;在经合组织之外国家当中,非洲又仅占8%医疗开销。换句话说,拥有超过8亿人口的非洲大陆,在全球医疗开销中仅占不到1%。国家层面的贫富悬殊由此可见一斑。
于是在个人层面上,医疗开销的贫富悬殊也是意料之中的。仍然以非洲为例,人均医疗开销仅有经合组织国家的1%——而且其中还包括经济条件相对较好的地中海非洲及南非。如果看最贫穷的撒哈拉以南、南非以北地区,对比会更加悬殊。
医疗投入的悬殊差距,首先就体现在医疗设施的充足程度。世界卫生组织的研究数据,在坦桑尼亚的维多利亚湖周边地区,只有约38%人口住在距离基层医疗卫生站2公里以内的区域,另38%人口距离基层医疗卫生站2~6公里,还有24%人口距离基层医疗卫生站6公里之外。如果这个数字听起来太抽象,可以想象成都市区只有一个基层医疗卫生站,就在华西医院的位置,这是你唯一能得到绷带、感冒药和任何医疗服务的地方,而你有一大半可能性住在二环路以外——当然,车子是没有的,如果头疼脑热跌打损伤你得自己走到华西去。
同样缺乏的还有医疗人才。在经济最发达的美国,每十万人平均有五千多名医疗工作者;而在撒哈拉以南非洲,每十万人平均只有139名医疗工作者;去掉相对发达的南非以后,像坦桑尼亚这种典型的黑非洲国家,每十万人平均只有五十多名医疗工作者。
基层医疗设施和人才的缺乏,使得很多在我们看来无关紧要的事在这些贫困地区成为了严重的问题,例如世界卫生组织特别强调的母婴保健问题。在经济发达国家,幼儿在5岁以下夭折的比例大约是0.7%;全世界平均比例大约是5%;在撒哈拉以南非洲,这个比例是9%——每11个幼儿就有1个活不过5岁。
此外,疟疾、肺结核、外伤、动物咬伤等在城市居民看来并不严重的问题,在极度缺乏基层医疗的贫困农村地区都会造成很高的致死/致残率。另外,贫困造成的长期饥饿、慢性营养不足等问题都在伤害这些地区的人民。
改变这些状况需要很多方面的努力,世界卫生组织(WHO)、联合国儿童与教育基金会(UNICEF)、盖茨基金会以及各国政府都在致力于改善贫困地区的医疗卫生状况。IT技术在这个进程中也有其用武之地,有大量的工作需要IT专业人士的投入。在下一篇文章里我会介绍针对贫穷国家和地区的医疗IT生态系统。
-
“做事要主动”的续篇
上次在那篇《人在职场,做事要主动》里面,我这样写道:
“工作几年以后,积累了一定的能力和口碑,领导有时就会给你一些非常挑战、甚至完全超出你想象的任务。这个时候千万不能怂:你敢让我上,我就敢上。这种高挑战的任务往往是难得的机会,搞定了就能让你上一个台阶,你要是不敢上,别人可能正等着抢这个机会呢。”
最近我收到一个读者的来信,说他自己就是在一个关键点上“怂了”。这个故事是这样的:
“我刚进公司时,领导叫我先在一个比较成熟的产品上工作。做了一段时间,领导想要我去研发新产品。这个新产品技术领先,公司也很重视,同时因为技术的先进性也存在风险。”
“领导问我:如果你去做新产品,有信心做到市场第一么?我回答:如果是产品本身的水平做到第一肯定没问题,但是市场规模第一就要受很多因素影响。领导说:我知道,所以你有信心做到第一么?”
“我沉默了几秒说:先看下我对现有产品的规划吧,新产品的事回头再说。”
“于是,我就一直做老产品,另一个同事去研发新产品了。其实新产品集合了全公司的优势资源,又是未来的大势所趋,要做到市场第一的机会比老产品大得多。就因为我自己怂了一下,不敢上,就没机会上了。”
看了这个读者的故事,我反倒想从另一个角度来讲这件事了。所谓主动,其实未必都体现在关键机会勇于出头;在不那么激动人心的工作岗位上认真负责兢兢业业,从普通的工作中发掘出不普通的意义,这同样是“主动做事”的一种方式。
我有个同事,最近几年一直都在一个大项目上泡着,既没有发表什么文章,也没有在外面做演讲,有意思的项目一个接一个来了又去,他似乎就毫不动心,就是安安心心地泡在那个大项目上。几年泡下来,他生生地把这个全公司公认最难搞的客户给搞定了,客户对他不说言听计从至少也是青眼有加了。而且不光工作有成绩,连他自己的能力也提升了很多,不管是做IT架构还是处理客户关系,都显得游刃有余,叫人一看就放心把更重要的事交给他做。
有句老话叫“厚积薄发”,如果太在意抓住机会,也可能有另一面的风险:做的漂亮事情很多,但是积累不够,每件事都流于表面。尤其现在的中国,经济高速发展,机会层出不穷看得人眼花缭乱,真是像老故事里说的,如果是把锥子的话早晚都会露出头来。所以一时错过一个机会并不算什么大事,在一个相对沉稳的环境里把自己的能力和思考打磨得更精湛,或者反而是好事也未可知。
-
谈谈科技工作者的社会角色
我在网易云阅读注册了一个专栏(http://163.fm/aLFv3Yu),在内容简介里说“关注科技工作者在社会中扮演的角色”。那么,究竟什么是科技工作者的社会角色?这个问题将决定我在这个专栏里写(以及不写)什么东西。所以我决定先谈谈我对这个问题的想法。
一种常见的观点认为,科技工作者没有什么特别的社会角色:科技工作者,例如我所在这个行业的IT工作者,就是社会中的普通人,上班打卡下班吃饭,没有任何特别之处,甚至在很多方面的处境低于“普通”(看看“码农”这种称谓,你就能感受到这种印象)。因为科技工作者的地位是如此普通乃至不值一提,所以没有必要专门谈论这个群体的社会角色问题。
首先我强烈反对这种——经常是故意的——自我贬低的社会定位。需要注意到,这种社会定位很大程度上是来自西方发达国家的现状,比如在澳大利亚,IT工程师的收入跟其他办公室白领相差不大,不如很多体力技术工作者(例如水管工)甚至体力劳动者(例如矿工),他们确实没有显著高于其他人的社会地位。但这种发达国家的经验显然不应该被照搬到发展中国家。比如看看印度,IT工程师显然就有很高的社会地位,他们有大房子住有车开家里甚至有佣人,他们上班的科技园区围墙外面就是脏乱不堪的贫民窟,科技工作者在这个环境里就是特权阶层。
那么,回到中国的语境,究竟情况更接近哪一边?澳大利亚还是印度?另一种常见的观点认为我们更接近澳洲,因为我们在北京在上海就是普通得不值一提。这就是所谓布尔乔亚的自恋自哀:眼睛只看见身边的一小圈人,而无视自己所在的本来就是一个地位相当高的圈子这一事实。只要走出CBD或者高新区那一小片空间,看看更为广泛的社会,科技工作者的经济地位显著高于社会一般水平是显而易见的。我的健身教练听说了我们给应届毕业生的薪资水平,表示“这个收入在成都已经是很不错的了”,可为佐证。
比经济地位更为重要的是对知识和信息的掌握。以IT行业为例,全行业就业人数约640万,占人口总量不到0.5%的这部分人具备最佳的环境与渠道获知全球最新的IT相关信息——考虑到信息技术在当今社会发展中的重要地位,这部分人在知识与信息的角度同样是毫无疑问的特权阶层。反讽的是,我知道倒有不少人借助这种信息特权不断强化“我很可怜”的印象,说来说去说得连自己都相信了。
正因为具有经济与信息的双重特权,科技工作者对自身社会角色的错认、科技工作者的自我贬低、科技工作者社会责任感的缺失,不是一个无关紧要的问题。我在另一篇博客里写过,《谍影重重4》这个片子里有这么一段对话:
A: There you are. There’s the signal.
B: Signal is hot, solo, signal is up and live.
A: It’s about an hour, it’s mine.
B: Copy solo. Strong signal.
A: What’s our timeframe here?
B: 15 minutes plus or minus.
这两个是什么人?他们讲的是什么?答案是“无人机”,两位专业人士正在用科技的、中立的、不带感情的专业术语操作无人机去杀人。在我看来这就是一个缩影,集中展现了当今社会专业人士、科技工作者对于“目的”的疏离。但正如前面所说,这种疏离不是一个无关紧要的问题,尤其对于像中国这样一个存在大量的贫穷、落后、不公正的国家,具有经济与信息双重特权的科技工作者不能正确面对自己的社会角色,不能对社会做出应有的贡献,这本身就是对于不公正的一种支持。
来自印度的公益卫生组织JSS(http://www.jssbilaspur.org/)的一位医生说,专业人士对社会问题的态度有三类:(1)不了解;(2)了解;(3)行动。从不了解到了解、从不关心每天工作的意义到思考自己的工作对社会造成什么影响、从思考到行动,这是一个旅程,是重建科技工作者在社会中角色的过程。“社会责任”不仅仅是企业的口号或者形象工程,更重要的,回答“我每天做的事究竟是否/如何影响这个世界”的问题,这是每个人自己的旅程。
(写这篇主要是为了给网易云阅读的专栏定个调。以后还是多写点具体而微的实在事情,少写这种抽象而不讨喜的文章好了。)
-
毕业了,该走出舒适区了
在川大校招的时候,宣讲还没开始,有个小伙子来问我:“你们招的软件开发职位,用什么编程语言呢?”
“就是主流的编程语言,Java啦.NET啦什么的。”我回答他,“怎么,为什么关心?”
“噢,有Java是吧,有Java就好……”小伙子自言自语。
“为什么有Java就好?”
“我学过呀,我要找个用Java的开发工作。”说着小伙子自顾自地走开了,留下我在回味。
宣讲会的问答环节,又有个小伙子问我同样的问题:“你们招的软件开发职位,用什么编程语言呢?”
我同样反问他:“你为什么关心?”
“因为我只学过C,如果你们用Java什么的,不用C的话,我怕我搞不定。”
于是我对他、对参加宣讲会的几百名应届毕业生这样说道:
“其实企业里用什么编程语言这事儿你们根本没必要问。为什么没必要问呢?因为你们在学校里学的那点儿东西,对于我来说就是约等于零,你们在我眼里就是啥也不会的白纸。只要你们没在学校里学到坏习惯我就已经谢天谢地了,我根本没指望你们有什么实际的本事。”
“你们听这话可能不服气。那么你们自己想想,你们做过多少有人真正为它付钱、真正使用它的软件?你们写过多少自己敢说为之骄傲的代码?——我知道少数人有,大多数人呢?我看到有人在会心地笑了。这就是你们的真实水平:约等于零。”
“那么对着一大群约等于零的白纸,我到底来招聘什么?我告诉你们,我来招聘的是潜力。我想要的是高智商、态度积极进取、为人正直善良的未来之星。这样的人不管到哪里,不管学什么都会很快。所以我希望看到你们展现的是潜力和热情,我有时间有方法来培训你们的能力。”
“所以,你真的想抱着学校里学到的那点点本事一直吃下去吗?第一,靠那点点本事,吃不开,你反正还是得学;第二,太在意自己已有的那点点东西,在我看来,就是在暴露对自己学习能力的缺乏信心。”
“这个世界变得很快,IT行业就变得更快。如果你真想在IT这个行业里长时间地干下去,你就得不断地学习。毕业,工作,这不是你学习生涯的结束。恰恰相反,现在你得告别过去那种低效的、安逸的学习方式,这是你持续一生的学习生涯的一个新起点。不管任何时候,如果你认为自己已有的知识、技能可以给你圈出一个舒适区,可以不用再学习不用再探索,北电、摩托罗拉、诺基亚……活生生的例子就摆在面前。”
“毕业了,该走出舒适区来面对这个真实的世界了,拿出点斗志来,开始学习吧。”
-
医疗信息交换生态系统概览
(以下内容基本都针对经济欠发达国家)
医疗信息交换(Health Information Exchange,HIE)是在国家范围内共享医疗信息的IT系统。整个HIE不是一个IT系统可以承载的,这个IT生态系统由几大块IT应用组成:参考数据、国家级信息系统、共享医疗记录和前线医疗系统。
(以上架构参考了OpenHIE的架构概念)
参考数据提供相对静态的信息给其他IT系统作为参考,其中包括(以及主要的开源实现):
- Location Registry:可以用InSTEDD Resource Map实现
- Medical Terminology Registry:可以用OpenMRS实现
- Facility Registry:也可以用InSTEDD Resource Map实现
- Provider Registry:可以用iHRIS实现
- Master Patient Index:”OpenEMPI”: http://www.openempi.org/?page_id=7 就是干这个的
国家级信息系统跟医疗不直接相关,可以暂时略过。在前线医疗系统这块,首先是面向社区医疗的系统,通常是基于移动技术的IT系统(mHealth),开源的实现有RapidSMS、CommCare、MOTECH等等。接着是用于医院的开源解决方案,包括管理病人信息的OpenMRS、管理医院行政信息的OpenERP和管理实验室信息的OpenELIS等。
然后就是最核心的共享医疗记录(Shared HealthRecord,SHR)了。嗯,国家级别的共享医疗记录,到目前为止没有任何一个国家成功实施过。卢旺达号称实施了,其实只连通了7家医院……SHR的关键在于它的数据量会很大,因为它实际上就是覆盖全国人民的所有诊疗信息,所以关系型数据库基本上是不行的、NoSQL基本上是必须的。而卢旺达实施的SHR,是基于OpenMRS做的,究竟数据量大了以后能不能撑住,还有待考察。
(继续学习OpenHIE中,未完待续……)
-
人在职场,要跟对领导
从一个辍学的本科生开始,我在职场打拼转眼已十二年了。在这十二年里,我最感激的就是遇到了一些优秀的领导,在他们手下工作的经历不仅对我的职业生涯、甚至对我的人生都产生了重大的影响。今天我就想分享一下我对于“跟对领导”这件事的想法。
识别谁是你的领导
步入职场第一步,你得找出到底谁是你的领导。这事儿说起来很简单,放到现实环境中不一定那么直接了当。你的领导可能是你的直接行政主管,可能是你的项目主管,可能是职位上高你两三级的某个副总,可能是公司总经理,也可能是就坐在你旁边没有任何行政级别的一个普通同事。
我的定义是:领导就是给你的工作提供意义的人。你每天做的工作究竟是为了什么?做到什么算“好”?谁负责回答这些问题,谁就是你的领导。
我在刚加入《程序员》杂志社的时候,首先是在技术版块里做文字编辑和校对,以及组织一两篇小文章。那时技术主编王行舟是我的领导,他会判断我的工作是否让一本杂志的技术版块增色。后来我负责“技术专题”这个大栏目,判断的标准就变成了整个专题的选题是否符合当期杂志的导向和广告销售的需要,于是我的领导也就变成了总编蒋涛和广告主管唐琦。这就是一个例子:领导有可能是一个人,也可能同时有两三个领导,还可能会不知不觉地改变。谁定义你工作的意义,谁就是你的领导。
坚定地跟着领导混
既然领导定义了你工作的意义,你的工作重心就很明显了:弄清领导对你工作的期望,然后想尽一切办法达成这个期望。彭萦在“改变自己”微信里说,“如果你是一个职场新手,对你来说最重要的事情就是对你的老板来说最重要的事情,最紧急的事情就是老板最紧急的事情。”就是这个道理。
不光工作任务,对待公司的规矩也是一样。很多人(尤其是理工科学生)以为公司里做事一定要讲规矩,遇到任何事首先想“公司有什么policy”,其实这是本末倒置:规矩都是人在定、人在做,所以做事首先是要看领导给你什么规矩,在领导的规矩之外才考虑公司的规矩。
逻辑思维强的人可能会很不习惯:领导的想法没有写成书面文件,我怎么知道他想什么?答案很简单:一定要多跟领导沟通。做什么事、有什么风险、有什么担忧、要守什么规矩,你的想法都要让领导清楚,这样他才能指导你。不要担心领导没时间搭理你,只要你的工作是他工作中的一部分,他一定会想知道你的状态。当然跟领导沟通要有方法,这里不详说了。
也许有人会担忧了:把领导放在公司规矩之前,要是惹出娄子怎么办?你放心,如果是一个好领导,你惹出娄子他会帮你兜着。那要是领导也顶不住怎么办?要是领导因为不合公司规矩被开了怎么办?还是放心,如果他是个好领导,你是个好下属,最坏的情况不过是他换地方你就跟着他走,他不会亏待你。要做事,先做人,遇到对的人,不怕不成事。
找一个好领导
所以你真的得找一个好领导。尤其对于职场新人而言,好领导比好公司、好部门、好岗位都重要得多。好领导有很多种,我就拿我自己的经历,列一些好领导的特征供大家参考。
第一,能给下属顶责任。只要你跟领导充分沟通过,你捅了娄子,他会帮你承担责任,因为你做的是他的事。如果你发现你的领导不能帮下属承担责任,捅了娄子直接推给下属受罚,那你就要小心了。
第二,能让下属享成就。事情做成了,一个好领导会把做事的下属推到前台享受掌声。领导自己那份名利收获是无论如何跑不掉的,如果他贪心到把所有功劳都揽在自己身上不给下属分享,这个领导是很有问题的。
第三,能给下属做指导。领导通常在工作能力和人生经历上都超过下属,一个好的领导会给下属指导,不光教做事,还教做人。话也许不多,但是点在关键上,能胜过自己一年奋斗。
第四,能帮下属开眼界。一个好的领导能让涉世尚浅的下属看到自己看不到的东西、接触到自己接触不到的圈子。我刚进入职场,蒋涛就带我认识IT圈的若干大牛,听他们指点江山;在ThoughtWorks的领导郭晓是参加达沃斯年会的级别,他不时会找一些讲全球经济的文章叫我读。跟着这样的领导,眼界自然会高,想问题的层面都不一样。
第五,能教下属做好人。短期来说可能并不重要,但长期来说,领导的品行对下属会有很大的影响。跟着一个理想高远、大公无私的领导受熏陶,自己也能少一点布尔乔亚的自恋自哀和低级趣味。
我算是运气很好,在职业生涯中先后遇到蒋涛和郭晓这样的好领导,从他们身上收获很多。不过即使是职场小菜鸟,有心的话也是有能力选择自己跟哪个领导的。我曾经在杭州一家软件公司干过一年多,一开始跟的项目经理人很不错,后来自己也成了项目经理以后就发现这家公司的老板没多大眼界也给不了我多少指导,于是我就果断闪人了——决定不了跟哪个领导,至少可以决定不跟哪个领导嘛。