算法没有项目
① 计算机开发岗和算法岗都有些什么区别
其实只有在大厂这两个岗位才会被分的很清楚,小公司的话一般都是混着用,毕竟算法工程师都很贵,得保证利益最大化才行。
算法岗
这种岗位负责新算法的研发工作和论文的解读、编写,一般存在于一些大厂的实验室,比如国内的阿里、网络、腾讯、华为,国外的openAI、脸书、deepmind等。而且学历和专业要求极高,基本都是科班的名校硕士或者博士,这也是网传的算法门槛高的真正岗位,高学历保证了技术水准的同时也保证了技术员的学习接收能力,保证了国外如果有新的技术论文可以第一时间解读和实践。
算法工程师岗
目前我就是这个岗位,主要是负责将已经成熟的技术结合到商业项目中偏向业务一些,这个这个岗位就没有算法岗那么夸张,基本上只要是好一点的本科计算机专业就够满足面试要求了,目前商汤、旷视、寒武纪这些都偏向这个方向。
其实还有第三档的公司主要做的是产品,基本上就是调用模型然后应用到一些软件中去,来优化产品功能,基本上懂一些算法的开发就能做到这项工作。
② 为什么有人劝别选计算机专业
1、时代不一样了。码农之所以被吹捧,必然是有原因的。08年的时候,计算机真的是鄙视链的最低端了,我表哥就是那时候毕业的,那时候计算机都是分不够被调剂过去的。但是呢,移动互联网的爆发,外加人工智能,给计算机续了2次命。我的很多领导,也就是10年到15年加入互联网公司的,字面意义的财务自由了。年薪百万,房产增值若干,天天上班欺上瞒下玩弄女下属就是这一帮人(说实话不少人素质很低)
阿里巴巴是14年上市的,14年前你在大街上真的没有几个路人知道马云,那时候真的是,二本进大厂都不难。我们18年已经很卷了,我也是凭借着985才进的大厂。而现在呢,我们招聘,非985硕士连看都不看的。是的,我们一年给新生就可以给30万,但是我们一般要刷掉十几个人才招一个,你确定你能卷进了我们大厂?
2、码农工资没有这么高。另外,40万的包裹是包含股票的,必须干满4年才能给你,离职跳槽全部没有了,其实你的工资也就是20万出头,扣完税真的没多少明白吗?不像公务员,基本工资一个月一万,但是各种年终奖,补贴,精神文明奖,五险一金。真的不一样。考虑到程序员基本上是35岁失业,那时候孩子估计还在上小学,一家老小,吃什么喝什么。
另外,收入分为明面收入和暗面收入,人家医生分钱的时候,是不会给你说的。人家拿回扣收红包也是不会给你讲的。
3、找对象很重要。我们计算机专业女生很少,大学四年下来真的连和女生说话的机会都没有。毕业了就去大厂卷了,更没有机会和女生接触了。
4、码农是真的苦啊。大学的时候,通宵赶项目是常态,各种新语言,各种框架,各种配置环境,能把你逼疯你信吗?其他的工科为了考试作业发愁,我们看了就是好笑。考试算个啥,代码你有bug,调试一周都找不到原因,问题是代码跑不出结果,就是零分,别管你花了多少时间。这才是真正的绝望。我们的大作业,1~2周让你写一个大作业真的是常态,在外面的培训班至少要学一个月,真的不知道那群老师的脑子是不是进水了
5、最后说一下35岁退休,为什么会35岁退休?本质上就是因为你35岁的竞争力已经比不过27的小年轻了,年老色衰,人家NBA球员35岁就算老将了,我们同理。我们一辈子也就只能挣10年的钱,现在不多拿一点,以后老了怎么办。评论区有人说算法不失业的笑死我了。要知道算法岗是15年以后才出现的,以前根本没有算法岗这个东西,从业者就没有超过35岁的,何谈35岁危机?
总结:
计算机并没有想象中的美好。最重要的就是互联网的增长能不能持续的问题,之前计算机也是劝退专业,后来是移动端人工智能给计算机续命了。现在互联网的风口早就过了,资本的宠儿已经是自动驾驶和新能源了,如果还是以为互联网的高薪可以持续,那么你真的很幼稚了。
更不要说计算机由于是工科,自带硬核属性,大学4年真的很辛苦。到了工作也是硬核模式,代码写的不好真的是被末尾淘汰。而且就像所以的工科一样,女生很少,不好找对象。由于计算机是对着电脑的,眼睛近视,弯腰驼背,秃头真的就是职业病了。
③ 算法工程师未来的发展方向35岁以后呢
技术能力是技术人员的立身之本。站在算法的角度,这里的技术能力主要是算法应用能力,包括阅读论文、算法实现、工程化以及相关文档的撰写。
技术人员常见的一个认知误区是技术大于一切,认为只要技术做好了,就应该得到认可或奖励。事实上,技术在大多数情况下只是商业中的一环,技术做得好不能确保商业上的成功。
以自营电商为例,技术人员做一款功能强大的购物APP不难,但同时必须有商品研发、供应链和物流配送才能完成一个极小的商业闭环。此外,要想商品卖得好得有市场和运营团队一起发力。在这样的背景下,购物APP只是诸多商业环节中的一个节点,因此仅仅依赖软件研发技术显然不足以实现商业上的成功。好的技术团队必须始终围绕各商业环节,有能力定位问题,并研发工具有效地解决问题。
作为算法工程师,在立项和需求评审时,需要有能力评估项目为业务带来的价值以及算法在整个项目中的价值,从而避免把精力浪费在“投入产出比”不高的事情上。如何做到这一步呢?除了有扎实的技术,还需要深入了解业务。
需要了解的业务知识包括(但不限于)商业模式、业务流程、业务限制以及与当前业务相关的技术等等。算法工程师了解业务的另一个好处是洞察需求,解决问题的同时可以发现更多的技术问题,从而推动业务的进步。
技术人员最难跨越的是从技术能力到业务能力的提升。有两方面原因:一是技术人员主观上不太愿意处理业务问题(扯皮的事情较多);二是技术人员晋升和跳槽时主要被考察的还是技术,因此业务能力在有些技术人员看来短期的收益不高。
架构能力是一种解决复杂问题的能力,它需要考虑业务的现状和未来,把复杂问题分解成简单问题,然后给出解决方案。与软件架构相比,算法架构更偏向业务,不仅要对业务进行建模和抽象,还要考虑工程实现,以便技术方案在实际业务中落地。因此,良好的技术能力和业务能力是算法架构能力的基础。
算法相关的技术项目可能涉及到与其它技术工种的配合,例如:产品经理、数据分析、数据开发、前端、后端、测试、运维等。因此,算法工程师设计的技术方案应该考虑到算法模块与其它技术模块的解耦与协同。
算法工程师做解决方案时应该从全局出发:一是技术上不仅考虑算法而且还要考虑工程实现和产品化(切忌手里有锤子,看什么都是钉子的想法);二是从整体业务的角度考虑项目带来的收益。例如,假设推荐系统的重构可以带来推荐模块的转化率提升。那么这件事情一定值得做吗?我们还应该评估这个提升效果对大盘利润的影响。如果对大盘利润的提升有限,或许应该把精力投入在更有价值的项目中。
④ 算法的有穷性和死循环
看你写出while(1),那么你一定是在用程序来实现算法。
首先你要明确知道算法不只有程序实现。
其次,你要了解算法在计算机系统中处于哪个层次?
计算机系统实现
你可以了解一下计算机系统的演变,目前的计算机系统都是按照这种层次转换去设计的。
a)问题,也就是我们经常项目中遇到的需求文档,这些都是用自然语言来描述的,什么是自然语言?就是汉语、英语等这些人说的话。
b)算法,算法我们可以用自然语言,流程图,伪代码等来描述,这就是所谓项目详细设计,算法的大特性:
有穷性:一个算法在执行有限步骤后,在有限时间内能够实现的。
明确性:算法中每一个步骤的表述都应该是确定的、没有歧义的语句。
可计算性:算法的可行性就是指每一个步骤都能够有效地执行,并得到确定的结果,而且能够用来方便地解决一类问题。
如果算法违背了这些特性那就不叫算法,这是前人以及众人都认可的。
c)程序,程序就是我们开始码代码了,就是你要按照详细设计去用代码实现,这个时候你发现 详细设计里面写了一段话 让你无限循环即(while(1)),你会不会去揍这个写详细设计的?
后面我就不多说了,总结起来就是 程序不等价于算法,算法可以用程序来实现,程序的设计包含算法,所以你说你的while(1)和算法有穷性矛盾,是八竿子打不到的事情。