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

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

洞察力

主持人:大家好我们来自开源社群,今天举行在线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是无止境的路,我们也会在公众号上回答您的问题,只要您愿意与我们互动,我们是社群爱好者,不是盈利企业,希望对社区贡献出一点与大家一同进步。谢谢各位今日的参与,我们下次再会了。公众号回复:座谈会资料,获取相关连接

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313271.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

准确率、召回率、F1、mAP、ROC、AUC

https://yongyuan-workbench.rhcloud.com/%E4%BF%A1%E6%81%AF%E6%A3%80%E7%B4%A2ir%E7%9A%84%E8%AF%84%E4%BB%B7%E6%8C%87%E6%A0%87%E4%BB%8B%E7%BB%8D-%E5%87%86%E7%A1%AE%E7%8E%87%E3%80%81%E5%8F%AC%E5%9B%9E%E7%8E%87%E3%80%81f1%E3%80%81map%E3%80%81r/准确率、召回率、F1…

从零开始实现ASP.NET Core MVC的插件式开发(六) - 如何加载插件引用

标题:从零开始实现ASP.NET Core MVC的插件式开发(六) - 如何加载插件引用。 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11717254.html源代码:https://github.com/lamondlu/DynamicPlugins前景回顾•••••简介在前…

小波变换基础

http://blog.csdn.net/GarfieldEr007/article/details/50151845 第十二章 小波变换 目录 1 引言 2 连续小波变换 3 二进小波变换 3.1 Haar变换 4 离散小波变换 4.1 多分辨率分析 4.2 快速小波变换算法 4.3 离散小波变换的…

.Net Core3.0使用gRPC

gRPC是什么gRPC是可以在任何环境中运行的现代开源高性能RPC框架。它可以通过可插拔的支持来有效地连接数据中心内和跨数据中心的服务,以实现负载平衡,跟踪,运行状况检查和身份验证。它也适用于分布式计算的最后一英里,以将设备&am…

单链表逆向

转自:http://blog.csdn.net/heyabo/article/details/7610732 对于单链表的逆置有两种方法可以实现: (1)利用辅助指针 基本思想:在遍历结点过程中,设置辅助指针,用于记录先前遍历的结点。这样依次…

中国.NET开发者峰会特别活动-基于k8s的微服务和CI/CD动手实践报名

2019.11.9 的中国.NET开发者峰会将在上海举办,到目前为止,大会的主题基本确定,这两天就会和大家会面,很多社区的同学基于对社区的信任在我们议题没有确定的情况下已经购票超过了300张,而且分享的主题都来自于社区&…

高斯混合模型学习

转自:http://blog.csdn.net/jojozhangju/article/details/19182013 1.高斯混合模型概述 高斯密度函数估计是一种参数化模型。高斯混合模型(Gaussian Mixture Model, GMM)是单一高斯概率密度函数的延伸,GMM能够平滑地近似任意形状的…

[工具]OFFICE插件管理工具-帮助更好地管理及使用电脑安装过的OFFICE插件

在OFFICE软件的世界中,除了由微软提供的OFFICE软件功能外,还有大量的功能由第三方开发者完成,市面上也存在大量的OFFICE插件供用户选择。使用场景有些插件仅在某个特定场景下才会使用,日常办公过程中,无需开启&#xf…

随机梯度下降的实现细节

http://www.miaoerduo.com/deep-learning/%E5%9F%BA%E4%BA%8Ecaffe%E7%9A%84deepid2%E5%AE%9E%E7%8E%B0%EF%BC%88%E4%B8%8A%EF%BC%89.html 最近看了一篇文章,详细说明了随机梯度下降中随机是在create_imagenet.sh中shuffle实现的。 相关资源: DeepID&am…

那位标榜技术驱动的开发者去哪了?

作者:邹溪源,长沙资深互联网从业者,架构师社区合伙人!一他是一位曾经标榜技术驱动世界的开发者,在他年轻的时候,一段独特的经历,让他对技术充满了兴趣,并在技术这条道路上走了很远很…

