本文旨在用最通俗的语言讲述最枯燥的基本知识
今日,看到有些文章对码农和程序员做了一些界限划定和差异分析,吓得作者赶紧研究一下自己属于哪个身份,但当仔细查看了这些文章后,发现其实对于写代码的人来说,无非就像周星驰嘴里的”龙套“和”演员“之分,顿时感悟,你是属于码农还是程序员,并不是外界给你定义的,而是你自己对这份职业的态度和付出而形成的一个一种身份。刚好可以借助这段时间作者的一些所见所闻,写几个故事,逐一分析。
文章提纲:
有趣的码农
程序员的自我修养
写一下工作周报吧
不要离公司太近了
1. 有趣的码农
最近忙于对公司某个项目进行重构,几乎所有时间都花在搭建架构和编写规范等文档上,以往都是我分析需求、建好数据库表结构、定好开发流程,再把任务分配下去,现在只能把大部分新需求直接交给项目的小伙子来处理。
前两天有个需求是对用户播放视频的行为进行数据收集,我直接把需求丢给小伙子让他全权把控,脱离了我的约束,他也玩的不亦乐乎,三下五除二地就把功能给实现了;提交代码上来后,我瞟了一眼表结构,其中存储播放行为的记录的表名叫做“video_play_log”,当时我心里就咯噔了一下:这名字起的有点局限性啊,但由于时间紧迫,我也没过多的纠结。
后来过了一周,PM跑过来跟我说:“运营反映上次做的用户播放视频的行为数据收集对运营很有帮助,他们希望对音频也做同样的功能”,我心里想:小伙子这下好了吧,一模一样的需求,你是把音频数据放到video_play_log里还是给播放音频的记录建一个新表“audio_play_log”呢?
事实上,这样的现象在开发中屡见不鲜:
-
有人为了实现一个百叶窗效果,把jQuery1.1到2.0版本的库全引进来,完全不在意页面的性能。
-
有人为了查到一个数据,把数据库的表关联加子查询再加关联再用内联函数处理,完全不在意SQL的性能。
-
有人为了达到需求里的流程,代码里的if else嵌套十几层,完全不顾代码恶俗的要命。
….
当上级需要做什么事情时,就按部就班的做事情,干着体力能及的活,拿着适可而止的工资,也不做过多思考,需求写完交差,按时上班、准点下班、对代码不做抽象,也不想解耦,更不会从可扩展性方面思考功能的实现(当然,有些人可能不具备这种大局思维的思考能力,勿怪~)。在领导看来,不差也没有很好;在同事看来,不菜也不是大牛,在自己看来,刚好无欲无求。
诚然,对自己的代码没有太多思考和追求的程序员,这类人可以称之为码农了吧,当然也没有说码农就是不好,没追求就是不好,每个人对自己人生的定义不一样,追求也不一样,当你的理想就是要做这样的一个码农时,嗯,这就够了。
但是当你不停的看到《码农将被机器人替代》、《老程序员应该被雇佣的五大理由!》、《程序自动生成代码》…等之类的新闻报道或者文章时,你的内心感到恐慌:你害怕被老板抛弃,害怕被机器机器替代,害怕你所做的工作在这个世上一文不值时,你就应该思考:
自己应该做一个无欲无求的码农,还是有思想的程序员。
2. 程序员的自我修养
“我不是一个死跑龙套的,我是一个演员”
多少人奉周星驰的《喜剧之王》为电影中的经典,可是有多少能像电影中星爷那样理直气壮地告诉别人:
”我不是一个写死代码的码农,我是一名程序员“
其实要做到并不难,一个人,无论他的身份是程序员,还是掏粪boy,抑或是白衣天使;思考能力,都是人能把任何一份工作做好的必要前提。
一个需求发出,有人拿到了就埋头苦干一通,做出来的东西漏洞百出且扩展性极差。有的人拿到需求之后花一些时间思考,分析需求、拆分逻辑和功能,对于不合理的设计和产品讨论得到确切可行的方案之后,才开工,架构和流程尽可能做到具有弹性和扩展性。
一个页面报错,有的人忙的满头大汗,折腾了一天也没找到问题。有的人却思考问题出现的可能性,使用排除法和调试法,先分析错误码,再定位问题是出现在前端还是接口,定位出来之后,再对逻辑代码进行调试分析,没多久就把问题找到并且修复了bug。
一份代码的编写,有的人东拼西凑,面向过程式的编码,最终功能实现了,代码冗长易读性差,自己也没学到什么东西。有的人会先思考分析应当如何写、哪些业务应该分层、哪些逻辑应该怎么走、哪些代码块应该抽象出来…最终编写出来的代码整洁可读性强、可维护性高,有些抽离出来的代码也可能成为自己的得力工具。
因此,思考能力,是你要想写好一份代码,做一个有修养的程序员是一个必备能力,在日常的开发工作中,当拿到一个需求时,我们应该去思考:
-
架构:如果构建一个有扩展性的可维护的工程、包、类。
-
设计:如何设计代码的逻辑,哪里可以抽象,哪里可以拆分。
-
编码:如何写符合编程规范,做到简洁、安全、耦合度更低。
-
优化:从性能更高的角度去思考,而不是仅仅从实现功能的角度思考
-
调试:编码是如何埋点便于问题展示更清楚,问题如何定位、如何调试,如何修复…
3. 写一下工作周报吧
这是一个很奇怪的观点。
其实我们心里都有数:程序员都不喜欢写周报,觉得那是文绉绉的几句话一个清单,浪费时间还吃力不一定讨好,有些上司不是程序出身的,发给他也不一定看得懂。
在此我修正一下:这里所说的周报,并不是交给上司那一份,而是交给你自己的那一份。
为什么是交给自己的一份周报呢?我怎么没有交给自己呢?
在此我想你们自己内心回忆一下:上周你做了哪些工作?解决了哪些问题?碰到了哪些坑或技术难点?如何攻克?
可能90%的人都会记得,那么再上一周呢?上一个月?上一年呢?
相信没几个记得吧
你是否曾经因为花了一个通宵攻克下来的功能而兴奋自豪的睡不着?
你是否试过一个bug百思不得其解,最终网友帮你解决了,让你学到一些你没学过的只是而无比开心?
你是否因为自己造出了一个很实用的轮子而迫不及待得想要分享给他人?
这些你都曾经试过,可是现在还会兴奋吗?不会了
当硝烟尽散,一切归于平静之后,有些你曾经很深刻的东西,也会慢慢变得模糊,最终消失。
因此建议你给自己一份工作周报吧,内容不用太多:
-
做了哪些工作
-
得到哪些成果
-
碰到了哪些坑
-
学到了哪些知识
你每周收集一份这样的内容,日记也好、文章也好、哪怕是一个Excel表格,不断的积累和回顾,会有不一样的收获。
4. 不要离公司太近了
由于公司业务的发展导致人员迅速扩张,公司一个由废弃的旧飞机场改造而成的创业园区租了一个大厂房,打算改造成一个比较艺术氛围的公司,在装修时,极具细心的想到了一些员工需要住宿,因为划了一排房间作为员工宿舍,公司搬进来之后,就有一个名同事入住了这个“新房子”。
我们这些住在外面的同事,嘴上没说啥,但心里都想:真幸福,住公司不拥挤地铁,不用自己出房租,天天都可以睡到8:59起来,多好啊。
一开始他好像也挺享受的,天天睡大觉快到上班时间了悠哉悠哉的起床上班,下班看着我们匆匆忙忙的赶地铁挤公交…
但三个月后突然有一天快下班时,我看到他在拖着行李往公司外面走,我惊讶的说你是去旅游吗?他回答让我出乎意料:他搬出去住了。
后来有一次我们去打球,打完球一起吃了饭,期间,我问他在公司住的好好的为什么搬出去跟我们一样朝九晚六了呢,他说:
“
第一个月:没房租没女朋友,一人吃饱全家不饿,上班写代码,下班在公司看电影玩游戏,工作和生活,玩的不亦乐乎。
第二个月:游戏玩腻了电影也看没了,上班时看着你们匆匆忙忙的来,下班看着你们满载喜悦的走,走到只剩我一个人在公司时,我开始感到有点孤单,在公司住,饿了就点外卖,困了就回房间躺,我的所有时间,都在公司这几百平米的空间里,有人觉得像是世外桃源,我觉得是一个只有我一个烦人的监狱。
第三个月:当项目的工作越来越多的时候,我成了加班的首先考虑对象,每时每刻,我都有可能被工作包围,上一次数据出问题时,老板逼着我查数据查到第二天,等我忙完从电脑桌起来时,你们已经提着早餐进入公司。
常常在夜深人静时,我都在想我这样有什么意义:究竟是省了那点房租?还是省了每天上下班的时间?当我把这些关系搞清楚之后,我发现这其实是在浪费时间,浪费自己的生命,我这段时间的工作收获到的仅仅是那份不需要交房租的薪水,其它的..一无所获。
后来我决意在外面租了一个小房子,每天都按时起床,去附近的公园跑跑步,然后跟着你们一样在路边买了个早餐赶来上班,下班时间,和你们一样匆匆赶回去,在那个小出租屋里,我做了很多事情,买了一些技术书籍,我看到了在工作中我没用到的技术,我的邻居,是一个爱好打篮球的家伙,经常我们约一起去打打球,如果没有什么事情,我就躺着静静思考一些事情,再也不用担心领导突然跳出来叫我查数据或者改代码。这样的工作和生活方式,让我能在工作和生活之间维持一个平衡的状态,我不仅仅靠工作涨经验,也靠生活不断的给予我灵感和前进的线路。
”
听完这些话,作者心里有些失落:原来所谓人之常情的现象,并不是我们表面上所认为的那样发展的。古语云:远水不解近渴,对于公司来说,当你离公司非常近甚至住在公司,就很可能被领导钦点的“加班之子”,加班的次数越多,生活的节奏越容易被打乱,对于个人来说,住得近,内心感觉加班就成了顺理成章的事情。
当你忙到不知道自己在做什么的时候,或许就应该做出些改变了。
长按识别,有小姐姐~
相关推荐
无论你是追求专业外观的开发者,还是注重健康工作环境的码农,都能从中找到适合自己的主题。通过改变Notepad++的主题风格,我们可以让这个强大的文本编辑器更好地服务于我们的编程工作,同时享受更佳的视觉体验。
2. 编写 `pom.xml` 文件:这是 Maven 项目的灵魂,包含了项目信息和依赖管理。例如: ```xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:...
# 属于 Python 程序员的表白神器 ... 灵魂画手工程师的浪漫 ```shell $ python3 send_love.py ``` ## 4. 得到爱人的心 ```shell $ python3 -m pip install pygame $ cd be_my_girlfriend $ python3 love.py ```
它们是计算机科学的灵魂,涵盖了排序(如冒泡排序、选择排序、插入排序、快速排序、归并排序等)、搜索(如线性搜索、二分搜索)、图算法(如Dijkstra算法、Floyd算法)、最短路径问题、动态规划、回溯法、贪心算法...
MyStock可能是项目的主程序入口或者核心业务处理类,是整个系统的灵魂所在。通过这个系统,学生不仅可以巩固Java编程技能,还能深入了解企业级应用的开发流程,提升解决问题和项目管理的能力。 总结来说,这个Java...
在编程领域,算法是程序的灵魂,它们决定了程序的效率和性能。常见的算法类型包括排序算法(如冒泡排序、快速排序、归并排序)、查找算法(如二分查找、哈希查找)以及图算法(如深度优先搜索、广度优先搜索)等。 ...
换句话说,这些村民们没有“灵魂”,只不过是受程序支配的傀儡而已。 但GPT改变了一切:近日,有研究者使用GPT-3.5-Turbo(是的,甚至没用到最新的GPT-4),构建了一个丰富的沙盒世界。在那个世界里,NPC可开展属于...
它们是程序设计的灵魂,影响着程序的效率和性能。在这个压缩包中,我们将会探讨以下几个关键知识点: 1. **数据结构**:数据结构是组织和管理数据的方式,包括数组、链表、栈、队列、树、图等。例如,数组提供了...
《计算机设计算法(第三版)》是一本深入探讨算法设计与分析的专业书籍,旨在帮助读者不仅理解算法的基本概念,还能掌握如何运用算法解决实际问题,从而提升编程技能,从码农向架构师的角色转变。书中的算法实例丰富...
9. **程序代码**:门禁系统的灵魂所在,用C语言或其他编程语言编写,控制51单片机的所有功能。程序通常包括密码验证算法、语音合成指令、温度读取和显示逻辑等。 总的来说,【基于51的门禁系统】是一个集成了硬件...
项目源码是整个系统的灵魂,包含了所有的业务逻辑和功能实现。开发者可以通过阅读源码学习如何实现编码管理系统的各个模块,例如用户管理、编码生成、编码查询等功能。 总的来说,这个企业编码管理系统是一个综合...
算法设计与分析是计算机科学的灵魂,它关乎到程序的效率和性能。常见的算法有排序(如冒泡排序、快速排序、归并排序)、搜索(如二分查找、深度优先搜索、广度优先搜索)、图论(如最短路径算法Dijkstra、Floyd-...
首先,映射文件是MyBatis的灵魂,它定义了数据库表与Java对象之间的关系,以及如何执行SQL语句。通过XML或注解的方式,开发者可以灵活地定制SQL,包括参数绑定、结果映射等。动态SQL是MyBatis的一大特色,它允许在...
自注意力机制是变换器架构的灵魂。传统RNN模型在处理序列时,往往需要按照顺序依次处理每一个元素,这限制了并行计算的能力。而自注意力机制通过计算序列中各位置之间的重要性权重,使模型能够同时考虑序列中的所有...