为什么应该投资程序员的学习

一个初级程序员真实的故事

我们正在和客户开会,他提出了一个有关于项目的想法。他想让我们给他提供一个能支持其项目技术要求的系统架构草案。关于这一点,我也明确地告诉他,增值开发需要对架构重新调整。

当我提及找一个合适的架构也是一个需要学习的过程,他一下子打断了我,并说了下面这句话:

难道我还得支付你学习的费用吗?

为了节约时间,我告诉他,我指的是业务领域,我们只有充分理解之后才能提供正确的架构。

你希望你的项目是由一个不熟练的开发团队的吗?

除非你高薪外包,否则大多需要一个软件开发团队为你工作。如果这个项目已经跨越了一年或更多的时间,你会怎么看待这个貌似一直都没有提升水平的团队?

软件开发是公认的知识驱动型产业之一,然而很多人不知道为什么会认为开发人员很容易掌握解决任何给定问题所需要的一切技能。

编程语言在不断地进化。关系型数据库在不断地增加新的功能。新出来的数据库可能大多数人都不曾用过。成功的框架在不断地推出新的版本。新技术(例如响应式编程和微服务)出现的同时,其他一些以前我们不屑一顾的技术则在不断地增加其魅力(例如函数式编程)。

想要掌握所有的技术和方法,不花时间是不可能的。

什么时候应该考虑提升程序员的水平?

当然也有那种对编程充满激情的程序员会将他们的业余时间都用在了看书、阅读技术文章、学习新技术上面,但你不能否认的是,这样的例子真的不多。

大多数程序员会选择在工作过程中学习所有需要使用的知识,而如果你不能给他们投资,那么他们在这个团队中永远也不会成长。

最合适的时间和地点是在工作时学习软件技术。

遗憾的是,并不是每个在这一行的人都赞同我的这个看法。企业主不愿意花资源(时间和金钱)来培养他们的开发人员。

这可能是看待问题的角度不同,因为很多人觉得这种投资是得不到任何直接或间接回报的——纯粹是在浪费资源。但是如果你计划周密,它就很容易变成一种盈利的投资。

以盈利为目的的学习

高品质的软件需要扎实的知识和专业性的判断,但是积累技能需要的并不仅仅是阅读。你得成为一名积极主动的学习者,用最大的限度获取知识。

我曾经是一个被动的学习者,只是阅读书籍和文章,虽然知道个大概,但实际上并没有什么大的进步。

当我提笔写这篇博客的时候,我发现教学相长也是一种学习技能的好方法。

当我开始做一个开源项目时,我终于明白,原来学习只是艰苦工作的一个副作用。

上面这些经历让我深深理解了什么是主动学习。

从商业角度看,我们不难预见,这类投资的收益可能来自:

一个更加熟练的开发团队能在失败风险更低的情况下操作更加复杂的项目。

在掌握了一定的技术之后,可以为大家提供专业的培训和咨询服务。

写书,通过自助出版程序出售。

还有一点就是,专业类的技能总是特别畅销。

投资于开发技能绝对物有所值。很多开发人员都喜欢那种能促进自我成长的工作环境,所以这一招其实也有利于于留住员工。

开始这个学习的旅程并没有人们想象的那么困难,下面我将介绍一些我非常欣赏的有关于主动学习的活动:

准备培训材料

比方说,你想要在你的公司推广特定的核心技术技能,那就可以分配给部分开发人员去研究和准备有关于这个课题的培训材料。

讲习班的效果会比一个简单的演示要好。在准备好培训材料之时,其实你已经对相关知识和培训基础有了一定的积累。然后就可以就此技术开始提供培训或咨询服务了。

公司博客

每一家软件公司都有其积累的经验,但是很少有人能真正和其他人分享。这时候,开个公司的技术博客或能有助于相互之间的交流。高品质的博客可以显示出你的专业知识和专业能力。

经常到扣丁学堂这样的IT在线教育网站去学习交流,如果你真的想要成为IT领域的专家,那么你就应该开始在这种网站上学习了

总而言之,重复是学习之母。

开源项目

如果你想要提高你的设计和编码技巧,那么你就应该踏足开源项目。

框架的作者大多非常地严谨,他们的代码审查可以教会你很多最棒的编程实践。如果你的公司经常需要使用某一种开源技术,那么回过头去好好学习一下是很有必要的。对待框架问题最好的途径就是老老实实地解决掉它。

没有人比它的维护人员更了解这个框架的了。

写文章和卖书

