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

  

https://img4.mukewang.com/5c946b360001c4d901280128.jpg

 

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

  

https://img2.mukewang.com/5c946b2d000184ee01280128.jpg

 

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

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

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

  应用框架

  开发工具

  业务分析

  架构设计

  任务拆分

  程序设计

  想象力

  工程能力

  规划

  计划

  项目管理能力

  沟通

  产品思维

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

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

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

  顺序反啦!

  正确的顺序是:

  看到了一个问题(需求)

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

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

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

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

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

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

  学开车的过程是这样的:

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

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

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

  在少车的路上,自己练

  在车少的路上,慢慢开

  在正常的路上,慢慢开

  想怎么开怎么开

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个问题的答案取决于你想什么类型的工作。对于某些类型的工作,有些编程语言比其他编程语言更适合。例如,如果你想网站开发,习 HTML、CSS 和 JavaScript 可能是更好的选择。如果你想数据分析,习 Python 或 R 可能更有用。如果你不确定想什么,那么习一种流行的通用编程语言,如 Python 或 Java,可能是个不错的选择。 ### 回答2: 在找工作和编程语言时,选择哪一种编程语言是好的取决于个人兴趣、职业方向和行业趋势。 首先来看个人兴趣。程序员需要热爱编程,因此选择自己感兴趣的语言是很重要的。常见的编程语言有Python、Java、C++、JavaScript等,每种语言都有其特点和应用场景。如果你喜欢数据分析和人工智能,Python是一个不错的选择。如果你想从事软件开发,Java常常是需要的编程语言。因此,根据个人兴趣来选择编程语言是很重要的。 其次是职业方向。不同的行业和职业对编程语言有不同的需求。例如,前端开发需要掌握HTML、CSS和JavaScript等语言。如果你想从事移动应用开发,习Java或者Kotlin更有帮助。如果你对游戏开发感兴趣,C++可能是一个不错的选择。 最后是行业趋势。技术的发展迅速,某种编程语言在某个时期可能非常热门,但可能在之后的几年内逐渐被取代。因此,了解行业的趋势和动态是选择编程语言的重要因素。例如,人工智能和大数据分析正在兴起,所以习Python在就业市场上更有竞争力。 总结来说,找工作和编程语言时要考虑个人兴趣、职业方向和行业趋势。了解自己的兴趣和目标,同时也要关注行业的发展和市场需求,选择适合自己的编程语言才是最好的选择。 ### 回答3: 找工作习哪种编程语言好,需要根据个人的职业规划和行业需求来进行选择。以下是一些常见的编程语言供参考: 1. Java:Java是一种广泛应用于企业级开发的编程语言,适合开发大型系统和跨平台应用。Java开发人员在互联网、金融、移动应用等行业有很好的就业前景。 2. Python:Python是一种易易用的编程语言,广泛应用于数据分析、网站开发、人工智能等领域。Python的就业需求不断增加,尤其在数据科、人工智能等领域有很好的发展机。 3. JavaScript:JavaScript主要用于网页开发,是前端开发人员必备的技能之一。随着移动应用和web技术的发展,掌握JavaScript的人才一直都有很好的就业机。 4. C++:C++是一种广泛应用于系统编程和游戏开发的语言,对内存控制和性能优化有着较高的要求。C++程序员在游戏开发、嵌入式系统、金融等领域有很好的工作机。 5. Ruby:Ruby是一种简洁易读的编程语言,以Rails框架为代表的Web开发应用广泛。Ruby开发人员在初创公司和Web开发公司有较好的就业机。 总之,选择习哪种编程语言要考虑到个人兴趣、行业需求和市场状况。掌握多种编程语言,提高自己的技能广度和深度,对找工作和职业发展都有积极的影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值