现在位置首页 / 程序员成长系列 /正文

“你适合做程序员吗”?知乎Live问题集锦

作者: IT小兵 | 2018年2月1日| 热度:℃ | 评论: |参与:

1月13日晚8点,开启了我的第一次知乎Live,主题是:程序员的精进:你适合做开发吗。因为时间原因,Live中提到的部分问题没来及回答,特意整理出来,一一回答,记录在这里,作为补充。

【1】软件开发工作各个阶段的人分别负责做些什么?以及各个阶段需要哪些专业知识?

    从技术路线上来看,开发者一工程师-->高级工程师---->架构师(技术专家)

    一般的工程师,会负责产品模块的设计与编码。

    高级工程师,会负责大的模块或子系统的设计以及核心模块的编码。

    架构师对技术选型、产品架构负责,同时也可能完成核心模块的开发。另外也会负担一部分团队管理、技术讲授、客户支持等工作。

    技术专家在某一个细分方向上有深入研究,能够在这个方向上解决复杂问题。另外也会负担一部分技术讲授、客户支持等工作。

    具体到需要什么专业知识,和你做的产品有关。


【2】 从一个领域的开发工作跳到另一个领域的开发工作需要做哪些准备?例如从移动通信跳到VR?

    准备分两种:1. 行业或产品领域知识的准备,比如通信和VR游戏,就牵涉到产品知识的准备;2. 专业知识和技能的准备,通信可能会用到C语言、协议分析等知识与技能,而VR用到的技能不同,可能会用Unity3D或者C#。


【3】 30岁转行还来的及吗?没有科班背景?

    什么时候转行都来得及,江民杀毒的创始人王江民38岁转软件开发,后来笑傲中关村,开启杀软的黄金时代。但年龄确实会带来一些影响,比如你50岁转软件开发,就可能受到国内用人单位的潜规则的影响。最关键是你真的想做某个职业,那就去做,准备接受一个较为缓慢的过渡期,等你用自己的热情和能力完成了爬坡,前景就展开了。


【4】 电气专业不知道未来该选硬件还是软件

    这个需要盘点自己,看看自己的兴趣在哪里,比如你更愿意琢磨硬件、设计硬件、组装硬件,还是更愿意去思考让硬件工作起来的系统,或者硬件暴露给使用者的交互界面。找出兴趣,作为选择的参考。另外也可以考虑做硬件的工程师和做软件的工程师有什么不同,分别找到一些相关的职场人士,看看他们的工作与生活状态,你更喜欢哪一种。


【5】 程序员的天花板是年龄还是什么?

    我认为天花板不是年龄,而是你的“应用流程”,也就说你运用知识、技能、经验解决问题的流程和能力。如果你有好的应用流程方面的能力,那你就可以超越初阶的知识、技能,把你的这种能力复制到各个领域,就能够突破常见的技能方面的天花板。如果你只知道在别人思考得出的解决问题框架内按照别人的安排来完成一部分执行的工作,那你的天花板就显而易见。


【6】 目前在做大数据领域开发,但不太喜欢觉得很无聊,想自学全栈开发和前端,但这个就需要大量下班时间的自学,想知道应该怎样规划自己的时间安排

    用业余时间学东西,要一个一个来,不要同时学很多,一个阶段学一样。所以,先分析自己要学的内容,挑一样出来。

    然后需要定一系列的目标,形成由浅入深的目标阶梯,每一个目标,都要有成功的指标,自己根据这些指标就能度量是否完成。

再然后,就是规划时间,比如一周有三个晚上,每晚投入3小时,周末抽12个小时,这样子的。


【7】 大学生如何快速完成向程序员的角色转变?从事非前沿开发是否要考虑转行?互联网公司是程序员的最好选择吗?

    先掌握一门技术,聚焦在做具体事情上,培养自己解决问题的能力。

    要不要转行,看自己是否喜欢你开发的产品,看你工作是什么感觉。讨厌、痛苦,就转;喜欢、享受,那就继续。

    不存在最好选择,只存在对个人来讲的合适的选择。


