当前位置: 首页 > news >正文

程序员该如何改变枯燥的编程生活?

今天我们来聊一聊程序员枯燥的编程生活,相对于其他行业来说,编程这件事肯定是枯燥的,即使是对编程非常有兴趣的同学和朋友也会如此,我为什么这么说呢?大家可以不看下文,在这里停顿思考一下。

实事求是的说,作为一个开发者,一个程序员,我相信大多数人干同一份工作的时间基本上不会超过两年,换句话说就是:一个程序员在同一家公司干同一份工作超过两年的很少。

很多人说,程序员是一个跳槽比较频繁的职业,每一次的跳槽都会使工资大幅度甚至成倍的增长,所以这时候就会有很多人跳出来说:程序员跳槽的目的很简单,就是因为想涨工资了。在这里,我想说:我并不否认,确实有很多开发者和程序员跳槽是为了涨工资,但是我相信作为一个有责任,有志向的程序员,跳槽中最大的目的并非涨薪,而是换一个更好的环境,更好的成长平台和发展空间,涨薪只不过是跳槽过程中附带的价值。

聊到这里,你们可能会说:你是不是跑题了?今天不是聊枯燥的编程生活,以及如何改变这种现状吗?其实这是有关联的,而且有时候可能关联还是很大的。我先卖个关子,一会再说其中的关系,在这里你们也可以停顿思考一下,到底是什么关系?好,回到正题上来说:程序员的编程生活为什么很枯燥,或者换句话说:是什么导致程序员的编程很枯燥的?

其实原因无非就是以下这几种:

同一个环境,同一种技术

什么意思?跟同一个世界,同一个梦想不同的是,你在一个公司待久了,使用你所知的一种技术,重复的干着一个项目,你说时间久了,是不是很无聊呢?如果在一个公司做一个项目,长达一年,在这一年里,你仅仅是用你所知的技术一步一步的去实现,学不到新的技术和知识,技能得不到提高?这时候,无聊自然就会随之而来,悄无声息。可能对于公司来说,这是有意义的工作,但是对你来说:这是重复的,机械的搬砖。

粘贴复制……

其实和上边道理差不多。工作每天都是从网上粘贴复制,项目就是这样被垒起来的。很多人离开了网络,基本上就丧失了百分之八十的编程能力,而剩余的那百分之二十还是抄书。很多程序员编程不思考,而是简单的粘贴复制。

当然,聪明点的程序员还是会封装的,自己就会把一些常用的工具类,一些方法,一些控件进行封装,留着以后备用。在公司开发完 A 项目,然后开发 B 项目的时候,就会很简单,把自己封装的东西拿过来直接用,这样机械的复用或者粘贴复制是不是很无聊呢?答案是肯定的。

重复的迭代和维护,以及修改 Bug

其实当一个项目进入测试阶段以及后期维护和迭代阶段的时候,开发人员基本上百分之九十的工作任务就是在修复 Bug ,而不是在研发新功能,学习和使用新技术。天天在维护和更新迭代这个项目的时候,其实工作是很乏味的。

没有思想的程序员

其实很多时候,程序员是没有话语权的,尤其是在小的创业公司,因为老板基本上就是产品经理,需求说让你做什么,你就得做什么?让你去实现什么,你就得实现什么。不会让你参与到产品的讨论当中来的,当然,如果老板让你参加,估计由于产品经理是老板,你也没有什么话语权和发言权。

再这样一个没有个人思想和独立思考的开发环境中,你是不是很无聊呢?只是机械的去实现老板想法的一个工具?是的,你就是一个工具,这种现状那又该如何改变呢?

你们感觉还有哪些让程序员编程无聊的原因呢?

既然,有原因了,那就得想解决办法,而不是选择逃避。我们该如何改变这种编程无聊的状态呢?

如何解决编程无聊的状态

首先,面对环境的限制,技术的瓶颈,其实我们应该想的是如何实现自我的需求和改变,而不是通过逃避和跳槽,其实你应该知道,不管你怎么跳槽,你都会将要面临这种无聊的状态,除非你这一辈子都在跳槽中度过。你试想一下:你今天跳槽了了另外一个公司,解决当时的无聊状态,学到了新东西,可是在新公司待了一段时间,又发展受限,技术又遇到瓶颈该怎么办?还跳槽,一直跳槽?

遇到问题,首先想到的应该是解决办法,而不是用跳槽的方式来逃避。比如:我们可以尝试轮岗,让前端去学习后台,后台来学习前端,大家互相帮忙,一起交流学习,是不是能够解决你这种无聊呢?还比如:公司的一群小伙伴,可以一起尝试着去创造和维护一个开源项目,再或者长期举办一些技术分享,拓展视野。其实从本质上讲要学会利用公司资源来改变无聊的现状,当然公司也应该在实现自己利益的前提下,还要关注和满足员工自己自我需求的实现才行。

