硬件环境:
- 开发工程师:Retina MBP 13 寸(8 GB 内存 + 2.6 ~ 2.8 GHz i5 CPU + 256 ~ 512 GB SSD) + Dell U2312 HM (23 寸,1920 x 1080 分辨率)。
我当初入职时是 MBP 13 寸(8 GB 内存 + 2.9 GHz i7 CPU + 512 GB 机械硬盘),现在入职都变成 Retina 屏了,电脑坏了或淘汰了都可以换新的 rMBP。
我平时主要盯着 Dell 显示器,MBP 的屏幕一般是放聊天窗口和邮件等,也就没在意了。
性能上的不足之处是没有 SSD,除了开机慢倒也没啥,反正我几个月才关机一次(为了更新系统)。 - 测试工程师:Retina MBP 13 寸 + Dell U2312 HM。
福利是有几十台测试机,包括各种 iPhone、iPad、iPod、Android 机型,可以自己用。
还有一些 Mac Mini 用来做测试和构建。 - 产品设计师:iMac / Retina MBP 15 寸 + Dell U2312 HM。
两者二选一。之前是都配 iMac,直到有的人需要移动性,就换 MBP 了。
大部分开发工程师不用鼠标,一部分会自带机械键盘。
笔记本电脑可带回家办公,也可使用自己的电脑。
如果觉得配置不够,还能加钱升级配置。离职时按 3 ~ 4 年(忘记具体年限了)折旧返还剩余金额。如果使用满 3、4 年,可以当成个人财产带走。
软件环境:
对测试和产品设计不了解,就只说开发了。
- 操作系统:OS X。
此外还有
@高昌健 提到的 Zhihu Boxen,用来提供开发环境的虚拟机,避免因 OS X 与 Debian 的不同,而导致上线时遇到兼容性 bug。
不过知乎日报并没有使用该工具,因为使用的库兼容性比较好,也不需要那些附加的功能。另一个原因是我不喜欢用虚拟机。 - 编辑器 / IDE:
后端:大部分用 VIM,少数用 PyCharm,还有一小撮用 Emacs。
前端:Sublime Text、TextMate、Atom、VIM、PyCharm。
iOS:XCode、AppCode。
Android:Android Studio。
基础架构:VIM、Emacs。 - 版本控制:Git。
入职当天就能访问知乎主站的代码了,没有什么需要对自己的员工保密的代码。 - 通讯:Slack、Google Talk、Email、电话。
很多内部服务会和它们集成。 - 任务管理:Phabricator。
Web 开发流程大致是在 Phabricator 上建立 task -> 提交 diff 并关联 task -> 单元测试 -> reviewer 审查代码 -> 合并 diff -> 上线测试 -> 关闭 task。
某些项目、服务因为人手不足,只有一个开发者,连 reviewer 都没有,所以不一定会用这么复杂的流程。
至于移动开发和基础架构的开发,我就不甚清楚了。 - 部署:
Web 后端:
本地部署就不提了,提交 diff 等待 review 时会触发事件,CI 可根据配置自动构建代码并测试。
主站需要上线时,使用内部开发的 Heroin 系统选择上线到测试环境或生产环境。随后,Heroin 的 bot 会在 Slack 里通知上线的情况。
其他项目和服务暂时没那么好的待遇,需要手动去上线(其实也就一行命令),用到的工具大致是 Fabric + Buildout + Supervisor + Gunicorn + Tornado。
Fabric 用来执行远程命令,根据事先写好的脚本,执行更新代码、构建、关联配置、重启应用等事项。
Buildout 用来安装 Python 的第三方库。搭建了私有的 PyPI 源,用来加快下载代码的速度,以及发布私有的库。
Supervisor 用来管理应用的进程。
Gunicorn 主要是用来在服务器内做负载均衡的,比直接挂 nginx 的效果好。
Tornado 用于运行 Web 服务。
移动客户端:
不是很熟悉,只能介绍一些我看到的。
需要构建 iOS 客户端的测试版时,会往一台 Mac Mini 上发起命令,然后自动开始构建。构建完成时,会语音播报更新内容,提醒大家更新;并且邮件发送更新通知,可以用 TestFlight 更新。
不过 TestFlight 被 Apple 收购后变得不好用了,于是改成在 CI 上发布测试版了,可在网页上直接安装。 - 辅助工具:
日志:使用内部的 Kids 服务,将 logging 收集到日志服务器。可在 Web 页面实时监控已订阅的日志,或者搜索所有的错误日志。
性能监控:使用 Graphite 和 descartes 展示 statsd 发送的记录。
警报:通过短信、邮件、Google Talk、Slack 等各种方式通知相关的负责人,内容有可用内存不足、硬盘剩余空间不足、load 过高、任务队列过长等。
日报:通过邮件发送一些技术指标。
还有一些工具看上去配置好复杂,不会用=。=
网络环境:
- 能正常访问 Google、Twitter、Youtube……
- 平时网速还好,遇到萌妹入职导致一堆人转发带照片的邮件,或者 OS X / iOS 发布新版本,就很蛋疼了。
- 有专职网管负责解决各种疑难杂症。