【8】 程序员各个阶段应该怎么提升自己

    刚开始,重点放在知识、技能、解决问题的能力培养上。这个时候,应该聚焦在如何在技术方向上做得更深入、怎样用技术解决问题。

    能够熟练应用一门技术解决问题时,要合理分配精力,培养通用能力,如讲授、沟通、协作、写作等,这些通用能力会放大你运用技术解决问题的能力。


【9】 程序员和业务顾问,哪个有前途

    因人而异,不存在绝对的前途。你能做好哪个,哪个就有前途。


【10】 如何判断有没有开发的天分,会不会存在后端语言没天赋,前端有天赋的情况?

    一般是先根据你的兴趣选择一个方向,然后用实践来检验,看自己做的时候是什么感觉、做的结果是什么样子,这样才能真正判断是不是在这件事情上有发展前景。

    语言有一些特性,与人的气质是存在匹配度的。比如有人就喜欢JS,有人就喜欢C++,有人就喜欢Go,所以不同的人使用不同的语言会有不同的感觉,你喜欢的话,就更容易学好、用好,就会显得在这方面有天赋。


【11】 开发既然只是是一种工具,那我们是不是要把更多的精力投入到一个具体行业的研究而不是开发技能的提升?

    软件开发是运用知识、工具在某一个具体行业解决问题的过程。所以,要学好相应的知识、技能,同时也要精研具体行业,两者都需要,缺了哪一个都不成。


【12】 软件开发与IC前端,哪一个值得深入学习?

    看个人兴趣,都很值得。


【13】 C9 高校,非计算机专业,转行做开发,能给些建议吗?有哪些合适的方向,适合长期发展。

    我看好教育、医疗、金融、人工智能、文化娱乐、体育等行业。


【14】 由于开发这方面的技术更新迭代的非常快,热门的方向也是在变化的。如app,大数据,人工智能。由于迭代更新,程序员一些前期的非通用经验没有市场了?

    程序员的经验分三类:语言、技术框架;行业知识;应用技术能力解决问题的思维、框架、系统,也就是你的“应用流程”方面的能力。你换行业时,行业知识就没用了;技术可能有用,也可能没用,看你做的产品是不是还需要用原来的技术;应用流程方面的能力是可以迁移的,永远有用。


【15】 如何学好程序设计里面的算法呢?

    分几个层次:1.应用层面的,理解别人提供的接口,能够用别人的算法接口解决应用问题,比如你可以用高斯模糊算法来处理图片,这种意义上的学好,理解算法背景,多做一些实践就可以达到。2.算法开发层面的,比如要你自己设计静音检测或降噪算法,这个就需要你能够深入了解相关的知识,多多从已有的算法中学习,基于已有的算法实现,通过优化、扩展或者组合来形成新的算法,我以为比较重要的是三步走,首先能够理解算法本身,然后用自己的方式来实现算法,最后是把这个算法应用到具体问题的解决过程中,比如希尔排序,你要理解它,然后用不同的方式来实现它,做得多了,琢磨得多了,就掌握了算法本身,然后把它应用到实际场景中,比如解决千万级别的数据排序等。

【16】 28岁女生 机构工程师,喜欢开发的环境,行业优势,打算掺加java培训班,想请问软件企业是否更不愿意招有工作经验的大龄转行者呢

    一般的企业,不太愿意接受大龄转行者,因为都追求开箱即用,希望你过来就能解决问题。所以,你需要付出更多的努力,让自己能够更快地具备生产力。你还需要表现出你的能力,在编程语言、技术框架方面暂时没有竞争力,那就从通用能力、做事流程等方面体现自己的竞争力。


【17】想请问一下程序员的职业年龄一般到多少岁?

    没有特别的职业年龄一说,有的人干到60岁,有的人25就转行了。关键是自己是否愿意干下去,是否愿意保持终身学习的态度。


【18】 在学习一门语言的过程中,那些方面需要注意的呢?

    1. 带着问题去学习,把学到的东西,应用在解决问题中,这样会比较快。

    2. 设置目标阶梯,不断提升目标难度,让自己蹦一蹦才能够到,这样会不断进步。


