安卓xp框架,一款手机上的tk小游戏小游戏需要开发插件,有大神接单没,钱不是问题,问

大学不主攻ACM,进工作室自学android做小项目,会有前途吗?
来源:互联网
【本人为某一一本非985和211大学学生,现在大一,计算机专业,各科学习相对努力与良好,专业课知识与身边其他人相比相对前列,稍得老师赞赏。进校考试考进了“卓越班”,班级的课程比较快,现在大一下学期我们已经学完了许多普通班大二的课程,之后多出的时间都会用于实习。目前自认为自己的方向比较明确,将来打算做安卓或者游戏开发。 大一上学期,我在我们学校的OJ上面刷了估计300多道题,对自己对语言的理解有挺大的帮助的。但是,感觉还是对算法没太大兴趣,还是没去参加ACM,主要我觉得大学搞算法的主要出路就是到处比赛拿奖,太单调而且太被动(就是跟着老师训练,自己除了搞算法不去规划自己将来的发展),我想让自己大学能多了解一些做项目之类的东西,自认为项目经验无论是对对将来出去找工作还是对自我发展都是有很大帮助的。上半学期闲暇的时候,也是看了《浪潮之巅》、《程序员修炼之道》、《算法竞赛入门经典》、《程序员在囧途》等书,由于大一时间比较多也是看了哲学书、文学书、心理书等20本左右。也是养成了逛知乎和在博客园等网站上看文章的习惯。 现在是大一下半学期,我加入了我们学院的一个学习开发的工作室,主要有java网页,前端html、css、js,PHP框架、安卓等。我加入的安卓组,在几轮选拔下留了下来(有30多个人志愿加入,最终留下4人),现在主要就是学习android,先前是学长教我们,现在会了一些基础之后就是自己利用空闲时间自学,每周会有2.5小时的培训,大家就在一起交流自学所学习的东西,我挺享受这些,也觉得挺有意义。(对安卓的自学也是很大的提高了我的自学能力)在之后如果有能力,工作室是接一些项目给我们做的。由于老师的推荐,我也是买了《C++ Primer》来深化自己C++的学习(暂时的认识上是觉得C++是做游戏的基础)。 然而,现在之前去参加ACM的一些同学现在周末都是到处打比赛,然后有的也已经拿了奖,自己还是在坚持这些自认为有用的东西却暂时毫无成就。自己在知乎博客园等上面看文章,也是发现大家对ACM都很看重,将来出去能有这方面的成就是对自己很有帮助的,像自己这样的情况也暂时没有在哪看到有相似的案例。而我现在是对自己有点怀疑了,我不知道自己这样的坚持到底有多少意义,希望各位前辈可以给点意见。(另外也是说一下,我不太打算考研,不想搞学术,暂时认为几年的工作经验比搞学术更有意义些。)】
jun zheng:
讲一下我的个人理解。本人担任某二本院校acm指导教师近10年。排名第一的答案是朝着牛人的路子去的,但绝大多数人都不会成为牛人。如果不准备考研、搞学术,普通工程师应该有更合适的路子。首先说一下acm。搞算法可能涉及大致三类1 基本数据结构,枚举,递归,回溯,搜索算法,动态规划,图论(基础)2 图论(高级),博弈,数论,几何,组合数学.......3 神经网络、遗传算法等等等等(这些对acm也没有大用,有兴趣可以玩)能搞定第1类,基本可以拿到省级比赛的三等奖,冲击二等奖。搞定第2类,可以冲击省级比赛一等奖,参加亚洲赛甚至总决赛。但对非985、211学生来说,一是要付出大量时间精力,二是还要看天赋。做acm的好处是a 快速提高编程基础能力b 培养逻辑思维能力c 培养自主学习能力所以,在做项目的时候,搞过acm的学生优势在于:学习比较快,逻辑更清晰,不容易出低级bug。但这些能力在你能较好的掌握第1类算法后,就已经具备了;再去研究第2类算法,增加的主要是对具体算法的理解,对逻辑思维和学习能力的提高已没有之前明显了。因此,对于想玩一下acm的同学,好好学习一下第1类问题就可以了。花大量时间精力去研究第2类问题,意义并不大1) 工程中用到的概率很小2) 如果工程中要用,到时候再学也不迟除非对acm非常有兴趣和信心,想拿更好的奖,准备考研,你可以继续下去。否则,绝大多数同学,我建议在学完第一类问题就不要在acm花太多时间了。一般985、211的学生acm可以一直玩到大4甚至研1,因为acm成绩好的估计都保研了。但如果本科毕业要工作的同学,在大3参加完一些比赛后,就应该离开acm了,否则你没时间去积累项目经验。当然,你可以和acm的同学继续玩在一起,但不应该是主力。积累项目经验的意义1 有个说法是,”学《编译原理》,就自己实现一个编译器,学《操作系统》,就自己写一个操作系统,学《数据库原理》,就自己写一个小型的数据库管理系统,学《数据结构》,就把书上的代码习题全都做一遍,并且熟练掌握“,这个方法在国内可能并不可行a 国外每门课的大作业基本都是项目级的。但国内由于师生比和教学方法的问题,老师如果出大作业,最多最后简单给你评个分,过程中能给的指导有限,全靠你自己去摸索。b 靠你自己摸索做的结果多半是,做的不会很深入并且很难真正理解,因为你不知道这些东西到底有什么卵用。当你做过几个Java项目,能熟练使用List、Map、Set这些工具类的时候,你对《数据结构》的理解更直观了。当你做过几个手机端项目,其中要用到数据库并且数据量还比较大,你会发现原来看起来没有卵用的索引、联合查询、事务是多么有用。当你做过有一定复杂度的Android项目后,对进程与线程、Activity堆栈、Android消息机制这些操作系统的基本知识也掌握的差不多了,如果还想深入,可以去看Android源码,甚至底层Linux内核源码。做项目的意义在于,把书本知识变成属于你的活的知识。2 计算机专业的几门课程主课,”数据结构与算法“、”计算机组成和计算机系统架构“、”编译原理“、”数据库“、”操作系统“、”计算机网络“、”软件工程“,往深里学,每一门可以学的没完。另外,其他专业的课程间的关联性和延续性要更强。相对来说,计算机专业的这几门主课,都基本独立并自成一个体系。所以,对于本科生来说,想在4年时间把这些课程都学得很精深,是不可能的,也没有必要。靠谱的做法是,多数课程能做到基本掌握即可,抓住一两个方向去深入学习。当然,一开始你也不知道哪些方向适合你,并且更有兴趣。那么,多做几个不同类型的项目,应该能找到兴趣点。3 当你在做第一个项目的时候,你考虑可能只是实现功能和消除bug。当你在做第二个项目的时候,你会发现之前的程序运行效率很差,很会考虑优化问题,使用合适的数据结构和算法,简化程序流程,合理的使用线程。当你做第三个项目的时候,你会发现之前的代码架构都多么恶心,扩展性和可维护性很差,你会考虑程序架构的问题,考虑复用性、扩展性等等问题。你每做一个项目,你关注的点应该随之拓展,能力可以不断提高。所以,沿着Android、iOS、前端或后端,任何一个方向深入下去,你学到的不仅是这个方向的招式,也会获得一种叫项目经验或工程素养的东西,这就是内功。最后总结一下。在我看来,在这个信息爆炸的时代,知识的稀缺性变的没那么重要了。知识总是在哪里,不是在这本书上就说在哪个书上,不是在这个网页上就说在哪个网页上。你要学,随时都可以。相对的,人的时间和精力变成更稀缺的东西,在有限的时间里,学什么和怎么去学,变得更重要。所以,充分利用大学4年时间,形成一个能提升个人核心竞争力的能力架构,比囤积大量分散的知识,要有价值的多。另外,绝大多数人的归宿都不是牛人,在计算机的任何一个领域,做一个靠谱的工程师,就已经很了不起了。
第一次一本正经的写回复, 有些激动, 话有点多, 以下仅个人观点, 希望没有跑题。本人搞过ACM, 拿过一些银奖(希望今年能金吧:)。 也做过几个工程, 也在阿里和百度都实习过, 算是算法和工程方面都有一些接触。擅自把楼主的题意理解为 “大学把重心放在做工程而不是做ACM以后前途好么?”先回答楼主的问题:感觉楼主对算法和工程的认识太浅薄了, 要说的是搞ACM和做工程各有各的优点, 也各有各的局限, 下面我尽量以我的经验让楼主对ACM和工程有更深入一点的认识吧。先说ACM的局限。正如楼上某匿名同学所说“ACM仅仅是入门级游戏”。 确实就是这样, 虽然我是靠算法知识面试进去的, 但是真正的实习期间, 我所能用到的ACM知识的机会几乎没有。 工作中大部分复杂的算法都有现成的库了, 不需要自己实现。会用到的基本都只是一些很低级别的算法, 比如二分, 简单hash, 或者用map建立一个索引。(不过还是用到过ACM知识, 下面会说)然后说一下工程的优点。先引用 的话:切勿浅尝截止感觉很多同学说到工程, 就觉得是查文档, 调接口, 说到底就是体力活。写工程代码确实不少时候就是查文档, 调接口, 但是其精髓应该是隐藏在这些接口后的设计哲学, 这种东西光看文档和接口是看不出来的, 得真正自己去挖掘, 去动手写自己的代码, 去认真读别人的源码。楼主给我的感觉就是做的太少, 太浅尝截止了。不知道你现在有没有自己写过一个完整的工程, 有没有自己尝试设计过一系列完整的模块。你说你学Android框架, 不知道你有没有真正尝试去理解过“为什么这个框架要这样设计?”。如果以上两个问题你的回答都是没有的话, 我建议楼主自己开一个项目, 独立完成一下。比如做一个动态网站, 从前段网页到逻辑处理到数据库拉通走一边。你会在做这个项目的过程中发现很多纠结, 最后纠结到想重写整个项目, 那么你就能对工程设计有更多的感觉了。另外在做的时候, 请尝试努力去构想和领悟一些设计模式。前段时间自己写一个LALR(1)文法解释器重写了四次, 每次倒不是说写不下去了, 只是因为感觉整个项目的组织不够优美了, 所以就果断一股脑的重写了,
不断的提炼项目结构, 这是工程的乐趣之一。接下来再来说说ACM(做算法), ACM对工程就没有一点帮助了么?不是!学算法, 特别是ACM中的一些基础算法技巧(比如二分, 单调栈, 单调队列, 线段树, 强连通等), 能让你更加抽象和理解你做的东西的本质。什么意思呢?下面说一个我在实习中遇到的例子。之前在百度实习, 某个任务大概是这样,有一堆地图数据, 由点和边表示, 边是有向的, 需求方认为这张地图上的点是应该是相互能够走通的, 但是数据出了问题, 需要把不能走到的点给报错出来。(出于简单考虑,对问题作了一定的化简)说了一大堆, 其实学过图论的同学稍微提炼一下, 问题就是“一个有向图, 求连通性及报出孤岛和断边”。提炼过后我就直接用了一个tarjan算法给搞定了。再来一个 给我说的例子:在一个大型程序中, 有一些小模块, 模块间有一些相互依赖的关系, 现在这些模块出现了死锁, 需要你安全的解除这个死锁, 这里安全的定义是如果模块A依赖模块B的资源, 那么一定要先关闭A再关闭B。(同样作了一定化简)也是看似复杂的任务, 其实稍微提炼一下就会发现模型是一个拓扑排序。总而言之, ACM虽然对你项目的整体架构水平上没太大帮助, 但是在一些小问题上, ACM能让你把问题考虑的更加抽象, 你能学到更多, 而不是单纯的停留在需求本身。一个提炼细节问题, 一个提炼整体结构, 个人觉得这也是算法和工程相辅相成且美妙的地方。下面来一个例子简单说明(卖弄)一下是怎么相辅相成的, 一个C11的快排:template&class RandomIterator& void _qsort(RandomIterator l, RandomIterator r){
if(r-l &= 1)
auto& t = *(r-1);
auto mid = partition(l, r-1, [&t](decltype(t) x){return x&t;});
swap(t, *mid);
_qsort(l, mid); _qsort(mid+1, r);}你要明白这个程序, 你得首先明白快排的本质:每次选一个数, 小的放左边, 大的放右边, 两边再递归。以上就是算法部分的描述, 简洁却优美, 却能让排序的平均复杂度从n^2降低到nlogn。但是为什么这个程序看起来比上面描述的复杂呢?这是因为你排序不能只给数组排序啊, 你有时候还得给容器排序(比如vector)。那为什么给vector排序传入的不是vector, 而是两个迭代器(iterator)呢?这是因为如果你直接传入vector, 那你想给数组排序排序不是还得新写一个专门给数组排序的函数?那迭代器是怎么包裹容器和数组呢?RandomIterator前面的random有什么含义么, 难道迭代器还分种类?那个partition函数又是什么意思, 还能用在其他地方么?......可以看出算法和工程各有各的考虑方面, 各有各可以挖掘的地方。感觉楼主的纠结点在于:很想做工程, 但是担心工程没什么可学的。觉得ACM很NB但是又不想做。其实没必要这么担心, 感觉楼主把工程这个坑看的浅了点。精髓是其背后的设计哲学, 说到“设计”和“哲学”二字了, 那这个坑就。。。其实前面说了那么多都是白说, 只是为了想让楼主加深一点一下对工程和ACM的认识。下面是个人对楼主的建议:1.楼主现在担心做工程不如做ACM, 主要还是积累不够多, 了解不够深入, 动手不够多(个人揣测)。2.不要再去学这学那了, 踏踏实实的, 自己动起手来做一个东西。3.关于ACM, 还是建议楼主搞来玩玩, 可以去做做codeforces或者topcoder, 花不了多少时间, 主要还是在积累, 不要畏难, 不要觉得它没用。============================================================下面是一些题外话和建议:其实编程世界可以挖掘的东西很多, 关键还是看你深度够不够, 比如你说你在看C++ PRIMER, 看似就一本语法书, 其实里面就包含了不少工程和算法上的东西。比如里面的泛型编程, STL容器, 智能指针等,看这些东西, 不要单纯学个语法和用法, 更主要还是得想下它为什么会出现。再拿STL深挖一下, 你就会发现里面的map是用平衡树实现的, 这不就是算法么。还有个在algorithm中的小函数rotate, 你可以看看它是什么功能, 再自己尝试实现一下, 再对比一下源码, 很有乐趣。再拿泛型编程挖掘一下, 你就会光用C++的模板都可以搞出一套编程的东西:下面是另外一篇模板编程的有趣实验:你完这篇文章后, 又会知道函数式编程, 于是你又想去看去做去理解新的东西。......总之编程世界的东西太多, 你现在担心做工程的东西没啥作用, 还是因为学得太浅, 太少。另外我这里擅自臆测你提出这个问题的深层次原因还有一个, 就是感觉东西太多, 不知道学什么对自己帮助最大,比如ACM和工程你不知道如何取舍。(如果没这个考虑请原谅我擅自YY = =)只想说不要想的那么功利, 也不要自我纠结浪费时间, 做自己最感兴趣的东西就好, 很多东西都是相通的, 学的好自然就触类旁通了; 就算学不到, 底子好, 花不了多少时间看一下相关的东西也很容易就入门了。引用sb的一句话:当你觉得你花很少时间就能明白某个东西的时候, 你就能说你会这个东西了。另外也不要不要怀疑自己做的东西是不是别人造过的轮子, 造的轮子一样, 但是你有自己的理解。用 一句话:造的轮子多了你就有自己的世界了。最后不要拘泥于什么标准答案, 不要纠结于什么帮助大, 不要纠结于做这个东西有没有意义, 计算机这一套东西本来就是在试验中建立起来的, 享受实验和创造的乐趣, 技术和理解总是在你无意间的时候提升最快。第一次回复(装B)有点激动, 以上胡说八道仅代表个人观点。============================================================下面是题外话的题外话:1.楼上那个匿名的同学看到了能不能请加一下= =。2.不想考研可以尝试下保研3.搞学术 != 读研4.看得出来楼主是个比较上进的同学, 不过技术这种事情不能急, 还是先活开心吧, 比如没有妹子的话,找个妹子啥的 (。?`ω??)最后重点来了, 妹子请戳我知乎
作为一只3年OI狗+4年ACM竞赛渣的过来人说几句。不少人后悔或者抱怨自己当年没参加OI or 没参加ACM,看着身边搞竞赛的同学纷纷无压力进了BAT级别的大公司。说得你好像当年搞竞赛就一定能拿奖似的。如果题主不想有这样的后悔或者抱怨,那么请证明自己。再唠叨几句,搞ACM和搞工程并不矛盾,它们之间存在相互增益的关系。比如你ACM搞多了,当你在搞工程的时候,就会更注意内存性能,时间复杂度等等;当你在搞ACM的时候,你就可以熟练地写出模板类,封装你的算法逻辑,让debug的时候更清晰,而不是一团糟的代码。Keep balance.
好吧,说一下自己的情况,请在阅读下面的建议时参考——22年前接触编程,然后就一直本科硕士博士的折腾代码,毕业后留学校也是搞计算机。感觉楼主的纠结其实很没有必要,不管是做项目,还是做ACM,都是比较错误的方向。真想成为一个大牛,就先把本科生的专业课学好!把本科生的专业课学好!把本科生的专业课学好!按惯例重要的事情说三遍。大家可以对照一下国外牛B名校的计算机专业课程体系和本学校的专业课程体系,会发现基本上差不多,所以至少这些专业课的设置是没有问题的。但是!但是!我们学习的深度根本就跟国外不能比啊!我们要学英语啊!我们要学政治啊!我们一个学期七八门课啊,国外是一个学期顶多选三门课啊!吐槽完了,给一个建议,就是学好专业课——学《计算机组成原理》,就自己设计一个CPU,至少做一个单周期的,有余力就做多周期和流水线的,学《编译原理》,就自己实现一个编译器,学《操作系统》,就自己写一个操作系统,学《数据库原理》,就自己写一个小型的数据库管理系统,学《数据结构》,就把书上的代码习题全都做一遍,并且熟练掌握,……,也就说,每门专业课都学懂学透,到了大学本科毕业的时候,能够融会贯通,那就是一个非常非常优秀的计算机专业毕业生了,到了那个时候,有无限的可能性。这里说一下这种方式的可行性问题:因为计算机本身就是人造的东西,里面的原理都是公开,本科期间涉及到的知识都是很清晰的,网上也非常多的源代码,所做的实验有台电脑,装个虚拟机也就可以了,而且还有不少名校的公开视频课,所以只要你真想学,是没有什么太多难度的。但是!你除了有兴趣外,还需要投入大量的时间和精力,在美国的计算机专业本科生,一个学期只选三门课就已经是极限了,每天晚上基本都要到凌晨一点才睡!所以总结一下,如果想成为牛人,还是要自己付出时间和精力。“Android专精”和"ACM专精"其实都只是技能树上的一个分支,都只适用于某些场合。
我觉得楼上赵天琪讲的很有道理。我认为楼主的问题就是:怎么做才是对将来赚钱最有利的?我最初的回答有点宽度有余深度不足,还有点啰嗦。对于一个缺少对IT现实认知的学生来说难以理解,找不到重点,一头雾水。让我再换个说法。如果你锁定的目标是通过写软件赚钱,那么你为了这个目标需要做进一步的思考。因为你现在的所有付出都是为了产生收益,那么确定一个正确的方向就尤为重要。这个时候道听途说,蜻蜓点水,隔雾观山,将可能带来你错误的决定,进而产生深远的影响。——你大学只有一次,你一生中的选择机会是有限的。如果你今天错了,你可能未来再也没有机会纠正。1,一家软件企业里,实际上分好多角色,通常按照业务层次和技术层次划分,从下往上,每个角色对于的重要性逐渐增强,因为每个人的薪水也就拾级而上。以一个我认为典型的小型软件公司而言,我认为大致是这样的。老板
《————————供应商(开发工具,库,可深加工软件)部门经理(software architect)项目小组(system analyst, team leader, project manager)coder/tester2, 基本上你的大学学习决定了你在上面这个公司结构中的位置。我们仅就大部分人的就业特点而谈。也就是,大部分人都是软件产业的普通从业人员,而非创业者。3,通常,你在大学做了一堆项目,积累了大量经验的结果就是瞄准了最底层coder这个目标。你和那些更普通的只是学习课程的毕业生唯一的不同大概就是:他们只能做coder,而你因为有经验,可能工资多谢,可能更有机会得到提拔,或者有更多可以选择的公司。但是,这种提拔就现实而言,可能机会并不多。毕竟一家公司发展速度有限,老的team leader因为经验通常会长久占有其职位,而一般也不会有新的同等职位产生。所以,你需要等待——哪天他跳槽了,哪天公司增加了项目。。。注意,说这么多的目的只有一个:作为一个coder,你的收入是相对固定的。也就是,你现在就能知道未来挣多少钱。招聘广告都写着呢。4,从全国范围而言,大体的毕业生就业特点是:好的大学进入好的公司普通的大学进入普通的公司无论什么大学,其优秀毕业生都是进入相对应公司的高级岗位。结论就是,你未来在什么公司得到什么收入的确定性进一步增强。几乎可以由此来制定你的理财计划。5,当我们再次放眼整个软件产业,它有分成几种类型。如果是一家纯开发公司,那么上面的结构中显示了: 它还需要其他公司支持,就是它的供应商。这些供应商之所以是供应商,除了因为他们的产品使然,还因为它们的产品的技术含量更高。以至于它们不需要关注他们的产品的应用,而专注在高利润的产品。很多人都说算法都已经被写成了包,直接拿来用就行了,因而不需要下功夫在这些方面。那么,我们是否应该思考这些包是谁写的?答案可能很简单,就是那些精通这些搞技术水平的人,简单地说就是那些ACMer所以,一个精通算法的毕业生实际上在软件产业的上层,比你的收入高。可能稳定性,福利。。。都好很多。最终,你和他的生活方式会有很大的不同。有可能你需要不断换工作,如果你不甘心低收入的话。有可能你没有机会换,只能长期在低收入的背景下做生活预算。而他们没有这样的问题。这样的说法有可能是令人感到悲哀的。不过可能是现实。因为所有高技术的东西价格都更高。他们的公司能够支付高工资。他们的公司所面临的竞争压力也小很多,所以职位更稳定。也许有人说,很多包都是免费的。但是,真的是这样吗?这些包对于公司商用也免费吗?你需要的包一定能找到免费的吗?如果找不到,公司会自行开发,还是购买呢?他们会不考虑自行开发的费用和质量吗?6,当我们从全球范围来看软件产业,会进一步发现:出国留学的人进入跨国公司好的大学进入全球领先的公司。他们的收入更高。因为这些公司之所以能够到中国来,就因为他们财大气粗,因为他们的产品更厉害——因为他们的coder水平更高。这样的结果是,你和这种人的收入差距更大了。你可能平时都不再去关心这些人了,因为只有伤心。7,当我们再次观察全球的计算机毕业生,他们的走向除了去软件公司打工,还会创业,留教。这两者都得到更高收入。但是,创业也是需要技术的。一个普通的coder,连一个完整的产品都做不出来,就别提创业了。而产品没有高科技,那公司几乎难以生存,或者勉强分一碗粥。毕竟是进行同质竞争,对方有先发优势。另外,创业还需要资金,这个时候,名校,ACM Champion...都是有价值的。也许你的产品不错,可惜你会发现投资人很势利。也许,你认为自己有机会开发一个app, 从而获得财富,毕竟市场上显示有成千上万的这种产品。但是,这些app开发人员和整体从业人员的比例是多大呢?你会是这1%吗?你开发的会是一个新颖的东西,还是众多同类型中的一个,半死不活的挂在那里无人问津?你会是那拥有成功故事的1/10吗?留教的人,因为自身技术好,同时有时间有机会钻研一个领域,所以就有机会在这个领域得到更高的收入。无论是搞国家或者企业项目,还是自己搞个产品出来开公司。这样的情况下,你都不再去考虑这些人了,他们对你更加遥远了,遥不可及。8,对你所从事的Android开发,你有没有想过,依靠别人的平台,是不是也是给别人打工呢?他们仅仅需要开发android,就可以享受高收益。而你要在他们设计的破破烂烂的接口上费时费力的开发低端产品,是否是一种无奈呢?为什么你要为了满足不同的手机,而花费更多时间去修改你的app?为什么他们就不能统一系统,从而减少你的时间消耗呢?为什么他们就不能弄一个像iOS那么漂亮的东西,让你开发也流畅,也没有那么多用户的抱怨?因为你在食物链的低端。——因为你技术有限。9,当我们观察全球软件产业,会发现我们国家在这个领域是如此的弱小,作为其中的从业人员之一,你也因此拿着低工资。为什么?我们都知道德国是一个先进的制造业大国。但是他们的制造业仅占GDP的30%, 农业2%, 剩下的都是服务业——这里面相当大的一部分是软件收入。我并没有仔细分析他们服务业的组成。我估计,他们的软件产品和机器是配套销售的。但是在计算GDP的时候是归于服务业。从他们工业4.0的规划中对软件的重视可以侧面证明我的推测大概有些道理。至少,你能够想到西门子卖了软件和机器后,会持续收取服务费,软件更新费。。。说这些,仅仅是为了说明,在全球的软件相关财富分配中,我们中国分的太少,我们的钱让别人赚去了。这种结果间接也作用在了你的身上。你公司的产品低级,你也别想分到更多钱。但是,如果你的老板有心开始这方面的项目,他手里有可用的员工吗?如果他坚持这么做,而去招聘更高水平的员工,那你未来的位置呢?10,上面很多人也流露出大环境如此,个人力量弱小,只能随波逐流的看法。基本上,大致的意思就是,全中国的软件就这么落后,学那么多也用不上,还是省省吧。可是,我们在一个变化的世界里。我们必须为此做准备,而不是陷入未来的被动。如果全中国的计算机毕业生的水平得到提高,那么意味着我们已经为开发高水平软件做好了准备。那么还有什么问题吗?我们中国缺少资金吗?缺少市场吗?也许仅仅缺少几个企业创建者。这也不是什么困难。所以,对自己应当有高要求,而不是去削足适履,而是厚积薄发。11, 还有人在回答中提到了牛人总是少数的观点。我认为其中漏掉了一些重要的东西。牛人少不错,问题是这些牛人是因为智商高过你吗?从你的问题看,你明显是放弃了学习ACM的机会。而别人选择了之后,就会走向通往牛人的大路上。牛人是怎么炼成的呢?有些人确实天赋异禀,这不在我们讨论范围你。那么Linus Torvalds该算是牛人了吧?他是因为牛之后去开发linux的吗?还是因为自己去做了这件事成为了linux的权威?还有你用的android的开发者Andy Rubin基本上就是因为有类似的经验,然后想弄一个相机操作系统,结果一来二去搞成了Android.他也因此功成名就。也因此android不太适合手机。我发现ITer更加热衷于崇拜,而不是冷静分析。他们看到偶像首先想到的就是膜拜,而不是仔细了解一下。他们有种宗教般的狂热。如果你想,你也有很大的机会成为一个牛人。不过牛人恐怕没有那么多项目经验。他们不是通过打一堆怪而升级,而是一个大怪。12,综上所述,你读大学就为了得到这样的生活吗?别人因为学习好技术好而出入高级场所,你只能苦苦挣扎在行业底层,为还房贷而惴惴不安吗?你的老婆孩子也因为你而过着普通生活,这也能让你宽慰吗?当然,也许我的预测可能对你是错误的。但在整体环境确定的情况下,这种错误是多大的偏差呢?所以,我强烈建议你努力学习,学习,再学习。忙于做项目是一种短视的做法。不要过早把自己锁定在一个通向低级劳动者的路线上。为了你未来老婆孩子的生活水平,现在就要奋斗。下面的回答是我最初的版本,仅供参考。******************************************************************换个角度讲。1,楼主偏重项目经验的观点,实际上可能是目前计算机专业的普遍观点。这种观点的直接后果就是造就了一批又一批普通的码农。了解这种观点的危害,必须要分析一下国内IT环境。实际上许多因素在人们的思考中都被漏掉了,而恰恰是非常重要的。2,我们国家的IT企业实际上是非常低水平的。包括BATM: baidu, alibaba, tencent, microsoft在这样的环境中,一个人的发展是非常有限的,它们的高度决定了你可能达到的高度。看看它们的产品就知道是多么的糟糕。即使在这些中国顶级的公司里,如果你是其中的普通一员,一般每天要做的将不过是一些非常无聊的项目,和一堆人每天扯皮。大公司都会有这种通病。市场的垄断性地位直接造就了它们的惰性。因为后续做的差也能靠吃老本赚得盆满钵满。你的人生的黄金阶段将在这个过程中被消耗。当然,不能说你的工作毫无价值。但是这种工作带给你的经验和经历,可能无法满足你未来20年后的需要。而20年后是否保留一个45岁的高龄码工,是每一个HR都要思考的问题。当然,也有可能在这个过程中,你赚够了房贷和养老金。从而可以从容退休。如果你有一个非常好的人生财务规划,这样的生活也是不错的。3,不过也许事情不总是那么悲观。因为每家公司都在新领域进行投入,如果你幸运的进入到这样的项目组,那么你就会获得宝贵的经验。比如现在非常流行的可穿戴计算概念,似乎每家公司都或多或少证明自己没有缺席。那么,以这样的经验你就可以跳槽到新兴公司,你的大公司工作经历也可能是他们的融资招牌,通过他们充足的资金和专注的开发,成为这个公司重要的一员。你的财富也就随之而来。4,假如不幸你进入的是一家中小型软件企业:如果他们研发的是创新性产品,那么你也有可能从产品未来的成功中分享财富。如果他们从事的是一般性产品,这种产品的市场也就决定了公司的收入。这种稳定的收入决定了你的工资将是普通的,因为你的岗位是普通的。你大概会成为中产阶级的一员。如果你坚持增加项目经验,大概你就能如愿进入此类公司。5,基本上上述情况都是非常普遍的,和艰难的。因为你要保持长期的朝九晚五,加班强度不得而知。不过基本上你的加班意义不大,都是耗时耗力解决各种因为基础不扎实而带来的查书,debug...这恐怕是许多计算机专业毕业生的生活。在赚钱,但却是一条漫长无味的道路。很多人已经无力改变此现状,因为他们缺少实力。而跳槽也不是一件容易的事情,除非技术有过人之处,否则新的公司不会有很大的不同。如果打算咬咬牙,再次充实和提高自己,补学当初大学没有认真学习的课程,将意味着在繁忙的工作之后苦苦读书用心钻研。下班之后是否还有足够的精力?这样的过程需要多久?1年,2年,3年。。。?你目标的公司会青睐哪一个,你和新毕业学生之间?你的项目经验对他们来说有多大价值?你在这些项目里是什么样的角色?你的公司会给你面试的方便吗?如果应聘公司需要两轮或三轮面试呢?如果你一年之中需要去多家公司应聘呢?6,如果你选择一条不同的道路会怎样呢?大学里你没有忙于增加经验值,而是专注于提高全面的技能,各门课程都学的很透,也通过自己决定的项目而得到了知识的实际应用和体会;如果还有时间,就进一步,你能够了解一个项目的整个设计和开发过程,知道如何完成一个项目,而不是被动的做别人安排的工作,得到的仅仅是码农的经验;你的这些训练让你能够从一个更高的角度去观察项目,从而拿到一个项目后就知道如何入手,剩下的就是查查资料;这样的你在毕业的时候会有怎样的选择面?各种不同的软件公司和产品,对你有什么根本不同吗?如果有机会领导一个team,你能抓住吗?说到这里,我想说的就是,利用你的时间增加你的实力,而不是简单的经验值。坦白讲,我不认为开发100个Android项目和认真完整开发1个有什么本质不同。我认为,一家软件企业需要的不是做过类似项目的人,而是能够做这种项目的人。前者为了进入这样的公司,付出了巨大的努力,能够快速找到自己需要的库和函数,但是也把自己锁定在一个小的工作范围;如果跳槽恐怕也只能选择类似的公司。而后者可以通过短暂学习轻松做任何项目,没有把自己局限在某个项目类别。如果这家公司不合心意,可以很容易进入其他公司。把握新的技术带来的机会。我并非轻视工程经验。但是我感觉许多人的工程经验是非常浅薄的,和他们付出的大量时间完全不成比例。做100个类似的项目,不会像做过两个不同项目的人那样有竞争力。同时,他们因为过于看重coding过程,而忽略了基本功的重要性。似乎大学课程中所有和他所做的项目不相关的都毫无价值。但是,当他打算到另一家公司求职时,他所被问到的往往是算法,数据结构,编译。。。我们必须面对一个变化的世界和变化的公司需求。同时,IT需求也不断促生新的公司。这些公司面向新的产品,所以不太关注你的与此无关的项目经验。他们需要的是你的整体实力,而你扎实的基础将帮助你获得这样的职位。而你一旦进入,就会很容易上手。7,当然,我可能比较激进,因为国内IT企业表现的普遍缺乏创新性,总是重复别人的东西,或者在低级技术的产品领域打转。这样的企业似乎也表现的比较看重经验值,很喜欢5-10年的开发经验。但是,我不认为大学生应当为这样的公司做准备。因为这无疑等同于把自己捆绑在他们毫无希望的前途中。因为未来中国在攀登科技树的过程中,会产生广泛的对高技术软件的需求。这意味着巨大的商业利润。一定会有企业抓住这样的机会,但是你能否进入这样的企业获得你需要的高收入吗?8,再换一条道路,你强化了学术能力,这意味着你能在高端软件开发领域施展,而这也意味着巨大的财富。你是愿意多学几年,从而一年就挣到普通本科毕业生5年挣的钱,还是5年中马不停蹄的加班?Google创始人享受巨额财富就是因为他们的科研成果。也许他们让你觉得高不可攀,但是哪个更高学历的人在工资方面没有大大多于你呢?你也可能说,即使你读master, doctor也不过是给教授们打工。但是,专注于某个领域带来的职位收入不是远高于下面普通的码农吗?因为他们的工作是你不可替代的。你写的只是界面,他们写核心算法。9,或者你看好Facebook成功的故事,认为自己可以尝试这样的道路。但是除却扎克伯格的家庭背景不谈,你至少需要资金支持你的研发工作,哪怕你有了不错的产品也需要东奔西跑找人融资,这都是需要钱的。况且国内投资人的水平可能还不太令人乐观。当然,对于一般城市家庭而言,这可能不是太大的问题。只要住在父母家里,就可以专心开发。那么你所需要的就是商业头脑。也许你没有,可以通过多次失败来不断总结。总的来说这是一条非常积极的道路。即使最终未能成功,你也获得了宝贵的商业知识。这不是码农具备的。这笔财富可能在随后的某个时间点发挥强大的作用。因为你看软件的眼光不是盯在代码和实现,而是商业价值和应用范围。后者是决定一个产品成败的关键,不是技术。就像最近很火的暴风科技。10,毋容讳言,其实大学的现状培养的就是未来的码农。毕竟精英岗位有限。但是,你可以通过优异的成绩让自己进入programmer上层,让你的人生之路更加顺畅,通过尽量少的体力劳动赚到需要的钱。所以,多学些高级技能,比如参加一下ACM,软件的根本不是写代码,而是代码背后的思想。然而从深远意义上讲,这种现状从根本上也是错误的。因为这不符合国家需求。当我们规划‘中国制造2025’的时候,我们要的是信息化和工业化的融合。我们并没有信息化产业去实现这一目标。有的都是低级产品。无论从国家长远需求还是安全考虑,我们必须实现所有软件的中国制造,尤其是那些核心软件,比如CAD/CAE/CAM但是,大学没有配合这样的目标去教育学生。如果大学能够成立一个CAD开发实验室,专注培养这样的学生,那么总会有人才脱颖而出成为该领域的领军人物。即使我们有1万种Android APP,不会对IT有多少贡献,更别提技术积累。这些产品的缺乏和研发人员的低技术水平,让整个国家都要付出沉痛代价。
我不清楚你们的Android项目组到底如何,但是以我自己的实际经历,ACM-ICPC是对自己帮助最大的经验;也因为此了解到 TopCoder,以及算法上的优势通过面试进入 Facebook,里面也有无数华人是ACM-ICPC这个圈子的。而实话实说,以我的经验,很多大学里面的所谓项目组和实验室,都是搞搞玩的,甚至是通过压榨大学生的廉价劳动力去接外面的外包项目捞外块。题主应该警惕这些项目。你还是大一,拥有很长的时间去发展。个人推荐你去专心修炼ACM-ICPC,而后可以考虑做TopCoder来挣一点外块。我之前写过一个大学挣外快的回忆:
希望对你有帮助。我后续有时间的时候会再写一个参加TopCoder比赛的教程。
无论哪一方面研究的很深,对你的就业都会很有帮助,但是只有跟着自己的兴趣走,才能走得更远。我今年参加了BATM的春招,也是Android方向,最后只过了百度的,本人没有搞过ACM, 只有一年半安卓开发经验,也没有参加任何实验室。我知道的周围的两位拿到BAT三家Offer的也都不是搞ACM的,一个是做Android输入法内核,另一个是野生的Python, C++大神。所以我觉得,你可以不用在意别人的ACM,自己专心在Android的路上走远。下面是我在面试过程中的一些体会。面试的时候一定不要怂,一定要滔滔不绝的给面试官讲,直到他打断你,只有你掌握主动才能巧妙略过不擅长的地方,不然等到面试官问到的时候是会扣分的。面试的内容都少不了数据结构,算法,操作系统,和计算机网络,这些知识在有基础的情况下突击一个月应该没有问题( 如果你面的是Java研发或者算法的话就需要日积月累了 ),如果没有基础的话,就必须得花时间好好研究。Android方面会问很多基础知识,Activity生命周期啦,Handler啦,多线程通信啦等;也会问开发中遇到的一些问题,如你碰到过的OOM啦,如何处理ANR。你做的项目说实话面试官是看不上的( 除非你的下载量很多,技术含量很高,比如你要是自己能够做出一个四次元
),不是说做项目没用,你在做项目过程中会积累很多解决问题的经验( 例如真正使用过AlertDialog的人才知道在build的时候必须使用Activity获得Context而不能用getApplicationContext() ),这个是不能短时间突击的。在项目中用到的开源项目一定要读读它的源码和实现机理,面试官一定会问的。Android的源码最好也要知道一些,比如说下拉是怎么样实,ListView内部是怎么实现的等,如果你前面回答的不好,读过源码是可以拯救你的。有自己的博客,github, stackoverflow有不少建树可以让你脱颖而出。多关注互联网方面的发展,视野真的很重要,你可以关注一些大神
。如果有可能加入一个实验室并且实验室有大神的话最好不过,可以少走一些弯路,如果感觉没学到东西就退了吧。--------------------------------------------------------------------------------------------------------------------------------------------6月5日更新最后来点干货这个是我们学院的大神总结的面试知识点一个Android大神的Android学习之路--------------------------------------------------------------------------------------------------------------------------------------------6月13日更新这个是Android官方培训课程的中文版
我觉得要看你心仪的公司是做什么的。是注重研发开发还是工程。要是只是一份工作,安卓开发也很好。。
tom pareto:
这个问题,是一个很大的问题。先下结论:(1)算法并不是脱离实际的;(2)算法与工程项目是相辅相成的;(3)算法不容易,工程项目也不容易。(1)算法,任何一本算法书都会讲到一个正确的、好的算法及其实现应该满足那些要求,比如要能够检查输入的错误。也就是说,这些要求实际上是来源于工程实践中的。算法,就是寻找一个问题的解的过程。现在,计算机科学的问题越来越多地、直接地从工程实践中抽象出来,比如天猫的推荐算法竞赛,等等。这就是涉及到这样一个问题,既然工程实践这么好,为什么不直接参加工程实践呢?从上个世纪初开始,就不断有某些流派的教育心理学专家就这么说,工程实践好、工程实践高,今天国内的教育专家更是拼命地、不顾任何条件地吹捧。但是,请记住一个事实:成本。这种实践成本极其高昂,无论是人力成本,还是物力成本,抑或时间成本。大家可以看看,职业化的体育项目,就可以知道这个成本是多么的高。实际上,绝大部分的体育选手都只能在整个过程中垫在金字塔的下层。但是,似乎没有任何一个教育流派在提出、鼓吹他们的教育理念、教育思想的时候可以特别地指出,他们的教育理念、教育思想的成本和代价。于是,家长和学生丝毫没有意识到,优质的教育的成本是极高的。实际上,一个老师能够同时教好任意的2到3个学生,已经是非常的不容易了。可以观察一下,有2到3个孩子的家庭,能够都成才的有多少?那么,怎么办呢?算法课程,和任何一门其它课程没有任何的区别,都是从实践中抽象出来的,都有深刻的工程实践背景。因此,算法的学习过程也不会有什么特别的地方,与其它同样有深刻实践背景的物理学、电学、力学等学科一样。其实,我特别地不建议以Donald Ervin Knuth作为算法学习的开始。初学者应该更多地将注意力放在一个有典型的实践背景下的算法问题开始,完成一个整个的问题抽象,算法求解的过程。但是,实际情况不是这个样子的。绝大多数学生都不注重这个过程,认为是浪费时间。而老师,不断地迁就这些学生,最好的情况也不过是使得这个过程变成娱乐新闻的题材,比如,前两年重庆大学的那个掌劈砖头的老师,本意是想让学生知道科学研究的本质。结果,那些学生似乎都没有意识到老师为什么做,似乎都只觉得这个很好玩,老师很亲和,very funny。呵呵!(2)算法和工程项目是相辅相成的。这个前面有人说过了。再增加一个例子,亲身的,前几年,在一个qq群中,有人问,他们公司让他做一个android的在线音乐播放app,老是卡顿,看到这个,就很无语了,生产者-消费者的缓冲区,这是老师必讲的内容啊。很显然,现在的教学,似乎很多教材根本就不讲实践背景,而学生呢,也似乎不能将理论应用到实践中。(3)算法难学,抽象程度高。其实,算法的数学还不是很难,只是难在算法的抽象过程上。看了一下现在的高中的教材,越来越不象话了,数学书居然是彩页的,而且把知识点都割裂开了,一页纸上面,大概只有200多个字,这是作死的节奏。这样出来的高中生,到大学后能够适应大学学习,那才是奇怪了。大一,先老老实实地把老版的高数,或者老版的理论力学抄五遍吧。工程实践就容易了?不要告诉我,什么java1000例,c#1000例就是工程实践,或者找本java web案例,android案例就是工程实践了。工程,是要一个完整的系统出来。当这个系统的组成,或者功能需求超过一定规模时,其复杂程度急剧上升。理论稍差一些,连从哪里下叉子都不知道。更不用说现在系统都是分布式系统,连分布式系统存在哪些经典问题都搞不清楚,还能指望做出什么东西来?我见过有人号称做测量仪器,连标准电压都不知道,稳定电源都不知道。还见到过有老师一下子搞3D打印、一下子搞无人机,呵呵!(4)一点废话显然,专业课程最重要。再加一句,在工程背景下的专业课程学习,效果最好。不要把专业课程学习和工程实践对立起来,搞清楚某个工程实践,需要什么样的专业知识,专业知识如何运用到工程实践中。当然,这个只有问老师了。但是,现在老师的工作都很忙(越是好的老师,越是从早忙到晚),给你解答,是情份,不给你解答,是本份。
Ivan Yang:
喜欢什么就干什么呗
本人在高中搞过OI,和ACM差不多,只是赛制不一样。刚刚进大学的时候我也准备搞ACM,可是没过多久就放弃了。根据我高中的基础(NOI前100),认真搞搞几乎可以说有很大可能拿到好成绩,可是还是放弃了(为了防止别人说我装逼所以匿名)。原因很简单,就是不喜欢这个。ACM看中的东西不是不仅仅是算法,还考验着你对这些代码的熟悉程度。根据规则选手能带一定数量的纸质资料入场,所以有许多人为了比赛场上代码敲得快,把自己的代码用各种奇葩的宏来压缩代码长度,使得代码不堪入目(当然可能是我代码风格和他们不一样)。然后前面有答主说算法能够优化你的程序,可是我想说你在ACM学的所谓的算法基本都被别人认为不够先进,或者已经以库的形式实现出来了,在中小工程下你基本用不到算法或者可以用库来代替。大型工程下公司一般都会自己组织一批专家研究自己的算法库,那时候考虑到的不光是算法的复杂度低,而且从语言层面也会做特定的优化。我感觉答主不是要做这方面的工程师,如果你想做,ACM那么仅仅是入门级的游戏而已。但是也并不能说ACM毫无用处,毕竟大公司招聘的时候要面试算法,但是除了google,都不会有很难的。——————————————————————————PS:其实关键的还是要看你自己喜欢什么,如果喜欢ACM,就全力以赴的去搞,如果喜欢其它技术,就全身心投入进去学,在哪方面变得NB都是能够成为很厉害的程序员的。
把自己刚写的答案再贴一遍(羞)
ACM只是你没有方向的时候,一个保底的选择,绝不是唯一的选择。ACM再牛,最后进了GG FB TT BAT,还不是做工程开发?(逃……)——————————我目前工作参与组织学校里的ACM比赛,但是我本科时是没有参加过的。个人学编程经历,参考这个答案。
谢邀。我从高一开始搞OI,大学继续搞ACM,拿过银,大二时也做过安卓手游。现在大三,正准备去清华攻读研究生。从我自身角度,稍微谈谈看法吧,可能有失偏颇,请题主有选择性地采纳。你学的这些技术都会过时,但算法永不过时。这里说的技术就是指API和框架,不包括设计哲学,我不认为一个大一的专业课都没学完的学生能体会到哲学这种玄妙的东西。我的第一个正经项目就是写个安卓手游,刚开始觉得一片茫然,首先学习Android,什么Activity,什么xml,令人眼花缭乱。后来又学了Cocos2D游戏引擎。写的时候涉及到操作系统、数据库、网络编程的知识(都是自学的),用到了这么多专业知识,觉得收获好大。两周之后,一个游戏就完成了。然后开始觉得索然无味。和其他技术一样,无非调用API,无非是像脚本语言一样写一些所见即所得的界面。第一个游戏觉得新鲜,第二个、第三个呢?无非是以上过程的重复。一个游戏能不能火,关键是创意、画面、剧情脚本,和程序员关系不大。Flappy Bird需要多少技术呢?在做安卓游戏的过程中,我的团队成员起了关键的作用,是他们提出的创意,用Photoshop做出的素材,用百度找到的资料,而我,不过是阅读几本在市面上随处可见的书,把他们的努力用代码转换为游戏而已。算法和数据结构是内功,项目是招式。两者缺一不可,然而有了招式,内功才有用武之地;内功好了,无论什么招式都能很快精通。轻算法,重项目,在我看来非常短视。想必题主也觉得专业课不太重要吧。大学本科,正是打基础的时候,不去把内功练好,专门学些花里胡哨的东西,不是本末倒置了吗?轻视基本功,那本科学生和中专学生有什么区别呢?虽然有些答案是支持工程反对ACM的,但我不得不提醒题主一句,他们能拿到BAT实习、奖学金、名校保研机会,很大程度上是因为ACM奖牌。还有些答案让题主从心所欲,随着兴趣走,这种鸡汤看看就行,千万别喝。高考的时候你说我的兴趣是魔兽世界,不喜欢数学英语,是不是可以不考?况且题主已经刷了300题了,这能叫没有兴趣?相信我,你不是没有兴趣,只是暂时看不到回报而已。继续努力,拿到奖牌,拿到奖学金,拿到好实习,收获学弟学妹羡慕的目光,你的兴趣就来了。去CSDN上看一下类似问题的答案:有些东西,不一定要自己去碰壁,能借鉴前人的经验也是很聪明的做法。有自己的判断力,不要人云亦云,是成熟的重要标志。 ACM大牛说算法不重要,就好比富人说钱不重要一样。高票答案固然精彩,但它们不能为题主的人生负责。还是要三思。我觉得题主才大一,正是打基础的时候,应当好好学算法,数据结构,操作系统等基础知识,工程量力而行。个人意见。什么?你就想当个码农?当我没说。
可以专注android开发,但是算法和数据结构也要有好的基础。
王晋东不在家:
哈哈,我也搞过acm,可是感觉不行,果断放弃。自己成立一个工作室做小软件,我们当时是做windows phone,也做过苹果。个人感觉多少还是有帮助。我不会告诉你我在研究生保送的时候导师就是看中了我做过很多独立项目有很强的自学能力才要我的。对了,我还是个非211,当时直接秒掉几十个985211。嗯。我也不知道我为什么这么吊。就是这么奇妙。计算机世界丰富多彩,可以发挥的地方很多,acm也好搞开发也好搞研究也好,都只是计算机的某个侧面。没有哪个方向一定比哪个好,所有的都是不可或缺的。你要看清这一点。不要被周围的环境左右而迷失了方向,不要在乎别人的眼光。其实这是个事实:我们一听说别人是搞acm的,就会不自觉认为别人很吊,搞软件开发的弱爆了啊有没有。这个没关系。有人天生适合搞acm,有人就死活搞不了。没有必要去征服外行,只需要在内行做到最好。死磕那些acm算法,除了会帮助你找工作当程序员,个人认为其他用处不大了。给计算机发展作出贡献的人,我好像没听过是搞acm出身的吧,大部分是搞数学的。计算机发展中重要的那些机器学习人工智能体系结构这些里程碑等等,还是要靠研究人员来搞,而决定你研究水平的,是你的数学能力对计算机理论的理解能力,搞过acm也就只是说明你编程能力强,实现起来快一点,对你的研究成果没别的大优势。励志要去顶尖公司当高级程序员的,搞好acm是唯一的出路。否则,像我,我都在读博士搞研究了,你觉得acm对我的意义有我的研究重要吗?计算机世界还有很多东西的,除非你非常适合搞,否则我建议你可以多利用大学时间去体验计算机世界的科研,体验开发体验测试,然后找到你喜欢的方向。算法是很重要,但是据我所知,没有人会在乎那些枯燥死板的算法,只会关心你解决实际问题的应用能力。在研究开发中,这些算法才是有意义的,而不是做题竞赛,你看看美国英国顶尖大学,哪些学校在意这个?只有中国俄罗斯东欧把它当成事业来搞。不否认acm的重要性,只不过与其他更重要的事相比,这个真的没那么重要。重要的是,找到适合自己的,然后之疯狂,做出一番成就。其实生活还是充满了惊喜,你永远也不知道下一秒会发生什么事。对自己做的事充满信心,努力做到最好,迎接生活!推荐你去看印度的三个傻瓜这个电影,里面一句话说得好,追求卓越,成功就会在不经意的地方等着你。
300多题.....这毅力不搞ACM太亏了啊
当然有用啦, 学不下去ACM的人太多了, 后来不都活下来了。
同为大学计算机狗,我认为无论是哪个方向,只要自己喜欢,努力不浪费自己的大学生活,不浪费人生,就是成功。
发现题主是我的学弟(似乎还是老乡?),我随便说两句吧。首先我们学校所谓的卓越班/产业班在我看来并没有什么优势。“班级的课程比较快,现在大一下学期我们已经学完了许多普通班大二的课程”,据我所知只是马原和毛概这两门课吧,到了大二并不会提前学大三的课程(至少从我这一届的软件产业班来看是这样,不过我并不是产业班的),当然你可以提前选课。如果说卓越班/产业班真的有优势的话大概就是学院会对你们有更多的支持(比如师资)以及提前半年考4级。“大学搞算法的主要出路就是到处比赛拿奖,太单调而且太被动”。要说明的是我们ACM俱乐部的目的并不是拿奖,毕竟最后出去打现场赛的只是集训队中的部分选手。搞算法的目的还是打好基本功,提高个人的编程水平(能拿奖当然最好)。不过最近我们ACM俱乐部也确实出现了一些功利、浮躁的风气,这点需要修正。然后说实话,编程本来就是单调的一件事,如果不静下心来写代码,估计是没有什么做为的。当然搞算法整天面对一些黑框框,然而搞项目开发似乎确实能做出一些漂亮的东西让自己感觉很爽。"就是跟着老师训练,自己除了搞算法不去规划自己将来的发展",关于这点,我不知道学弟你是怎么看出来的。首先除了集训队,教练并不会来管这么多事(教授并没有那么多时间,而且他目前最大的想法是让俱乐部能对我们计算机学院及其他对计算机有兴趣的学生带来更多学习、成长的机会);其次,我们所有人都是主动地学习训练,比如我们每周的讲座完全是由我们大二大三的学长学姐自发地负责,听讲座学习的也都是自发地来,而且我们并没有强迫别人去做题训练;最后,在我看来,我们这一批搞算法竞赛的学生大多对自己的未来早就有一定的规划了,当然这是针对13级同学的而言,14级的同学我并没有和他们聊过未来规划的问题(这点我确实疏忽了和14级同学的交流)。题主可能听说过13级的郭学长和杨学长自己开发游戏、做项目、成立团队的事。但题主可能并不清楚这两位学长在中学时代就已经搞过算法竞赛(OI),他们的编程水平早就超越了我们学院的大多数学生。我和老郭接触较多,他那个团队其他人的代码能力似乎并不是那么出众(老郭一个人写了游戏引擎,反正我感觉全是老郭一个做的)。估计老杨那边的情况也是类似的。“项目经验无论是对对将来出去找工作还是对自我发展都是有很大帮助的”,这观点并没有什么问题,我也确实认为项目经验是非常有用的,但题主也不要把项目经验看得太过重要。国内的一些互联网企业面试或许会更重视些项目经验,但是那些国外的优秀企业并不会太在意这些。根据题主的描述似乎是在阿豆,你可以问下某个4级没过的赵姓学长(安卓组,有过长期算法训练),前几个月收割大量offer,暑假他去微软苏州分院实习,一天¥300。大学4年,真正需要修炼的其实是内功,那些一个月、甚至一个星期就能上手的技术并没有什么用处。我们学校软件工程专业大二下有相关的安卓课程,在我看来这并不是特别难的技术(要把这项技术学精了还是很难的,但对于安卓的开发似乎没有那么高的要求,不过看了安卓程序员的工资我并不想在这上面花费太多的精力)。举个其他的栗子,比如大二下开设的编译原理这门课程的实验内容(PL0词法分析器,LL(1) 文法的预测分析),对于13级我们几个搞算法竞赛的来说没什么难度。对于其他大多数同学来说只能盯着实验指导书里800行的代码发呆(我一室友,php组,数据库和php玩的超级溜,结果实验课只能打酱油)。实验本身没有什么难度(学院没办法只能挑这两个简单的给学生们做),算法(流程图)课本上都有,需要的无非就是代码的实现能力(内功)。当然在一个三流一本大学中这大概是正常情况吧。前几天在某个组织的群里看到4k招Java程序员,然后居然还招满了,想必题主的目标应该是月薪10k以上吧。眼光放长远一点,虽然是三流大学,但毕竟和北大青鸟是不同的。“对安卓的自学也是很大的提高了我的自学能力”。看来题主还是有收获的,自学能力正是需要修炼的内功。其实大学里不论做什么,只要自己能从中学到一些本事,有所收获,让自己4年后能说一句“4年没有被浪费”就足够了。我一直以来的观点是大学最难的不是好好学习天天向上,而是不被外界的种种诱惑迷失自己。似乎跑题了,其实只是想纠正题主对ACM的一些认知吧。“大学搞算法的主要出路就是到处比赛拿奖,太单调而且太被动(就是跟着老师训练,自己除了搞算法不去规划自己将来的发展)”题主的这句话真的是让我生气了!以上仅代表个人胡言乱语,仅供题主参考。最后,ACM俱乐部的大门永远向各位敞开。利益相关:某弱校的ACMer。(N4-213欢迎来找我)
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动

我要回帖

更多关于 h5小游戏框架单身 的文章

 

随机推荐