你可以将你的经验都概括在书中。写书也是一种非常有意思的学习过程。只有当你写完的那一刻,你才能说你真正地掌握了这方面的内容。

有需要的话可以它的帮助。

结论

学习可以让你的公司增加竞争优势。产品代表的就是公司,软件产品的质量反映了开发团队的专业程度。

最后,我要告诉你的是,你投资的并不仅仅是个人,也是在投资自己的公司。

时间: 2024-10-12 21:31:34

为什么应该投资程序员的学习的相关文章

黑马程序员_学习IOS之字典常用的方法

字典是无序的 数组是有序的.字典分为:可变字典和不可变字典  不可变字典对象 NSDictionary * dict = [[NSDictionary alloc]initWithObjectsAndKeys:@"one",@"1",@"two",@"2",@"three",@"3",@"four",@"4", nil]; //value = ke

黑马程序员——C学习总结之数组排序算法实现

发表试试 黑马程序员--C学习总结之数组排序算法实现,布布扣,bubuko.com

zz 游戏程序员的学习之路(中文版)

游戏程序员的学习之路(中文版) Milo Yip · 1 天前 感谢 @楚天阔(tkchu)编写脚本及整理中文译本数据,自动从英文版生成中文版,SVG / PDF 版本中的书籍图片现在链接至豆瓣页面. Github miloyip/game-programmer 检视/下载中文版 SVG / PDF 「真诚赞赏,手留余香」 赞赏 15 人赞赏 程序员游戏开发书籍推荐 分享 举报 977 文章被以下专栏收录 Milo的编程 进入专栏 97 条评论 写下你的评论 trycatch 这是劝退吧...

黑马程序员_OC学习笔记之Foundation框架集合类

OC--集合类 1.OC集合类包括NSArray,NSSet,NSDictionary都是以面向对象的方式操作数组,而且OC数组不像C语言中的数组只能存放同一种数据类型,它可以存放任意类型的对象,但是不能存放非OC对象类型如基本数据类型int,struct,enum等 2.OC数组是以对象的方式存在,因此在创建的时候需要为创建的对象前面加* 3.NSArray数组一旦创建就决定了是不是可变,而且永远是可变或不可变 4.NSArray数组和子类NSMutableArray的基本操作: 1>使用NS

黑马程序员_OC学习笔记之description方法和sel

OC--description方法 1.Description方法包括类方法和对象方法.(NSObject类所包含) -description(对象方法) 2.使用NSLog和@%输出某个对象时,会调用对象的description方法,并拿到返回值进行输出. +description(类方法) 3.使用NSLog和@%输出某个对象时,会调用类对象的description方法,并拿到返回值进行输出,把整个对象一次性打印出来,打印对象使用%@. 4.使用@%打印对象如(“@%”,P)默认打印输出为<

黑马程序员_OC学习笔记之@property和@synthesize

[objc] view plaincopyprint? <span style="font-size:24px;">#import <Foundation/Foundation.h> @interface Person : NSObject { int _age; int age; int _height; int height; int _weight; int weight; int _money; int money; } @property int ag

[JavaScript] 初中级Javascript程序员必修学习目录

很多人总感觉javascript无法入门,笔者在这里写一下自己的学习过程,以及个人认 为的最佳看书过程,只要各位能按照本人所说步骤走下去,不用很长时间,坚持 个3个月,你的js层级会提高一个档次,无他,唯有努力与坚持,请看: 1. 从头到尾对一遍<<Javascript高级程序设计>>,不懂的地方可以暂时掠过,给自己对javascript有一个大体的印象 2. 认认真真的读完这本书:<<编写可维护的javascript>>,从编码规范,技巧,模式,等各个方面

黑马程序员——Foundation学习笔记(NSSet和NSMutableSet)

==========android培训.ios培训.java培训.期待与您交流========== 一.NSSet: NSSet NSSet里面存储的元素没有顺序,NSArray中的元素有顺序. NSSet *s = [NSSet set]; // 创建一个空的Set,永远是空,不可变. NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose",nil]; NSString *str = [s2 anyObject]; //

黑马程序员-OC学习笔记之Foundation框架NSNumber、NSValue和NSDate

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.NSNumber 前几篇笔记中,小桥复习了Foundatio框架中的几个类,这三个是OC学习的尾声了. 小桥已经复习过OC数组类NSArray,也说过它只能存放OC的对象,对于基本的数据类型确无能为力,但是实际编程中经常要把基本的数据如int.float,结构体存放的OC数组中,怎么办?这里的NSNumber就有用了,它能够把基本数据类型包装成OC对象.