干货!程序员需要掌握的几种图

干货!程序员需要掌握的几种图,第1张

随着互联网寒冬的的到来,程序员就业环境越来越严峻,这就要求我们必须要不断提高自己,来应对高压的工作环境。下面介绍的这几种图是我在工作中经常使用的,所谓的图,都是为了辅助思考的,辅助开发的,比文字描述的更清晰,更有逻辑。

前些年,网上有一个口号喊得很响: “人人都是产品经理” 。这就要求我们需要学习认图、画图的技巧,能从需求文档里快速的抽象出我们想要的东西。最近,网上曝出的程序员和产品经理之间的矛盾,大都是需求不清晰产生的,作为程序员的我们如果掌握的产品经理所必须的技能,那我们以后就可以吊打产品经理了,哈哈哈哈。。。

流程图 是对过程、算法、流程的一种图像表示,在技术设计、交流及商业简报等领域有广泛的应用。

计算机语言只是一种工具。光学习语言的规则还不够,最重要的是学会针对各种类型的问题,拟定出有效的解决方法和步骤即算法。有了正确而有效的算法,可以利用任何一种计算机高级语言编写程序,使计算机进行工作。因此,设计算法是程序设计的核心。

对同一个问题,可以有不同的解题方法和步骤。

例如,求1+2+3+…+100,可以先进行1+2,再加3,再加4,一直加到100,也可采取100+(1+99)+(2+98)+…+(49+51)+50=100+50+49×100=5050。

还可以有其它的方法。当然,方法有优劣之分。有的方法只需进行很少的步骤,而有些方法则需要较多的步骤。一般说,希望采用方法简单,运算步骤少的方法。因此,为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。

一个计算问题的解决过程通常包含下面几步:

传统流程图

用图表示的算法就是流程图。流程图是用一些图框来表示各种类型的 *** 作,在框内写出各个步骤,然后用带箭头的线把它们连接起来,以表示执行的先后顺序。用图形表示算法,直观形象,易于理解。

美国国家标准化协会ANSI曾规定了一些常用的流程图符号,为世界各国程序工作者普遍采用。最常用的流程图符号见图。

流程图不仅可以指导编写程序,而且可以在调试程序中用来检查程序的正确性。如果框图是正确的而结果不对,则按照框图逐步检查程序是很容易发现其错误的。流程图还能作为程序说明书的一部分提供给别人,以便帮助别人理解你编写程序的思路和结构。

PS:墙裂推荐大家使用ProcessOn,画流程图的神器!!!

心智图 (Mind Map),又称 脑图 心智地图 脑力激荡图 思维导图 灵感触发图 概念地图 树状图 树枝图 思维地图 ,是一种图像式思维的工具以及一种利用图像式思考辅助工具来表达思维的工具。

心智图是由英国的托尼·博赞(托尼·布詹)于1970年代提出的一种辅助思考工具。心智图通过在平面上的一个主题出发画出相关联的对象,像一个心脏及其周边的血管图,故称为“心智图”。由于这种表现方式比单纯的文本更加接近人思考时的空间性想像,所以越来越为大家用于创造性思维过程中。

ps:我一般都是用的百度脑图,在线的比较方便

拓扑学(TOPOLOGY)是一种研究与大小、距离无关的几何图形特性的方法。 网络拓扑是由网络节点设备和通信介质构成的网络结构图。

拓扑学是数学中一个重要的、基础的分支。起初它是几何学的一支,研究几何图形在连续变形下保持不变的性质(所谓连续变形,形象地说就是允许伸缩和扭曲等变形,但不许割断和粘合) 拓扑图用于计算机网络示意,也就是不考虑计算机实际的位置,只表示网络中每台计算机以及网络设备之间的相互关系。

节点,节点就是网络单元。网络单元是网络系统中的各种数据处理设备、数据通信控制设备和数据终端设备。

链路,链路是两个节点间的连线。链路分“物理链路”和“逻辑链路”两种,前者是指实际存在的通信连线,后者是指在逻辑上起作用的网络通路。链路容量是指每个链路在单位时间内可接纳的最大信息量。

通路,通路是从发出信息的节点到接收信息的节点之间的一串节点和链路。

星型结构的优点是结构简单、建网容易、控制相对简单。其缺点是属集中控制,主节点负载过重,可靠性低,通信线路利用率低。

