为了账号安全,请及时绑定邮箱和手机立即绑定

为什么学了编程语言还是不会做软件?

标签:
职场生活

https://img1.sycdn.imooc.com//5c946b360001c4d901280128.jpg


我是一个大学生,马上大三了,其实没感觉自己学会什么,即使学了数据结构算法,我也不知道该去如何写个东西,一些思路没有,什么都不懂,请问您该如何走下去,就是一些改到实战上的东西缺什么都不懂,只懂基础的语法,求您请教。


https://img1.sycdn.imooc.com//5c946b2d000184ee01280128.jpg

相信看这篇文章的大部分小伙伴,都经历过这个阶段。如果你还记得自己怎么走过这个阶段的,请留言帮帮这位提问的小小伙伴。接下来,我说说我的看法,抛砖引玉。

开发一个有一定规模的软件,需要以下几方面的知识、技能和能力:

  • 编程语言、算法、数据结构

  • 应用框架

  • 开发工具

  • 业务分析

  • 架构设计

  • 任务拆分

  • 程序设计

  • 想象力

  • 工程能力

  • 规划

  • 计划

  • 项目管理能力

  • 沟通

  • 产品思维

这还不够,还有很多我没列出来的。所以从这个列表看,你现在只具备了“编程语言、算法、数据结构”这部分最最基础的东西,做不出来成型的软件是自然的,非常正常。千万不要因此而妄自菲薄。

为什么说这是正常的?因为编程语言这类东西,充其量只是一把螺丝刀,你拿了一把螺丝刀,造不出来航空母舰,这很正常。

我们在初学时都觉得,我掌握了Java语法,学会了SSM,就应该能做出淘宝那类电商系统的后台。但实际上,不是这样子的。

顺序反啦!

正确的顺序是:

  1. 看到了一个问题(需求)

  2. 脑海中孵化出一个产品(服务)来解决问题

  3. 用软件开发技术把这个产品(服务)实现出来

注意到了吗?做软件必须从上帝视角出发,从全知全能到一砖一瓦。

但我们上学、我们去培训,都是先反着教我们语言、算法、数据结构、工具,所以我们学了那些玩意儿,也不会做一个能解决现实问题、有实际价值的软件。

只有按照正确的思维来琢磨开发软件这个事情,你才可能真的做出软件来。

那怎样训练,才能具备从头到尾开发一款软件的能力呢?

学开车的过程是这样的:

  • 一个会开车的老司机在车上指点

  • 我们在老司机的指点下,打火、挂挡、起步、转弯

  • 在老司机的带领下,到路上去练

  • 在少车的路上,自己练

  • 在车少的路上,慢慢开

  • 在正常的路上,慢慢开

  • 想怎么开怎么开

在这个过程中,老司机就是那个开了上帝视角的人,他心里车、有路、有路况、有应对各种路上的肌肉记忆和应急方案。他帮我们照顾着全局,所以我们可以在某个细节上慢慢学习。

学了一个又一个细节后,打火、起步、直角转弯、倒库、变速、停车,细分步骤一个一个都掌握了,我们才到真实的环境中去练。练得多了,实践得多了,这些东西才能融合在一起,成为一种完整的能力:驾驶。

软件开发能力也是这么个训练过程。

当你学习了编程语言、算法、数据结构这些东西后,只相当于你懂得了如何打火、如何抓握方向盘、如何挂挡这些纸面上的知识。接下来你要做的是:

  1. 找一个具备开发软件能力的人给你当教练

  2. 让他给你设计一个实际的软件

  3. 让他帮你把软件拆分成一个一个的模块、一个一个的开发任务

  4. 你在他的指点下,一个一个去完成与你当下能力匹配的小任务

注意,你现在要做的是第4步,也就是别人分配好任务,甚至把类的接口都定义好了、方法名字都起好了,你去填写方法内的代码。

等第4步练熟了,你就是一个能出点活的、入门级的程序员了。这个时候,你能够理解别人为什么这么拆分模块和任务,能够在别人的指点下完成一个软件的子模块。

然后,你就可以尝试着往第3步走。

再然后,可以往第2步走……

再再然后,往第1步走,给别人当教练……

有人说,我找不来教练啊,怎么办?

我经非常喜欢一本书,它在没人指点我时,给了我自己练习的指南,这本书的名字是——《Unix/Linux编程实践教程》(作者是 Bruce Molay),不知道现在还有得卖没。这本书会教你编写 who 、cp 、 ls 、pwd 等 Linux 系统命令,非常赞。

这类书,提供了一个自我练习的思路,就是:从小而完整的问题着眼,慢慢迁移到大而复杂的问题

沿着这种思路,我还找了几个替代的办法,供你参考:

  1. 找足够小的问题来解决。比如统计文本文件中的单词个数、记事本、重命名文件、定时任务、待办事项列表、静态网站、博客、图片浏览器、复制命令、dir或ls命令等等。

  2. 找开源的项目,研究它某一个子模块,尝试着自己去实现。比如 ffmpeg ,研究它的 demux 模块,尝试着自己去解析 mp4 、mkv 等文件格式。

  3. 查看操作系统的自带软件和命令,比 notepad 、copy、dir、文件浏览器、ls、mv、cat、head、tail、find等,尝试自己去实现。

  4. 找一本项目实战类的书,操练书中项目。

  5. 找实战类视频课程,跟着练。

  6. 问你身边的人或者观察自己的生活,看有什么问题,是能通过软件解决的,尝试着自己去做。


点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
8323
获赞与收藏
2535

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消