开发者网络

用户名  找回密码
 立即注册
帖子
热搜: 活动 交友 discuz
查看: 81|回复: 2

资深工程师讲解,想转行软件IT行业的朋友,你要的答案,这 ...

[复制链接]

1

主题

3

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2022-12-2 18:35:26 | 显示全部楼层 |阅读模式
对于那些零基础、非计算机专业,想转行进入软件IT行业或想自学软件开发的朋友,你们要的答案,在这篇文章里都能找到。
       写这篇文章的目的是想给一些对这个行业有兴趣,但又没有基础的朋友进行分享,让大家在探索或者自学的路上少走一些弯路。这些都是笔者从业多年的经验分享,不忽悠、不套路,有的都是教训和现实。
想开发软件,首先你要知道软件是怎么做出来的。
       软件是用编程语言代码开发出来的。计算机运行代码,按代码指令执行;程序员编写这些代码指令,告诉计算机要具体做什么。计算机是不知道你要想做的目的是什么的,只会按照你输入的代码指令,一点点的做,全部动作做完,组合起来就是你想让计算机实现的意图。
要开发出一款完整的软件,用到的编程语言可不止一种。


       通常开发一款完整的软件都至少需要好几种语言。不要以为学了一门编程语言,就什么都能做。更可能的是你什么都做不出来。那些只需要一种语言就能做完的软件那是极少数。要能一种语言就实现出商业价值,那老板可高兴坏了,不用请那么多不同技术岗位的人,多好的事啊。但实际上是需要很多种技术结合才能做出一款软件的。
开发不同的软件,用到的编程语言和相关的技术都是不同的。


       开发一个购物网站和开发一个桌面办公软件所需要的技术是很不一样的,开发电子硬件设备上用的软件所需的技术更不一样。每种软件开发所需的技术都有自己的领域,同样是做软件的,但要开发不同的软件,所需的知识可能完全不同。这里简单介绍一下,开发不同方向的软件所需要的技术基础:
       开发桌面应用,需要C、C++、VC、MFC等基础;
       开发Web应用,需要HTML、CSS、JavaScript、Java或者C#、PHP等基础;
       开发安卓APP应用,需要Java、Android等基础;
       开发苹果APP应用,需要Objective-C等基础;
       开发硬件设备应用,需要硬件理论知识、C、C++等基础;
       开发大数据应用,需要Java、Scala、Python、Hadoop、Hive等基础;
       开发人工智能应用,需要高等数学知识、机器学习、深度学习等基础;
       操作系统其实也是一种软件,我们平常用的Windows系统就是,但绝大部分人都不可能去开发操作系统,这里介绍下只当了解。
零基础学开发软件,最容易的就是从Web应用开发开始。


       其他方面的软件开发所需要的基础要求都比较高,对于零基础的人士不合适。光学一个C和C++就能把99%的人都难住。但Web应用所需的开发技能,学习难度不高,零基础的初学者也能学懂和理解运用。
编程语言的选择很重要,因为它决定着后面的学习路径和将来的就业市场问题。


       即使同样是做Web开发,也是有不同的技术路线的。常见的有PHP、C#的http://ASP.NET、Java的JSP和这几年比较流行的Python和NodeJs等(其实这两者已经出了很久了),都是可以用来开发Web应用的。一旦选中了一种开发语言,后面与该语言配套的相关开发技术都是不同的。像ASP用到的应用容器是IIS,而JSP用的是Tomcat;C#访问数据库用http://ADO.NET,而Java用的是JDBC,相关的功能实现用到的技术是不一样的。