总线结构的优点是信道利用率较高,结构简单,价格相对便宜。缺点是同一时刻只能有两个网络节点相互通信,网络延伸距离有限,网络容纳节点数有限。在总线上只要有一个点出现连接问题,会影响整个网络的正常运行。目前在局域网中多采用此种结构。

环型结构的优点是一次通信信息在网中传输的最大传输延迟是固定的;每个网上节点只与其他两个节点有物理链路直接互连,因此,传输控制机制较为简单,实时性强。缺点是一个节点出现故障可能会终止全网运行,因此可靠性较差。

树型结构实际上是星型结构的一种变形,它将原来用单独链路直接连接的节点通过多级处理主机进行分级连接。

这种结构与星型结构相比降低了通信线路的成本,但增加了网络复杂性。网络中除最低层节点及其连线外,任一节点或连线的故障均影响其所在支路网络的正常工作。

UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。

功能模型, 从用户的角度展示系统的功能,包括用例图。

对象模型, 采用对象,属性, *** 作,关联等概念展示系统的结构和基础,包括类别图。

动态模型, 展现系统的内部行为。包括序列图,活动图,状态图。

实体关系图,简记E-R图是指以实体、关系、属性三个基本概念概括数据的基本结构,从而描述静态数据结构的概念模式。

经常写完文章, 收到的第一个问题是: 你的图是用啥画的其实自己也经常问别人. 最近强化了一下这方面的知识, 总结一下.

个人将画图的场景分为两种: PPT/文章中使用和系统中使用

可能有人觉得 系统中画图 需求不多, 个人感觉还是有必要的. 经常遇到费劲开发了一个系统, 遇到各路用户问问题. 如果有办法在系统中将执行流程直接生成流程图, 你好我好大家好.

GUI 画图工具有很多可选, 个人比较推荐的是 OmniGraffle , 在线工具推荐 lucidchart . 当然, 我也见过用 KeyNote 画出漂亮的系统图的, 工具不重要, 关键看人(说多了都是泪)

重点说一下程序画图. 最近反省了一下, 画图最多的就是那几个:

没了. 真的没了. 会这几个就可以行走江湖了.

然后, 推荐两个 library: blockdiag 和 graphviz .

blockdiag 是一个神奇的 python libary. 可以通过使用类似 graphviz 的语法, 画出 块图, 序列图, 网络图, 活动图. 还提供了一个 交互式的 shell , 用于调试上述几种图. 例如, shell 中输入:

立即的到如下图:

点击右上角切换成序列图, 输入如下内容:

有可以轻松得到如下序列图:

但是说好的 library 呢? 以 seqdiag 为例,

Graphviz 可谓是一代画图神器, 通过官网的示例图就知道有多强大. blockdiag 也是参考 Graphviz 的实现. 通过类似的语法描述, 生成所需的图形. 对于颜色的选择, 可以参考文档中 Colors 一节, 非常全面.

程序方面, 同名的 graphviz library 可以使用 pip install graphviz 安装, 非常方便. 示例python 程序如下:

既然有了 library 可以画图, 强烈建议在自己的系统中将一些复杂的流程化的事情通过根据当前系统状态画出图的方式展现给用户, 可以避免很多疑惑.

作为一个技术老兵,在技术行业内混了十几年了,明显能感觉到目前国内软件开发工作,在某些行业就是吃青春饭般的存在,尤其是表现在互联网公司,而且公司越大加班的疯狂程度越强,互联网公司更加喜欢招收一些年轻人毕竟工资相对低一点,冲劲还足最关键能不惜体力的加班,国内互联网公司大部分做的事情跑马圈地,应用级的开发居多,所以难度不是很高,有了2,3年的工作经验就可以跟着做了,谁的执行力强能够加班更加被公司所喜爱,很多老程序员在互联网公司体验几年基本上就回归传统软件企业了。

