一个混迹在十八线小城的程序员 | 程序员有话说

十八线小城程序员的生存现状

640?wx_fmt=gif

不是每座城市都是北上广,不是每个互联网公司都是大厂,不是每个程序员都月入10k起。

640?wx_fmt=jpeg

我叫王辛,是一名苦苦挣扎在一座十八线小城的程序员。

你们切莫因为我不在北上广等一线城市,也不在BAT等名企而判定我为半路出家的“野生”程序员,其实我和你们一样,也是根正苗红的科班出身,只不过我没有你们中很多人的名校背景,跟你们一比,我的学历有些拿不出手,我15年毕业于宿州学院——一个名不见经传的三本院校。

学校的好坏在某种程度上决定了学生如何度过大学四年,当985、211的你们忙着做项目找实习的时候,我正在宿舍没日没夜地和室友们开黑。这也不能怪我,周围的大多数人都是如此,四年大学生活过得浑浑噩噩,觉醒的是极少数人。平庸如我,属于那大多数人。

大四校招,大多数人在找工作的时候本着“给四年大学生涯一个交代”的原则,两三场招聘会下来基本都定了工作,多都是附近的小私企。只有极少数人利用专业的优势只身前往大城市寻求更好的发展机会。平庸如我,再一次做了那“大多数人”中的一员,签了W市的一家IT公司。

W市是一座小城,排不上一线,也算不上二线,按照国家最新的划分标准勉强算个三线城市。我之所以选择W市,完全是出于它的地理位置和我的家乡挨得很近。

单位是个小私企,小到什么程度,老板和员工加起来不超过十五人。在W市新建的软件园中,稀稀疏疏地分布着几家这样的互联网公司。它们的存在,似乎是为了让那座叫做“软件园”的建筑群更加的名副其实。

下面我将就工作、收入与支出、房子三方面讲述我在W市的四年时光。

640?wx_fmt=jpeg

 

640?wx_fmt=png

工作

 

既然是小私企,就不要指望它是多么的重视研发和技术了,它本不是靠自主研发来寻求发展,而是凭着老板的人脉和销售经理的公关能力在当地承接一些规模较小的项目来实现盈利。至于技术,则完全依托于技术总监——一个有几年名企(不是特别有名)背景的资深程序员来指导下面的小弟。在十几个人的团队里,“总监”这个职位显得有些多余,每当我看到他,就想起楼下理发店常给我剪头发的理发师,他们有着一样的职称。

这里的工作模式,和许多同行所做的接私活有些类似,只不过多了老板去揽活的前道和赚取差价的工序,活接回来之后交给技术总监,一番商谈后定个截止日期,然后总监再把整个项目分割成几块分给我们去做。

项目的规模并不大,加上总监已经搭好框架、确定了方向,对于我们来说,工作内容无非是往各个模块填充代码,本身并不具备太大的挑战性,更多的是琐碎而重复的劳动。

比如说,老板拉回一个给某房地产开发商做管理系统的单,总监确定好思路之后,就会把我们几个开发拉到会议室说:“这个项目跟上次我们为XXXX公司做的单子很类似,所以我们可以参照上次的东西来,大家可以把上次的代码down下来研究研究再动手。”

接着他向大家展示一下他的时间计划和任务分配表。

任务不是很急,但也绝对不慢,毕竟老板时常过来坐镇,精明的资本家绝不会纵容一群闲散的员工。为了使利润最大化,老板往往要压缩项目周期。

在老板(还有老板娘)眼皮子底下干活,我们总得装出一副忙碌的样子,哪怕已经干完了活,也要盯着屏幕装作在Review代码,再伴随着几声把键盘敲得“噼里啪啦”的声响。

在这里的工作时间没有北上广的“996”那么辛苦,但也绝不是事业单位国企里的“朝九晚五”,加班是有的,不算密集,如果不加班的时候如果老板老板娘还在,我们便要装出加班的样子等他们走了再离开公司。

怎么用最短时间高效而踏实地学习 Python?