【19】 学的时候挺喜欢编程 找的第一份工作现在六个月没发工资 对编程一点兴趣也没有了 应该转行做其他的吗

    请仔细想想:

    1. 是对软件开发能赚到比较多的钱感兴趣,还是对用技术解决问题感兴趣。

    2. 没发工资,是因为你做编程工作,还是因为公司状况?

    这将决定你是否要转行。


【20】 工作城市的选择,对程序员的职业发展影响是不是很大,我觉得氛围好的城市可以更快的在线上业务中实践新技术,成长也能更快

    与城市相关的是行业、产业的发展,不同的城市,行业、产业的发展状态不一样,机会也不一样。从这个角度讲,城市对程序员的职业发展影响蛮大的。比如你在上海做金融,就比在咸阳好得多。


【21】 一个程序员最好至少要掌握几种语言呢,我是个phper

    一般来讲,初期最好先做精一门,然后再做宽度,根据产品需要学习不同语言。5年下来,如果你做过几个产品,可能会掌握2~3门语言,或者更多。但更重要的是,不是语言数量的多寡,而是你应用语言解决问题的能力。


【22】 怎么才能提高编程工作的积极性呢?

    想想你工作的意义,比如你做一个读书的App,能让更多人获取知识得到提升,你喜欢这一点,你就更有积极性;比如你享受解决别人解决不了的难题这种快感,你就会有积极性;比如你觉得成为某个方向上的大拿,建立竞争优势会让你很有成就感,你就更有积极性……所以,最重要是,为你的工作赋予对你个人来讲的积极意义。


【23】 把这个作为今后职业,在高考志愿选择方面和进入大学后要准备些什么

    软件开发其实是运用技术工具解决具体问题的过程。所以,在填写志愿时,应该优先考虑你喜欢的工作内容,宽泛点说就是行业、产业、产品。比如你喜欢金融、喜欢幼儿教育、喜欢牙医,这些更重要。有需要的话,你可以在任何时候学会软件开发的相关技能,用它们来解决具体行业领域中的问题。


【24】 女生适合做开发吗,不太喜欢人际,走计算机行业的职业规划大概是怎样呢

    Google 云计算业务 Google Cloud 成立了一个新的部门,推进机器学习方面的技术进步和新功能,领导者是李飞飞和李佳,都是女性,也都是技术出身。我几年前带过的团队里,有三位女性开发者,工作表现比部门里有的男生还要好。所以,我觉得性别不是最重要的,重要的是你个人怎么看待这个职业。

如果做软件,职业通路有技术和管理两条线,技术线就是工程师-->高级工程师-->架构师(技术专家)-->科学家;管理线就是工程师-->项目经理-->研发经理-->研发总监-->CTO。


【25】 在一个小公司里面自己的技术是最高的,这种情况下如何学习?需要跳槽到一个有高手的公司吗

    有这么几种学习方式:

    1. 自主学习,积极主动学习,给自己更高的要求,想办法把事情做得更好

    2. 通过网络和线上线下的社群,与同技术方向的牛人保持联络,相互学习和促进

    3. 学会复盘,不断总结做事中的不足,不断改进。不断总结做得好的方面,固化为经验和规律,指导自己以后做得更好。

    如果觉得没办法,或者进步慢,也可以考虑到高手多、技术氛围浓的公司,与牛人一起,你会变得更牛。


【26】 本科即将毕业,非计算机专业,对开发很感兴趣,怎么判断自己是否适合从事这项工作,通过哪些途径学习,培训班吗?

    感兴趣就可以做哦,兴趣是最好的老师,也是动力源泉。接下来就是,先自己学习,验证下自己是否能深入进去,深入进去之后是否还能在各种困难前葆有兴趣。建议先找本编程的书自学,学上两个月,看看是否能入门,看看自己的感受,判断下自己是否还愿意继续。如果愿意,恭喜你,你是真喜欢,也真适合从事这项工作。


【27】 计算机专业 毕业,一直从事嵌入式应用软件、 bootloader,os,driver开发。但是无行业感,不知道应该选择什么样的行业去发展?

    想想你现在的软件,是应用在什么行业的。家电?工控?消费电子?汽车?一定有行业属性的。多想想别人怎么用你的软件、怎么用你的嵌入式硬件,分析那些场景,就能找到行业属性。


【28】 研一,工科,非计算机相关专业,想选择一个方向入手转行,会一些C语言的基础语法。怎么选择?能推荐一个方向吗

    如果我是你,会先看看我的专业可以做些什么,做这些东西,可能会用到什么技术,什么语言,然后就选择这个语言来学习,然后用这个语言来做专业相关的项目。


【29】 近期开发,感觉不在状态,开发的时候容易开小差,怎么调整?

    是因为想到了什么才开的小差?分析一下,有针对性的采取措施。举个例子,如果你在担心领导找你聊年终总结,那就先停下开发工作,把年终总结这事儿想明白,做一些文案,准备上,那这件事就放下了,就不会因为它开小差了。


【30】 零基础的其他行业在职人员,想进入前端这个行业,怎么才能尽快上手呢?是需要报名培训班学习好一点?还是看网上的视频或者资料自学比较好呢?

    我给想转行从事软件开发的朋友,通常的建议是:先买一本书,或者买一个视频课程,跟着学上两个月,看看是否能学懂。这是检验你自我学习能力的最好方法。如果你能搞定,可以自己搞好环境搭建、可以学会基础语言、可以完成一些小实践,那就继续。如果搞不定,停下来想想,体会下自己的感受,看看自己愿不愿意承受这种挫败的感觉继续前行,如果愿意,继续死磕,或者报个培训班,如果不愿意,就放弃。


【31】 算是一个入行一年多的程序员,大专学历。之前做硬件的软件。现在刚刚结束自学转为javaweb的程序员,不知道人才市场现在对这种职业的技能要求有多高?还有自己开发项目时一遇到bug进度就会被拖慢。不知道有什么技巧可以提升开发的速度?

    人才市场对javaweb要求有多高,可以到拉勾之类的招聘网站上搜索职位信息,找一定数量的职位信息,就能自己分析出来。

    其实,我们都是被bug拖慢进度的……要说有什么技巧来提升开发的速度,那就是先慢后快。所谓慢,指的是先思考、先设计、先在头脑里把事情琢磨明白,然后再开始写代码,这样就快了,bug也少,返工也少。一上来就写代码,往往是似快实慢。


【32】 老师你好,我本科写过安卓,但听到说学软件应该有硬件知识,所以研究生就选择了硬件方向,与IC前端有一点关系。现在就是不知道应该往哪个方向走了?很想学软件,但是现在又必须学习硬件的知识(研究方向)。所以很是纠结,时间很少,不知道要怎么分配。

    除非你纯粹是做IC设计,否则你就需要用软件来驱动硬件,需要懂软件。但是反过来,学软件就不一定要懂硬件,比如你做Android APP,不需要懂硬件,只需要了解框架接口就可以了。

    考虑到门槛,我觉得软硬结合会更有竞争力哇。如果纯粹学软件,作为研究生,也建议不要把焦点放在语言、框架上,应该深入到算法层面,这样将来更有竞争力。


【33】 程序员怎么做职业规划呢,我是刚入门两年的PHPer

    常见的职业通路有技术和管理两条线,技术线就是工程师-->高级工程师-->架构师(技术专家)-->科学家;管理线就是工程师-->项目经理-->研发经理-->研发总监-->CTO。

    对个人来讲,还要定位自己在哪个技术方向上发展,自己的优势在哪里,如何放大自己的优势。


点击阅读本文所属分类的更多文章: 程序员成长系列 。和高手一起交流:346717337

未注明转发、原文均为本站原创。分享本文请注明 原文链接

给您更多信息和帮助

在这里您可以找到更多:

技术交流群:346717337 Jquery插件交流

投稿:suchso@vip.qq.com

承接:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/业务咨询

echarts教程系列
本月最热文章

微信扫一扫,徜徉悠嘻网,您的休闲乐园

微信公众号:快乐每一天

随机文章
标签

技术交流群:346717337

投稿:suchso@vip.qq.com

专业专注:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/付费问题咨询