管理者到底是干什么的

引子

最近前JAVAEYE的老大Robbin写了一系列管理方面的文章。Robbin曾多次在论坛上表示过对CSDN的不屑,却不想在两年前上演了JAVAEYE被CSDN收购这一出。想必其中各种滋味只能是如鱼饮水冷暖自知了。
不管怎样,看Robbin最近的文章,感觉在CSDN的这两年对Robinn而言还是有不少的收获。在这两年间Robbin完成了从一个创业者到管理者的转变。

正文

管理者到底是干什么的,应该干些什么。下面是一些还有待整理的零碎想法。

  • 为下属创造良好的工作环境
    • 道家推崇不治之治,最优秀的管理者应当让人感觉不到被管理。就如党宣传的那样“人们的公仆”。管理者应当是一个后勤的角色,而不是高高在上。管理者应当主动协调跨部门的工作,尽量避免组员因公司政治而影响工作。积极为组员争取应当的利益,保证组员的积极性。
  • 乐观的心态和强大的内心
    • 困难总是难免,很少会有事情是一帆风顺,也很少有事情是必定成功。但如果一件事情做之前就不被看好,那多半都得失败。管理者应当成为团队的精神支柱。管理者应当有乐观的心态和强大的内心将问题一肩扛下,让团队成员相信希望就在前方。
  • 原则
    • 管理者应当有自己的原则有自己的底线,知道哪些问题可以妥协哪些问题不可以妥协。一个没有原则的人很难让人信任,也很难会有说服力。
  • 识人,发挥每个人的长处
    • 管理,说到底还是在和人打交道。人无完人,合适的人做合适的事。管理者需要摒弃个人偏好,尽量去发掘每个人身上的亮点。在发挥每个人的优势的同时将缺点的副作用减到最低,做到物尽其用。
  • 招到合适的人
    • 很多管理书籍中都提到招聘的重要性。一个不适合团队文化的组员会给团队带来极大的副作用。对已有组员你可能只要认命,然后尽量做到“物尽其用”,但至少在招聘时你应当尽量避免让这样的悲剧发生。
  • 远见与决策
    • 战略与战术。你可能每场仗都打的很漂亮,最后却输了,这就是战略与战术的区别。如果方向错了,走的越远错的越多。管理者应当有足够的远见,知道该往哪走。
  • 2、8原则,知道什么是真正重要的事
    • 相比普通员工,管理者不可避免的要处理更多的琐事,因此更应当知道哪些事情是重要的。根据2、8原则,真正重要的事情不会太多。应当用80%的精力去处理20%重要的事情。重要的事情又分为紧迫以及战略意义上的重要。

其他

留不住新员工的公司

Robbin的文章中有一句“留不住新员工远远比留不住老员工可怕”,深表认同。铁打的营盘流水的兵,很多公司领导认为只要公司的核心员工不流失就没关系。但如果一个公司如果无法留住新员工,至少说明这个公司是缺乏足够的活力,无法吸引到优秀的人才。或许危机不会立刻出现,但公司已经很难继续前进。

关于生命体(生物?)的一些随想

记忆

记忆就像无数的抽屉。人们将“东西”随意的对方在这些抽屉里,并为这些抽屉打上各式各样的标签。人们通过标签来查找并取用。有些抽屉用来堆放临时物品,用过即弃,或是有新东西要放时就将原抽屉里的东西丢掉。对哪些经常需要用到的东西,就多打上些标签并放到显眼的地方。
有时候我们也会随意的翻弄着这些抽屉,把抽屉里的东西拿出来加工成新物品,这就是所谓的思考。
只是记忆远比抽屉来的复杂,我们总在不经意间打开某些抽屉。我们不知道自己的抽屉里到底都存放着些什么,也不知道还能翻出些什么。

生命

