立即注册找回密码

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索

图文播报

查看: 285|回复: 5

[讨论] 你什么时候开始觉得你的代码能力明显上升了一个档次?

[复制链接]
发表于 2025-5-30 15:24 | 显示全部楼层 |阅读模式

登陆有奖并可浏览互动!

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录 手机动态码快速登录

×
我之前的专业是信息管理与信息系统,编程语言只接触过R语言和python(这里指能写出除了hello world以外程序的语言)。之前写代码的时候随时出bug,直到最近我感觉自己深入理解了程序=算法+数据结构这个式子,现在似乎也能考虑问题比较全面了,写的程序也逐渐稳定了起来。感觉比之前上升了一个档次
原文地址:https://www.zhihu.com/question/340550126
楼主热帖
回复

使用道具 举报

发表于 2025-5-30 15:25 | 显示全部楼层
大学用c写了一个迷宫小游戏
3500多行
面向过程的
就是几十个函数各种调用,
没有封装,也没有复用,相同或者类似的代码遍地都是
做的时候很痛苦
有几天做梦都在思考功能实现
脑子乱的像是灌了一碗粥
因为之前做的东西基本上都是上百行左右的小功能
基本没有做过完整的作品
等我做到后期的时候我就突然就悟了
感觉自己的思维能力强了很多
到现在每次想起都很感谢那次的项目
像是推开了一扇门
<hr/>链接放百度云了,感兴趣的朋友自取: 链接: https://pan.baidu.com/s/1t5998E5kbrPr6VS23DZuKw?pwd=2xh8 提取码: 2xh8

回复 支持 反对

使用道具 举报

