编程开发怎么学习

最后登录16-11-19在线时间1033 小时赞0 注册时间10-8-16积分264帖子精华0UID176520
注册日期: 10-8-16
帖子: 96|积分: 264
赞助商广告
【新人求助】请问各位大大,如果我想在mac上编程应该学习哪些语言?需要具备什么基础?需要的参考资料?另外再帮解释下xcode& &obj-c 以及cocoa 各指的是什么…(新手问题弱智,不要取笑==)
最后登录17-2-2在线时间64271 小时赞469 注册时间05-4-23积分77337帖子精华171UID4
分享于 10-8-17 00:18:00
先学会c++ 在学cocoa
最后登录17-2-1在线时间3274 小时赞2 注册时间07-7-16积分2724帖子精华0UID47014
( ☆☆☆☆ )
分享于 10-8-17 00:41:00
xcode≈visual studio
cocoa≈.net
最后登录12-4-6在线时间65535 小时赞0 注册时间09-2-2积分7311帖子精华0UID90095
( ☆☆☆☆☆ )
分享于 10-8-17 07:27:00
最后登录14-8-12在线时间122 小时赞0 注册时间07-7-8积分218帖子精华0UID46596
分享于 10-8-17 08:54:00
买两本书,obj-c和cocoa,然后在机器上装着xcode,自己学习.
最后登录14-11-11在线时间301 小时赞0 注册时间09-8-5积分2254帖子精华0UID112841
( ☆☆☆☆ )
分享于 10-8-19 03:09:00
xcode是建立os下应用程序最快的办法
obj-c和c语言差不多的...
cocoa是c的超级 命令也比c多..好像最近也能在win上运行了.
还是c++比较普遍 学好它&&应该大多都能上手了[em07][em07][em07]
最后登录11-4-6在线时间584 小时赞0 注册时间10-8-31积分16帖子精华0UID179045
分享于 10-9-1 12:42:00
ls的解释有点不对。。。
我也是最近在学习mac的编程开发,说得不对大家指正
xcode 是mac下的ide,可以理解成windows下java开发的eclipse
objective-c才是c的超集,加入面向对象特性。若有c的基础,入门是比较容易的。
cocoa 可以看作苹果公司以objective-c构建的一套framework,一套开发框架,开发mac应用程序通常基于cocoa,iphone则基于cocoa touch[em01][em01]
最后登录17-2-1在线时间1095 小时赞0 注册时间09-2-12积分1893帖子精华2UID91319
( ☆☆☆ )
分享于 10-9-1 13:01:00
入门第一本书,learn c on mac,虽然没有中文版,但是里面的英文很简单,程序员应该都能看懂。
最后登录14-11-13在线时间166 小时赞0 注册时间10-9-6积分203帖子精华0UID180036
分享于 10-9-6 12:14:00
帮顶 [em01][em01]
最后登录11-11-6在线时间6205 小时赞0 注册时间10-5-9积分267帖子精华0UID159459
分享于 10-9-20 23:20:00
mac下学编程的路线图:
想开发怎样的程序:mac下运行的,还是iphone下运行的?
但是在这之前,先回答一些问题:
1:你熟悉c语言吗?yes to 3, no to 2
2:阅读c programming language
3:你熟悉objective-c吗? yes to 5,no to 4
4:阅读 objective-c programming language
5:你熟悉cocoa吗?&&yes to 7 no to 6
6:阅读 cocoa programming
7:mac or iphone?mac to 8 iphone to 9
8:find some open source project and get your hands dirty.
9:阅读 iphone sdk programming, human interface design guide, iphone application programming guide, memory management guide.
10: find some awesome framework, 比如说&&cocos2d, unity. 但是个人认为在这之前要恶补一些opengl es的知识
11:最重要的,get your hands dirty asap.游戏编程入门 - 做一名专业的游戏开发程序员需要学什么?
- 游戏程序设计 - 云世界日志
当前位置:
&&>&&&&>&&&&>&&正文
游戏编程入门 - 做一名专业的游戏开发程序员需要学什么?
18:06:35&&&&
评论(6)&&&&
阅读(56078)
&&& 相对于网络程序员、数据库程序员,游戏程序员似乎显得更为时尚。游戏市场带来广阔前景和无限商机,游戏程序员作为技术的载体,其价值也在不断被放大。
在游戏方面,大致可以将技术划分为如下几个模块:游戏架构、图形图像、图形特效、游戏逻辑、游戏界面、人工智慧、声音音效、网络连接、系统优化等。
分工细致的团队会将游戏程序员按照每道工序而分为:图形程序员、声音程序员、人工智能或游戏关卡程序员、物理程序员。
与传统的应用软件编程相比,游戏编程具有自己鲜明的特点:更加强调计算机图形学的知识和计算机资源的高效利用,这也成为广大有志于进入游戏编程行业的程序员的入门门槛。不少人认为,单机版游戏比网络游戏要来的简单,通俗点说,网络游戏 = 单机游戏+网络。单机版游戏需要在情节、逻辑和AI方面下工夫。网络,技术核心往往在于服务器端技术、客户端的稳定性、反外挂技术等等。单从程序员角度上讲,我们的平均水平离欧美的程序员的平均水平差距还是很大的。比如3D游戏引擎授权已经演变成了赢利的重要来源,但是市场上流行的几大3D游戏引擎都来自欧美。随着国内游戏公司正在努力找到了良好的赢利模式,开发人员薪资水平的大幅度提高,肯定也会吸引大量专业的高水平程序员加入。不少资格较老的程序员都是带着热情入行,也使得更加规范,人员更加职业化。
游戏编程新人求职功略日资游戏企业比较喜欢招用刚毕业的新人,所以就要求新人们在学校里学好软件课程。欧美公司一般希望招聘有项目经验的人,即使不是行业中,若有其他非游戏编程的工作经验,也是相当受欢迎的。
如果没有游戏编程项目经验,良好的编程素养是另一大重要素质,也就是编程的基础是否扎实、学习能力是否很好、对游戏的设计是否有感觉。要获得一个程序员职位,就千万不要忽略了你应聘时用的Demo,因为这里面包含了你对游戏的感觉与领悟。
要胜任游戏程序员,还必须做到以下几点:
1.热爱游戏。激情成就事业,游戏程序员的与众不同就在于,除了研发人员应有的理性之外,还必须对游戏有着无限热爱,如果连自己对游戏都提不起兴趣,又怎会做出让别人感兴趣的游戏呢!当然,若是只有热情那就不能正确理解这个行业,有时反而会做坏,比如在游戏中掺杂过多的个人意愿,忽视用户的需求。
2.扎实的基础。要成为一名合格的程序员,要熟悉包括C语言或C++语言、数据结构、编译原理、算法等计算机知识,同时数学基础也是非常重要的,这些在编制核心级的程序时往往会起到相当大的作用。&&&&
3.创新能力。作为游戏程序员,创意是灵魂。计算机本身就是发挥创意的好地方,若能将捕捉到的新事物揉入创意并应用到工程项目中,其中所含的经济价值将不容小视。
4.团队合作交流。程序员的不擅交流似乎已经成为业内公认,但对于游戏程序员,任何个人的力量都是有限的,在工作中,一个成功的软件来源于团队的精诚合作。团队精神正是程序员应该具备的最基本的素养。要知道,游戏程序员不单纯是技术的实现人员,更是游戏参与者。
职业生涯之晋升通道程序员(Programmer)——主程序员(Main Programmer)——技术总监(Director)如果要做核心程序员或者是leader就需要技术+游戏天分,否则只能做一些纯技术方面的工作。
“钱慢慢”其修远兮,游戏人才炙手可热,勤勤恳恳钻研技术的游戏程序新人,入行月薪3000+。当然也有入行高薪的,资历深厚的技术人员月薪8000+,对于拥有2年以上经验的专业人才,年薪10万以上,高薪是没有封顶的,不过很多游戏程序员还是在付出与收入不平衡中寻求着下一个出口。
  国产原创游戏低迷呀
  国产原创游戏低迷呀
  国产原创游戏低迷呀
  天涯明月刀欢迎你