https://edu.youkuaiyun.com/topic/python115?utm_source=cxrs_bw

640?wx_fmt=jpeg

 

640?wx_fmt=png

收入与支出

 

在一个全民平均月收入勉强达到5k的小城,即使是披着互联网外衣的职业,薪资也不会高到哪里去,跟那些奋斗在一线城市的IT名企员工比起来,我拉低了同行的平均薪资,我给程序员这个行业丢了脸。

每月到手不足8k,五险一金按当地的最低标准缴纳,房贷固定4k。对于剩余的4k,我要小心翼翼地计算着它们的用处。

房租水电网费800每月,吃饭(工作日公司提供午餐饭补)大约需要600。这两项是必不可少的开支,对于其他的花销,我是能省则省。

到换季的时候舍不得买新衣服,一件衣服要穿好久;出门骑单车或者挤公交,情况紧急才会用滴滴打车;平常不敢轻易和同事朋友出去聚餐,一个人默默地去沙县小吃或者兰州拉面随便点碗面条填饱肚子;几乎不去大超市,购买生活用品都靠淘宝,因为网上便宜;水果都是从网上买,什么便宜买什么,今年苹果价格大涨,我不得不中断了对自己长久以来的苹果供应,前阵子大樱桃上市,本来打算买点来尝尝鲜,看了价格之后还是算了;高档键盘鼠标和耳机?想都不敢想……

以前上学的时候,我总是在心里责怪我妈做人不够大方,常常为了一些鸡毛蒜皮的利益斤斤计较。没想到有一天,我竟然会成为和我妈同一类人。

说到底,这样精打细算的日子完全是为了能够攒点钱,房子装修需要钱,找女朋友结婚需要钱,生病需要钱,生活就是个用钱填不满的无底洞。

有时会非常怀念大学时代,每月不到一千块钱的生活费,过得却欢乐异常。今天和室友去撸串,明天几个哥们去唱k,今朝有酒今朝醉,过得那叫洒脱!

看到网上关于北上广IT岗位的招聘信息,总要被那上面的高薪所诱惑,我是真没见过那么高的工资啊!我曾经不止一次的动过辞掉这份在十八线小城的工作离开这儿的念头,前往北上广中的任何一座城市,随便找份开发的工作,薪水都要比现在强。

可我始终没有离开这座十八线小城,我没有足够的勇气离开熟悉的环境、再融入另一个完全陌生的环境之中,我没有足够的毅力跳出现有的圈子出去闯荡,我突然发现我已经丧失了年轻人该有的斗志和闯劲。我想这就是在小城市小企业待久了的后果吧——思维固化,胆子也变得越来越小了,最后默默地接受命运的摆布。

640?wx_fmt=jpeg

 

640?wx_fmt=png

房子

 

房价高不可攀的何止是北上广呢?放眼华夏大地,有几座城市的房价与收入比是合理的呢?如果拿北上广的薪水来供养二三线城市的房子,绰绰有余,可如果像我这样,拿着三线城市的薪水供养三线城市的房子,那是何等的苦辛!

眼看着周边的房价一涨再涨,错过房价末班车的我干脆放弃了上车的念头,就让它涨吧,我才不要为几间钢筋水泥堆砌成的狭小空间做一辈子的奴隶!

然而,我还是太理想化了,最终我还是向现实低了头。

一方面,我耐不住身边人的规劝。同事和朋友陆陆续续地上了车,即使他们中的大部分人的生活质量因此而大打折扣,他们还是善意地劝我:“要买赶紧买,现在不买,一年又白忙活!”

另一方面,家里人也在不停地催促我:“不在城里买房,你还指望将来回老家?”

就这样,我拿着自己攒下的一点积蓄(很少),加上家里的东拼西凑,终于在今年年初入手了一套三居室,房产证上写的是105平,可实际可用面积不足90平。单价8k,总价84w,我长这么大还没见过这么多钱(原谅我的没见过世面)。84w除去三成首付,一笔近60w的债压在了我身上,从没欠过别人钱的我一下子欠了银行这么多钱,想想都可怕。

