大连开发组开发流程及注意事项说明

1,开发过程中注意要遵守以下流程:

需求分析(邮件或者文档);设计(设计文档,小组设计评审,任务分派,截止时间确认);编码(daily report, daily check in, daily code review);收尾阶段小组代码评审;需求验证;测试完成(测试计划及结果);签收;项目总结。

2,如果感觉任务比较复杂,问题比较棘手,自己研究了一会没有很好的解决方案。请马上联系我或者咨询组里其他同事;如果组内同事也解决不了,再求助国外同事。先发邮件说明问题,紧急的任务马上搭建电话会议保证及时沟通。

3,尽量避免同时做三个及三个以上的任务。确保自己有足够的时间完成任务。

4,项目流程方面,如果觉得需要有例外,比如不写什么文档,不做什么评审,请事先与我讨论。

5,在开始阶段对最后整体实现效果有大致理解,可以预估技术难点所在,并且实现进行研究和求助(这一点我们做得很不好)。对于项目可能有的需求变化有一定的预估和计划。

6,细致,仔细,认真;多思考,多学习,多沟通。

7,允许犯错,但是要确保同样错误不要再次出现,从问题中吸取经验教训。

8,及时回复邮件。到办公室后第一时间检查邮件和calendar当天会议安排。对于重要邮件,应该记录在本上作为TODO

9,离开公司前,检查当天TODO任务,是否有邮件没有回复,是否有重要任务没有完成。

10,对我或者任务负责人的具体分派有疑问,可以讨论提出。如果已经拍板决定,就必须遵守决定,而不是按照自己想法我行我素。

11,随身带一个笔记本,随时记录问题,心得体会,TODO,解决方案等等。

12,每天的工作都应该有结果产出。学习应该有文档总结汇报,项目应该有流程设计文档/代码/测试文档,项目进度有每日进度报告。

 

避免以下情况发生:

1)  将就,马马虎虎,不求完美。

2)  需求不清楚,也不与onshore沟通澄清。

3)  任务不清楚,就开始动手编码;时间管理不好,没有缓冲,截止时间定于最后一秒。

4)  没有设计讨论,自己觉得没有问题,直接开发。

5)  有问题,不做优先级分派,先开发了再说。

6)  代码一直没有check in,累积三五天再提交;需要check in的时候,一次加入大量的代码修改。代码check in没有评审,也不做说明。

7)  代码不注释,命名不规范,不关注静态分析/debug exception。

8)  “我觉得没问题,但是没有check”

9)  代码写完了,就认为是项目完成了;也只写了代码,没有设计没有文档没有测试

10) 只有最后阶段才有问题,在开始时不考虑如何技术实现或者觉得不会有问题,不做风险评估

11) “代码为什么好用?不知道;出问题的root cause?不知道”

12) “这段代码干什么用?别人就这么写,我不知道,没研究过”

13) “这个问题好像是,也许是,我猜”

14) (讨论决定使用方案A,开发一段时间后)“我觉得这样更好,所以我就用自己这个方案,方案A有问题,如何如何”

Lua编程学习及资源

1,Lua学习用什么书?

推荐《Lua程序设计》(简称PIL),译者@周惟迪 (搜Weibo),可以在淘宝上搜到卖家。比如 http://item.taobao.com/item.htm?id=13569912375

也可以在网上搜到中文版文档,另外可以看手册http://www.lua.org/manual/5.1/ 如果新学Lua,可以直接看Lua5.2的手册 http://www.lua.org/manual/5.2/

2,Lua编程相关博客和网络链接?

国内一直推Lua的高手只有云风 http://blog.codingnow.com/ 我这里也写了一些Lua相关的普及性内容 http://sunxiunan.com/?cat=21

推荐Lua学习者必看的网站,http://www.lua.org 是首选,可以下载源代码,书籍;还有邮件列表的链接 http://www.lua.org/lua-l.html 建议大家加入讨论,其中有[ANN]标记的是项目发布通告,另外技术讨论也非常深入;Lua的wiki也值得经常光顾 http://lua-users.org/wiki/ 比如这个FAQ就很有价值 http://lua-users.org/wiki/LuaFaq ,还有一个比较完整版本的FAQ在这里 http://www.luafaq.org/ ,我也有一个中文版的LuaFAQ在这里 http://sunxiunan.com/?p=1515;最后建议大家经常看的网站是github.com,搜索Lua关键字就可以找到很多开源项目。

