码农Coder,开发人员developer,程序员和程序员与软件工程师师有什么区别

趣文:软件工程师的鄙视链
发表于 14:10|
来源vinta.ws|
摘要:在软件工程师(中国叫做「程序员」或「码农」)的圈子里,文人相轻的现象可是非常严重的,在程序设计的各个领域里都有着错综复杂的「鄙视链」。
【编者按】软件工程师、程序员、码农一直是IT圈中最被人津津乐道的主角,在该圈子里,文人相轻的现象可是非常严重的,在程序设计的各个领域里都有着错综复杂的「鄙视链」。本文转载,该文作者是一名台湾程序员,下面一起来看看台湾程序员眼中软件工程师的鄙视链。最近这几年在世界各地突然吹起了一股全民写程序的风潮,连美国总统欧巴马都在写 JavaScript 了,但是身为一介靠写程序(以及在上班时间胡乱上网)来谋生的 developer(所谓的 developer 就是「软件工程师」的比较潮的说法),想要提醒那些想学习写程序的人一件重要的事:慎选你的第一个程序语言。在软件工程师(中国叫做「程序员」或「码农」)的圈子里,文人相轻的现象可是非常严重的,在程序设计的各个领域里都有着错综复杂的「鄙视链」。从程序语言、编辑器、平台到 { 是写在 if 的同一行还是下一行,不同阵营的人都习惯鄙视来鄙视去。而其中「你用什么程序语言?」更是大家最热衷的一条鄙视链,所以对于刚踏入程序设计领域的初学者来说,万一程序语言选得不好,可是会一开始就落入鄙视链的底层啊。软件工程师的鄙视链到底有多惨烈、多残酷呢?程序语言篇懂 Functional Programming 的工程师鄙视老是把设计模式挂在嘴边的工程师,老是把设计模式挂在嘴边的工程师鄙视会说「你这样写就不 OO 了啊」的工程师,会说「你这样写就不 OO 了啊」的工程师鄙视会说「哈?什么物件导向?不是把重复的 code 写成一个 function 就好了吗?」的工程师,会说「哈?什么物件导向?不是把重复的 code 写成一个 function 就好了吗?」的工程师鄙视把同一段 code 到处复制贴上的工程师,把同一段 code 到处复制贴上的工程师鄙视 PM。写静态语言的工程师鄙视写动态语言的工程师。写组合语言的工程师鄙视写 C 语言的工程师,C 语言工程师鄙视 C++ 工程师,C++ 工程师鄙视 Java 和 C# 工程师,Java 工程师和 C# 工程师则互相鄙视,而 C# 工程师又鄙视 Visual Basic 工程师和会把 C# 念成「C 井」的工程师,会把 C# 念成「C 井」的工程师则鄙视认为 HTML 是一种程序语言的设计师。用Python 3的工程师鄙视还在用 Python 2 的工程师,用 Python 2 的工程师鄙视遇到 UnicodeEncodeError 的工程师。写 iOS的工程师鄙视写 Android 的工程师,写 Android 的工程师鄙视写 Windows Phone 的工程师。有Swift 一年经验的工程师鄙视有 Objective-C 五年经验的工程师,写 Objective-C 的工程师鄙视用 PhoneGap 包装成 native app 的工程师。用 React.js的工程师鄙视用 AngularJS 的工程师,用 AngularJS 的工程师鄙视用 jQuery 的工程师,用 jQuery 的工程师鄙视用&&的工程师,用 Vanilla JavaScript 的工程师鄙视 IE 的使用者。会用 debugger 的工程师鄙视用 assert 的工程师,用 assert 的工程师鄙视只会 print () 的工程师;用 console.log () 来 debug 的工程师鄙视用 alert () 来 debug 的工程师。写 Ruby on Rails 的工程师鄙视所有使用其他语言的工程师。什么?你说 Ruby?Ruby 只是 Ruby on Rails 的一套框架,才不是什么程序语言呢!工具篇用 text editor 的工程师鄙视用 IDE 的工程师。用 Vim 的工程师鄙视用 Emacs 的工程师,用 Emacs 的工程师鄙视用 Vim 的工程师,无论是用 Vim 或 Emacs 的工程师都鄙视所有用其他编辑器的工程师;用 Atom、Notepadd++、Sublime Text 的工程师鄙视用 Windows 记事本的工程师。用 Android Studio 或 IntelliJ IDEA 的工程师鄙视用 Eclipse 的工程师,用 Eclipse 的工程师鄙视用 NetBeans 的工程师。用 Git 或 Mercurial 的工程师鄙视用 Subversion 的工程师,用 Subversion 的工程师鄙视用 Dropbox 来做版本控制的工程师,用 Dropbox 来做版本控制的工程师鄙视根本不知道什么叫做版本控制的工程师。用 Zsh 的工程师鄙视用 Bash 的工程师,用 Bash 的工程师鄙视用 Cygwin 的工程师,用 Cygwin 的工程师鄙视用「命令提示字元」的工程师,用命令提示字元的工程师鄙视用 GUI 介面的工程师。用 IRC 的工程师鄙视用 HipChat 的工程师,用 HipChat 的工程师鄙视用 Slack 的设计师。用 reStructuredText 写文件的工程师鄙视用 Markdown 写文件的工程师,用 Markdown 写文件的工程师鄙视用 HTML 写文件的工程师,用 HTML 写文件的工程师鄙视不写文件的工程师,然后用 LaTeX 写文件的工程师鄙视所有工程师。用Docker来部署server 的工程师鄙视用 Ansible 或 Puppet 来部署 server 的工程师,用 Ansible 或 Puppet 来部署 server 的工程师鄙视用 Fabric 来部署 server 的工程师,用 Fabric 来部署 server 的工程师鄙视手动 SSH 的工程师。OS 篇用 Mac OS X 的工程师鄙视用 Linux 的工程师,用 Linux 的工程师鄙视用 Windows 的工程师。用Debian的工程师瞧不起用 Ubuntu 的工程师,用 Ubuntu 的工程师瞧不起用非 LTS 版本的 Ubuntu 的工程师。硬件篇用 MacBook Pro Retina 的工程师鄙视用 MacBook Air 的工程师,用 MacBook Air 的工程师鄙视用 ThinkPad 的工程师,然后用 Raspberry Pi 的工程师鄙视用 MacBook Pro Retina 的工程师。用 Dvorak 键盘的工程师鄙视用 Mac 键盘的工程师,用 Mac 键盘的工程师鄙视用 QWERTY 键盘的工程师,用 QWERTY 键盘的工程师鄙视用手写板的设计师。坐 Aeron 椅子的工程师鄙视坐普通办公椅的工程师,坐普通办公椅的工程师鄙视跟他一样做普通办公椅的 PM,然后站着写程序的工程师鄙视坐 Aeron 椅子的工程师。职场篇搞硬件的工程师鄙视搞软件的工程师。写 OS 的工程师鄙视写 Web 的工程师,写 Web 的工程师鄙视写 desktop application 的工程师。后端工程师鄙视前端工程师。工程师跟设计师互相鄙视。信奉Test-Driven Development 的工程师鄙视先写 code 再补 tests 的工程师,先写 code 再补 tests 的工程师鄙视不写 tests 的工程师,不写 tests 的工程师鄙视又他妈乱改需求的 PM。没有证照的工程师鄙视考了一堆证照的工程师。上班穿休闲服的工程师鄙视上班穿西装的工程师,上班穿西装的工程师鄙视上班穿系服的工程师。---如果你看了以上这些惨绝人寰的鄙视链之后,仍然没有击倒你想要学习 coding 的心,那我必须提醒你一件最重要的事:先去交一个女朋友,再来学写程序;因为一旦你成为软件工程师之后,就交不到女朋友了。P.S.有在用&&的朋友一起来交流交流。本文转自,文中观点和内容不代表CSDN立场或观点。
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章程序员和码农有什么本质上的区别?
按时间排序
不知道谁是码农和程序员,但我知道作为一个合格的软件工程师,"we are changing the world, one line of code at a time".不要再妖魔化developer了,接受现实吧。
个人觉得 程序员是一种职业(靠编写程序解决问题)而码农就是新手村刚毕业。会写程序和写好程序是不同的
圈内人相互之间“码农”自嘲,有惺惺相惜之意;圈外人不明就里,随便称呼程序员为“码农”,
是对这一职业的不了解,以及道听途说,会让程序员反感(当然,也是有只要给钱称呼孙子都无所谓的程序员存在)。毋庸怀疑,透过每一双被厚重刘海遮住的略显干涩的眼眸,你都能发现想用二进制改变世界的倔强的心。
程序员和码农一回事,名字被误解了,就跟好多人以为研究生和硕士是一回事儿一样。程序员、码农也就是Programmer,或者Software Programmer,有时也叫做Developer。主要的职责就和名字一样就是写程序、写代码。而另一个正规点的名字——软件工程师则涵盖更加高级的内容,比如有的人设计架构不写代码也属于软件工程师(不过实际工作岗位中一般具体为XX架构师),当然人家也可以写代码,而且很多这样的人也自己谦称码农。总结下来就是码农和程序员是一回事儿,偏向于实现,软件工程师更加广泛,包含程序员,但是也包含很多设计(这里指的是工程设计)和研究工作。
看谁叫,看叫的动机是什么。程序员 是 职业名称,码农是昵称。但是,在某种动机不良比如嘲笑或者生气,指责 时,显然,码农就具有贬义。比如上面某楼的兄弟的一个指责20:80我只想问你们一个问题:你们在日常编码中,有多少个 做到 设计?哪怕只是50%
码农的特征:喜欢编码,而且以写很多代码为荣,尤其是当在一个函数里边写的超过100行后,会欣慰的伸个懒腰,喝杯咖啡,得意的周围转一转,然后回来继续往超过200行写。满脑子都是代码。一般不思考为什么编码,以及如何编码的更好,喜欢在控制代码。程序员特征:越来越多的程序员首先开始关注了,为什么要写代码,要解决什么样的问题,什么样的代码或者语言,或者IDE的开发环境能够帮助更快速的解决这个问题。以多写代码为耻。代码只是实现的手段之一,写的越多,越不好维护,后续越麻烦,还要写很多注释文档。搞清楚需求和目的,尽可能的少些和写高质量的代码来实现需求和产品。
码农只是自嘲而已,就像很多人喜欢自称屌丝
编程与编码的区别。是创造与制造的区别。分工的区别。后者是前者的子集。
个人愚见:码农是那些平庸的程序员,一般都由北大X鸟、兄弟X……等IT培训机构出来,项目经验少,开发项目的时候,头昏脑胀,逻辑不清。真正的程序员都是极客,都是“我要做”、我“喜欢做”钻研自学型为主的大牛,写程序不需要整天加班,大部分时间看起来都很闲,他们只在自己喜欢的时间集中注意力解决问题。
程序员收入从1w到100w,码农特指5w到15w的子集。
本质都是公民,但在国内估计有区别。
程序员:穿西装,打领带。领月薪,编写企业程序的人。码
农:穿拖鞋,短裤衩。盼发薪,老板接什么就干什么的人。创业者:连码农都请不起的老板。
骄傲的人,从来不这样称呼自己或者同伴,标准说法是:“工程师”。我之前都说“程序员”,他每次都纠正。后来注意到他对代码的偏执,半夜爬起来写代码,午餐时间高高兴兴改bug。想一切办法让速度再快一点点。我再也没喊过人家“程序员”,从来没喊过“码农”,即使开玩笑也没说过。都是很尊重,很佩服的说,工程师。对比:艺人
唱歌的。作家
写手。我很喜欢我的工程师朋友们。很佩服很佩服他们。
程序员: 对着风景画画的人 码农:
Photoshop里面亮度、对比度调节,改改背景、抠图
我觉得只是说法上的不同,实际上一样的,码农是昵称,程序员是正式的名称
我想提问者问得应该是“程序员”和“系统架构师”所做的事情的区别
按照帕累托法则来说的话。
80% (去)设计
(注重protype design)
20% 编码 (体力活..)
-------------
编码 (体力活)
(被)设计(.。你懂的。。)
区别在于对于这份工作的热爱程度~
实际能力和职位名称,并不一定可以划上等号。programmer也好coder也好,码农也好,都只是别人称呼你自己的一个代号而已,清楚自己是做什么的很重要。
当你从事这份工作只为了生活的时候。就算挂个主席的代号,你只是个农民。
所以,得出结论,字面意思上来说,没有区别。
我觉得就是programmer和coder的区别,注意一下两者的词根所带来的细微差异。开发程序员(development programmer)和软件工程师(software engineer)的区别:在国内好像没太大却别吧,刚毕业的应届生简历里面也可以是软件工程师,也可以叫自己程序员;但是看国外细分为开发程序员和软件工程师,具体有什么区别?(难道初级是程序员,高级是软件工程师;还是写代码的是程序员,负责架构设计画uml的是软件工程师)
我的理解:码农==会写代码程序员==码农+思想工程师==程序员+工匠精神开发者==工程师+软技能
应届生别那么阳春白雪了,都是coder而已,没啥本质区别,就像美术,美术设计师和美工,都一样。喜欢讲点小自尊的美术听到别人叫美工就会义正辞严的纠正:“请叫我美术设计师”,你如果爱听这些,也可以义正辞严的纠正别人的说法:“请叫我宇宙超级无敌软件工程师” 嘛,名片的title也可以写为:&br&&br&合天弘运前端后端通杀文能提笔安天下武能上马定乾坤恭俭宽裕孝敬诚信上能架构操作系统下能设计嵌入芯片手握算法无数分胸中代码千万行智胜仁勇功德大成谦虚谨慎全栈科学家攻城狮 张小二&br&&br&多霸气
应届生别那么阳春白雪了,都是coder而已,没啥本质区别,就像美术,美术设计师和美工,都一样。喜欢讲点小自尊的美术听到别人叫美工就会义正辞严的纠正:“请叫我美术设计师”,你如果爱听这些,也可以义正辞严的纠正别人的说法:“请叫我宇宙超级无敌软件…
SE@SJTU,混乱中立,持多种证件者。热门排序 |
来自子话题:
photoshop最早的版本是pascal写的。1.0的源码已经公布。pascal在上个世纪八十年代在苹果内部广泛使用,后来c与c++的兴起。现在都是c++了。 去官网下个ps的sdk,里边文档里的描述都是c++
你要写滤镜或者插件也是c++。 对于这些图形图像类的处理软件,要追求最好的性能,答案只有c++。。
photoshop最早的版本是pascal写的。1.0的源码已经公布。pascal在上个世纪八十年代在苹果内部广泛使用,后来c与c++的兴起。现在都是c++了。 去官网下个ps的sdk,里边文档里的描述都是c++ 你要写滤镜或者插件也是c++。 对于这些图形图像类的处理软件,要追求…
可以使用PE分析工具来看是何种编译器,比如我以前写的PETotal里面的文件嗅探功能:&br&&img data-rawheight=&310& data-rawwidth=&467& src=&/9bcd52ee80d84d018f5c_b.png& class=&origin_image zh-lightbox-thumb& width=&467& data-original=&/9bcd52ee80d84d018f5c_r.png&&&br&&p&PE文件里还有PDB的路径,也许也有蛛丝马迹:&/p&&img data-rawheight=&318& data-rawwidth=&766& src=&/9be6ffa98cb_b.jpg& class=&origin_image zh-lightbox-thumb& width=&766& data-original=&/9be6ffa98cb_r.jpg&&
可以使用PE分析工具来看是何种编译器,比如我以前写的PETotal里面的文件嗅探功能:PE文件里还有PDB的路径,也许也有蛛丝马迹:
windows和mac都有,软件功能非常复杂,可视化效果很好,而且非常需要高效率和硬件加速,肯定是用c++开发的。
windows和mac都有,软件功能非常复杂,可视化效果很好,而且非常需要高效率和硬件加速,肯定是用c++开发的。
世界那么大, 牛人那么多.&br&要努力, 要奋斗.&br&但是切记, 不要被自己感动.&br& update.&br&*************************&br&刚结束校招,拿到几个offer,虽然是研究生,但是上研的时候基础为0。介绍一下自己的经验。&br&&br&首先介绍一下自己的背景。&br&教育经历:本科和研究生都在西北边陲某一电器维修学院就读,电子/通信专业,纯非计算机。大一上过C语言,61分飘过;大三上过一门课叫《软件技术基础》,到研一才发现居然是数据结构;大四毕业暑期,下决心做码农,不会用VS写“Hello,World”,回去和室友说VS这个IDE好高大上,不会用。&br&技术能力:在实验室的项目只用matlab,自学C/C++,代码不超过2k行。没有能拿出的作品,没有完整的工程项目。&br&专业能力:到研一才知道ACM是什么,由于女朋友去北大就读不在身边,多出来的时间看了N多书(CS+金融+哲学+历史)。从小爱扯淡,本科混过辩论队,吹牛能力极强,不管专业非及专业都能侃一会。补充一下研究生的研究方向:机器学习/计算机视觉,发过一篇国内论文(best student paper),申请两项专利。研究生的研究也是从零开始,不过论文和专利都极水。&br&实习经历:在西北边陲某一创业公司(研发人员10+)呆过不到一月,了解了一些开发上的事情,对创业公司运作有了一定了解,技术上纯打酱油;14年暑期去帝都新浪微博做算法工程师,幸运地没有打酱油,从头到尾实际地做了一个东西,对面试吹牛有极大的帮助。暑期没有去BAT这样的公司实习的原因是各种原因挂了,人家不要我。&br&&br&然后我给你讲一下一个这样的小白是如何通过2年学习拿offer的。&br&&b&所需品质:&/b&耐得寂寞,坚持追求,坚定方向,身体要好。&br&
耐得寂寞:别人在玩,你在学,很好理解。&br&
坚持追求:请不要降低自己的追求。&br&
坚定方向:路有很多条,互联网是一个大路,大路中还有pm、运营、rd等小路,想怎么走看你自己。&br&
身体要好:科学学习,养护眼睛、脊椎、腰椎。我不是开玩笑。我坚持运动。&br&&b&内功准备:&/b&看书、编程、思考、总结。&br&
看书:各种经典书,扩展视野。我待会列个书单。&br&
编程:实际上手做东西,东西不需要高大上,但需要你实际去敲。&br&
思考:&b&编程是练脑子不是练手指肌肉,不会思考必挂。&/b&&br&
总结:看书、编程、思考不停的loop,然后不停觉得自己菜,总结自己菜在哪。&br&&b&去找实习:&/b&校招预演、认识自己、认识朋友、实践学习。&br&
校招预演:各大公司都有暑期实习招聘,不去投递的,浪费了一半机会。&br&
认识自己:面试的过程中,你会不断认识自己的不足。&br&
认识朋友:如果你是认真准备并严肃对待,你会结识很多志同道合的牛人。&br&
实践学习:如果拿到offer,去公司实践,要主动找活干,不要被边缘化。&br&&b&面试准备:&/b&狂刷题、写简历、多面试、拿offer。&br&
狂刷题:《剑指offer》《编程之美》《编程珠玑》《Crack over the code interview》TopCoder Leetcode&br&
写简历:不认真写简历的求职者都是耍流氓。&br&
多面试:面多了你才有感觉。&br&
拿offer:去痛哭一场,为了你的付出。&br&&br&
下面的东西我在&a href=&///?target=http%3A///rainer-liao/p/4026706.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&两年,从纯小白到腾讯阿里,应届非计算机毕业生的2014互联网求职之路&i class=&icon-external&&&/i&&/a& 中写了,这里再贴一下。&br&&br&&br&&strong&技术语言书籍推荐:&/strong&&br&&p&一,《C程序设计语言》。C语言圣经,废话不说,适合多看几遍。谭书入门看一遍即可丢。&/p&&p&二,《C++Primer》。过两遍,记住C++语法。中文翻译还不错,但有些地方仍有小瑕疵。建议看英文版,此书英文版非常容易看懂,且你从头到尾看完一本英文原著,对英文能力提高巨大。英文能力对程序员来说是重要的,先进技术、最新书籍都是英文版,且牛逼网站stackoverflow和github也是英文,作为程序员巨头大的问题——变量命名,英文水平的提高也是非常有帮助。API什么的我就不多说了。当然,看英文书籍速度是没有中文书快的。建议在看中文书籍对句子不理解的时候,翻看英文原版。&/p&&p&三,《Effective C++》。适合有一定实际经验者观看。&/p&&p&四,《Inside the C++ Object Model》。看完这个妈妈再也不担心面试官问我多态虚函数什么的啦。&/p&&p&五,《C和指针》。一般,不过其中一道课后题错了,自己敲出来后发现不对,去stackoverflow上提问,还增加了reputation,开心。&/p&&p&《More Effective C++》《STL源码剖析》《C++标准库》《C++程序设计语言》买了,翻过一些,没有时间细看。&/p&&br&&p&&strong&操作系统(底层)书籍:&/strong&&/p&&p&一,《现代操作系统》。Modern Operating System。重点关注进程和线程、死锁等概念。&/p&&p&二,《程序员的自我修养——链接、装载与库》。见过一个本科学弟看完这本书后在自己简历中写精通语言底层的链接、装载等,窃以为还没到那个地步。&/p&&p&三,《深入理解计算机系统》。CSAPP。中文书名很奇怪。&/p&&p&四,《鸟哥的Linux私房菜》。至少知道如何装linux,如何打开shell写个echo hello world。&/p&&p&五,《Unix环境高级编程》。APUE。看完MOS后看看,要实际敲代码。&/p&&p&六,《Linux命令行与shell脚本编程大全》。用了脚本语言你才能知道妈蛋C/C++真是烦。&/p&&br&&p&&strong&数据结构与算法书籍:&/strong&&/p&&p&一,《数据结构与算法分析——C语言描述》。小白刚开始看,真心累死。课后题很不错,适合都做做。&/p&&p&二,《算法导论》。后悔听信旁人言,说这么厚的书没必要看,到要用的时候再看。其实若能安心从头到尾看完算导,帮助极大。限于时间问题,我只看了此书的某些章节。&/p&&br&&p&&strong&逼格提升书籍:&/strong&&/p&&p&一,《黑客与画家》。当散文随笔看。&br&&/p&&p&二,《Unix编程艺术》。在不同阶段看有不同感悟。&/p&&p&三,《代码大全》。翻翻看,学生阶段不看完全可以,不过有助于提高逼格。期待在工作后有更多感悟。&/p&&p&四,《浪潮之巅》、《数学之美》。当小说看,开阔视野。&/p&&p&五,《人月神话》。10个女人花1个月的时间是不可能生出一个孩子滴。&/p&&br&&p&其他的都是重复,不贴了。&/p&&p&知识深度和广度,作为一个校招生,还没太多资格去评论。&/p&&p&期待更多面试官们来回答。&/p&&br&&p&最后一句话:养成良好习惯。因为,优秀是一种习惯。&/p&&br&&p&*******************************************************************************************************&/p&&p&补充一下:&/p&&p&一,发现&a href=&/question//answer/& class=&internal&&怎么进入BAT的研发部门? - 知乎用户的回答&/a& 其实很好回答了题主的问题。觉得知乎应该设立一个“重复”按钮,类似stackoverflow,告诉题主,类似的问题已经有人问了。&/p&&p&二,列出的书单都是比较认真看了的。之前发现很多人喜欢贴书单,我也喜欢。我也贴一个我床上的书,占我总书量的一半。都是正版。&/p&&p&三,不赞同纯看书,理论+实践是王道。&/p&&p&四,BAT很大,人很多,工号都是几万后。嗯,就这样。&/p&&p&五,上铺同学说下铺的我是个大2逼。&/p&&img src=&/b3dd4f5dc327a1fee0e620_b.jpg& data-rawwidth=&3264& data-rawheight=&2448& class=&origin_image zh-lightbox-thumb& width=&3264& data-original=&/b3dd4f5dc327a1fee0e620_r.jpg&&
世界那么大, 牛人那么多.要努力, 要奋斗.但是切记, 不要被自己感动. update.*************************刚结束校招,拿到几个offer,虽然是研究生,但是上研的时候基础为0。介绍一下自己的经验。首先介绍一下自己的背景。教育经历:本科和研究生都…
我在IBM曾经接待过一位实习生,他不会Java编程,不会写文档,不善于沟通,性格内向,容易害羞。这位实习生在遇到我之前,从来没有经历过面试,也不知道IBM的实习生每天做什么。我足足培养他了2个月时间,直接传授项目管理、质量控制、绩效管理的经验,注意,此处是经验,我直接教他他如何去评审一个需求文档设计文档测试案例文档,我直接教他如何最快地从一群程序员中挑出几个有潜力和能力的人选。我还天天请他吃饭,次均超50元人民币。实习期结束的时候,他对我恋恋不舍,他说他要告诉身边所有的人,IBM对实习生无微不至的关怀,从正面影响了他的人生。他还送了我茶叶和咖啡。&br&我从来都没有告诉他,这一切,都是因为IBM很喜欢你的叔叔。他的叔叔是中国电力行业中一家巨无霸公司中的第三把手。&br&&br&IBM不是互联网公司,但是我觉得这同样是“&b&本科生如何才能进入百度,腾讯等一流的互联网公司&/b&”的一个答案。
我在IBM曾经接待过一位实习生,他不会Java编程,不会写文档,不善于沟通,性格内向,容易害羞。这位实习生在遇到我之前,从来没有经历过面试,也不知道IBM的实习生每天做什么。我足足培养他了2个月时间,直接传授项目管理、质量控制、绩效管理的经验,注意…
渣硕的互联网求职经历,绝对的渣硕!最后拿到了bat中的两家offer,菜鸟们可以用来增加自信心!&a href=&///?target=http%3A//blog.csdn.net/ns_code/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&2015互联网校招总结&i class=&icon-external&&&/i&&/a&
渣硕的互联网求职经历,绝对的渣硕!最后拿到了bat中的两家offer,菜鸟们可以用来增加自信心!
来自子话题:
几乎所有的思想都是为了解耦,提高维护性。&br&解耦可在生产中实际效果是,把一个大工程,拆分成多个小工程,每个工程之间功能相互独立,可单独测试。这样的好处是把单线程变成多线程,原来需要一个人做一年的工作量,现在可以拆成12个人来做,一个月就能做完。而且每个人都只专注于自己那部分,对于大项目,或者工期紧的项目是非常重要的。要掌握好度,对于十分简单的功能,也要分的稀碎,就有点过度设计之嫌了。&br&另一方面提高了维护性,就是容易区分边界,一旦出了问题,能立刻定位是哪个模块,哪个接口出了问题。责成相关责任人去修改。&br&功能模块化,容易写测试用例。如果你写的话。╮(╯_╰)╭&br&功能模块化,让接手的人更佳容易理解你的思路,工作交接什么的更顺利。&br&&br&最大的好处是,让你自己的思路更清晰。不至于自己的代码,两天后再来看就成了&别人的代码&了。&br&优秀的命名规则加上好的接口设计,可以写很少的注释,别人也能轻易读懂。即便某一模块读不懂,也能知道,这个模块实现了这个功能,先放一放,以后回来再看,不影响撸清业务逻辑。&br&&br&不要嫌弃代码量多。因为有些公司可能按代码量算工资噢(伪)。&br&我刚接触编程时候,第一门语言是C,指哪打哪。后来刚接触C++的面相对象编程思想后,也有过和题主一样的想法,完全就是把简单的事情搞复杂了好吗。。。直到看完马士兵老师的java教程后。深入理解面相对象的意义,才发现,面相对象简直是上帝创世一样牛逼的思想啊!&br&题主要是想往高级语言发展,这条路是必须要经历的,多多练习吧!&br&手机打字,想到哪里说哪里。凑合看吧。
几乎所有的思想都是为了解耦,提高维护性。解耦可在生产中实际效果是,把一个大工程,拆分成多个小工程,每个工程之间功能相互独立,可单独测试。这样的好处是把单线程变成多线程,原来需要一个人做一年的工作量,现在可以拆成12个人来做,一个月就能做完。…
mvp出来好长时间了,也是照猫画虎实践了,最直接的感觉就是结构清晰了。&br&参考:&a href=&///?target=https%3A///android10/Android-CleanArchitecture& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&android10/Android-CleanArchitecture · GitHub&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=https%3A///pedrovgs/EffectiveAndroidUI& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&pedrovgs/EffectiveAndroidUI · GitHub&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=https%3A///chrisbanes/philm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&chrisbanes/philm · GitHub&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///android/mosby/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TED MOSBY - SOFTWARE ARCHITECT & HANNES DORFMANN&i class=&icon-external&&&/i&&/a&&br&&br&优点:view由Activity承担,Presenter做业务,结构清晰(模式么就是讲究一个套路,结构清晰后来者维护也是受益的)。之前开发都是全写一个类-Activity里面,业务复杂的情况下看着头疼。看一些公司招android还讲究mvc,(TM) Activity到底算v还是c,还是两者都是?&br&
楼上说到测试,我是人肉测试的,android测试一直受到诟病,很多国外大神都有喷过,我就不发地址了。mvp的话,理想化p层不包含android代码,使junit,我是没使用。&br&&br&缺点:每个view有个presenter ,类多了。不说presenter重用,实际工作中我是没法抽象使得presenter重用(技术渣)。有时候业务简单就直接一个Activity搞定了。&br&&br&最近风向变了,我mvp还没捂热,人家开始推崇mvvm(model-view-viewmodel)&br&&a href=&///?target=http%3A//tech.vg.no//android-databinding-goodbye-presenter-hello-viewmodel/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android Databinding: Goodbye Presenter, hello ViewModel!&i class=&icon-external&&&/i&&/a&&br&加上google还出了databinding&br&&a href=&///?target=https%3A///tools/data-binding/guide.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/t&/span&&span class=&invisible&&ools/data-binding/guide.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&提供切入mvvm的方式,虽然还有诸多不友好以及bug,但感觉android开发的春天快到了,像web 的ssh。&br&&br&以上,浅见,求大牛说说
mvp出来好长时间了,也是照猫画虎实践了,最直接的感觉就是结构清晰了。参考:优点…
测试与扩展性啊,最近也在研究这个,希望有大牛讲一下这个模式的前景
测试与扩展性啊,最近也在研究这个,希望有大牛讲一下这个模式的前景
来自子话题:
来自子话题:
我认为,一般来说,增加深度比增加广度难。&br&&br&以广度来说,只要能保持兴趣,可以不断学习各种入门知识。以软件开发而言,可能是多学几门语言,一些框架,各种不同的领域范畴等。由于是入门级别,信息通常很丰富,也不会有很多门槛。&br&&br&但深度就不一样,你可能需要了解一些知识的来龙去脉,可能需要读专门书籍及文献,并一直了解最新的进展。较简单的是挑选、组合应用一些现成的技术,理想的是要做出突破,超越业界的水平。在这些过程中,很可能会因为根基不足而停滞不前,例如一些文献使用到一些数学或其他理论,可能需要先补充相关的知识。&br&&br&身为游戏程序员,我真心不知道什么是「全栈」。IT行业每年都制造很多 buzzword,不要盲目追逐。许多公司也要求技术广度的,特别是较高级的技术职位,因为需要有广度视野才能避免把问题及方案空间看得太窄。做后台也需要了解前台,反之亦然。一些问题的解决方法可以在前后台中间移动,以提升体验及其他因素。&br&&br&另外,软件工程师不应该只学习软件方面的事情,软件最终都是解决一些日常/工作问题,最好可以多接触不同的兴趣,从生活中发掘创新。&br&&br&或者最难的,是腾出时间和保持不断学习的心态。
我认为,一般来说,增加深度比增加广度难。以广度来说,只要能保持兴趣,可以不断学习各种入门知识。以软件开发而言,可能是多学几门语言,一些框架,各种不同的领域范畴等。由于是入门级别,信息通常很丰富,也不会有很多门槛。但深度就不一样,你可能需要…
我觉着吧,要依据自己的工作与发展方向来确定深度优先还是广度优先。你要计划长期从事某个特定领域的开发,那么深入掌握这个领域的方方面面就很重要了。如果你不想绑死在一个领域,而希望多捕捉各方面的机会,那么广度优先,特别是想要创业的,你真得什么都懂一点。另外还有一个策略就是分析你要做的事,比如你需要独立地开发一个网站,那你就必须成为一名全栈工程师,只精通单个领域,于事无补。&br&人的精力有限,而知识技术等等都是无边无际的,想个个都精通,不现实。建议先广度,然后再选一个长期专注并深入。
我觉着吧,要依据自己的工作与发展方向来确定深度优先还是广度优先。你要计划长期从事某个特定领域的开发,那么深入掌握这个领域的方方面面就很重要了。如果你不想绑死在一个领域,而希望多捕捉各方面的机会,那么广度优先,特别是想要创业的,你真得什么都…
单纯就技术而言的话,我觉得若真的想深,后面你必须广才深的下去。&br&&br&譬如C++吧,最开始你会很自然的接触到语法层面,用简单的语法做一些比较简单的事情,如打印杨辉三角。&br&&br&随后你会接触到面向对象,会开始学会抽象、封装、多态等的思想,然后开始做一些更复杂的事情,可以将现实中的一些场景用面向对象的思想进行表达。然后,到这里的时候,你会更加频繁的使用STL了,然后开始觉得STL真是一个好东西,好多东西都有。&br&&br&然后你准备开始了解STL,发现STL是使用C++的模板技术,然后你发现你打开了一个新的世界,开始叹为观止,原来程序还可以这样玩啊!你开始如饥似渴的去探寻模板的技术,SFINAE,模板元编程,变长模板等等,这个时候有一部分人就在这里就地“走火入魔”了,完全不可自拔,业内人士一般亲切的称为“模板小王子”、“模板达人”、“模板狂魔”。&br&&br&还有一部分人并未那么的“痴迷”,欣赏《Modern C++ Design》里面的思想和设计,开始深入理解STL并且学习其中的妙处,然后发现这里面有了很多的设计模式,如策略模式,适配器模式等,发现必须要学习一下设计模式才能更好的理解这里面的东西。然后发现如Modern C++ Design说到的一样,发现STL还是有值得改善的地方,比如内存分配。然后开始理解内存的概念,这时候发现自己操作系统和计算机组织结构的欠缺的话,也不知道怎么弄,如要设计一个自动分配的智能指针,尤其是使用引用计数技术的话,这个时候有很多问题啊。如果一个线程在销毁,减少引用计数,另外一个线程在进行拷贝,增加引用计数,这个时候有点捉急了,觉得要了解一下并发和多线程,然而学操作系统的时候发现是这样的操作是要原子的,然后开始理解什么是原子,然后再回过头解决这个问题。然后,这个时候我又发现,有时候引用计数会出现环形引用,释放不掉,然后开始学习并且设计Weak语意,虽然走的很颤抖,但是心情是兴奋的。一个一个学习,并且解决,感觉自己异常的充实啊!然后,开始考虑支持自定义的删除器,逐步逐步的有了高潮般的感觉,发现自己好像有点强大了啊,设计完毕后又考虑自己内置的内存分配器是不是不够高效啊,于是开始去寻求操作系统书籍,乃至操作系统内核,看看别人的内存分配怎么做的,然后做完后发现自己是有点猛啊!&br&&br&然后继续向前,在设计智能指针的时候有了线程,然后知道了C++11有了thread,于是开始学习或者自己来设计thread,这个时候更加清楚的了解到了什么是线程,什么是锁等概念,再次感叹一下操作系统是重要啊,而要自己设计,自己就需要去了解UNIX的pthread,Windows的CreateThread的API,然后抽象出来。做完后,发现自己对线程和并发理解的更深入了,然后开始顺便就看看Java,golang的并发模型是怎么样的,然后发现golang里面的coroutine这样的是个好东西啊,能不能加入到C++来啊?少年真是机智啊,C++17正有此意啊,随后你自诩为“并发小王子”。&br&&br&然后继续向前,笑看其它STL库,随后发现了类似stack,queue,algorithm等是需要数据结构与算法的知识,然后去补数据结构与算法的知识,也发现了STL里面的算法和数据结构很多都没有,比如图论,KMP等,你就开始实现添加。在搜索资料的时候发现Boost也有,但是你忍住了没看,自己去实现了,再去和Boost比较。终于,你发现了一个更大的世界,感叹Boost的人真特么是模板狂魔啊,但是也发现了很多的东西,其中就有Boost ASIO,然后发现这个地方好像很活跃啊。随后,你开始使用,研究ASIO,感叹自己似乎也需要补足网络编程的知识啊,然后你扛起了Stevens的三大圣经,如饥似渴的啃。再回过头看ASIO,是有点厉害啊,你觉得自己也可以设计一个网络库嘛,然后开始撸了起来,虽然不如ASIO,也能自己搞搞么。弄完后,觉得自己好像功力又深了一层啊!&br&&br&随后,你开始不满足现状了,开始关注C++17等新语言的动态,尤其是STL,看有什么新东西加进来,自己也来实现以下。你开始发现了反射,发现了文件系统等,然后你按照提案以及例子,发现好像不用编译器的新语言特性也能弄?然后尝试着弄,失败,失败,失败、成功?然后觉得自己好像不知不觉学到了很多东西啊!&br&&br&随后,你再回过头看自己的代码,觉得好像可以再变的好一点,比如设计模式,比如重构,比如项目的组织,比如自动化构建,比如自动化测试,比如版本管理......&br&&br&&br&后来,你发现深入的时候,怎么需要这么多啊?不过好像感觉也不错啊...脑海中甚至偶尔冒出了这样的画面:&br&&img src=&/d330d7153fef5a6d7dd751e684ce2fad_b.png& data-rawwidth=&886& data-rawheight=&464& class=&origin_image zh-lightbox-thumb& width=&886& data-original=&/d330d7153fef5a6d7dd751e684ce2fad_r.png&&&img src=&/ff065e6007e3_b.png& data-rawwidth=&600& data-rawheight=&316& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/ff065e6007e3_r.png&&&img src=&/c60e60eee8ac005c8e70_b.png& data-rawwidth=&600& data-rawheight=&311& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/c60e60eee8ac005c8e70_r.png&&&br&然后,你会发现一切语言都好像蛮浮云的,其实就是因为除了语言外的东西,你基本上都会了,你开始如教育晚辈一样的说:“其实语言不重要。”&br&&br&然后你继续往后面走,开始接触到更加厉害的大牛,开始发现:“哈?这是啥?这又是啥?我怎么没有听说过?”然后你又开始潜心研究技术,向大牛学习,心也从爆棚变得安静下来,因为越深入,越学习,发现懂的好像越少,然后你又如以前一样,踏上了学习的新征程,只是这一次是更加深邃,更加神秘,更加复杂的世界,而自己也少了很多浮躁......
单纯就技术而言的话,我觉得若真的想深,后面你必须广才深的下去。譬如C++吧,最开始你会很自然的接触到语法层面,用简单的语法做一些比较简单的事情,如打印杨辉三角。随后你会接触到面向对象,会开始学会抽象、封装、多态等的思想,然后开始做一些更复杂…

我要回帖

更多关于 程序员和码农 的文章

 

随机推荐