图像PCA方法

http://blog.csdn.net/lifeng_math/article/details/50014073 http://blog.csdn.net/lifeng_math/article/details/49993763#旋转不变的-lbp 引言 PCA是Principal Component Analysis的缩写,也就是主成分分析。也是用于降维常用的一中方法。PCA 主要用于数据降维&a…

.NET实时2D渲染入门·动态时钟

前言说来这是个我和我老婆的爱情故事。从小以来“坦克大战”、“魂斗罗”等游戏总令我魂牵梦绕。这些游戏的基础就是 2D实时渲染,以前没意识,直到后来找到了 Direct2D。我的 2D实时渲染入门,是从这个 动态时钟开始的。本文将使用我写的“准游…

ASP.NET Core在 .NET Core 3.1 Preview 1中的更新

.NET Core 3.1 Preview 1现在可用。此版本主要侧重于错误修复,但同时也包含一些新功能。对Razor components的部分类支持将参数传递给顶级组件在HttpSysServer中支持共享队列在SameSite cookies的重大更改除了.NET Core 3.1 Preview版本发布之外,我们还发…

小波变换学习(1)

转自:https://www.zhihu.com/question/22864189/answer/40772083从傅里叶变换到小波变换,并不是一个完全抽象的东西,可以讲得很形象。小波变换有着明确的物理意义,如果我们从它的提出时所面对的问题看起,可以整理出非常…

.NET Core 3.0 新 JSON API - JsonDocument

JsonDocument类 JsonDocument是基于Utf8JsonReader 构建的。JsonDocument 可分析 JSON 数据并生成只读文档对象模型 (DOM),可对模型进行查询,以支持随机访问和枚举。使用 JsonDocument 分析常规 JSON 有效负载并访问其所有成员比使用 Json.NET 快 2-3 倍…

微软推出 Microsoft.Data.SqlClient,替代 System.Data.SqlClient

背景在 .NET 创建之初,System.Data 框架是一个重要的组件。它为创建 .NET 数据库驱动程序提供了一种方式,类似 Visual Basic 的 ActiveX Data Objects。虽然 API 不一样,但重用了它的名称,所以才有了 ADO .NET 这个绰号。ADO 和 A…

C++ 从文件夹中读取文件

OpenCV从文件夹中读取内含文件方法 参考&#xff1a;http://www.2cto.com/kf/201407/316515.html http://www.it610.com/article/5126146.htm http://blog.csdn.net/adong76/article/details/39432467 windows平台代码&#xff1a; [cpp] view plaincopy #include <io.h&…

你必须知道的容器监控 (1) Docker自带子命令与Weave Scope

本篇已加入《》&#xff0c;可以点击查看更多容器化技术相关系列文章。本篇会介绍几个目前比较常用且流行的容器监控工具&#xff0c;首先我们来看看Docker自带的几个监控子命令&#xff1a;ps、top以及stats&#xff0c;然后是一个功能更强的开源监控工具Weave Scope。# 实验环…

char *与char []

由于指针的灵活性&#xff0c;导致指针能代替数组使用&#xff0c;或者混合使用&#xff0c;这些导致了许多指针和数组的迷惑&#xff0c;因此&#xff0c;刻意再次深入探究了指针和数组这玩意儿&#xff0c;其他类型的数组比较简单&#xff0c;容易混淆的是字符数组和字符指针…

.NET Core ORM 类库Petapoco中对分页Page添加Order By对查询的影响

介绍最近一直在使用PetapocoEntity Framework Core结合开发一套系统。使用EFCore进行Code First编码&#xff0c;使用使用Petapoco进行数据库的常规操作。并且结合PetaPoco.SqlKata的使用&#xff0c;减少了编写SQL语句的工作量&#xff0c;对提升开发效率有很大的帮助。Petapo…