五千年(敝帚自珍)

主题:【原创】也来说说Linux和Windows下的开发感受 -- 昔杨今雨

共:💬203 🌺502
分页树展主题 · 全看首页 上页
/ 14
下页 末页
    • 家园 我感觉IDE在开发小规模程序的时候还是很好用的

      开发大规模程序的时候,管理的作用比工具重要得多,ide的优势体现得不明显。

      至于“Windows下的IDE让很多人成为一个庸庸碌碌的程序员”,我不敢苟同,不论用什么工具,在哪个平台,一个庸庸碌碌的程序员始终是一个庸庸碌碌的程序员。这样的程序员对技术没有追求,你让他用别的工具或平台只不过是加重对他的折磨,更有可能降低他们的效率。其实这也不错,毕竟工作只是生活的一部分,没必要自我折磨吗。

    • 家园 时代不同了,程序员也早就细分了。

      今天的大部分程序员并不要求也不需要都是精通底层和有良好架构概念的高手精英, 大部分都是蓝领阶层,而且,熟悉市场往往比精通技术更重要。

      比如我个人是从汇编出来,当年就诚如楼主所说,一行一行的敲,一行一行的调,一个小小的东西做出来都兴奋不已。说实话,当年windows出来,vb出来以后,发现原来做几天甚至几个星期的工作一个小时托托拽拽就完成了,顿时对编程这门活极度失望,一度觉得普通程序员已经失去了价值。

      其实技术发展了,工具发展了,编程也逐渐变成普通人的一种解决问题的工具,不再是只有精英才能使用倚天宝剑。当然,精英的程序员还会继续存在,但是实无必要强调大家都必须做技术精英。

      我认识一个人,保险公司的一个主管,三十多岁的时候突然提出来要学习编程,以他的文科出身,英文又滥,以lz的意思衡量基本上等于废物, 但是就是这样一个人,用中文版的vb,开发出一套相当不错适合保险行业使用的软件,并用此来创业。就从技术的角度看他的作品,内部可以说一无是处,一个大一的学生学习2个月,写的代码质量都比他高。但是因为他熟悉业务,所以做出来的东西非常符合实际,自然就获得成功了。市场上的很多东西,内部都是浆糊一样,但是因为抓住了用户的需求,反而成功了,至于维护和发展,将来可以请一些高级程序员来解决,根本不是问题。而我的一个朋友, 技术相当的好,是真正的高手,ULW平台任跑,几大数据库, 几个主流语言甚至到专业破解(他成功破解过某国外大公司的高端专业产品,此软件只出租,不出售,这个产品的核心用该公司自行开发的一套语言编写,整个破解过程极度考研技术功底)都可以说是绝对精通,是至今为止我认识的技术细节方面最强的人,但是在业界混了近20年一事无成,几次创业都失败,最后还是跑去政府部门做官僚了事。

      只要是市场能够接受,我觉得精英程序员也好,浆糊程序员也好,都是一种活法。而考虑到你也提到的团队,就必须正视这样一个现实,全球市场普遍缺乏有经验的高质量程序员,那么充分借助工具,借助管理能力,把这些浆糊程序员组织起来做好事,我觉得这是一个团队leader的核心工作。

      • 家园 对这个趋势的分析相当透彻。

        也不知道这个趋势是因为应用的复杂程度增加了,还是因为需要快速实现应用所导致的软件复杂程度增加的缘故。

        以前的操作系统几张软盘就可以,现在需要几个G,很难想象这样的操作系统里面没有很多的垃圾代码或者是根本就死了的代码。

        大部分的应用软件大概也是这种情况。反正硬件能力在提高,软件里多一些垃圾也就不是大问题了。

        这种情况下,到后来肯定就会是只有少数的人有可能熟悉整个框架,而大多数的人只需要把现成功能组装一下就可以了。

        要熟悉市场需求这点就显得更重要了。

      • 家园 国内出现这种情况的原因主要是没有硅谷类型的

        创新公司。

        你说的这种情况和美东美西的差别很像。如果接到西部公司(比如加州或者华盛顿州)的电话面试,那就等着考算法吧。东部的公司,特别是给那些银行做项目的咨询公司,考的主要是各种框架的熟悉程度和Java语言的细节。

        当然,花儿街上炒股的那些混帐们也是着重考算法的。

        总之,国内没有创新的环境,只有软件外包重复干活的环境,高手是很难依靠搞技术活下来的。软件外包嘛,没有技术,关键是管理。

        所以国内很多人说30岁了就该转行搞管理了,软件外包干多了,就觉得技术不如管理有用。

      • 家园 俺当年也经历了这么一个转折

        从卖弄编程技巧、到展示自己程序算法表现能力甚至黑客技术,慢慢发现那些程序背后的“做什么”而不是表面的“怎么做”才是更高的境界,也才理解了业务流程的把握、进一步达到改写、完善、优化业务流程,才是程序员文化上面一级的层次。

      • 家园 理解business logic对程序员是至关重要的

        美国为什么会有大量40-50岁高薪的程序员(尤其是在金融方面),因为他们理解复杂的business logic,并能编程实现,对business logic的理解是需要时间积累的,在这一点上,他们是越老越值钱。

      • 家园 其實能用就行了

        好比說你要給遊戲寫腳本,就不需要怎麽精英,搞清楚遊戲的機理更加重要。

      • 家园 还是要鼓励多些精英程序员

        技术不是最重要的,这是中国IT界的一个流行观点。年轻时做程序,老点了做管理,这是中国程序员普遍的理想路线。但是就我的观察,这种思路的流行也是中国软件始终在低水平徘徊的根源之一。的确浆糊程序员也是一种活法,但中国的差距在于精英程序员太少太少了。而且中国国内的精英程序员,来到国外也只能在国外精英程序员中排中上游水平,还达不到顶尖。就像范志毅孙继海在国内是老大,到了国外只是一般球员。中国网游开发者里有个网名叫云风的,做游戏图形引擎,在国内游戏业界有不小的名气。但是在国际上,他也只是一个开源图形包Allegro的一个贡献者之一,而Allegro还算不上重量级的开源项目。到SourceForge上看看,几乎所有开源项目都是洋人或业余或专业的程序员在做,中国人很少。像Apache,Firefox,OpenOffice这样的项目中国程序员里有能力做的有几个?更不要说Linux内核,GNU里那些对业界至关重要的基石性软件,中国程序员有几个能做?拖拖拽拽是很容易,代价是你永远在别人限制好的范围内而无法做出突破性成果。

        你所列举的技术大拿只是一个特例,并且虽然我不怀疑他对各项技术很熟练,但他究竟有没有做出什么成型的具有一定规模和影响力的软件?还是只停留于熟练使用各种工具,钻研一些高难但狭小的技巧?市场很重要,但核心技术是一国经济的生命力所在。如果我们的中华之星跑得好好的,何必又去花大价钱找日本人或德国人呢。

        并非是在反驳什么,权当顺便评论一下。

        • 家园 差的不是高精尖,而是创意

          计算机业的理论难度本身比不上数学物理,中国人学理科的顶尖人才有的是,所以如果单论开发软件的量甚至质,中国人不会比哪国差。致于为什么中国软件水平比起美国相差很多,也不好用那个桨糊程序员与技术大拿来比喻,两者其实多数的情况下只是99%与100%的差别,差的就是那么一点点创造性,那么一点点热忱与执着。创意的特点就是,没做出来时觉得特别难,但做出来后一看就那么回事,感觉谁来都行。 所以有一种错觉是软件开发难度不高,蓝领化就可以了,这很可能的确是中国印度将来发展成软件生物链的下游产业的开始,类似做耐克鞋与设计耐克鞋的产业链的两端,软件业的高端,在品牌,发现市场,产品实现等高端产业保留于美国,国内处与模仿,跟风的状态。

          说起来中国人与印度人做软件业的从业人数巨大,但总给人的印象是桨糊程序员占多数,这里面还是国情与文化的原因。类似理科上的教育与人才的情况。试问多少中国人,印度人,包括海外与国内的,软件从业者是被其高薪所吸引,是为了谋生而从是软件开发的,绝对是大多数。而美国在这样的人也有,但比重肯定要小得多,一是选择多,二是不喜欢软件开发的枯燥。 因此一旦投身在软件开发中的,其才智都不同凡响,反之即使从业软件,也是偏重于做PM,分析师等。 而其第二点也说明了,在软件发展了这么多年后,开发程序仍然在对人员基本素质的要求上与七八十年代没有太大区别,工作性质也仍然是枯燥繁琐的,开发工具的进化被软件产品的复造度所抵消,虽然高重复性的工作被简化了许多,但在此基础上更复造的要求就产生了,这个demand随着硬件的进化变得无穷无尽,总是更快,更美,更体贴,估计不发展到机器人代替人那一天这个趋势停不下来。

          计算机是应用科学,其最大的难点也在于应用。计算机软件业开发工具,操作系统等都是为应用提供更低的起点,更多的可能性,因此应用内部也要分几个级别的应用。而直接面对商业应用的是其最终结果,但也离不开低层工具,开发工具,操作系统等的支持,而且计算机业的一大块产值至今仍然在这些支援性的开发上,这也是计算机也仍没有完全成为夕阳工业的最大特征。从硬件业到软件工具也,推陈出新仍然在高速的更新换代,从水冷主机到iPhone,谁知道今后会发展到哪里去,但计算机业仍处于其早期状态是不错的,这一点从应用的高端性与开发程序的低端产业化就可以看出。

          • 家园 好的创意,需要有坚实的技术基础来实现

            没有技术基础的创意,不过是幻想而已。

            无法实现的幻想,说的不好听,就是白日梦。

            这也是为什么PhD Student要花至少一年的时间去做related work survey.

            一个真正的程序员,需要有至少10年以上的磨练。系统软件里面的复杂程度,各个概念之间的纠葛,只会用VB或者是其他script语言的程序员,是没办法用优雅的结构来解耦需求的。

            开发团队里面的很多角色,可能title并不是程序员,可确确实实是要做coding的。设计人员,架构师之类的职位不仅仅需要大量的编程经验支撑,也完全不能脱离编程工作。

            • 家园 被当做螺钉螺母培养的人的确不需要幻想

              否则对专心工作不利。这是常识,每个做父母的,当老师的,当老板的都明白这个道理。因而被抚养的,教育的,灌输的也都是围绕着这个道理。

              很不幸,做计算机这行与其它行业不同,如果不愿意做白日梦,不敢幻想,那么还是转行吧。拿做工匠的心态做软件自然发展下去就是蓝领,其工作性质大量routine化,整个商业应用领域就那么几种选择,pattern来pattern去,有什么可架构的,还不是整天被人忽悠或者忽悠别人。

              Unix Philosophy 里说的好,随着硬体价格的下降与速度的提高,程序员的工作效率比软件的工作效率越来越变得更重要,当然游戏业,底层,手机等仍然需要程序员去压榨软件效率,但应用软件的这个发展趋势是很明显的了。也因此,script,VB这些高层工具才会变得流行,当然更高层的工具还会不断出现,其中心思想就是让机器去做尽可能多的以往必须由“蓝领”们做的活,虽然今天更流行叫那些写VB的是蓝领,但其实含意都差不多,只要你始终只关心How,而不懂得Why,那么这个蓝领是肯定的了,并不在于你是玩Ruby的,还是写Java的,或者忽悠架构的,本质上是在做一些不远的将来主要由电脑来承担的工作。

              为什么PC这么多年始终就是那么一个方盒子,连尺寸都只有几个规格?为什么手机产业这么大种类无穷,光Samsung就有几百种设计,有些甚至在艺术设计上挖空心思,但却大同小异离不开多年来手机那三板斧,直到天地间出了一个iPhone?这里面告诉我们的道理不是什么多少年的“经验”,不是熟能生巧,也不是埋头苦干,更不是二十年的寒窗换来的title学位,这些素质虽然都重要,但在现代发达社会中这些素质已经可以被大规模成批生产,不是稀缺品质了,相对的,其重要性反而远远的排到了白日梦,幻想的后面去了。

              • 家园 举个浅显的例子来说明一下技术是如何影响创意的。

                我们假设有一家极富创意的公司,开发了一个极富创意的网站。网站可能是outsource给位于印度的软件公司开发的,架构和pattern都是被忽悠来忽悠去的蓝领程序员设计的。

                由于这个网站极佳的创意,上线人数猛增,在线用户数从几千人突增到百万量级。为了维持好的用户体验,他的蓝领工具程序员可以如何帮助你?他的成天忽悠的架构师要怎么去做?

                一个基本的事实,经典的网络连接计算模型,每台服务器同时最多只能连接2千个左右的连接请求。按这个数字,二百万用户,就需要1000台前端服务器。

                解决方案:腾讯最高同时在线人数3000多万,为了达到相应的处理能力,他们重写了Linux的内核。而这个改进,现在已经成为Linux Kernel的一个标准实现:epoll

                一个基本的事实,数据库系统,哪怕是最昂贵的Oracle RAC,在单表条目超过百万之后,单集群的事务处理能力也不过是每秒数百次。

                解决方案一:Google的GFS和著名的Reduce Map计算模型

                解决方案二:多层次cache+分布式数据库。

                以上只是两个最明显的问题。如果创意真的有幸能吸引到那么多用户,相信所要考虑的技术问题将远远多于这两个。而且这些问题,并不是没有脑子的工具程序员可以帮你解决的。当然,IBM的忽悠售前可能会告诉公司只要有钱,什么都不是问题。如果相信他们的话..... 我只能说,无论是google还是腾讯,都从未采用过他们的解决方案;) 希望真的有那么一天的话,最关键的就是能赶在用户开始对缓慢效率不满对创意厌倦之前解决这些问题。不幸的是大部分情况之下,这个时间并不长。

                • 家园 epoll和腾讯没什么关系

                  可能腾讯对linux内核有贡献,但是epoll绝对不是腾讯提交给linux的。

                  或者你有什么特殊的消息渠道?

                  zhonghm没做过socket开发吧?呵呵!

                  • 家园 花一下先,这么老的帖子还被翻

                    是,epoll不是腾讯贡献的。epoll的解决方案和他们的解决方案一致而已。他们的技术在于在没有epoll的时代,绕过内核的TCP/socket协议栈使用协作处理模型,而不是教科书上的并发处理模型来实现大规模服务的解决方案。

分页树展主题 · 全看首页 上页
/ 14
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河