游戏程序设计相关文章热门推荐:
声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
  你知道么?上海正有越来越多有远见的家长把孩子送去学编程!
  你可能会问为什么?看看这些亿万富翁的真人事例就知道了!
特斯拉、SpaceX火箭公司创始人埃隆&马斯克(Elon Musk),9岁开始学习编程;
Google人工智能AlphaGo的创始人德米什&哈萨比斯(DemisHassabis),8岁开始学习编程;
Epic游戏公司传奇创始人Tim Sweeney,10岁开始学习编程;
特拉维斯&卡兰尼克(Travis Kalanick),Uber首席执行官,6岁开始编程, 38岁登榜福布斯亿万富翁。
  数不清的科学界大佬,都是在他们曾经的小学二三年级就开始学习编程!如果他们的过来人经历还不能说服你,赶紧看下面这两个因为学习编程而改变命运的中国学生:
  日前,杭州15岁高三女孩郭文景获得奥林匹克信息竞赛奖项从而被哈佛录取;而武汉外校英中国际班学生沈凡收到了库珀联盟学院的录取通知书,并获得每年约2.14万美元高额奖学金!
  青少年为什么要去学编程?
  我觉得每个人都应该学习一门编程语言。学习编程教你如何思考,就像学法律一样学法律并不一定要为了做律师,但法律教你一种思考方式。学习编程也一样,我把计算机科学看成是教育,每个人都应该花至少1年时间学习编程。
――Steve Jobs乔布斯
  家长会这样告诉你――
  就像学英语是为了交流并不是一定为了当英语老师或翻译官,同样地,从小学编程并不是一定要长大后成为程序员或者开发者,除了学习和计算机交流,更多地是学习“计算思维”,以及如何独立思考解决问题的能力。
  小朋友们上学后的课外时间本来就不多,在编程学习中融入数学、逻辑、几何、物理等其它知识,能大大提升学习的性价比。