很多公司在招聘的时候发现年龄超过35岁就开始有意设置门槛了,毕竟这个年龄段的程序员人生阅历也比较丰富,对于职场上的一些事情也摸得比较透彻,说的不好听就是职场的老油条了,公司出个什么政策这帮人看到比较彻底,不容易忽悠,年轻点的更加容易被接受,所以说成是吃青春饭的职业有点夸张,但一定程度上也能说得过去,国外40多岁继续做研发的环境要不国内还是好很多,但也在一定程度上找工作受到一定的制约,现在过40多岁如果还在写代码肯定被周围的人议论了,都这么大了也没混上个管理职位之类,现在这个年龄段还在一线写代码的数量也不在少数,基本上属于公司顶梁柱存在,绝大部分做着技术管理,并没有完全脱离技术岗位,遇到难点还是上阵去解决问题。

老程序员如何在技术生涯找好自己的方向点?

1.尽早向技术管理方向转移

越是拖到最后完成转型形式越是被动,管理是一种学问,不像是玩技术你把自己管理好久万事大吉了,技术类的管理如果在技术能力到位的情况下可以,以技术服人这样无形之中减少了管理的阻力,更加容易让底下的人信服,平时多补一些管理方面的基础。如果有转的想法今早实施,做什么事情都要趁早。

2.将技术进行到底

技术类在职场上的分支有两个主项,一个是管理方向,可以沿着这个路线一直做到副总或者更高的级别;还有一个技术专家方向,对别的事情不感兴趣就想着一辈子能研究点技术,也没有什么大的追求,在很多公司专门设置某个项目的技术专家称号,职位基本上和技术经理持平,算是同一个级别,同样是拿着这个级别的薪水。

技术职位如果技术足够强,可以考虑直接在这个方向一直走向去,无论国内还是国外对于高级的技术专家永远都是持开放的程度,金字塔上层的技术人才毕竟是少数,但也是技术领域一直欠缺的,如果喜欢技术并且干的还不错就可以考虑在这个方向上一直坚持到底。

3.转行做别的职业,闯出另一番天地

很多程序员中间转行挑战别的行业,只要能把一个职业做好一定能够把别的方向给弄好,尝试新的天地未尝不是一个方向,新的方向新的起点新的挑战,可能带来的是新的收获。

作为一个程序员也有随着年龄的增长有一种无形的压力在心头,能做的就是拼命提升自己的技术能力,担心年龄大了淘汰,只能是继续提升技术和管理水平。

希望能帮到你。

很多人都说程序员这个行业就是吃青春饭的,为什么会有这样的问题呢,难道程序员真的感到30岁就要退休了吗,或者必须转行吗?程序员难道不就是敲代码吗,难道年纪大了敲代码就不能敲不动了吗?不是都说程序员靠经验吗,经验越丰富,不就是技术越丰富吗?作为过来人,今天索性没啥事,就和大家一起聊聊这个话题吧。

首先、先说说为什么会有这样的传言,为什么会有这样的说法吧。

第一个 就是很多人在这个行业干久了,从大学毕业到30岁至少也得6,7年了吧,行业做久了很多人自己也会感到厌烦,也想换换新的行业,尝试一下新的岗位,当然转行有风险,所以很多人转行都是转比较靠近的,比如做运维、做产品、做教育、当然走管理路线也是,这些都是比较轻松好转的行业,基本风险不大。

第二个 就是很多做开发公司加班比较多,晚上下班回家比较晚,陪老婆孩子没时间,况且加班熬夜身体吃不消,搞不好把身体搞垮了,而且大部分程序员都是懒得运动,健身的人,作息时间不规律,最后30岁的人居然熬成了快60岁的大爷,这就是为什么很多人都说程序员就是秃顶(这里我要澄清一下不适所有程序员都是秃顶呀,至少我还完好的保留着头发),在这里不得不替这些人伤心3秒钟。最后连娶老婆都去不到,还有很多连说话都说不通的人,表达能力已经到达到了原始 社会 。

第三个 就是很多那种在公司混日子,技术能力差一点的,以为公司就是可以养老的人,技术干不过别人,工资不见长,可以说非常佛系的,在这个行业混了个6,7年,终于待不下去了,压力大呀,老婆孩子一家人的希望呀,最后选择了转行,最后离开的原因竟然是公司不需要这种人了,但是我们想想哪怕是争一口气也不会混到这么差呀。

其实呢,不是说程序员真的就是考吃青春饭,30岁之后就必须的转行,想想原因还是在这些人自己身上,年轻不愿意拼实力,不愿意积累点能量,真正有技术的人,想想公司能放走嘛、高薪难道还差吗,除非那公司真的做的有点过分,亏待功臣,卸磨杀驴呢,自己不争气在前,怎能怪别人呢。