某日公交上放着“张自忠”将军的记录片,讲述着张自忠殉国的过程。这本是个悲伤故事,该有些更积极的联想,我却莫名的联想到了生命起源之类的问题。
所谓的生命体其实是个很奇特的东西。
给生命体一个简单的定义:一个有机物的整体,可以按照一定的方式演化出和自己类似的新个体,游戏的规则只有一个,将自己的火种一直传下去。(注:扩展下去,一个物体只要能持续的自行演化就可算作生命。)
死亡也是一个很奇特的东西:这些叫生命的有机体可以以一定的方式同外界进行物质交换来,实现自身的更新。有时候这种更新会停止,即所谓的死亡。就拿人来说,窒息等方式可以让一个人死亡。死亡前后,这个生命体的物质组织结构几乎没有什么变化,却无法再次启动。
如果有一个造物主,最开始他有的只有一些最基础的“乐高积木”(夸克),从某天起他开始摆弄这些积木。将这些积木组合成更复杂的东西,于是有了更多的元素以及星球啥的,然后有了地球。日升日落,高山流水。不过这个世界还是太寂寞,于是这个造物主想玩些新东西,让这个世界以更复杂的方式自行演化。于是他开始了一个新的游戏,进化。游戏的规则很简单,活下去。这游戏一直从几亿年前玩到现在。游戏发展到今天,游戏的参与者又在游戏中玩着所谓改造世界的游戏。

热力学第二定律告诉我们这世界总在向最大混乱的方向发展。把糖丢到水里,糖很快就会化在水里,所谓的熵增加了。但当水蒸发后,糖又从水里析出。或许死寂是宇宙的最终归宿,但至少在这过程中各种物质还会上演着各种分分合合。而且我也不太相信所谓的死寂。死寂的宇宙就如化入水中的糖,终会以自己的方式从水中析出。

生命游戏

DNA出错可以产生“变异”,生命体可以通过这些“变异”进行进化。程序出错就基本上跑不起来了,所以要让程序自行进化很难。不过不知道是是否能做出一些基于生命进化的游戏。设置合理的规则,然后让程序产生一定数量的“生命体”。这些“生命体”为空间、资源等进行争夺和厮杀。这些“生命体”和世界中的“生命体”一样可以繁衍和进化。
游戏的规则必须很简单,又必须给予“生命体”足够的成长空间。生命的意义就是因为不可预见性才变的有意思。让这些“生命体”自由的成长,看“他们”到底能给我们带来些什么。

free youself

有时候会忽然想到一些非常“奇怪”的词语。也许是距离产生美,越是“奇怪”的词越容易按照自己的方式进行注解。会有类似“格物致知”这样词的出现或许正是同样的道理。
free youself

  • 解放思想,以开放的心态去认识这个世界。
  • 人本就有无限的可能,抛弃自己为自己设定的边界。
  • 事情很多,但重要的事情不多。让自己从琐事中解脱出来,看清真正重要的事情。

迁移到python3

python3自2008发布以来,已经历经了快4个年头。python3发布初期的速度慢,第三方开发库少的问题已得到了很好的改善。似乎已经没有太多的理由死抱着python2不放了。
考虑到目前的大多系统还都跑在python2.x上,直接迁移到python3还是有些冒进。最理想的方式是新代码都可实现python2&python3的兼容,日后可以平滑升级。下面的一些资料可以帮助你实现到python3的迁移。

黑客News

在SAE上架了个wordpress博客,用来做阅读分享。
黑客News 是一个关于“互联网、编程、创业”的团队博客。我们在这里分享我们认为有价值的文章以及我们认为有趣的东西。
全文转贴导致互联网上有着太多的重复、垃圾信息,因此博客上只发布原创内容。对于第三方的优秀文章,我们将只写内容摘要或推荐理由。

为博客增加Markdown支持