那孩子到底应该从几岁开始学习编程呢?
为什么要学习编程?
对于之后的学习、工作又有什么帮助呢?
  培养抽象逻辑思维,8岁~18岁是学习编程的最佳年龄
  在我们生活工作中,一定遇到过有些人很难把一些事情描述清楚或做清楚,甚至会颠三倒四,语无伦次。他们欠缺的就是从小对于抽象逻辑思维能力的培养。甚至绝大多数的中学生、大学生都很难把一些事情整理得非常系统和清晰。
  孩子在8岁左右开始形成抽象逻辑思维,整个8~18岁是抽象逻辑思维的形成期。逻辑是很抽象的,是很难通过语言文字去表述的。编程正是通过可见的代码、工具、运行结果,去不断梳理抽象的逻辑思维,再通过动手实践把抽象思维给具象化地表现出来。
  例如算法的运算结果、游戏中的步骤流程、机器人的指令等等,所以编程是最适合开拓抽象逻辑思维的方式。孩子在这个年龄范围是最适合学习编程的年纪。
  在美国,约有500万青少年在学编程。孩子从4岁就已经开始接触编程逻辑思维,9岁左右就可以掌握一门专业的编程语言,各种夏令营或者编程科创活动也很频繁,整体都处在大众化到普及化的过程。
  中国的多数孩子其实也很早接触了乐高等玩具的逻辑培养,但是到了8岁、9岁再往后,就会觉得没有地方能够再教授孩子更深入一些的编程知识以及有趣的实践了,也正是因为这些市场空缺以及教育产业链的不完善,使得这几年开始催生出一些偏向低龄化的编程教育,填补了市场的空缺,完善了从小学到中学编程教育乃至大学编程教育中至关重要的一环。
  生活工作中,高效系统的 “计算思维” 比其他思维运用更多
  可以试想下,我们可能学过奥数、物理、化学等等,做过很多考试及竞赛练习,而在我们生活工作中,特别需要用到这些思维方式的场景少之又少,取而代之的,是我们和计算机打交道最多。因此,为了提高生活、工作、以及团队管理的效率,了解计算机是如何思维的就至关重要。
  计算思维是近几年国外提出的思维方式,与数学思维不同,它是教会我们计算机是如何思考的,从而我们可以学习和计算机沟通,让它帮我们去高效地处理很多生活中觉得困难麻烦的事。
  计算思维是和数学思维不同,但并不冲突,甚至如果把这两种思维相互结合运用,能达到相当的高度,可以看到生活中编程好的学生数学也都不错,数学好的却不一定会编程。
  就好比老师找来三位同学,告诉他们一些数字,让学生们告诉他哪些数是质数。
第一个学生开始了心算,
第二个学生拿出了计算器(也是编程的产物),
第三个学生花了很少的时间写了一段代码,并告诉老师“您可以输入任何想要查看的数字,计算机会立即告诉你它们是不是质数”。
  这就是计算思维的一小部分。
  编程能把 “创意” 变成 “创造力” 。在将来,不会编程 = 半个文盲
  首先,这可不是危言耸听,
美国政府计划10年普及中小学生编程教育。
英国政府也通过新的政策,规定5岁以上学龄儿童必须学习电脑编程课程。
新加坡在2017年要求把编程纳入小学考试范围。
  在成长的过程中,我们有各种各样的想法和点子,有些看来是极具创意的,过去难以实现,而现今,青少年都可以玩转编程算法、游戏制作、3D打印、数学建模、机器人等等,编程已经是发展为一个全年龄段的完美卓绝的工具。
  它也是目前唯一一种能把所有想法和知识融会贯通从而变成有现实意义和生产力的工具,我们可能不再需要用纸和笔来画自己的想法,也不再需要用折纸剪刀胶水去做一些不能动的摆设,我们可以用计算机做任何令人惊讶的事情,而正是作为一种在当今必不可少的语言和工具,它已经越来越显示出它独特的魅力。
  名牌大学自主招生,奥林匹克信息学竞赛录取率是其他学科的2倍
  现今,从小学、初中、高中,几乎大多数孩子都经历过奥数的学习与竞赛。中国每年约有四十余万的学生参加奥数竞赛,尤其是小学奥数尤为火爆。学奥数除了为了提升思维方式,更多是为了升学择校。然而近些年来新政策下的情况是,保送大学时,因为数学专业的就业难题以及软件行业的人才缺口,更多的奥数竞赛获奖者还是都选择了工科专业,这就导致了奥数竞赛在淘汰率居高不下的情况下,又显得出口狭窄,学生往往争个头破血流最后却一场空。
  而奥林匹克信息竞赛,每年全国约有10万人参加,全国获奖者也可直接保送清华北大等名牌大学,或也能获得优惠录取政策,相对于奥数,录取率几乎提高了1~3倍,而且可直接对口国内外的工科专业方向,可以在进入大学之前已经把大学课程学习了近一大半,在当今这个时代优势更为显著。
  其实家长们不知道的是,孩子早在小学阶段,就可以学习专业的编程语言以及 “计算思维” 的算法,有趣的授课形式结合练习,使得许多小学生陶醉在自己的编程世界。
  上海市每年就有百余位小学生参加NOIP信息学奥林匹克获得奖项,这些奖项在一些中学的自主招生中,也能起到重要的作用。
  出国留学择校优势明显,科创作品更能加深面试官对于学生的印象
  中国留学热潮只增不减,越来越多的中小学生选择出国留学。留学择校过程中,对于社会实践以及面试环节尤为看重,往往许多家长都愿意花很高的成本让孩子做一些看起来很有意义的实践活动,可实际孩子本身的收获却少之又少。
  近来,美国白宫宣布,包含全美7个最大的学区将加入普及电脑程序课程的行列,超过60个学区承诺将提供电脑类课程,该专案将惠及全美1,000多所国中的400多万青少年学生,又据悉美国芝加哥市长呼吁将电脑编程课程列入美国高中必修课程当中,电脑编程或将成为美国高中毕业标准之一。
  在留学最热的美国,已在许多院校开设编程课,也希望越来越多的学生可以掌握编程技能,发展学院的特色。从杭州15岁高三女孩郭文景获得奥林匹克信息竞赛奖项从而被哈佛录取,再到武汉外校英中国际班学生沈凡收到库珀联盟学院的录取通知书,并获得每年约2.14万美元、4年折合人民币约56万元的高额奖学金。
  可见学会编程,并做出相关成就,对于留学以及未来学习、职业发展的重要性,而这项技能现在从中小学就开始进行筛选,如果还觉得“等到了大学再学编程也不迟”,那到时候也很难取得优势。
  国内外编程人才短缺,硅谷以及各大企业已从中学抢夺人才
  USNews公布的2015年全美最佳职业TOP100,其中程序员名列该榜单榜首。同时,据美国劳工部提供的数据,程序员的平均年薪为9万美元,而其中10%顶尖级的程序员年平均收入为13.89万美元。单单中国,软件行业每年的人才缺口就超过一百万。
  最近,被称为世界围棋第一人的韩国名将李世石九段和“阿尔法围棋”的人机大战刷爆了朋友圈,再一度引发了编程人才短缺的讨论。人工智能技术人员是“少而精”的人群,相比于互联网传统的程序员,人工智能尤其是深度学习的人才严重供不应求。
  “做深度学习的人工智能博士生,现在一毕业能拿到年薪200万到300万美元的offer。”创新工场CEO李开复近日发言,“硅谷公司都在追捧这个方向,这是有史以来没有发生过的。三大公司(谷歌、Facebook和微软)在用不合理的价钱挖人。”
  由于人才争夺激烈,许多硅谷公司为了取得优势纷纷不惜代价,采取了从高中招聘实习生及提高新员工津贴等手段。不仅LinkedIn、Facebook等上市公司向Sayman这样的大学新生发出暑期实习邀请,包括Airbnb在内的初创企业也纷纷招聘小至16岁的年轻人当实习生。许多技术公司还定期举办各种编程马拉松和竞赛活动,也试图从中寻觅到合适的人才,这些活动中往往也活跃着那些年轻人的身影。
  综上所述,学习青少年编程的孩子能够收获――