发表于 2025-5-30 15:25 | 显示全部楼层
这个问题让我回想起了本科的求学之路,在这记录一下。
高考进了华南理工大学计算机专业,大学以前完全没接触过编程,大一开始从C++学起,上课看书完全一脸懵逼,军训期间还有集训队给我们讲算法,更是不知道他们在说啥,有的同学高中接触过编程,明显感觉他们上手更快,我也没啥好办法,只会下笨功夫,对着课本把C++课本上的代码一行一行打在vc6.0里跑,还经常因为打错字,中英文标点不对编不过找半天,但这种抄代码的功夫让我渐渐地把C++语法刻进了记忆里,对书上的各种东西也没那么懵了。寒假回家,跟家里人交流,忽然发现学了半年编程,自己的思维方式跟以前完全不一样了,更多地会去思辨,探究事情的原因。这可能是我的第一个台阶,开始了编程之旅的第一步。
大一下学期华工搭起了自己的OJ,因为C++平时上机就用这个平台,我也想熟悉一下,所以我平时晚上做完作业就在上面刷题,虽然很多都是水题,当时给自己定了个小目标,要刷到榜二(榜一是管理员),忘了花了多久,终于达成了,并且在平时的C++上机考试的时候,也已经能够超越班里大多数同学,时不时第一个AC了,也包括以前有基础的同学,当时还是很自豪的。这可能是第二个台阶吧,开始创造自己的代码。
大一下期间,我们还要同时做C++大作业,要求做个xx管理系统,当时发了一本书,里边介绍怎么用vs+dotnet做桌面程序,一接触这种可以生成界面的任务我就迷上了,能够很快得到激励,感觉我可能骨子里我有一些设计上的偏好,经常沉迷在作业里,最终做了一个跳转贼多很全面很花里胡哨的成绩管理系统,当时还没学数据库,存储是用二进制文件做的,最终老师也给了班里第一的成绩,这大概是第三个台阶,开始沉迷于写代码的乐趣。
大二开始学数据结构,算法,Java,android,当时我还是通过抄代码来学这些课,有一天上JAVA,我正把笔记本放腿上悄悄抄着,被老师发现了,老师觉得很神奇,允许我把电脑放桌上抄,然后还经常提问我,后来课程考试直接给了我满分,让我跟她做一个小项目,不过跟JAVA没啥关系,而是做MIT appinventor(一个可视化Android编程)的一个使用教程,是一件类似出书这样的事情,同时我也报了学校另一个老师的项目,做一个网站,当时知识面不够广,就用之前做过的dotnet搞了一个,http://asp.net做前端,c#写后端,这个项目倒是让我从老师那学习了不少软件设计和项目管理的东西(因为我算是一个小组长),只是好像后来除了拿它应付数据库大作业之外,好像对自己没有什么突破,这些项目应该算是一个量变的过程吧。
大二下学期学完了安卓,因为我也混学生会,知道有几个大三的师兄师姐想去一个创业公司实习,我也跟着去搞安卓了,在那里才开始学会把代码变成模块化的,以及尝到了JAVA生态里调包的快乐,开始学会去了解业界是怎么快速实现需求的,同时一边把数据结构里的各种东西用了起来,有一种融会贯通的感觉,这应该就是我的第四个台阶了。
大三继续学数据库,操作系统,计算机网络,计算机图形学,做做大作业,期间我跟着算法老师做了一个我起名为图片粉碎机的工作,用上了一大堆之前学的图相关算法,感觉又有了一点小进步。
学校的生活开始变得朴实无华且枯燥,我甚至开始自学html,css,js那一套web前端的东西。这时,微信忽然跟我们学院合作(毕竟我们还算是广东唯二两所985,微信总部也在广州)又开了一门安卓课,讲微信里用到的各种技术,受益匪浅,同时也给我们提供了一个内推进微信的机会,我试着投了之后,简历被微信事业群的QQ邮箱组截胡了,经过两轮我感觉发挥并不是很好的面试(我感觉可能是最后图片粉碎机里的算法让面试官们满意的)后,拿到了QQ邮箱安卓开发的offer,大概两个星期后,也通过阿里正式的流程拿到了天猫安卓客户端的实习offer,当时觉得还是选个离家近的吧,就在腾讯实习了。现在其实有点后悔应该去阿里,因为我读研也去了一次腾讯AI Lab。
在腾讯QQ邮箱的半年,在同事的指导下,学了更多Android相关的东西,学到了各种各样的设计模式,接触到了jvm,各种各样的好用的lib,甚至还有函数式编程,还有微信体系里的产品思维,让我眼花缭乱,不禁感叹这就是鹅厂!最让我佩服的地方是,如果一个问题谷歌搜不到答案,依然还有希望在内网搜索到答案!当时还比较年轻,每天感觉在工位上坐一天也不会累,虽然有时候觉得确实烧脑(脑袋微微发热)。上下班坐地铁从大学城到客村,还一边看thinking in java英文版。期间还debug了sqlite的源码,解决了它在安卓上的一个bug,也让我对debug这件事情更有信心,甚至有同事叫我debug小能手。后来因为保研,就没有留在鹅厂,半年后回到了学校。这半年里让我觉得又上了一个台阶,感觉已经能够胜任大多数开发的要求了。
回到学校,觉得自己在鹅厂学的东西太多了,还没完全消化,需要好好沉淀一下,花一个月把毕设代码写完,开始从头学习设计模式,git,markdown之类的东西,毕设的代码也用设计模式的视角好好整理了一遍,期间也开始在github上灌水,寒假时在github上翻译了一个外国人的仓库,截止到现在这个仓库已经有了一千多star,同时自学tensorflow,写了一个学习笔记,也收获了一千多个star,同时还开始学chromium的文档,因为以前实习有个安卓webview的东西没完全搞懂,也建了一个仓库写了点东西收获了一些star,一边开始搞自己的博客,把自己学的东西沉淀下来,于是有了 https://blog.cweihang.io ,我本科三年其实还在学校的团工委勤工俭学,为了熟悉读研要用的python,寒假我还用django给他们写了一个物资管理系统。大四到研一期间正值大众创新万众创业,团工委的老师让我带那边的师弟师妹给学校的创业中心写了一个创业团队管理系统,当时是在开源中国上,模仿腾讯的TAPD用issue做项目进度管理,进一步锻炼了项目管理能力。
这个阶段算是一个沉淀和转变的过程吧,后来随着实验室的方向变更,我就开始走上了炼丹的不归路,具体可以看这篇文章:
https://zhuanlan.zhihu.com/p/54161673回首本科的生活,比较遗憾的是当时没去搞ACM,不然编程水平应该会有另一个突破吧。课程学的还行,虽然不如有些同学那么有天分,但还是拿到了保研的资格,大二的时候也拿到了国奖。基本上互联网相关的东西,web前端,Android,JAVA后端,Hadoop,Python后端,C++嵌入式开发,C#桌面开发,甚至Photoshop(在学生会和勤工俭学我做海报),都搞过,博客里也可以看到内容很杂,读研炼丹期间, 这些开发经历也让我有了快速实现idea以及做一些横向项目的基础。应当算是赚回学费了吧⊙∀⊙!
近期我们团队(DJI)在招实习(2024.5~2024.7为招聘期),可以看这个链接:职位详情 - DJI 大疆招聘
nn flow,stereo,occupancy,bev相关方向都可以投递,感兴趣的同学可以私信我,或者直接发简历到weihang.chen@dji.com
推荐阅读:
https://zhuanlan.zhihu.com/p/409662511https://zhuanlan.zhihu.com/p/492785139
回复 支持 反对

使用道具 举报

