宽岛简介:宽岛网是一个类似Tumblr的轻博客社区,其前身宽途网是国内第一个轻博客社区。在开发方面,宽岛网选择了RubyonRails这个Web开发框架,早期的Twitter也是用RubyonRails做成的。
1.关于自己的工作平台
这包括操作系统,编辑器,shell环境。这是所有工具箱里最重要的,每天,比起你面对某种语言,某个项目,某个老板,你面对系统和编辑器的时候更多,只要打开电脑,它就在哪里。因此,选择最好的,我从很久以前,在招人的时候就会先问:你用什么操作系统?什么编辑器?什么shell环境?我自己的环境是Ubuntu(偶尔也会用MacosX),Zsh,EmacsUbuntuLinux,Archlinux,Gentoo等linux发行版,我想是最好的选择,MacosX也完全可以,对于iOS开发就是必须的了。不要用windows做开发环境(真的,就算开发windows桌面软件,我也不会用windows,哪怕让我用flash实现)。
Shell环境上,Bash和Zsh都很好,Zsh更新,更强大,也更复杂。
2.团队的工作平台
这包括一个好的版本控制系统,一个好的代码托管平台,一个好的问题追踪和知识管理系统。对于团队来说,没有什么比这些更重要的了,沟通和控制,是一个团队工作的全部。
我使用Git和Github。比起SVN和更古老的CVS来说,Git无疑是最新最好的替代品,她确实能够提升沟通和工作效率。Github则很方便地集成了代码托管,问题追踪和wiki系统,也许在特定的某件事上,她不如以前我们的SVN+Trac这样的平台功能强大,但对于初创企业,我认为这样的服务是最合适的。
3.关于语言
语言的选择其实不难。在你所掌握的编程语言中,选择你最有兴趣的,最喜爱的,或者写起来最上瘾的。理由很简单,开发是人的工作,越好地激发出你的热情,才能产生越有创造性的代码和产品。至于冷门语言招不到程序员这种说法,我实在无法同意。实际上优秀但掌握的人不多的这类语言,往往能让你更容易地招到顶尖的程序员,因为使用这些语言的,一定不会是庸碌之辈。我使用过的,通常可以做Web后台开发的语言有C,C++,VB,Java,PHP,Python,Ruby,Lisp,JavaScript。
我的选择是Ruby,如前所述,这算得上是在我掌握的语言里,最有兴趣和最喜爱的。
我有两年的C++经验,但我觉得我还是没有掌握她,而且,今后也不打算继续学习她了,痛苦比快乐多得多。
VB和Java从接触的一开始我就不喜欢,在被迫用她们做了几个项目后,印象也没有丝毫改善,刻板,累赘和费力。
PHP是很好的web开发语言,但她太混乱,太不一致,非常地缺乏优雅和美感。
Python几乎是现在最好的入门语言,简洁,清晰,学习和开发容易,不过对我来说,有些缺乏创造力,那也就是缺乏乐趣。
Lisp我不能算掌握,但很有兴趣。
Javascript,在做web前端开发的时候是必须掌握的,幸亏,这是一种很有趣的语言,也能够写的很优雅和很有创造力。
不过,上边列的这些语言,真的没有一个比起我刚接触Ruby时那种震撼更大。一种简洁,优雅,一致,创造力超群的语言,还有一个非常活跃和富有智慧的社区。
4.关于框架,数据库和服务器
框架要选择你用起来最自然和最符合你的开发思路的,简单来说,就是:如果让你写,你也会这样去做。以这个为原则,去一一试用最好的那些框架就可以了。
我用的是Rails3,她有90%的做法是和我的思路与原则相符合的,而剩下的10%,也可以方便地自定义或修改。很遗憾我因为接触的比较少,没办法推荐php和python的优秀web框架,不过,请先选好语言,再选择框架,不要为了框架而使用你不喜欢的语言。
5.关于工作流程和其他工具
你还需要什么?
测试框架:
在现在这个时代,尤其是web开发,我想测试先行是很有必要的,每一次你的代码变动,都要让这个架构运行测试,习惯了之后,你会发现自己离不开她。我用Rspec。
部署工具:
一条简单的命令,把你的代码部署到生产环境中去,而且同时还能够做很多操作,比如cache生成,搜索索引生成,js/css代码压缩等等,并且具备回滚的能力,喔,最好和版本控制系统联动,让你签下最新的版本。我用Capistrano。
一套好的工作设备:
程序员们,帮自己一个忙吧,用你能支付的起的最好的显示设备和键盘,而不要只用公司配给你的可怜巴巴的破笔记本来工作。我用两个24寸的显示器,宽广的可视区域能够直接提高你的效率,用Cherry出品的茶轴键盘,她让我的键入更快更准确。
一个好的工作环境:
一米五长的桌子,明亮的房间,通风和清新的空气,有可以小睡的沙发。
关于做技术创业,张沈鹏认为,要学的技术很多,其学习周期大概一年,在创业之前能够去豆瓣锻炼下是最好的。同时,张沈鹏也给大家推荐一本Python学习教程:《Python入门指南Release2.7》GuidovanRossum,FredL.Drake,Jr.著刘鑫译2010年10月版。关于寻找一起创业的技术伙伴,张沈鹏认为,对方应该“写过自己的网站,能很快的掌握一门新的东西,对技术本身有兴趣”。
坚果铺子简介:坚果铺子是一个类似Dropbox的文件同步和存储工具,目前它有Windows、Mac和Linux等桌面客户端,以及Android和iOS等移动平台客户端。因为坚果铺子这样的文件同步存储工具主要功夫在后台和客户端,所以技术可能跟前面讲的宽岛网和42区所采用的技术有所不同。不过,创业不限方向,我们希望为大家提供不同的经验,给大家更多更好的选择。
1.创业选择的是什么技术?比如语言、框架和平台之类的
我们用了多种不同的技术.就编程语言,有java,C++/C,ObjectC,C#,选择的时候主要取决于几个因素:
1)开发效率。
2)运行环境所需的程序效率。
3)平台的native支持。
我们没太考虑掌握的熟悉程度.其中部分语言是我们第一次使用。
我们没有使用过任何的框架(framework),都是用的函数库(library).不知道我的理解是否正确,我个人对于framework和library的定义有所区别,比如:
1)framework更多是约束程序员的行为,有点类似画好地盘跳舞。
2.你给初始创业中的技术人员的建议是什么?比如,就你选择的技术而言,要学习该从哪开始?
做为技术人员,我觉得最基本的是打破砂锅闻到底的心态.比方说,看到一个bug,一定要找到最深层次的问题,从最基本的角度去解决问题,而不是通过简单的添加代码,解决问题的现象甚至屏蔽问题.例如c.compute();//c为null,出现segmentfault最糟糕的解决办法就直接如下fix:if(c!=NULL)c.compute();这并没有解决问题,因为它没有回答为什么c在这个地方可能为NULL,这是否是合法的参数
另外一个比较重要的点是,用于重构自己的代码.Google每个两三年都会重写搜索引擎的核心代码.我们也一直坚信,删除已有的代码比添加新的代码更难,也更有意义。
另外,做技术的同志,也不要拘泥于任何一种技术.很多事情都是边干边学,在战斗中提升.没必要因为擅长某种技术,就厚此薄彼甚至卖弄技术,更多还是需要从产品的角度出发。
最佩服的技术人员是能够融会贯通,举一反三.有些技术人员能够从CPUarchitecture->Hardwareinterconnect->OSkerneloptimization->Language/Runtimeimplementation->Application->BusinessLogic整个stack角度去分析和解决问题,这是非常厉害的。
背景简介:作为TalkJokes的共同创始人,申华章主要并非负责技术。但从非技术人员眼中看看他们对技术人员的看法和要求,对于技术人员来说也是种不错的参考。毕竟,一个互联网创业公司必须是由技术人员和非技术人员有机组成的。