提升抽象逻辑思维能力与创造力;
独立思考与解决问题的能力;
提高名牌大学自主招生的录取率;
加深出国留学面试官的印象;
未来科创型人才
  在信息时代发展迅速的今天,人才竞争尤为激烈,技术革新也越来越快,编程作为今后及未来的必备技能,已经在生活工作中无所不在。英美国家编程教育的普及,也使得越来越多的中国家长开始关心起孩子的编程技能及创造能力的培养。
  傲梦青少儿编程的创始人David分析:“就我们目前的学生情况而言,2016年上海的每100个中小学生中,就有大约8个学生在学习编程,这个数据是2015年的2倍,是2014年的8倍,而在今后,随着编程教育越来越被家长们熟知,家长们会逐渐了解并认识到它的重要性,相信中国进入全民编程的日子也不会太远。”
  傲梦青少儿编程
创办于2014年3月,是国内青少年编程培训机构的开创者。公司总部位于上海,主要致力于8~18岁青少儿计算机思维、计算机编程、游戏应用开发等课程,帮助孩子们提升其抽象逻辑思维、计算思维、创新与创造力。目前累计1000名学生。
我们拥有极具雄厚的师资团队和卓越的研发团队,其独创的教育模式、在线学习平台以及高标准的课程体系,让孩子轻松体验编程学习。课程包括:特色C语言、Cocos专业游戏开发、Arduino创客硬件、NOIP奥林匹克信息学竞赛、留学计算机项目指导、Scratch游戏编程等。
  我们教的不仅是如何和计算机去沟通,我们的独创教学体系教的更多的是如何培养孩子们从小独立思考和解决问题的能力,在以后整个学习生活工作中都会起到决定性的作用。
作为青少年编程培训的领先者,我们帮助中国孩子不断提升编程能力,让他们在编程思维和技能上保持全球竞争力。
傲梦编程课程体系
  经典C语言
  适合:小学三年级-高三学生
  独具特色的C语言教学,结合扎实的算法实践和简单的游戏演练,提前开发孩子们的抽象逻辑思维和创造能力,提升数学、逻辑和创新综合能力,成为编程达人。
  Arduino
  适合:小学二年级-高三
  Arduino是一款便携灵活、方便上手的开源电子原型平台,包含各种硬件组件和软件系统,非常适用于对编程、科学、物理感兴趣的初学者和小发明家。可以结合C语言,培养抽象逻辑思维和动手能力进一步提升孩子们的“计算思维”和创新创造能力。
  Scratch
  适合:小学二年级-五年级
  Scratch是一款面向少儿的简易编程入门工具,通过积木形状的可视化模块来编写指令,使得孩子不用编写代码,却能完成游戏或动画的设计和创建,从中培养小朋友良好的基础逻辑思维、编程思维和创新创造能力,通过孩子自身的兴趣引导,为将来学习其他复杂的抽象思维打下基础。
  NOIP全国信息学奥利匹克联赛
  适合:小学三年级-高三学生
  C/C++语言的进阶培养,让孩子们掌握更专业的编程知识,运用复杂的算法理论和编程思想,完成更具挑战性的编程课题。
  Cocos 游戏开发
  适合:小学四年级-高三
  玩游戏不如编游戏。Cocos 专业游戏开发认证讲师教你如何开发类似《我的世界》(Mine craft)、《部落冲突》(Clash of Clans)、《王国保卫》(Kingdom Rush)、穿越火线(CF)等专业游戏。
  留学项目作品指导
  适合:出国留学的学生
  掌握编程知识及游戏开发,制作独一无二的游戏作品。定制化的课程,专业化的作品指导,让孩子在择校中更具竞争优势。