当然加班、熬夜这些都是存在,但是其他行业也不好做,那些高管,有钱的职业经理人,哪一位不辛苦呢,而且其他行业也是一样,老板虽然压榨,但是真正想要福利好的,除非公务员,不然工资很低,所谓功高者后禄,这个不会假。

另外当然也有很多愿意尝试新行业的人,愿意挑战,尝试新的开始这也有很多。总的来说,程序员真的是不是吃青春饭呢,不能一概论之,有经验,有能力的人,高薪,谁愿意走。

绝大多数程序员确实是吃年轻饭。

不管你愿意不愿意承认,等你到40岁之后就知道了。

这里有个界定,从事研发的排除在外,从事开发的包括在内。要注意研发和开发是两个不同的概念。

一般研究所,研究生院中的程序员多叫工程师,这类人是越老越值钱。年纪大经验越多,能力扎实,对做研发突破苦难起到至关重要的意义。

而开发不同,开发更多是面相年轻人来做的,你开发一款软件给60岁的老大爷们,且不说你开发的好不好,老大爷他也不会用。

一般从事开发的程序员在35-45岁时是个分水岭,能力强,有水平能熬到领导层,或者能独当一面,那么就留下来。如果不能基本就被淘汰了。而这部分留下来的人只是少数。

为什么程序员要年轻化?第一,上面说过,开发主要针对的用户是年轻人,那么只有年轻的程序员才知道年轻人喜欢什么爱好什么。让一名60岁的老程序员写一个 游戏 ,能火起来的概率不大。第二,年轻人无牵挂,肯吃苦,能加班熬夜,工资待遇又相对低。上了年纪的程序员家里有老婆孩子需要管,还有父母需要照顾,也没有了年轻时干劲,思想也渐渐和 社会 主流脱钩,并且工资还极高。这个时候如果这个老程序员不能为企业创收,那么辞退一名老程序员,省下的薪水可以在招好几个大学毕业生。

有些话不是空穴来风,也不是无能人的借口,看看各大企业裁员的年龄段就知道了。

只有码农,靠蛮力,用体力而不是用脑力的程序员才是吃青春饭的人!

大多数程序员都认为程序员是个吃青春饭的职业,编程这个事只能干到30岁,最多35岁吧。每每听到这样的言论,都让人感到相当的无语……

有研究者用了最近5年内比较流行的技术Tag,然后用了一套比较严谨的算法来查看那些所谓的“老程序员”是否在新技术上跟上不了,所谓跟不上,也就是这些老的程序员在回答这些新技术上并不活跃。所谓老,就是37岁以上的程序员。

老程序员和年轻的程序员对于一些新技术的学习来说也是差不多的,甚至有些项目还超过了年轻的程序员:

1、程序员技术能力上升是可以到50岁或60岁的。

2、老程序员在获取新技术上的能力并不比年轻的程序员差。

由于如今许多的年轻程序员太浮躁了,才会说30岁是程序员的顶峰。

其实,对于大多数人来说,如果还没有编程到30岁,还不能成为一个“合格”的程序员。所以,并不是编程编到30岁就玩完了,而是编程编到30岁才刚刚入门。

在我身边,就有一些年龄在40以上,并且还对技术保持热衷的“老程序员们”,他们无一不是身怀绝技,在公司身居要职或高管,成为公司最宝贵的技术保障。

工龄超过三十年了,做了一辈子程序员,单位还在不断招人,所以还有事情做,没有坐冷板凳,不存在什么危机。。

公司也很重视加班,但我早就过了干体力活的阶段,领导并不管我加不加班。进度慢了领导就会说你需要人吗。

学新技能么,还好吧,java,c语言这样的经典可以用一辈子,重要的是有编程思维,学习并使用哪种语言很容易。

做一辈子程序员肯定是可以的,只是很多人不愿意而已。可能男人野心大了些吧,编程一辈子觉得很丢脸,总想往上爬。。身为女性就没那么多想法,人到中年,有人愿意雇我们有口饭吃就满足了,老老实实干活的人,老板不会不要的,换过几次工作,并没有遇到年龄障碍,也没有刻意去经营人脉,你的表现如何,别人都是默默看在眼里的。。