3,Lua安装程序?

Ubuntu以及Debian下安装 http://sunxiunan.com/?p=1529 ,也可以直接用apt-get安装。

Windows下的安装可以安装http://code.google.com/p/luaforwindows/这个集成安装包,里面的第三方库有些旧,但是一般使用也足够了。

4,我博客中关于Lua编程的部分文字推荐

http://sunxiunan.com/?p=2044 Lua的优点以及与Javascript不同之处

http://sunxiunan.com/?p=1949 Lua和Python协程相关资料

http://sunxiunan.com/?p=1919 Lua非官方FAQ翻译

http://sunxiunan.com/?p=1681 Lua Unicode(wiki翻译)

http://sunxiunan.com/?p=1680 static link luasocket into lua with VC2010 under windows,静态链接Luasocket到Lua可执行程序中

http://sunxiunan.com/?p=1654 【译文】比较Lua协程与Python生成器

http://sunxiunan.com/?p=1597 谈新技术学习方法-如何学习一门新技术新编程语言

http://sunxiunan.com/?p=1503 Lua Wiki 部分翻译 — Lua源代码

http://sunxiunan.com/?p=1498 How to create c extension for lua and pass complex structure step by step

http://sunxiunan.com/?p=1447 勿用屠龙来杀猪-论如何正确整合Lua与C++

http://sunxiunan.com/?p=1358 Lua代码阅读(1),可惜烂尾了

http://sunxiunan.com/?p=1258 Lua通过COM调用外部程序excel及调用windows api

5,有趣的Lua开源项目推荐

第一名当然是LuaJit http://luajit.org/ 最新版本Luajit2.00 beta10,有人把其中的FFI抽取出来做成了单独项目,可以在github上搜到。

http://openresty.org/ 这是@agentzh 的项目,基于Nginx和lua-module做的一个整合包,如果是新的大并发系统,很大力推荐使用openresty。

https://github.com/keplerproject/ Lua web开发相关的一个项目,包含不少子项目。其中Luafilesystem和Luarocks很知名!

https://github.com/stevedonovan/Penlight Penlight是一个对Lua标准库的扩展,有点类似Jquery对于Javascript的作用。

https://github.com/fab13n/metalua metalua,给Lua加上了强大的元编程能力(metaprogramming),0.5版使用Lua实现,不需要修改Lua代码了!

https://github.com/antirez/redis redis的2.6版本包含了Lua脚本能力

https://github.com/kripken/emscripten 可以将Python,Lua通过llvm编译成javascript

https://github.com/leafo/moonscript 就相当于coffeescript和javascript的关系一样,一种新的语言,可以编译成Lua代码。

另外有个项目Lua2c可以把lua编译成c,这个比较简单,一搜便有。

https://github.com/LuaDist/Repository 最新出现的Lua安装器,下载后编译一条龙服务,类似nuget,gem,easy_install这些程序,Windows下也可以使用(mingw)。

https://github.com/luvit/luvit 仿造node.js,用Lua代码进行高并发编程

https://github.com/jmckaskill/luaffi 前面说的从luajit抽取的ffi项目

https://github.com/LuaLanes/lanes Lanes is a lightweight, native, lazy evaluating multithreading library for Lua 5.1

http://www.lua.inf.puc-rio.br/luagravity/ Lua下的async,await,这个项目应该很好玩,但是我没仔细看过。LuaGravity is a reactive language that implements the synchronous approach for concurrency. It is roughly based on Esterel and FrTime, two synchronous reactive languages, the former having an imperative style, the latter being functional.

https://github.com/chaoslawful/lua-nginx-module Nginx的Lua模块,openresty的核心部分,其中cosocket是利用协程实现的socket,好处是什么,我也不知道啊(因为服务器端编程实在很少接触)

总之,

大家可以到 https://github.com/saga/following 看我watch的项目,其中很大一部分是跟Lua相关的。