新手程序员写项目疑问

2020-03-07 00:24:31 +08:00
 Leslie5205912

我现在大三,然后有在网上接到项目赚点外快,项目大概涉及的就是 linux 端 sdk 的对接使用,c/s 架构,用到的开发工具是 qt,linux 端语言也是 c++,以及用 python 当作胶水 其实这些我都是依样画葫芦做出来的,碰到啥不会,比如 qt 怎么创建一个 server 实例,怎么去继承 qtcpserver,怎么重写 incomingConnection 函数,以及现在做到的怎么对接阿里云,用到的 opencv 怎么去识别人脸,python 怎么去调用 c++.so ,这些都是网上直接找 demo,然后修修改改,现在就是做出来的东西稳定性不太行,会经常出来一些意想不到的错误,但是大多数都能解决,但是就是没办法一次写成那种 bug 很少的程序,以及很多东西网上找不到 demo 我就没办法自己创造了,想知道程序员是不是就是这个工作模式还是应该去学好基础一步一步向上?还是说这种东西做久了,有经验了,吃的苦头多了,以后写出来的程序稳定性也高了? 其实有时候也在想自己到底适不适合这个职业,其实我大学 3 年一直在想,一个是大家都在说的确实很累,但是想想其实哪个职业不累呢,一个是碰到 bug,碰到走不通的路,我有时候真的很想放弃,写程序兴趣是有的,实现一个功能,我都会很开心,相反,测试给我疯狂发 bug,这种时候心情就会差到极点 想知道你们的成长途径是怎么样的? 我现在定的方向是以后做音视频应用开发,在看雷霄骅写的 ffmpeg 相关博客,不怎么看的懂哈哈

4286 次点击
所在节点    程序员
29 条回复
lewinlan
2020-03-07 13:24:02 +08:00
@Leslie5205912 借鉴思路是必须的,也是好的。我的意思是别直接拿来就用。如果是复杂的大型框架没办法自己撸的,至少看懂人家的源码
Returnear
2020-03-07 13:42:38 +08:00
函数 -> 功能 /特性 -> 模块

你现在复用了别人的模块,但是对功能都改不了,所以问题就出在这里了。

如果要成为一个合格的开发,至少以函数作为最基本的复用单元。
Leslie5205912
2020-03-07 13:51:09 +08:00
@lewinlan 这个当然哈哈,不然和没写一样
Leslie5205912
2020-03-07 13:55:27 +08:00
@Returnear 这个倒是没有,我的意思是没办法凭空写出来,拿到别人的代码我是能分解出有用的函数的,不过如果这个函数的传参和 return 没办法直接放入我的代码,比如有做到 rgb24 转 jpeg (说实话这个真的看不懂,我就直接抄了,能运行就行),后来怎么都有问题,就转为用 opencv 直接保存 jpg 了
gavinjou818
2020-03-07 14:38:50 +08:00
虽然没有一直大学都没有实习过。但是感觉很多时候也有楼主一样的矛盾,自己想实现功能,但很多时候并不知道怎么下手,然后就是在网上找人家代码,写写,然后搭起来一个烂架子。虽然能跑,但是很不稳,各种问题出现再去重复的查找。
但是感觉多次复用理解之后,也能按葫芦画瓢的做出来。做软件程序给我的感觉,就是一种形式;并不像打 ACM,你可以把你的想法灌进去,然后看到 AC 的开心。
但是你找的也是人家积累的帖子,说明了什么呢,大家的工作模式都应该基本一致,都是这样一点点积累下来,所以楼主我觉得你遇到的 bug 也自己攒一下,攒得多了,以后也就行云流水程序更稳定了,写出更优雅的代码了。至少俺是这昂想的,看书为辅,实践为主。打 ACM 不也是一点点从 a+b 搞起来的,一样也有 bug,一样也有让你爆炸的时候。
jianghu52
2020-03-07 14:39:55 +08:00
有一点我看大家没有说到,我补充一下.测试给你疯狂的发 bug,你不能对应完了就完了.要把这些 bug 都找出来,总结一下,有哪些是因为你的考虑不足出的错误,有哪些是你的知识不到位,出的错误.哪些是因为文档没有写,你也不知道出的错误.
这么总结一圈下来,你最少能在一个项目上,看到自己的不足之处,然后针对性的去学一些东西.
个人认为,软件工程分两大部分.
1.技术积累.简单来说,如果你对这个项目所用到的语言特性非常了解,对应优缺点都心里有数,项目有什么需求,你都可以有现成的提案.那么对于一个项目来说,能在技术上学到的就是这些了.
2.业务积累.简单来说,你不在是一个开发者,而是一个使用者.为什么要做这个功能,是什么痛点让客户提出了这个功能,这个功能是不是最好的解决客户痛点的方式,客户可能还有哪些痛点,能不能有更好的方式解决客户的痛点.随着你提的问题越多,你能从业务上学到的东西就越多.所以业务层面的积累相对来说会慢一些,通常我们得闲到一点程度,才能有时间体会这些.
至于你说的没有 bug,或者被人疯狂提 bug,这种挫败感是完全没有办法避免的.
Leslie5205912
2020-03-07 15:11:07 +08:00
@gavinjou818 可能这就是程序员不得不积累的项目经验吧!共勉
Leslie5205912
2020-03-07 15:14:34 +08:00
@jianghu52 真的碰到 bug 才知道自己有好多不足
newmlp
2020-03-07 17:46:59 +08:00
基础很重要,不然碰到问题就瞎了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/650577

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX