前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IT从业者的迷思与求解之道——座谈会实录摘选

IT从业者的迷思与求解之道——座谈会实录摘选

作者头像
Edison.Ma
发布2020-05-18 15:08:48
3300
发布2020-05-18 15:08:48
举报
文章被收录于专栏:DotNet Core圈圈DotNet Core圈圈

本次座谈会于上周六开始,由于网络原因,很多国内的小伙伴们没有能够连进去,挺遗憾的。所以我整理了本次座谈会的部分内容,希望能对大家有所帮助。

洞察力

主持人:大家好我们来自开源社群,今天举行在线it社区的活动,本次活动为主旨为分享与交流。今日进行的主题为《IT从业的迷思与破解之道》。我们邀请请到公众号的博主艾心,艾心担任过新创独角兽公司的项目经理与同时也是资深开发者,请他与我们一同分享这个主题,在这短短一小时内,我们将从It从业人员的心态中一一去剖析,希望带给大家一点思维上的开启与交流。不知道你有没有这样的一些场景,每当往往在加班改程序时,心中往往会想难道这就是人生吗? 相信艾心应该也是经历了996了好多个日子, 爱心总结了3大力 洞察,学习,团队,来给大家一些概念上的提升,有些虽是老掉牙却也历久不衰概念。 在it人工智能的时代,拖拉的式的介面,拉拉购物车,就可以快速上架商品,五分钟你就可以无代码完成一个小电商店,网红店,这样程序员难道不害怕吗?最近一波一波缩编人员的浪潮下,我想很多程序员都发现就业上有困扰,在大厂的引入的ai智能的前提下,不管在内容选择上还是offer,多少被人工智能影响,我们初中级的it从业人员该如何面对呢。

艾心:大家好,我是艾心,来自上海。经历了多年的行业大发展,当前的经济环境处于深刻变革之中,许多行业处于收缩状态。很多人可能会感觉,工作不那么好找了,薪资提升越来越慢了,是否意味着IT行业也逐渐进入到夕阳产业之中。我的想法是不会,IT行业在未来可预见的时间里都是热门行业,只不过岗位性质可能会发生较大变化。如IT基础设施领域将逐渐掌握在少数大厂手中,大厂本身也会针对自身特点以及对行业的理解提出自己的解决方案,这点在云服务领域尤其突出。有了一定工作经验的人会发现,入职最大的困难在于快速理解公司业务,那些技术类的东西完全可以凭借自己的经验独自去掌握。考虑到企业的最终目的是盈利,那么大趋势就是不断提升企业效率,基础设施类的服务可以通过购买来获取,使得企业内部聚焦于自身业务相关的事务之中。那么这是否意味着,我们的技术含量会下降,也不会,因为我们手中的业务也是非常复杂的部分,所以后来才会有了DDD、TDD以及微服务等软件设计与开发理念,来帮助我们提升软件开发效率。

主持人:AI所有的需求都是来自于人的需求需求在it在,AI自动代码几乎不可能完成,人的思想在程序发展上才是关键点,未来IT仍会在AI浪潮下仍会蓬勃发展,但这边总有一些杞人忧天的案例。

艾心:AI是当前IT行业里比较热的方向,AI涉及到多个领域,当前我们所进入的领域尚不深入,但与我们的生活息息相关,以至于越来越多的人为AI扇风鼓劲,冷静后我们会发现这一切并不像宣传的那样。通过AI创造出的产品终究还是需要软件工程师的介入,不管AI如何智能,终究是人创造出来的,没有人参与并约束的AI将会是个危险品,所以不用担心AI是否取代软件工程师,相反会需要大量的软件工程师,我们需要密切关注,积极调整自身以适应这个趋势。

主持人:就因为剧烈的变化,您可能会提出一些疑虑,那我该如何做好面对,在职场上该如何做好职务规划呢,我想这确实是一个很广的议题,不但牵涉到自我价值观,自我实现的层面,也包含周边资源,包含软硬实力还有那一些幸运的成分。

学习力

主持人:会多种语言JAVA /C# /JS /PYTHON /C++但都没用到太深,半桶水的感觉不踏实,怎解?而我已年过35,这样的案例请艾心跟我们分享一下怎么面对。

艾心:有时候,就我自身而言,我也会有焦虑,我会担心五年十年后,自身的生产力会下降,会逐渐被后来的人赶超,相信有我这种焦虑的人会有很多。一位社区朋友曾在自己的文章《让人迷茫的三十岁,从专业技能、行业知识和软实力的人才三角谈起》提到掌握一门核心语言非常重要,在语言之外的其他专业技能,诸如设计模式和设计原则、对于算法等的理解程度,都是开发者非常重要的能力。

我对这句话很赞同,语言发展到现在,出现过很多的框架,但是不变的是,那些最基础的部分,算法、数据类型、设计模式、设计原则等等,有了这些基础技能,才能更好的讨论职业规划和应对焦虑。

职业规划这个话题比较广,万变不离其宗的就是自身能力的提高,包括硬实力、软实力以及机遇等等。首先我们要对自己做的事情充满信心、充满热情,不管你使用什么样的语言,C#、JAVA、GO、Python等等,可以选择其中一门语言,并将其作为自己的核心语言,由于语言的共通性,可以很快地举一反三学习其他语言。

或者我们可以换种形象的说法,我们的Title应该是软件工程师,而不是.NET/JAVA软件工程师。

其次懂得观察变化并及时跟进,每一个新的变化总会带来新的需求。大龄程序员确实存在着尴尬的境地,和处于巅峰时期的自己相比,项目开发的速度可能并没有那么快,但是大龄程序员最大的优势在于对业务的理解能力、对技术的平衡选择性以及对项目的合理安排,不过大龄程序员必须要保持学习。随着工作资历的增长,程序员也要适时变化,从更高维度丰富自己。

主持人:是的,所有的学习都是渐进式的,学习都是一些苦差事容易遗忘,但是计算机的不会,它的原理,算法的构成都是前人的结晶。掌握大方向,掌握先有的业务一点点深入,遇到问题知其然更知所以然,这边累积程序员解决问题的能力一定是不二法门。it的类型是错综複杂的,网络,计算机原理,应用软件,逆向工程,这些领域都需要经年累月才能有一些成果。我们不能停止我们的业务,除非你转行了,在自己的项目裡,了解业务流向,能够自行画出流程图,能够说出业务,另外对学习框架源码原理的探索才能帮助你走的远。这些都要自我提高学习力,怎麽提高?动力从哪来?更怎麽定位自己,艾心你如何看待学习力这一块呢?

艾心:工作了很多年,我依然会十分重视基础,同时还会继续买书、读书,我不认为学到了一定程度的人可以避开书籍。推荐大家多阅读一些经典图书,经典之所以成为经典,就是因为这些图书里总结很多前人的经验,使得我们可以站在巨人的肩旁上。最近我正在阅读《代码大全》、《重构》、《代码整洁之道》,在这里也推荐给大家阅读。

学习要有专注性,掌握自己的核心语言,并可以通过举一反三的方式学习其他语言,不要随意变换自己的职业方向,因为这也是自己学习的方向。

可以多阅读一些框架源码,学习其中的设计思路,设计原则以及编码风格。

另外,我们可以加入到社区中,可以收获一大波志同道合的技术伙伴,同时关注工作中、社区中的问题,解决这些问题可以帮助我们完善自己的知识网络,填补自己的知识空白。从我的个人经验来看,带着问题去学习是最快最有效的学习方式。学而不思则罔,我们还需要养成时常总结的习惯。

最后,学习是一个持续的过程,也是一个不断完善,不断更新自己知识的过程,当一切做到极致的时候,你就是行业专家。

这里引用乔布斯的名言:Stay Hungry,Stay Foolish。

同时IT的行业的热门程度,使得很多人非科班出身的人,都想尝试一下。

小白,那么该如何自学编程呢,首先要有一个学习目标,是想要了解还是想要将其作为自身的职业发展,如果想要了解的话,那就不需要太深入,可以写写循环语句、写写运算符相关的代码,就差不多了,推荐学学JavaScript,只需要有一个浏览器,然后点击F12即可调出控制台去运行代码了。

当把编程作为自身的职业时,需要学习的东西就很多了,建议先学一下计算机导论,然后再开始学习一门语言。语言的选择,不需要看哪门语言最热,就学习哪门语言,而是你要做什么。你要做前端,免不了要学习JavaScript、HTML、CSS等等,后期还可以学习前端框架,如AngularJS、VueJS等等。如果要做后端,可以学学C#、JAVA、GO等等。学习第一步是,你需要了解语言的特性,可以看看视频,网上有很多,然后再去尝试在IDE上编写代码。

总之,自学一门编程语言要多动手、多思考,还要有足够的耐心和毅力。最后,祝你好运。

主持人:所以良好的自學,半路出家也是能達到高水平,業界很多黑客,頂尖程序員也都是透過自學來完成一個優秀項目到開發。接觸的語言對多了框架多了,都會發現基技術的每一次release都是為了解決先前的問題,如何找到適合自己的技術呢?首先要定位自己的角色,角色不同工具,想法,領域就不同,我們可以從選擇領域跟類比技術來找出適合自己研讀以及拿手方向。

团队力

主持人:我们从四个方向来看接触一门领域时我们要知道并了解是什麽,而如何学习,可以从丰富的文档来著手,为何使用,为何产生这样的技术?是要解决什麽问题哦?能解决业务的需求吗?还有如何应用?应用这一块需要经验,这需要不断尝试,许多业界最佳实践,都是这样而来。接着我们来谈谈团队,当项目降临的时候该如何操作,艾心带多许多项目,交给艾心来分享。

艾心:IT项目更多的是团队化合作项目,想要全流程贯通还是非常困难的,尤其是在项目赶进度的时候,所以每人负责其中一部分就成了主流的工作模式,这也意味着我们需要更好的与团队成员进行协调沟通。

团队协作需要我们遵守共同的规范,共同的愿景,彼此信任,并能做到友好沟通以及倾听大家的意见。由于项目中每个人对业务的理解程度并不一致,在开发过程中的思维碰撞也会相应增多,这更需要TL去发现并解决这些碰撞点,以使项目可以沿着正确的方向推进。TL还需要在分工明确的情况下,灵活处理项目推进过程中的新问题,不可过于依赖分工。

主持人:那么好的team leader该如何来带领项目呢?相信PM都会说可以用敏捷啊。但是你知道大部分的敏捷都是假议题,是不正确的吗?我们跳开敏捷的思维从基础面出发。我们应该从项目的基本面、项目目标、工具、内容、任务来看。刚刚艾心提到专案的目标是非常重要的,成员才能往一致性的道路前进。还有良好的项目管理工具列出代办事项、处理专案内容、收敛用户的需求,别让天马行空的需求让成员叫苦他诶连天,同时倾听成员的意见不管在实务技术面还是在理想层面,最后如果是做为成员,要回报pm负责任务的进度与状态,让pm能跟着项目进度调整任务优先级,达成彼此协作的目标,在团队上还有一些重要的信息,象是代码审查,开发习惯等。

艾心:好的项目除了要有好的团队协作外,从个人角度来说,还需要有良好的开发习惯,不过这个话题很难在短时间说得很清楚,在这里像大家推荐一下《代码整洁之道》,这本书向我们传达了一种理念:代码质量与其整洁度成正比,干净的代码,既在质量上可靠,也为后期维护、升级奠定了良好基础。

从我的经验来看,编写好的代码,还需要有好的设计思路,糟糕的设计会让逻辑变得复杂,代码量变得庞大而且稳定性欠佳。那么怎么样才算好的设计呢,那就是越简单越好,越是简单的代码,其表达能力就越强、职责越是明确,这也会形成模块化聚集,也就是很多人喜欢说的高内聚、低耦合,其实好的编程习惯会自然而然的达到这种层次,也很容易查看到其中隐藏的缺陷。

同时,我们还需要设计良好的命名规则,好的命名可以在一定程度上承担注释功能。但是我们依然需要有注释,为的是我们可以快速回溯以及方便团其他队成员更快的入手项目。我们的注释应该是简洁明了的,但是不需要花费太多时间把注释写的面面俱到。

最后,我们还需要对我们的代码进行良好的排版,比如合理利用换行、空格、Tab等,这些需要大家在实践中不断总结。

源代码管理的必要性是无可置疑的,它可以帮助我们记录和跟踪项目中各文件内容的修改变化、当前修改的影响范围以及提升团队协作能力等等,都可以通过版本管理工具来实现,常用的版本管理工具有GIT、SVN。

很多时候,我们需要对代码进行严格的审查,这里我们需要树立一个理念,就是代码审查并意味着能力弱,相反是个人以及团队快速成长的需要。通过代码审查可以降低被忽视的错误所带来的风险,毕竟再好的开发人员也难免会马失前蹄。

同时,代码审查还可以提升代码质量,因为集思广益后的思路,总是会带来很多的惊喜,比如大幅度降低代码复杂度。

代码审查还可以做到互相学习的作用,互相提高。

结束

到此我们对三大力进行了概括性的通盘解说,提出了一些观点与资源含有一些你可能听过或没听过的名词术语,运用您所获得的三大力,开启你的在it路上的新道路。时间也差不多,我们想给大家分享的到此结束,但it是无止境的路,我们也会在公众号上回答您的问题,只要您愿意与我们互动,我们是社群爱好者,不是盈利企业,希望对社区贡献出一点与大家一同进步。谢谢各位今日的参与,我们下次再会了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet技术平台 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 洞察力
  • 学习力
  • 团队力
  • 结束
相关产品与服务
Prowork 团队协同
ProWork 团队协同(以下简称 ProWork )是便捷高效的协同平台,为团队中的不同角色提供支持。团队成员可以通过日历、清单来规划每⽇的工作,同时管理者也可以通过统计报表随时掌握团队状况。ProWork 摒弃了僵化的流程,通过灵活轻量的任务管理体系,满足不同团队的实际情况,目前 ProWork 所有功能均可免费使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档