可笑啊,背井离乡的我们不得不为在某个地方扎根而付出高昂的代价。

同行的你现在都在哪座城市打拼,有没有和王辛类似的经历呢?欢迎在留言区跟大家分享你的故事。

声明:本文根据真实经历改编,王辛为化名。

作者简介:素年清时,一个会讲故事的程序员,讲述关于程序员与程序媛的悲喜人生。公众号:码农故事汇(ID:sunianqingshi)

640?wx_fmt=png

640?wx_fmt=jpeg

 热 文 推 荐 

从技术赋能到实践引领,华为云携手开发者锁定未来

Linux 之父:我就是觉得苹果没意思!

☞人均薪连续三年过万,北上深人才需求大 | 5G 人才报告

滴滴章文嵩:不仅软件开源,还向学界开放数据

Python有哪些技术上的优点?比其他语言好在哪儿?

上不了北大“图灵”、清华“姚班”,AI专业还能去哪上?

公链史记 | 从鸿蒙初辟到万物生长的十年激荡……

边缘计算容器化是否有必要?

马云曾经偶像,终于把阿里留下的1400亿败光了!

640?wx_fmt=png你点的每个“在看”,我都认真当成了喜欢

### 实现视频播放时记住上一个视频的播放进度 要实现视频播放时记住上一个视频的播放进度,可以通过结合前端技术(如 HTML5 和 JavaScript)与后端存储机制(如数据库或本地缓存)来完成。核心思路是通过 `video.currentTime` 属性记录播放位置,并在下次加载视频时将该值赋给 `currentTime` 属性以恢复播放进度。 在前端部分,使用 HTML5 的 `<video>` 标签配合 JavaScript 的 `timeupdate` 事件来监听播放位置的变化,并将当前播放时间实时保存到本地存储(如 `localStorage`)或发送到服务器端进行持久化存储。当用户再次加载视频时,从存储中读取上次保存的时间点,并设置给 `video.currentTime` 属性即可实现从上次进度继续播放。 以下是一个前端实现的示例代码: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>视频播放进度记忆</title> </head> <body> <video id="myVideo" controls> <source src="your-video-url.mp4" type="video/mp4"> </video> <script> const video = document.getElementById('myVideo'); const videoId = 'uniqueVideoId'; // 假设每个视频有唯一标识符 // 页面加载时尝试恢复播放进度 window.addEventListener('load', function () { const savedTime = localStorage.getItem(`videoTime-${videoId}`); if (savedTime !== null) { video.currentTime = parseFloat(savedTime); } }); // 监听播放时间变化并保存进度 video.addEventListener('timeupdate', function () { localStorage.setItem(`videoTime-${videoId}`, video.currentTime); }); // 页面关闭时保存最终播放位置 window.addEventListener('beforeunload', function () { localStorage.setItem(`videoTime-${videoId}`, video.currentTime); }); </script> </body> </html> ``` 在上述实现中,`localStorage` 用于临时保存播放进度,适用于单用户、单设备的场景。若需支持多设备同步或多个用户使用,应将播放进度存储在后端数据库中,并在用户登录后根据视频 ID 获取对应的播放进度[^2]。 如果使用后端框架如 Django,可以通过创建一个用于存储播放进度的模型,并在前端请求视频时从服务器获取该进度值,返回给前端用于设置 `currentTime`。Django 后端可参考如下模型定义: ```python from django.db import models class VideoProgress(models.Model): user = models.ForeignKey('auth.User', on_delete=models.CASCADE) video_id = models.CharField(max_length=100) progress = models.FloatField(default=0.0) ``` 在前端渲染时,通过 API 接口获取用户的播放进度,并在页面初始化时设置给视频元素: ```javascript fetch(`/api/video-progress/?video_id=${videoId}&user_id=${userId}`) .then(response => response.json()) .then(data => { if (data.progress) { video.currentTime = data.progress; } }); ``` 通过上述方法,可以有效实现视频播放时记住上一个视频的播放进度,从而提升用户体验。 --- ###
评论 62
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值