| Freedo's profileFreedo !PhotosBlogLists | Help |
|
|
Freedo !July 29 software development model和朋友在业余时间做开发小实验,关于软件开发模式有一些想法暂时记录下来。 在一开始的时候依据大公司形成的优良传统,我们用阵地战,认真地规划,详尽的文档,6个月的release计划加上很多的会议讨论。 在做的时候发现不对,越行离目标越远,就好象在早上准备出门,穿好衣服带好装备的时候已经天黑了。 一次偶尔看到ICS在放的"Fake It",7天之内骗过专业人士的一档节目突然受到启发:为什么release不能是三天之后? 三天之后release和6个月之后是截然不同的两个方向,之前受到原先的开发习惯和模式的影响太深,就象在酱菜缸里面泡得太久了,都不敢去想了。接下来刺激自己"Dare to think",如果release 必须是在72小时之后,我们应该做什么? 我们重新去clarify我们的goal,在72小时的框架下,原先的问题就变得简单了,原来很多priority是0的features迅速地退位,重要的目标浮出水面。 基于重要的目标,起草一个大家认同的关于第一个release的vision,列出什么对于我们是重要的,什么不是,用什么标准来衡量达成目标与否。 在以上两点的基础上,每个人分头行动,根据72小时来倒推,以8小时为单位,仔细地规划和利用好自己的时间。把原来的以周为单位细化到8个小时为单位,把时间变得可控,可度量。 在开发过程当中强调结对的practice, 结对设计,边做边讨论。结对编程,至少它比较好地照顾到了团队成员知识水平不一的情况。由相对较弱者来驾驶,较强者来辅导。 强调到时交卷,每周迭代。通过布署两套同时在线的系统,一套专门用于测试,按规定的时间一到,不管代码是否完成,马上check in. 概括起来就是: 集中开发、结对编程、每周迭代、8小时为单位。 之所以采用这种开发方式是由我们的目标、resource、团队特点来决定的。这是一个online的项目,大家平时时间相对分散,在互联网方面的开发经验也不尽相同,project scope又相对比较大等,所以平常所说的阵地战很难开展。采用这种方式就好象是毛泽东提出来的游击战战术:集中兵力、各个击破、运动战中歼灭敌人。本质上都是要认清楚自己的实际情况,一切从实际出发。 当然,《论游击战》中也提出,游击战争要取得胜利,是不能离开它的计划性的。乱干一场的想法,只是玩弄游击战争,或者是游击战争的外行。同时,游击战争和正规战争的要有配合。我们也会apply严格和正规的方法在即便是小项目的开发和实施当中。 May 11 my bias on good PMTo me I tend to belive someone had his own successful business in software startup could be a good PM. Have the chance to eat dog foods like kumo, MSN 9.0 beta, ditu etc, I love to use & feedback, and track how goes with feedback. For instance the MSN space login portal. Yeah, they are improving. 2 sorts of PM sucks: First type doesn't use his own product/service. Second benumbed about user's pain. Doesn't hurt pocket as PM employeed in a large company reacts improperly to customer's pain, but definitely causes money loose for startup owners. simple mistakes常犯的简单错误:
1. 以工具为目的。
在分析竞争优势,制定todo list 的时候,习惯的思维是,自己会什么,然后把自己会的用上。这是惯性思维的力量,当有人随手递给你一杯水,伸出左手接还是右手接?
比如说,对于想开一个网店的人来说,如果刚好他会做网站,习惯的思维会是先做一个网站,来扩大影响。
问题是:做一个网站需要多少投入?对于结果在短中长期内有多少影响,维护的成本是多少?
和直接在taobao, ebay上面开有多少区别?
可以在这里参考 PG 美人网,据说运营的人本身就是程序员。
不会借势,反而会被自己的长处所误。
2. 以所谓全局代替具体分析。
经常会面临选择,有时候是很头痛的二选一。做选择的时候听到过的最简单的方法就是,拿出纸和笔,列出自问自答的十个问题,看针对选项A和B的答案分别是什么。如果做完题还不能得到答案的话,继续问,直到问题穷尽为止。
方法很简单,认真去应用的机会却不多。原因在于自己心里的排斥,自问自答,岂非太主观,能有效吗?因此常常把一个选择题在心里大而空地想关天,期待有天能突然有灵感,其实是浪费时间。
来了上海以后每回一次义乌就有一次感受,似乎我正在上海浪费着自己的机会。根据观察,学位的高低和收入刚好反比。我的同学里面初中毕业的事业做得比高中的大,高中的比大学的大。做得起早,事业起步越早。甚至因为上了大学对自己也是直接的潜在损失,少了土地分配和拍卖。回去一次总有同学鼓动一次。
后来列下来一长串的问题:
a. 你臭屁/小资吗? 答案 yes;
b. 你擅长和商人打交道并且理解和懂得他们吗? 答案 no; (回家和同学聊天,他说他打断一个项目报告,直接问对方:需要我出多少?保证让我赚多少?上这个项目,能够给我省多少钱?)
c. 同学的起步是因为“胆量”和“运气”,比如和国外客户赌一把货到付款的生意,现在还有这样的机会吗? 答案 不一定;
...
3. 以目的地决定起点。
目的地很美好,是前进的动力。目的地却决定不了第一步该从哪里迈出,迈得有多大。
拿出一张纸,左面写下现在正在做的,和计划做的事情。具体到每天为了这些事情花费多少时间。在右面写下目标,如果目标不确定,有超过一个以上,用上面的方法分析,排除其它,剩下唯一一个。
在左面和右面之间做连线,看左面的事情是不是能帮助到目标的实现,如果是,是直接还是间接,短期效用还是长期效用。
如果不能连线, OMG, you are just wasting the time.
December 15 Small tricks装修是个有意思的经历, 遇到有意思的一些小 tricks...
瓷砖工人为了说明贴砖的时候不可能一样平,特意把两片砖平托在手上,说,喏, 你看. 果然有些不置可否的高低差.
真正简单,正确,有效的做法是两片砖直接把面叠合在一起,转动一下,就可以知道是否水平.
想起来有一次去菜市场买鱼头,鱼贩拿起一个鱼头,说,刚杀的,你看,还在动,果然鱼腮还在动. 留意一看, 鱼贩把拇指插在鱼腮里面 :) December 11 9 millions of bicycles看到这首歌的标题的时候,心里有一种温暖,加上歌手的声音,也是给人如是感觉。
开始的时候在 baidu , sougou, sougua 上面搜索这首歌,输入“9 millions of bicycles”, 没有返回结果。
再试 live & google, 确实是有分词的情况, 9 和 nine 是不同的结果。
开始进行个人的工程,漫长冬天也被身边的人感动着。
在9百万里面找另外一半真不容易,为了保险起见,有一种传统的建议是,两个人要一起旅游,大多数人持肯定。
其实生活中还有更挑战的难证方式,那就是一起装修,后面一种更为准确。 :D
November 11 Login failed for user 'NT AUTHORITY\NETWORK SERVICE'
Login failed for user 'NT AUTHORITY\NETWORK SERVICE', 通过 .Net 连接 本地 SQL Server 报上述错误是因为: IIS默认运行在NT AUTHORITY\NETWORK SERVICE下面,在系统用户管理界面中,点击: IIS_WPG 可以查看 IIS下面的用户,其中可以发现熟悉的 NT AUTHORITY\NETWORK SERVICE。 回到系统用户管理界面, 把NT AUTHORITY\NETWORK SERVICE加入到 Administrator 组里。双击 Administrator, 点击 Add, Locations 选择本机, 在 Advanced 里面选择 "find now", 双击加入 "Network Service",完成系统用户权限的操作。 回到 SSMS, SQL Server Management Studio, 连接本地数据库,在侧面导航栏 "Security" 目录下面选择 "Logins", 点击添加"New Login", 选择 Windows Authentication, 用和刚才锁定 Network Service 一样的方式添加一个 Login, 在添加 Login 的界面中, "User Mapping" 里面勾选 users mapped to this login, 点击 OK. 无需重启 IIS 或者 SQL Service, 刷新连接页面,问题解决。 备注: string strConnection = @"Data Source=.\;Initial Catalog=test;Integrated Security = SSPI;User ID=;Password='';";
November 07 Pictures without wordsNovember 06 Live a peaceful life在facebook上面第一次尝试的连接是采用“暴力敲门”的方式,返回来的结果也不奇怪: You are using an incompatible web browser.Sorry, we're not cool enough to support your browser. Please keep it real with one of the following browsers: 第二次,比较温和地,根据fb建议的方式,下载api,上传,得到的是这个: Errors while loading page from applicationParse errors:FBML Error (line 14): illegal tag "body" under "fb:canvas" CSS Error (line 125 char 17): Error in parsing value for property.: 'cursor' Declaration dropped. Runtime errors:URLExceptionInvalid scheme for url (javascript:void(0)) 因为 wordcast 的页面用了 ajax, FBML 的方式不能正确地抓取和识别。 第三次,试着做desktop application, 做一点reading:
所以,fb 不会开放login的功能给它的api, 用户需要从 fb 指定的网页入口登陆。 Does Facebook Platform Matter Anymore? The short answer is no. Short summary:
At the end of the day they will eat their own lunch. It means that they will eventually start to loose money with bad advertising CPMs. Or they already started, didn't they? Thanks god, we (developers) have OpenSocial. 并无意冒犯 fb, 从保护用户的隐私的角度, fb 做法能够理解。只是从 api 开发者的角度, 跟在 fb 后面的意义是什么呢? Finally, 再拷贝一段 fb 上的话,这样做真是的 developers friendly 吗? Finally, every week we push our code out to our developers a day before we release it to our users, so you can test your application against the new changes. You can point your application to the beta site, www.beta.facebook.com. http://developers.facebook.com/get_started.php 还是回去 live peaceful life 吧, 跟在大家的后面,最safe, 包括 taste, 我喜欢听歌, 但是习惯于到人家的介绍里面点击, enjoy :)
October 22 SDET's Gift曾经说过,成为一个优秀的SDET (Software Development Engineer in Test) 是需要 Gift 的,在面试中的要求也相对较高,说说一己之见:
面对 test assignments, 有三种反应:
1. Check Code。 (最好产品的所有code都是他自己写的,并且有极好的编程功底与习惯)
2. Test a function, program。 ( 完全正确,测试原本要做这些,就象造楼就必须要彻砖一样。但是听说过两个泥水匠的故事吗?为什么一个人一辈子彻砖,另一个成为建筑大师 )
3. Test product on users' scenarios。 ( 道理大家都会说,但在具体问题面前马上看出不同的反应。能做到3的,有 test 的 gift )
Gift 之二: Gut feeling
打开 Offer Excel, Menu 里面有多多少种不同的status 组合? 有一种 SDET 能找到 bugs 基于先在这里点三下,然后在另外的地方点两下, reveal 其它人发现不了的bug.
|
|
|||
|
|