怎么选择编程语言这个问题,一直都是充满争议性的。这个问题最正确的答案是,让市场决定。一种技术如果市场招聘需求少或者薪资低过同行其他的语言开发的水平,是让人很郁闷的。千万不要根据个人喜好闷头学,一定要根据市场的需求来。这是很重要的经验。
零基础学习的关键在于,找到最短而又必需的学习路径,先入门。


       每一种技术路线所需的技能都是不同的,而且技术又有各种各样。技术是针对需求、针对问题诞生的。当你还没遇到那方面的需求,就先不用管那块的技术知识先。先把要开发Web应用的基础技术都学完,整合起来先。不要因为某块技能短板的缺失,导致整个应用做不出来,最终失去对学习的信心。
千万不要尝试将某一种技术学到底,死磕到所有技术点都搞明白,再去学别的。那样做只会让你从入门直接到放弃。


       拿Java举例,如果一个初学者没人指导,看着官网文档就开始死磕,尝试理解所有功能用法,后面会发现学不下去。因为里面有些部分是需要跟其他技术相结合的,需要进行扩展连接的。这个时候不去学那方面的技术你是衔接不上的。但如果你看到什么扩展技术你都去学,你又会陷入到另一个误区,你会发现技术扩展越多越多。到后面发现要学的知识太多,扩展的知识又有扩展的知识,开始崩溃想放弃了。
学习编程一定要数学很好吗?
      不用,做应用开发一般不需要很好的数学能力都能工作。只有深入到数据结构与算法的领域时,才会需要一定的数学能力。普通的功能性开发基本用不上数学知识,只有做底层组件时才比较可能会用上。
学习编程一定要英语很好吗?
      不用,入门的话,有初中英语水平都够了。当然英语水平越高对编程也是越有利的,能更好的理解那些英文写的技术文档,不过到了那个份上,就是想要深造而不再是入门了。
编程能自学吗?
      编程是可以自学的,但会编程跟能做出一款软件是两个级别的事情。要做出一款软件,需要系统的掌握很多相关的技术知识,要学一系列的编程技术。没有想的那么简单,否则IT公司也不会给工程师发这么高的工资。而会编程语言只是基础,所有计算机专业的学生都学过C语言,但很多学生出来后都只能拿到很低的薪资。这当中的原因不仅仅是因为没有把编程语言学好的问题,更多的是他们的知识体系不完善,很多必须的技能都不会,企业招聘来还需要花很多时间精力培养后才能工作产出。这也是现在很多企业都不愿意招聘毕业生的原因。那些愿意招聘毕业生的公司,个中的缘由,笔者在另外的文章再跟大家讲解。现在你只需要理解到,想要入门,要把技能栈学完整,而不仅仅只是学会一门编程语言就觉得自己可以了。
觉得开发很难,但又想进入软件IT行业。其实还有其他岗位可以选择,待遇同样不错。


      软件行业里面除了开发工程师(就是我们常听到的程序员)的岗位外,还有测试工程师、运维工程师、项目经理、产品经理等不同岗位。其中测试工程师对开发技术水平的要求是没那么高的,在这个行业中有很多测试人员是从其他专业转行过来的,但也一样发展得挺不错。运维工程师也是挺吃香的一个岗位,因为每家IT公司肯定都需要这样的人。初级的运维工程师,所要求的学习难度也不大,同样也是入门软件行业比较好的选择。
      以上的分享,同样也适用于在校的计算机专业学生。因为目前桌面应用市场现在的需求确实是下降了,而嵌入式开发对学生的要求从来没有低过。不是每个学计算机的都是学霸,也有很多学完学校的专业课,但还什么都做不出来,甚至找不到工作的。这部分的学生也可以吸取笔者上述的经验分享,对自己的未来做规划。
     如果读者还有什么想了解的,需要建议的,欢迎私信询问,笔者尽量给大家分享更多知识经验。
回复

举报

0

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2025-3-21 18:52:45 | 显示全部楼层
向楼主学习
回复

举报

0

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2025-3-29 11:42:25 | 显示全部楼层
回个帖子,下班咯~
回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|开发者网络

GMT+8, 2025-4-12 02:10 , Processed in 0.729721 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表