其次,不要整天想着粘贴和复制,应该自己学习思考和学习,尤其是编程的思想和原理,平时多看,多读一些项目的源码,系统源码,看看高手是如何实现这个功能的,学会其中的思想和原理,不要仅仅从网上找到相关工具类或者开源项目就什么都不想,什么都不管,直接感觉能用就行。这样从本质上解决不了你自身的任何问题,当然,这确实让你实现项目功能,但是哪有如何呢?又不是你的。

再次,维护和迭代,以及修改 Bug ,不管你跳槽到哪家公司,这都是避免不了的,你感觉天天修改 Bug 和维护项目很无聊,那该如何改变这个现状呢?

  1. 不要出现 Bug 就暴力的去堵,很多程序员解决 Bug 的方式就是暴力解决法,举个例子:比如报了空指针异常,他们就会在报空指针异常的地方做不为空的判断,这也太暴力了,宜疏不宜堵。你应该找到报空指针的真正原因,看看有没有更好的,更合适的解决方式,这样可能就会一下子解决很多地方的相同的 Bug 。
  2. 还可以尝试着想着办法,如何优化一段代码,可能是不是有更好的方式可以提高性能,加入你的代码性能提高1秒的速度,你可能就会很高兴,就感觉很有成就感,这样就不会很枯燥和无聊了,反而很高兴。
  3. 在 code review 的时候,可以项目的人之间相互 code review ,这样大家可以互相来找茬,既能够学到对方的编程的方法和方式,还能够把代码共同维护好,何乐而不为呢?

最后,关于没有思想的程序员来说,这个其实是公司文化的一部分,当然可能跟公司太小有关,其实不管产品经理听不听你的,你都可以尝试着大胆说出自己的想法和看法,有时候,老板并不是专横,而是由于你们不敢说,认为老板专横。如果你的想法更好,我不相信你老板傻到还在坚持自己?当然,我并否认有这样傻的老板。总之,要鼓励讨论的公司企业文化,要大胆说出自己想法。说不定,有一天,你们老板由于没有听你的,而感到后悔,这可能也是你的成就感。

最后的最后,我想说:公司环境,还有技术瓶颈,还有一些导致无聊的原因其实那都是外部原因,本质上遇到这些问题,解决的最后的方式是从自己身上找到解决方法,而不是逃避和抱怨。

欢迎大家关注我的公众号:非著名程序员。特别声明:未经允许,禁止任何形式的转载!

相关文章:

  • RHEL5,DNS配置小结
  • Ubuntu 16.04中XMind 8导致Java内存溢出的问题解决(硬盘卡死,桌面卡死)
  • 收集的QCon 北京(Beijing) 2010 PPT 及总结
  • nodejs(三) --- nodejs进程与子进程
  • mongos魔兽世界模拟器
  • subversion 版本库数据迁移 从一台服务器迁移到另一台新有服务器
  • Linux下搭建CACTI的时候总结的一些小知识
  • maven冲突管理及依赖管理实践
  • 每日学习记录5.10
  • SQL Server--系统监视与性能调整
  • CWnd类
  • jquery select操作
  • docker学习二 安装docker
  • OSPF协议的详解(一)
  • Network----轮询
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 2017 年终总结 —— 在路上
  • Date型的使用
  • ECMAScript入门(七)--Module语法
  • ES6系统学习----从Apollo Client看解构赋值
  • FastReport在线报表设计器工作原理
  • Next.js之基础概念(二)
  • underscore源码剖析之整体架构
  • Wamp集成环境 添加PHP的新版本
  • 从0实现一个tiny react(三)生命周期
  • - 概述 - 《设计模式(极简c++版)》
  • 关于字符编码你应该知道的事情
  • 好的网址,关于.net 4.0 ,vs 2010
  • 聊聊flink的BlobWriter
  • 每天一个设计模式之命令模式
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 听说你叫Java(二)–Servlet请求
  • 以太坊客户端Geth命令参数详解
  • 阿里云ACE认证学习知识点梳理
  • 从如何停掉 Promise 链说起
  • ​人工智能书单(数学基础篇)
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #、%和$符号在OGNL表达式中经常出现
  • #include<初见C语言之指针(5)>
  • (Note)C++中的继承方式
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (初研) Sentence-embedding fine-tune notebook
  • (第27天)Oracle 数据泵转换分区表
  • (二)正点原子I.MX6ULL u-boot移植
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (五)关系数据库标准语言SQL
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)Linq学习笔记
  • (转)一些感悟
  • .gitignore文件---让git自动忽略指定文件
  • .NET MVC第三章、三种传值方式
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径