前些天给ipad买了个蓝牙键盘。想日后短途旅行可以直接带上ipad,配合蓝牙键盘,整理照片发博客啥的无压力。遗憾的是ipad上并未找到什么好用的wordpress客户端软件。
wordpress的官方ipad客户端只支持原始的html,使用原始html写博客完全没有书写的乐趣。
Markdown 是一种「标记语言」,通常为程序员群体所用。Markdown的语法比html要简单很多,相应的写起来也要舒服很多。
我通过插件Markdown on Save Improved,实现Markdown的支持。Markdown的语法参考:php Markdown Extra
这篇文章就是用Markdown所写的。
调整博客的字体以及字体大小

body{font:75% "Palatino","Georgia","Hiragino Mincho ProN","Microsoft YaHei","WenQuanYi Micro Hei",serif;...

读《优势谈判》

期望简单的生活,付出总能得到相应的回报。只是世界本是复杂的,如果单纯的将事情简单化,事后多半要为此付出不小的代价。为了让付出能获取应有的回报,谈判是其中的手段之一。

或许很多人认为日常生活中接触谈判的机会很少,事实上你每天都在面对着各类的谈判,只是你并未察觉而已。公司间的讨价还价是谈判,找公司谈加薪是谈判,买东西的砍价也是谈判,和孩子协商零花钱的多少是谈判,甚至在你尝试说服他人的时候都是谈判。

在以往的生活中有着实在太多失败的“谈判”经历,于是找了本关于谈判的书来瞧瞧。

《优势谈判》,书名就已经透露这强烈的成功学味道,书中无处不在的自夸与“优势谈判”更是将成功学的味道发挥到了极致。抛开对成功学的偏见不谈,这书还是有部分可取之处。

在书本最开始几章中谈到基本的谈判策略。这些基本的谈判策略让我有些大跌眼镜,有些“武功再高,也怕板砖”的感觉。其中大多都是大妈们砍价的常用招数,大妈们在砍价时已经将这些招数发挥的淋漓尽致了。

  • 开出高出预期的条件 地摊小贩们的开价总是高的离谱,大妈们的还价则是当仁不让的低。
  • 黑脸白脸 如果是两人砍价,常有一个一直在“劝”对方别买。
  • 走开 对方不肯降价时,假装走开,等下接着再战。
  • ……

书中有几点还不错的地方:

  • 应对困境 真正的死胡同是很少的,大多看似死胡同的问题都只是困境而已。在面对困境时可以先避开矛盾,从一些更容易达成共识的问题入手,努力寻求问题的解决方法。如果太过着眼于问题,而无法取得任何进展的话,困境就真的很可能变成死胡同了。
  • 别贪小便宜 在对方犯错的时候别以为自己有便宜可以赚,应当尽量提醒对方。不然事后对方“假装”发现了自己的错误要求纠正,那你就有麻烦了。

和非美国人谈判的技巧,这章有些意思,里面提到很多国家的特点。里面谈到“语境”一词,及同样的话放在不同环境中意思的差别。”低语境”标示同一句话在不同环境中表达的意思差别不大,“高语境”则相反。美国是“低语境”国家,中国是“高语境”。在美国文化主导世界文化的今天,中国很多所谓的“西化”其实更多指的是美国文化。

谈判类型:

  • 一锤子买卖 地摊上的砍价很多时候就是一锤子买卖。这时候只要能获得最有利自己的结果就可以了。
  • 双赢谈判 如果这次交易后还有后续,那最好能获得一个让双方都满意的结果。我们在日常生活中遇到的大多谈判都属于该类型。比如公司和员工谈薪资。公司当然希望用最少的钱招到最好的人。但如果开出的价钱真的太低,就很难保证员工安心工作不跳槽了。不幸的是很多公司似乎并没有意识到这点,等到员工已经铁了心要开溜时才发现问题,这时已经为时已晚了。

我的博客史

前些天看了下自己的博客,本博客第一篇博客的发布日期是2005-08-05。

一不小心已经近7年了。

这个博客最早托管在微软的msn space。msn space使用体验非常糟糕,而且访问速度也不怎么样。终于有天不堪受虐,买了个虚拟主机自己托管,博客程序也切换到wordpress。有朋友说我在博客中流露了太多心情,所以在迁移的过程中删除了不少生活相关的博客。

在这个博客前,还曾在天涯写过博客。博客的更新日期为2005-1-5~2007-11-8。这是一个介于微博和博客之间的博客,一个纯粹关于心情的博客。里面写有我的困惑与纠结,写满了我关于青春的记忆了,写着类似“人生如戏,戏如人生”的词句。博客的创建日期是2005-1-5,不过里面的不少文字写在2004。当时在天涯的一个分版中开了一篇帖子用来写心情。后来在开头天涯博客后将其中的内容转到博客。帖子的发表日期在2004-8-1

再往前追溯就是我的个人主页了。在学校时有写一些小软件,为自己的软件做了个网站。在每次软件发布的时候都要写个简单的发布日志。从现在的角度看,那些所谓的发布日志倒更接近微博或博客。在2002年左右网上有着非常多的免费个人主页空间,我的个人主页用的就是免费资源。随着互联网泡沫的破灭,互联网上的免费资源也都消失殆尽。花了¥100买了个静态主页空间,将个人主页迁了过去。此后因为没有续费,空间关了,再加上后来的硬盘灾难,数据应当是彻底的找不回了。

使用反向代理为SAE“绑定”顶级域名

朋友的VPS服务器近期经常出现内存超标的问题。想我的SAE免费资源闲着也是闲着,于是将上面的博客迁移到SAE平台。
SAE商店中的wordpress可以免费安装使用。受SAE平台的限制,SAE版的wordpress有部分功能限制,比如可用的主题也就那么2~3款。另外一个比较大的问题是无法绑定域名。解决该问题的方法之一即是使用反向代理。
我的虚拟主机上用的是apache,下面是相关设置。
httpd.conf

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule wsgi_module modules/mod_wsgi.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

.htaccess

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule ^(.*)$ http://domain.sinaapp.com/$1 [P]

SAE部署Django1.3应用问题总汇

花了些工夫将碎片网部署到了SAE,中途遇到各类问题。感觉SAE看上去很美,实际上却并不是太成熟(至少python版如此)。
下面记录下我遇到的一些主要问题以及解决方法。

django版本问题

Django1.4都即将发布了,SAE平台自带的SAE版本依旧为1.2x。为使用django1.3版本,你需上传自己的django。具体做法可参考SAE手册中的runtime.html#virtualenv

日志模块出错

最先遇到的是日至模块的问题。错误显示AdminEmailHandler中构造某个类时带了is_mail这个参数,但目标类的构造函数根本就不支持。好在日至模块不是必须。将日至处理模块换成django.utils.log.NullHandler解决问题。

'null’: { 'level’:'DEBUG’, 'class’:'django.utils.log.NullHandler’, },

local_thread问题

在index.wsgi中加入

import threading
from django.utils import _threading_local
threading.local = _threading_local.local

settings文件

SAE默认安装了不少python包,其中包括django-userena。糟糕的是SAE将django-userena的demo项目也加到了python路径,而且加载的优先级比项目代码还高。直接导致os.environ[‘DJANGO_SETTINGS_MODULE’] = ‘settings’找到的是userena的settings文件。最终将settings文件改名为qnotes_settings.py解决该问题。

其他问题

  • 昨天部署上线后经常出现数据库错误,错误提示为Caught OperationalError while rendering: (1045, ‘access deny’)  。SAE数据库不支持长连接,30s后主动超时。但django本就会在每次请求后自动关闭数据库连接,理论上不应当出现类似问题。该问题今天莫名其妙的自己好了。
  • 服务器非常不稳定,经常长时间的无法访问,不定期的可以正常访问。
  • SAE可能hack了python的包加载机制的原因,SAE的python包的加载行为有些奇怪。本应当最先加载当前目录下的包,实际上却不一定。