回顾一下,有几点经验,一是不管坐哪个职位,不能丢掉编程这个技能,做了很多项目的负责人,框架自己搭,核心模块自己写,技术掌握在自己手里,项目完成有保障。。项目结束了,就要去当普通程序员,有一手过硬的编程技能,还是挺受欢迎的。二是不能总是生活在一个舒适圈里,要不断学习新知识,迎接新的挑战,每次接受新的项目或任务,一定要有所突破,不能只是单纯的重复。

我也算是这个行业的一位老兵了,从13年到现在也快八年了,程序员其实是挺费身体的,熬夜加班家常便饭,所以我觉得程序员是在吃青春饭,互联网公司基本上都存在一个问题就是看谁下班的晚,不管你在公司有没有在做事情,只要你下班比其他人晚那么你的绩效就一定不会差。至于我现在的话已经没有经常加班了,偶尔发一下版,上下班都比较规律,这就是我还在坚持的原因,程序员能干到多少岁这全看你自己,我身边三十多岁依然在干程序员,虽然程序员吃青春饭,但是你自己也可以选择往中层或者其他岗位去转,肯定不能再像初出校园那样,不然身体迟早吃不消的,秃头,脂肪肝,亚 健康 ,近视,腰椎间盘脱出这些都是普遍存在的,大家不要觉得程序员的工资就一定非常的高,这也要看地方,像重庆程序员的工资还真不如有些工种。

大多数程序员认为程序员是吃青春饭的工作。编程只能干到30岁,最长可达35岁。我经常听到这样的话,都让人感到适当的无语......

今天,我们来谈谈这个老话题......

首先,我们来看一篇论文《Is Programming Knowledge Related to Age?》(英文版)。本文是来自北卡罗来纳州立大学计算机科学系的两个人,他们在StackOverflow.com上对用户进行了相关的数据挖掘。一些数据出来了。(StackOverflow.com上的数据被公开,任何人都可以使用它进行分析和核算,所以这篇论文的实际情况还可以。

让我们来看看他们的年龄分布图:我们可以看到程序员年龄的正常分布(高点大约是25岁,但中点大约是29岁)然后,计算每个人的月营业额,这样你就可以找到用户的真实生动的时刻,这样便于计算程序员的真正才能。 (总声望/活泼时刻),我可以得到他每个月均匀得到的Reputation。我们可以看到程序员的才能从25岁开始上升,并且直到50岁才会开始下降。因此,程序员不吃青春饭的。只有码农,依靠蛮力,使用武力而不是脑力的程序员才是吃青春饭的人。

年龄大可以跟上新技能吗?该论文的作者使用了过去5年更受欢迎的技能标签,然后使用更谨慎的算法来检查所谓的“老程序员”是否跟上新技能。所谓的跟不上,也就是说,这些老程序员并没有积极回答这些新技能的问题。所谓的老,就是是37岁以上的程序员。

我可以看到老程序员和年轻程序员在学习一些新技能方面相似,有些甚至超过了年轻的程序员。

论文的结论是:

1、程序员技能可以升至50或60岁。

2、老程序员在获得新技能方面并不比年轻程序员差。

结论

从上面的数据可以看出,由于现在很多年轻程序员都太浮躁了,据说30岁是程序员的巅峰。事实上,对于大多数人来说,如果你没有编程到30,你就不能成为“合格的”程序员。因此,并不是编程编到30岁就玩完了,而是编程编到30岁才刚刚入门。

这个问题,我应该比较有发言权,大城市呆过2年然后回了小城市,5年程序员转行当老师。大部分程序员是吃青春饭的,因为大部分程序员干技术,只是停留在应用层面,没有足够的平台,5年后很难再有质的提升。技术有了提升后,还需要有足够大的平台才能撑的起你的薪资。我离开程序员行业的导火索是见到某公司,辞退唯一的一个45岁架构师。当然如果你可以不要求高薪,放平心态,我相信很多公司还是愿意要大龄程序员的。

到35岁还在基层那基本上就是没希望了,随着年龄增长,思维能力不如年轻人,如果不能升上去带团队,那只能一直做基层码农。

程序员三十以后就老了,一是技术更新太快,二是经常性熬夜加班,三十以后转管理岗,搞技术吃不消了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11021246.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存