发表于 2025-5-30 15:25 | 显示全部楼层
大二下大三上,写完了一个6000行代码左右的很小的物理引擎+OpenGL显示的小项目。调试遇到很多问题,主要是BVH出现了死循环,BVH没有更新。碰撞出现了异常情况,导致crash。还有OpenGL相机漫游也遇到了一些问题。
在那之后,查一些常见bug就没问题了。
大四的时候,写了个Android播放器,硬解+软解。当时Android 还是Android.mk那套,ffmepg还没官方的Android编译工具链。主要就是移植了ffmpeg, 编写了JNI的接口,搞了个Android Native Window,搞了个多线程软解。
最崩溃的问题是,调试Android的C++了,当时的工具链很蛋疼,那时候还没有Android Studio。我Eclipse CDT无论怎么配置,总是识别C代码一堆红色。
另外,最终写完调试完大部分简单的bug后,遇到了奇怪的bug,播放视频大概30-40s之后,就会出现segment fault,bus error的错误。调试极其困难,因为解码循环已经过去了快一万次了,也没有什么特征,没法打断点。由于我太菜,当时还不会用stackoverflow。后来,思来想去各种尝试好几天,我发现是内存对齐的问题。
我自己感觉,做完这2个几千行C++代码级别的项目后,自己对内存&指针的理解,跨语言调用,工具链的使用,调试直觉都有了很大的提升了。
后来研究生,自己写了2个游戏外挂后,对计算机体系结构和汇编的理解感觉更好了一点。但是还是一只菜鸡吧。
回复 支持 反对

使用道具 举报

发表于 2025-5-30 15:26 | 显示全部楼层
码农的等级分为等级:练气—— 筑基——金丹——元婴——出窍——分神——合体——渡劫 然后就可以进化成码仙,码圣,码神
第一阶段练气,这个时候刚刚入门,写代码还谈不上逻辑关系问题连基本语法都搞不定,照着书上打都打不对,三行代码四个error就是说这种情况
第二阶段筑基,这个时候照着书上代码能打对了,语法上半知半解,写代码主要还是靠Ctrl c+v东拼西凑模块拼在一起,运气好做出来的东西也能用
第三阶段金丹期这个时候基本语法是搞定了,能靠自己写出一系列代码,然后热衷于刷题,觉得能撸进rank1自己就天下无敌了,写代码只要给个sample或demo能模仿着写一段,不过一操刀实际项目写着写着自己都觉得写的像一坨*
第四阶段元婴期,这个时候突然会产生一种我学的语言天下第一先有__语言后有天地的错觉(自觉对号入座),不再热衷于刷题热衷于在逼乎,gayhub,Stack Overflow各种和别的异教徒抬杠,并且热衷于语言各种新特性产生xx标准委员会你们这群shab为什么还不把这种新(特性,框架,算法)加入标准中。不用新特性的代码都是lowb,并喜欢在博文问答上扯什么泛型,模板,匿名函数,ABI, JIT....七七八八的玩意,虽然心里也在犯嘀咕这些东西到底对现在撸的项目推动起了什么实质性推动作用,搞不明白但又不想否定,最后得出结论管他呢,听起来写起来说起来牛逼就行了,大部分码农修仙者很容易卡在元婴期。
第五阶段出窍,这个时候各种装逼理论学的差不多了就会在审计自己之前写的代码都是一坨*,别人的代码也是一坨*,然后开始按自己觉得牛逼的设计模式重构,重构 再重构,别问我在做什么,问就是在重构代码的路上。
第六阶段分神重构代码的次数多了,语言新特性各种新框架还在不断更新交替,然后看了那些看上去好像更牛逼的框架理论设计模式琢磨着是不是要再重构一次时就开始会怀疑人生了,我引入这些新东西为了什么,到底对我项目功能有什么实际性的帮助呢,以前那种简简单单的写法难道不能同样很好实现这个功能么,我学这些东西到底为了什么,是解决问题还是装逼给不懂的人看?
第七阶段合体,口嫌体正直地把项目又重构了一次,代码写的就像你刚入门时的差不多就算是刚入门的也看得懂,但你知道你在干什么,也不会觉得很low了。
第八阶段渡劫,你开始彻底怀疑人生那么多年你到底在学什么,如果把这个拿去炒股,画画,学钢琴,找男女朋友今天也是个股神,大触,神之手,人生赢家了,你发现解决问题的关键现在不会在以后也不会在代码本身上。
码仙,码圣,码神:代码?什么代码,我是学做菜的谁再说我是写代码的看我不打爆他的狗头
回复 支持 反对

使用道具 举报

发表于 2025-5-30 15:26 | 显示全部楼层
当我开始学CS的第二学期,我选了UIUC的System Programming,里面有个作业是让我们实现malloc,用系统的sbrk,有性能要求,根据和标准库性能比较给分。因为用了系统库所以没法用一些内存检查工具。因此我把400多行的c每一行的变量地址都print出来,然后在纸上边花边运行。为了找出内存错误连续写16小时。
这个作业写了三天三夜,最后due前一小时才找到bug。记得当时都写哭了,跑出图书馆冷静一会儿回来继续写。从那个作业后,我感觉到无论什么bug,我都能够克服。
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册 微信登录 手机动态码快速登录

本版积分规则

关闭

官方推荐 上一条 /3 下一条

快速回复 返回列表 客服中心 搜索 官方QQ群 洽谈合作
快速回复返回顶部 返回列表