现在就来报名体验
免费试听课程!
  报名方法:
  (1)网上报名:扫描下面二维码填写报名信息,或者点击文末左下角“阅读原文”报名!
  (2)电话报名:拨打400-805-2388报名
  咨询电话:400-805-2388
  官方网站:www.
  地址:上海市长宁路855号亨通国际大厦6楼
  联系邮箱:
  ↓↓↓点击这里报名哦~
欢迎举报抄袭、转载、暴力色情及含有欺诈和虚假信息的不良文章。
请先登录再操作
请先登录再操作
微信扫一扫分享至朋友圈
中国高校校报协会副会长......
北京教育音像报刊总社评论部评论员.....
中国青少年研究中心首席专家
美国独立教育顾问协会认证顾问
中国人民大学政治学教授自学编程开发,如何破解从入门到放弃 - 简书
自学编程开发,如何破解从入门到放弃
最近有几本书很火,看看你肯定会有感觉。
几本心痛的书
C/C++,Java这些开发语言,在大学计算机专业、理工类专业大多学习,Android, iOS也有不少同学买书或下载视频学习,但是最后都是没有结果。
一方面程序员成为最有“钱途”岗位,需求量见涨,另一方面很多计算机专业,理工类专业的同学,在大学学了相关课程,也自学了一段时间,仍没有达到开发岗位的要求,不得不放弃成为遗憾。
如何破解从入门到放弃,跨入最有钱途岗位,成为一个开发者?
把编程开发学习当作一个技能来学习,而不是大学中的学习。中学、大学的学习目标是为了考试,完成学分。
了解习得性的技能学习的规律。即强化训练,反复训练。没有一定强度的反复操练是不可能掌握一门技能。
完成代码量的训练,如果要定一个量的话是10000行。你可以想一想大学里学C, C++, C#写了多少代码?很多同学是不超过200行。
一定要做项目。每天完成一些练习、Demo,还不够。把这个项目当作你独立的作品来完成。
每天写日志、写总结。用markdown来写,记录你学习过程中的问题、思路和成就。
如果你自学了一段时间,感觉吃力,那也不要放弃这个金饭碗。一定是你没有找一个好的老师指导,一个好的相互学习的同伴环境。靠谱的老师和同学都在上嵌科技
用感恩心态 做良心教育在真实工作中的编程是怎么样的,与学校里有什么不同?
招聘信息:
作者: 授权本站转载。原文为知乎问题下的回答。/*说说我的经验*/刚进公司时,在你正式动手写代码前,很可能要理解code base。这一过程至少持续1个月,取决于你所在项目的规模。你会发现你不得不使用你浑身所学之能事,理解上古程序员是如何解决一个个实际的问题的。有的时候你沾沾自喜,“哈哈,这个技巧劳资经常用,你们也算有点见识”。但大部分时候你很糊涂。在此阶段,你每天的工作就是看文档,看设计图,读代码,放断点debug,hack,fix,问同事。你很累。你很无聊。此外,刚进公司的你,会发现你的项目组正在使用一些奇葩工具、冷门技术,他们非常不好用,尤其跟你大学时候用的成熟IDE相比。你可能会想砸键盘,“谁特么想出来的用这个工具!谁特么写的这么sb的工具!”你很失望。渐渐的,你开始了解了你们的业务领域,所谓的掌握了一定的领域知识,你开始有能力判断哪些是权衡,哪些是权宜,哪些是极精妙的设计,哪些是遗留代码。你的领导也发现了这一点,于是开始给你安排简单的任务。他们可能是改一些显而易见的bug,可能是实现一个最简单的新特性。此时你会有一种驾驭的错觉,你很快的写好了功能,提交,开始幻想自己精妙的代码收到表扬。当然,不出意料的是,你提交的100行代码里被找出了10个bug,其中2个是很严重的逻辑错误,4个是未实现的需求,2个是ui错误,2个是边界条件未检查。你心里十分不爽,“妈的劳资这么屌炸天的代码你们都不懂得欣赏!”此时你的领导过来轻描淡写地来了一句,“我们提交之前要进行code review”。于是你找了你身边比较和善经常解答你问题的小哥来代码检视,10分钟之后,你漂亮的代码被改得面目全非,你欲哭无泪,又不想得罪前辈,于是默默地提交了这不知道是谁写的代码。就这样挣扎着过了几个月,你开始摸清了门道,于是你开始运用你大学时期课内或者课外学到的引以为傲的技巧和知识了。领导自然也发现了这一点,于是他开始安排你组织技术交流会,你精心准备好了ppt,自己在家排练,并且试图加入一些或者高冷或者没品的幽默段子。会议很成功,你感觉到同事开始对你刮目相看,你开始飘飘然,重新拾回“驾驭”的感觉,心想“就你们这帮码农,劳资以后可是架构师!”渐渐的,你开始进入了状态,你提交的代码越来越多。刚进公司时你从来没打开过的代码规范文档开始回来找你麻烦,不过这不是大问题。领导开始对你强调质量,而你则在心里抱怨旧代码的设计。你想要重构,你想要创新,你想要搞一个大新闻。与此同时,组里新来了一位同事老李,是从其他部门调过来的老员工,领导组织组里盛情欢迎了他,你心里不服,但是他是个好人,你们谈笑风生。机会来了。公司要紧急实现一个演示功能,百万级的合同能不能拿下来就看这次了,你的领导已经亲自飞往客户那里坐镇,他走时跟你说,“组里就靠你和老李了!”你十分激动,买好了泡面和零食,准备通宵作战,给领导提供最犀利的火力支援。第一个功能点谈下来了。领导发给你了要求。你发现你半懂不懂。里面提到的一些其他模块,你在每月组织的技术交流大会里听说过,但你写过的那点代码里从没调用过他们的API,你更没读过他们的代码。你有点不知所错,开始心虚。不管了,先开始干。你找到了一些相似的功能,翻出了一些发霉的陈年旧代码,注释里写着。你没有时间完全读懂,你开始复制粘贴,直接debug。当然,代码报错了,你开始挨个解决,就这样,一个通宵。第二天早上,你总算把你熟悉的后台部分调通了,你发现了新的麻烦。是前台。你对前台并不熟悉。你知道javascript的原名叫ECMAScript,你知道JQuery对象和dom对象的区别,但是你发现你还是看不懂你们的前台代码。怎么办?好吧,你决定拉下脸,问老李。老李看你的样子,说,“你去睡一会吧,我来帮你看”。你心里有些不甘,有些不好意思,也有些感激。你很想自己把它们做出来,但你不会,而且时间也来不及了。你想学学他是怎么做的,但是你的大脑已经停止工作了。于是你疲惫地笑了笑,“好,交给你了。你看一下这里这里还有这里...我就去睡半个小时,一会就回来找你。”你这一觉睡到了下午。你醒来一看表,震惊的弹起来,赶紧回办公室找老李。老李已经从你的座位回到自己的座位上了,正在慢悠悠地喝茶。你有些惊喜地问他,“怎么样?”他回头看见你回来了,说,“放心吧,已经给一线调试了,你去吃点饭吧。”你哪里有心思吃饭。你惊讶地对老李说了声“好的!太好了!”然后回到你的座位上迫不及待得打开代码开始运行。正如老李所说的,功能已经实现了。你轻舒一口气,拿出一碗泡面泡上,开始啃代码,心里想的是“这次一定要准备好,防止下次再出乱子。”啃着啃着,你有些不耐烦了,因为你发现代码越看越多,已经超出了你的大脑容量。你想了一下,决定先放在一边,查收一下邮件放松一下。邮箱里又是塞满了新员工培训的资料,各个部门的联谊活动通知,当然最多的是服务器发来的build report和test report。没什么有趣的事。你想了一下接下来要干嘛。算了,还是接着写新特性吧,测试们还等着你呢。但是你其实很忐忑,你的心早已飘去了前线,但是你知道你不能发邮件问状况,因为你领导可能几天没睡了,何况你也并没有什么特别紧急的事。你破天荒的把邮件客户端开着,留意每一个新收到的邮件。就在这样的忐忑中,一天过去了。反正也没什么事,你回家好好洗了个澡,定了个早早的闹铃,安心的睡觉了。第二天一大早你就跑去公司,果然邮箱里有了领导的邮件,上面写道“演示很成功,客户很满意,接下来是谈判阶段。家里的开发兄弟你们太棒了!”当然,你很高兴。但是又有一点失落。你不太明白为什么,于是你想了一下。随后你似乎明白了,虽然这是一个好消息,但是好像跟你又没什么关系,跟任何人似乎都没什么关系,好像是一件自然而然的事情一样,并没有“holy shit”超神的声音。过一会,你的大领导,项目总经理回复了你领导的邮件,说“干得好!同时也对家里的兄弟提出表扬!回来开庆功会!”你心里略有一些期待,“不错”,你想到,虽然主角不是你,但是你毕竟也是功臣。你为庆功会暗自准备了很久,你在网上浏览跟领导吃饭该说些什么,你想好了很多概括性的有内涵的问题来证明你对项目的理解,你也想多了解一些项目的大方向。几天之后,你领导回来了,大家开了庆功会。饭局上,大家聊聊家常,聊聊你领导在国外的见闻,大领导知道了你的名字,大家似乎很随意的打了一会牌,就这样平平淡淡的结束了。你略有一些失落。生活回归正常。但似乎又跟以前不那么一样。你在开发工作以外,有了新的任务,其中包括学习推广新技术等等。你开始跟你领导彻夜长谈。他与你分享他的经验,你与他分享你的见闻。你开始接触他的工作,比如提高团队能力,完善自动化测试,提高代码质量,提高代码性能,增强功能可配置性等等。你开始淡定的接受新的工作,而不再幻想一朝成名的瞬间。毕竟,迎接挑战才是你真正感兴趣的事。不过,这接下来的几个月里,除了改自己先前遗留下来的bug,你几乎没有提交任何代码。你每天的工作变成了看框架,读代码,看技术文档,学习试验新工具,浏览技术论坛等等。你开始觉得有一些缺乏成就感,也有点怀念绿绿的单元测试结果和噼里啪啦弹钢琴一般飞舞的手。有一天晚上,只有你和你的领导在加班。你的问题困在心里很久了,于是你问道,“老大,为什么我的任务跟别人的不太一样了?” 老大说,“那当然了,你是当作未来的技术主管来培养的。”突然的幸福让你不知所措,不过你克制地问道,“技术主管都是干什么的?” 老大并没有回答你,而是说,“以后你就知道了”。生活还在继续。跟你同一天入职的晓明是一个勤奋而又活泼开朗的人,但是你觉得他似乎入错了行。他总是挣扎着思考为什么他的代码中有逻辑错误。对你来说再简单直接不过的一段代码,他也很难读懂。领导也发现了这一点,所以安排他渐渐地向配置管理(CM)方向发展了。不过他似乎对这个很擅长,无论多么繁琐的任务,他总能按部就班的完成,各种纷杂的脚本他也一一了熟于胸,重要的是,他很有耐心,无论服务器出了什么奇葩问题,他都会跟它死磕到底。大家都很喜欢他,也很信赖他。有一天,晓明像往常一样抓住你向你请教问题。是个bug。你已经习惯了从代码检视开始。你自信地叫他给你看代码。然而你并没有发现什么问题。于是你问什么现象。他说部署到服务器上就报错了。你看了一下日志。你没想通。于是你再仔细重新检查了一下是否各个环节都作对了。是的,没有什么问题。好吧,你知道你遇到棘手的问题了。不过谁知道下一秒会不会就解决了呢?进公司这么久,各种奇葩问题对你来说早已是司空见惯。你打开搜索引擎,开始试图寻找相似的问题。你不断的做出假设,然后通过证据否定它们,然后再作出新假设……直到你突破了你的理智,你觉得可能是编译器出了问题。真的假的?你从来没有想过编译器会出问题,就好像你从来没有想过你的肝脏有一天会报错一样。你觉得应该是自己错了,于是你仔细排查了一下其他的可能性,不,没有别的问题。于是你把服务器上编译过的字节码通过反编译工具打开,你发现了一件微妙的事情。于是你跟随着这个线索继续上网查找原因。终于,你发现是兼容性的问题。你发现了新大陆。问题虽然复杂,但是你只需要简单调整一下代码就可以绕过这一问题,于是你三下五除二把代码改好了,测试,嗯,哈哈,果然没有问题。晓明在旁边看得发愣,问你,“咋回事啊?” 你心里有一丝淡淡的骄傲,你兴奋地把他拉过来看你搜到的网页,你把代码反编译之后跟源代码对比,你给他讲依赖加载的实现……你兴奋得讲了一大堆,他静静地听完之后,眨了眨眼,说,“大神啊!”艹,他根本没听懂。你一下子泄了气。你也没什么可说的了,但也不知道该如何接茬,就谦虚道“没有没有,我不是大神”。虽然如此,他依然天天跟着你“大神”“大神”得叫你,虽然你知道他很菜,但是当个伪“大神”也不错。你有点沾沾自喜,想说给你的同学听,又觉得太 low。要不发个状态“我不做大神好多年”?想想太蠢,只好作罢。直到你发现还有好多人也被他称为“大神”。失落?有一点。你都习惯这种失落了。自从意气风发地毕业之后,你再也没有那种强烈的胜利的感觉。你觉得生活似乎并不是你之前那样的一元化。大家都有各自完全不同的特长、兴趣、知识和经验,你也有你的,你并不是万能的。即使在上学的时候你从来都是班级里的佼佼者,但是你渐渐的发现世界还很大,你不会的还很多,山外有山,人外有人,路漫漫其修远兮,吾将上下而求索……想到这,你的思绪突然中断了。你觉得自己实在是太优秀了,还懂得反思。你又开始了沾沾自喜,心想,自己如此优秀的人,总有一天会干出一番大事。于是你收拾收拾心情,继续工作。最近项目没有那么紧张了,你渐渐的多出了不少时间。你领导也是。所以他又推荐给你了几本书叫你看,都是一些设计的书,什么《领域驱动设计》、《企业应用架构模式》、《修改代码的艺术》等等。你想起了刚来的时候他叫你读的《重构》,《设计模式》等书,你还记得刚翻开它们时的那种醍醐灌顶、豁然开朗的感觉。你微微一笑,说“好”。这些书写的真好,你感叹道。读着它们,你总是不自禁地想起你们的代码。你非常能理解书里描述的现象,你觉得你们的代码有着同样的问题。可是当书里介绍解决方案时,你却发现理解它们很困难。书里面的问题域跟你们的不太一样,你们有着不一样的需求和架构。书里说对于数据库的操作要做这样的一层封装,可是你们除了数据库还有web service;书里说对于UI和业务逻辑要做这样的隔离,可是你们的UI并没有直接调用后台,也是通过web service;书里面提到了好多技巧,你们并不需要……你看得很无聊,渐渐的失去了耐心。简单翻完了书的后半部分,你觉得你差不多明白书里面说的方法了。一种乾坤大挪移练到第七层的感觉油然而生,你非常急切地想找点东西试试功力。你踌躇满志地对你领导说,“我想对我们的代码 进 行 重 构 。”出乎你意料的是,你领导一点都没有惊讶,而是笑眯眯的问你,“呦,好啊,你打算怎么搞啊?” 你没有想过这个问题,愣了一下,说,“就按照领域驱动设计的方法改啊,构造一个充血领域模型。” 领导继续笑眯眯,“好啊,那你打算怎么实施呢?”怎么实施?什么叫怎么实施?改代码就是改代码咯,还怎么实施?你摆出了一个困惑的表情。领导笑的更开心了,“你还记得《重构》里说过的,重构代码要保证单元测试全通过吗?但是现在你要重新设计,单元测试肯定都没用了,要重新改。你来看这个。” 他掏出一本书,指着某一章的标题说,“如果要对代码进行大型重构,只好退而求其次,使用高覆盖率的自动化测试来确保大部分功能的正确性。但是只是这样是远远不够的,我们还得保证原有功能没有被破坏,所以你还可以这样这样……”你听的如痴如醉,如沐甘霖。你想起在学校里,如果你对代码不爽,你可以干脆删掉重写。你甚至都不需要一个版本控制工具。你从来没有想过在真正的工程中有这么多复杂的问题以及这么多聪明的前辈们发明了各种系统化的方法。你再一次发现了新大陆。讨论之后的结论是,你负责监督并提高自动化测试的覆盖率,同时你可以先构造新的模型代码,也可以提交,但是在发布时并不把它们包含进去。当新的代码写好之后先内部测试,确保几乎没有问题了,再策略性的发布出去。说干就干,你很兴奋。“终于可以写代码了!”你开心的对领导说。领导又笑了,“写代码并不是重点,重点是让它们正确的执行起来。” 你若有所思的点点头,心却早已飞到了你的新设计上。你打开了看过改过无数遍的最核心的业务代码,心里想象着它们被你改好之后的样子,完美的领域模型、高内聚低耦合的类、优雅的代码、完备的注释、再加上同事们佩服的眼神……你觉得你快要像樱木花道一样笑出声来了。但是细节之处有乾坤。你发现你第一行就不知道怎么改。是日志。你想了半天,没有想到任何现成的解决方案。你问自己,日志算不算业务逻辑呢?算吧,它又对框架有很多依赖;不算吧,那把它放哪呢?你对着日志的代码看了整整一个下午,仍然毫无头绪。你觉得日志简直是破坏你优雅代码的杀手,你真恨不得把它们给删了……算了,先不想了。你决定今天给自己放一天假,早早回家看个电影然后睡觉。刚推开门,哇!外面下雪了。漫天的雪花翩翩飞舞,一扫平日晚上萧条的景象。昏黄的路灯照射下,雪花反射出暖暖的光。你想起了你在北国的家乡。北方的小伙伴们都说江南的湿冷让人难以忍受,“屋里跟屋外一样冷”。你在此时此刻却有了另外的感悟,你觉得说成”屋外跟屋里一样暖和”也说得通。也许生活就是这样吧,你想到,并不总是得意,也并不总是失望。你的期待总是狡猾得伪装成另外的样子悄悄的进入到你的生活中,而你的得意又总是在指缝中流走,想握也握不住。但是不管怎么样,你觉得你很快乐,也很幸福。你很庆幸自己成为了程序员。你对现在的自己感觉到骄傲。意识到你已经在门口发呆了很久,你笑了,笑自己什么时候变的这么多愁善感。你走出门去,踩在雪上,发出咯吱咯吱的声音……[全文完][程序员的故事还没有完]/** 后记真的没有想到大家对这篇小文章(我都不知道能不能称为文章)这么喜欢,我本意只是想通过一些真实的细节来描述工作和学校的不同的,谁知道写着写着就成故事了:-D其实后面还有更多有意思的故事,不过已经扯得太远了,想听的话带上好酒来找我吧!至于你们所关心的老李,他是真的,但是他并不是扫地僧,他是前端大神,后来他把我们前端的js代码完全重写了一遍,他三十多岁,头发浓密,有一个可爱的小女儿,说话不多,但是喜欢讲内涵段子。故事经过了加工,亦真亦假,人物也不是完全还原,但是看到你们留言说很真实,我非常开心!最后,作为一个工科男,我决定总结一下:工作之后的代码量远没有学校时大作业那么多,但是要更严谨;但是你要面对很多遗留代码,你要把它们弄懂,不像在学校里你基本都是从头造轮子;同事们都是八仙过海,各有所长,无论你在学校里是当大腿还是抱大腿,在公司大家都对公司有着这样那样的贡献;你不可能什么都会,工作才是学习的开始,大学生活只是让你准备好;除了代码和技术,你还要考虑业务知识、测试、质量、生产效率和可持续性;机会总是有的,你要做的只是准备好;学校所学的非常有用,但是理论和实践有着巨大的鸿沟,这全靠你的经验和工程感 (engineering judgment);我暂时只能想到这么多,更多的就靠大家自己发掘啦。最后祝喜欢编程的大家都成为架构师!*/
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量6194点击量4495点击量3640点击量3605点击量3281点击量2860点击量2787点击量2720点击量2616
&2016 Chukong Technologies,Inc.
京公网安备89

我要回帖

 

随机推荐