关于.Net和Java的看法——我见过最牛的一个小实习生经历

1、背景

笔者(小方同学在学习)是一个专科院校的一名普通学生,目前就职于某三线城市的WEB方面.Net开发实习生,在找实习期间和就业期间的一些看法,发表此文,纯个人想法,欢迎讨论,指正!哈哈轻点喷~

在校学习技术方面也是.Net方面,所以实习就是.Net开发实习生。我也很喜欢这门优雅的语言!

在还未上专科院校的时候,我就开始了解编程,从启蒙的VB,到简单的排序算法。我曾经感叹:简单的几行代码,就可以完成这么多好玩的东西!跟风在网络上看到程序员的高薪,身为一个农村的孩子,也想通过编程赚取高一些的薪资和在办公室办公。

但当我开始在B站(VB也是通过视频学习)等渠道,搜索编程语言,教程的时候,十之八九的视频教程都是建议学习Java,无论是就业还是薪资方面,仿佛都告诉我:选择java就可以走上人生巅峰!迎娶白富美!

当进入学校,大一的课程是Html Css Java的时侯,我觉得这样子的路线,和网上说的是一样的!参加了社团之后,有学长和我说,我们的主要学习技术栈是.Net方面,我当时也是一脸问号?没听过这个,好像也不出名。会不会是个坑?

2、带着疑惑

之前在网上看的什么介绍视频都是java这种的,给了我一种,java是最好的语言的感觉,大环境都使用他。以至于我一开始是不太喜欢.Net的,现在回头想想,还是太天真了~ 从大一下学期开始,我们的课程变成了C#,WinForm 方面,我一看,这不是和VB有点相识吗,都是托拉拽,写事件的。在内心更不喜欢C#了,觉得有点低级 哈哈哈(WinForm 开发大佬别喷我),那也是再次加深了偏见,我和我们专业课老师也曾对话:

  • 我:老师,我们为什么要学习这个语言,就业不会很困难吗?他好像不是这么流行?
  • 老胡:不要纠结于语言,主要是编程思想和学习方法。
  • 我:???,我觉得有点迷茫,不知道能做什么,我会了什么?
  • 老胡:以前的学生也有过你这样的迷茫,大部分人都会有,我的建议是跟着一步一步走下来,还是想的太多做的太少,人才会迷茫。

在那时,我还是不理解为什么要选择这门语言,但我还是跟着老师一步学下来了,后来的的课程是Sql,.NetCoreMVC ,JavaScript,NodeJs,Vue,WebApi

3、生活中迷茫

在专科院校,我们学院算是管理比较严格的。辅导员和亲妈一样,一周查寝两三次,经常和你聊天,在课堂学习的时候,还会来抓人是否有玩手机,偷偷睡觉的。也是这种环境,让我没机会偷懒,很感谢我的两位辅导员(孙姐,琦姐)! 咳咳,跑题了
其实在宿舍我们也曾一起聊天这方面:

  • 舍友:我觉得我们学的太杂了,一会学这个一会学那个,啥都是浅尝辄止,就怕到时候出去都没人要
  • 我:我也是觉得啊,我自己找了java的学习路线,你要不要看看?
  • 舍友:我瞅瞅
  • 舍友:这也太长了吧,技术要点这么多吗?
  • 我:对啊,我看到招聘软件上,就是写这么多技术要点?真的有大佬这么牛吗?

在这期间,我也自己在看javaSE的基础教程,发现和C#有点像啊这个语法?吃惊!

4、开始实训

时光飞快,我来到了大二的下学期,那时候刚学完WebApi和Vue,终于有点前后端的感觉了(第一次体验到前后端分离),在我们学院,大二的暑假是不放假的,在学校用两个月做实训,模拟企业开发,分组分工,大家一起做一个项目。
在分完组的时候,我就想:多分几个技术比较厉害的同学给我哈哈,我们做酷一点! 老师还是按平均水平给我们分好了,不好不坏。第一个项目是blog,一开始老师说是简单的完成功能就可以了,我心想:那不是很简单吗?
后来发现两周的时间,还是赶得半死才做出来!
从数据库建模,确认表关系、到前端页面的原型、页面的效果配色、后台的框架的搭建(.Net6 WebApi + EfCore + JWT +非常简单的借鉴DDD的分层概念)第一次感觉到团队的沟通协作和项目是如何从一堆报错到另外一堆报错的哈哈

两周的时间还是太短了,至少对于我这种第一次上路的新手司机,最后也是匆匆忙忙,直到验收会的前十分钟,还是修改部署到云服务器上。也是第一次感觉这么紧张且激动!

然后就是开始了第二个练手项目:教务系统,比第一个项目难度高了一个等级,就单纯表的确定,就讨论了两天,还是初步模型,后来改了N次 以及确定使用无显示外键这种关系。由于涉及到排课,我们还想着如果并发了,应该要加上锁的情况。还有如何更好的借鉴一下DDD这个思想。后端要用上什么新的技术,可以更好的性能。前端要小程序和网页版,区分教师和学生....
在第二个项目写的时候,就有一种感觉,都是CRUD,怎么有这么多花样,这么多玩法呢?

5、实习

很快到了八月底,我开始了投简历的时候,一共投了几十家,由于学历的问题也被拒绝了几次,给我整的有点灰心,也拿到了三个面试的机会

  • 某苏州软件公司,人员在200人左右,主要使用WinForm -失败
  • 目标城市软件开发公司,人员在50人左右,.Net6等比较新的技术 -通过
  • 目标城市软件开发公司 人员在300人左右,主要使用WinForm -通过

在九月我就来到了目标城市准备入职啦,我记忆非常深刻的是:在和我同时入职的两个人,一个是软件测试主管,一个是八年的前端工程师。

  • 我:大哥,你们都是入职什么岗位呀?
  • 前端工程师:我做前端的。
  • 前端工程师: 你是实习生吗?看起来挺小的。
  • 我:对,我是.Net实习生。
  • 前端工程师:现在还有在做.Net的实习呀,我都没听过几个了哈哈
  • 我:.....

在入职之后,我才发现了,就我一个独苗.Net实习生,其他实习生都是做Java方向的。主要的维护以前的老项目。用的是WinForm 等技术。

6、再看Java

萌生了离职的想法,因为刚入职嘛,第三天就跑路了,主要是个人原因不是很能接受WinForm ,可能是我觉得他比较老旧了吧,和我想要的不一样哈哈(再次求轻点喷),后来入职了那家50人左右的公司,不卷不加班,大家人都很友好,技术方面也是比较前沿的,完美符合了我的要求!!

然后在工作的时候,就发现了,.Net太优雅了,对比Java,拥有太多语法糖,写起来很舒服。但也是因为微软帮我们做了太多的事情,反而让我们不知道底层原理,设计模式等。

我深知一门优秀的语言应该是易用易学,好上手的,这点上C#完胜!宇宙最强的IDE,一站式帮你配置好了!

反观Java,在环境变量配置,IDE的选择等等,就会劝退一些小白(我一开始也不知道怎么配置环境变量)。

但在我的想法中,也许底层原理,设计模式这些,作为一个程序员应该懂,然后再去使用这些语法糖,知其然又知其所以然!

我开始在博客园中大量的搜索关键词 .Net转java 发现了很多这样子的文章。也看到对立,引战的发生!这点让我写一篇文章十分害怕哈哈,再次声明,我只是分享我的一些经历!

我看到了自由飞大佬的文章,其实也发现了学校选技术的用意,java的竞争太过于激烈,而C#和Java相近,市场也有需求。先就业再择业,先入行再选择!

至此,我明白了当时老胡说的意思:不要纠结于语言,主要是编程思想和学习方法。

7、总结

现在我也仍然在学习.Net 和java。在工作上使用的是.Net ,回来看的视频教程是Java,我想通过java来更深入的了解一些底层一点的机制,学习更新的技术。也是因为java的教程确实比.Net更加丰富,生态会更好一点,不可否认!
但我依然喜爱这C#这门十分优雅的语言,喜欢它无处不在的语法糖!在工作上也仍然会继续深入研究它!
最后,也告诉自己:不要纠结于语言,主要是编程思想和学习方法。

8、补充

这是在文章发出之后的第三天,评论区各位大佬前辈给了我非常多的建议和思路,在此表示十分感谢!
此处特别感谢 @蛀牙 前辈,对我的启发非常大!在此分享给后来和我有同样困惑的同学!

  • 蛀牙前辈:
    不要纠结于语言,主要是编程思想和学习方法。

    这句话是有阶段性的适用的,不是说从学习编程开始一辈子都是适合使用这句话来做指导。
    第一阶段:小白入门,这个时候啥都不懂,语法都看的有点懵逼的阶段,你说不纠结语言要纠结什么?
    第二阶段:对语言的部分基础语法有一定的熟悉,能相对熟练的写一写算法,打印一些字符图案在控制台上等。这个时候就有一些编程思想的涉及,例如循环分支这些逻辑性的东西。它与语言关系不大,但是你不熟悉某个语言,让你直接上手,也不一定行,毕竟语法还是有一些差距的,这个时候也还没有到不要纠结于语言,主要是编程思想和学习方法。
    第三个阶段:系统项目开发,这个阶段大部分人是根据某个模板,然后里面填一些简单的逻辑代码,并且大部分都是数据库查询的地方相对复杂。如果这个时候换个不熟悉的语言来做,因为存在差异性,大部分也没有办法快速上手,所以这个阶段也谈不上什么编程思想,主要也还是在纠结编程语言。
    第四个阶段:已经熟练掌握各种设计方法论,例如面向对象设计与分析,设计模式等。可以非常好的分析各种需求,并把这些需求转换成各种模型,能写出漂亮的代码来实现这些模型。看别人好的代码的情况下,看到一些命名和写法就能知道别人的意图。也能非常快的掌握一门新语言。这个时候就真的是 语言无关。

    所以从学习和提升自己能力方面来讲
    多学点语言,借鉴他们之间的相同处来理解一些编程思想,分析他们之间的不同处,来理解提升自己的设计能力。
    多学点不同领域的技术,例如后端,前端,客户端的开发,同样要去学习相同和不同处。
    人的精力虽然是有限的,但是把这个时间拉长的话,完全是有时间的。

    如果是要从赚钱的角度来讲的话
    成为一个程序员去给别人打工,绝对不是赚钱最好的手段。一定要打工赚钱这个路的话,那么相近水平的岗位,工资差距也不会非常大。岗位多少也不是问题,问题是那个这个阶段,哪个阶段的工资岗位你能面试的上。看工资的同时也要看自己的时间成本。时间永远的最珍贵的。

    从找工作的角度来看
    要找到高工资,必须精准定位行业和公司,它是需要运气+部分实力+会做人会表现。
    如果是承认自己非常平庸只能海投简历让别人来选你的话,那想都不用想啊,肯定是选择岗位多的呀,并失业了也能快速找到工作。看众多评论的结论,大概Java非常合适吧

  • 我:
    首先,非常感谢大佬在百忙之中抽空回答我这个问题,且非常的详细!在此表示十分感谢!
    我仔细的阅读了多遍,目前个人应该还只是处于第三个阶段:系统项目开发,所以确实因为语言而纠结!从而有部分的精神内耗。
    从学习的角度来说,我认同您说的,多了解多学习的学习思想,并且我目前也是这样子做的,反之则需要时间线拉长,同时也会害怕,浅尝辄止导致自己过分自大。目前也是正在寻找一个平衡点。
    从赚钱的角度:个人认为工作就是使用你的时间,技能,换取报酬以及社会成就感,至于其他的方面,无非是舒服和不舒服的感受。当然这是我目前的想法。
    从找工作的角度:我十分认同需要运气+部分实力+会做人会表现。从我为数不多的同学和自己的求职经历来看,运气实力临场表现缺一不可。不甘承认自己平庸,但也不会自大,只是还在纠结选择,自认不是一个有天赋的人,所以想走一条较为稳妥的路,也在不断的摸索!如果您可以给我一点建议,我将十分感激!我极其希望站在巨人的肩膀上,少碰壁!

  • 蛀牙前辈:
    如果要我建议的话,你不要去纠结选择编程语言,因为这不是目标,所以没有什么好的依据去指定你做决策。从职场上来看,你需要选择的是行业。你要确定这个行业是你未来5到10年想要深耕的。
    例如你想做游戏、想做金融、想做物联网、想做汽车相关、或者就是只想做外包帮别人做项目等等
    确定了行业后,你去看相关行业有哪些比较好的公司或者团队你想要进去,并且有一定的机会,然后去了解他们用的技术大概都是什么,用什么编程语言。
    然后你再定个目标,你是想要1年或者2年时间来努力达到进去这种公司团队。这样目的就很明确不会有纠结了。
    这个建议看着很像废话,但是实际上能做到的没有多少人的。

    关于赚钱这个事情,其实它也分很多层次的,出卖劳动力赚取报酬只是最低层的。具体不这里展开讨论,你可以自己去了解了解。

    关于会不会过分自大,这个是有特征来识别的,
    例如你同学或者同事啥的,会不会有一些地方不懂,你刚好懂了,你就容易起鄙视他们的心理。
    例如你学一个东西,会不会懂个表面就感觉自己好像已经完全懂了、
    例如你做一个软件,会不会只做了某个例子功能,就觉得自己已经完全做完了。
    例如你会不会觉得自己好像挺厉害,但是运气特别差,怀才不遇。但是实际上你只是一个专科生。
    例如你会不会整体想着我要学xxxx提升自己之类的,然后一周下来,发现娱乐消遣时间占用你一半以上,今天玩游戏,明天刷短视频之类的。然后该怎么学习却完全没有搞明白。

    最后,人生没有稳妥的路,想要稳妥只有不断的提升自己,让自己有能力去看到未来。人的成长是一个复利的过程,你每天让自己进步一点点就够了,但是不要间断。

    建议就这样。

  • 我:
    感谢大佬非常棒的建议!
    对于目标,确实我还没有想好,或者说之前没有这种思路,因自己确实也不明白不了解有多少行业,自己感兴趣哪个?可能是需要我深思。
    对于赚钱,在您说之后,我查找了赚钱的五个层次,上一条评论确实是自己目光太过于短浅,知识不足。感谢提醒!
    对于是否会过分自大,感谢提供自查方式,我认为我自我潜意识和做法已经有符合前面部分条件。
    最后,人的成长是一个复利的过程,使我明白,只要与上一天的自己相比,我有所进步,就已经是胜利!
    我将做出以下改变:

    1. 夯实基础,先将数据结构、计算机网络、操作系统三门主要基础重点,沉下心,了解并尝试深入。
    2. 在工作方面,上班不划水,做对自己有提升的事。
    3. 对于语言方面,尽量不去纠结,而是努力的先学,无论是Java或.Net,都是需要继续学习下去的!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/1133.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaWeb《一》概念、服务器部署及servlet

🍎道阻且长,行则将至。🍓 本文是javaweb的第一篇,首先介绍了javaweb,然后进行了一个简单的web服务器部署,把我的一个网页发布到了云端,且叫他小Sa,目前啥也没有,之后会使…

【数据结构】万字深入浅出讲解单链表(附原码 | 超详解)

🚀write in front🚀 📝个人主页:认真写博客的夏目浅石. 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:C语言实现数据结构 💬总结:希望你看完…

进程和线程的区别和联系

进程和线程的区别和联系1. 认识线程2. 进程和线程的关系3. 进程和线程的区别4. 线程共享了进程哪些资源1. 上下文切换2. 线程共享了进程哪些资源1.代码区2. 数据区3. 堆区1. 认识线程 线程是进程的一个实体,它被包含在进程中,一个进程至少包含一个线程,一个进程也可以包含多个…

Python数据分析案例22——财经新闻可信度分析(线性回归,主成分回归,随机森林回归)

本次案例还是适合人文社科领域,金融或者新闻专业。本科生做线性回归和主成分回归就够了,研究生还可以加随机森林回归,其方法足够人文社科领域的硕士毕业论文了。 案例背景 有八个自变量,[微博平台可信度,专业性,可信赖性,转发量,…

什么是栈,如何实现?

欢迎来到 Claffic 的博客 💞💞💞 “但有一枝堪比玉,何须九畹始征兰?” 前言: 栈是一种特殊的线性表,就像开盖的桶一样,从底部开始放数据,从顶部开始取数据,那么栈具体是…

最适合游戏开发的语言是什么?

建议初学者学习主流的开发技术 主流开发技术有大量成熟的教程、很多可以交流的学习者、及时的学习反馈等;技术的内里基本都是相同的,学习主流技术的经验、知识可以更好更快地疏通学习新知识和技术。 因此,对C#或者C二选一进行学习较好。 Un…

Linux: 以太网 PHY 驱动简析

文章目录1. 前言2. 背景3. 硬件拓扑4. 以太网卡 PHY 驱动实现4.1 MDIO 总线对象的创建和注册4.2 MDIO 总线从设的 创建注册 和 驱动注册的加载4.2.1 以太网的 PHY 设备创建和注册4.2.2 以太网的 PHY 设备驱动注册和加载4.3 绑定以太网卡的 MAC 和 PHY4.4 以太网卡 PHY 和 MAC 的…

2022-2023 年度广东省职业院校学生专业技能大赛中职组“网络安全”赛项竞赛任务书(样题)

2022-2023 年度广东省职业院校学生专业技能大赛中职组“网络安全”赛项竞赛任务书(样题) 一、竞赛时间 总计:210 分钟 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A 模块 A-1 登录安全加固 90 分钟 200…

重构·改善既有代码的设计.03之重构手法(上)

1. 前言 之前的重构系列中,介绍了书中提到的重构基础,以及识别代码的坏味道。今天继续第三更,讲述那些重构手法(上)。看看哪些手法对你的项目能有所帮助… 2. 重新组织函数 对函数进行整理,使之更恰当的…

51单片机入门 -驱动 8x8 LED 点阵屏

硬件型号、软件版本、以及烧录流程 操作系统:Windows 10 x84-64单片机:STC89C52RC编译器:SDCC烧录软件:stcgal 1.6开发板:普中51单片机开发板A2套件(2022) 在 VS Code 中新建项目到烧录的过程…

[ROC-RK3568-PC] [Firefly-Android] 10min带你了解I2C的使用

🍇 博主主页: 【Systemcall小酒屋】🍇 博主追寻:热衷于用简单的案例讲述复杂的技术,“假传万卷书,真传一案例”,这是林群院士说过的一句话,另外“成就是最好的老师”,技术…

5.springcloud微服务架构搭建 之 《springboot集成Hystrix》

1.springcloud微服务架构搭建 之 《springboot自动装配Redis》 2.springcloud微服务架构搭建 之 《springboot集成nacos注册中心》 3.springcloud微服务架构搭建 之 《springboot自动装配ribbon》 4.springcloud微服务架构搭建 之 《springboot集成openFeign》 目录 1.项目…

C语言刷题(7)(字符串旋转问题)——“C”

各位CSDN的uu们你们好呀,今天,小雅兰的内容依旧是复习之前的知识点,那么,就是做一道小小的题目啦,下面,让我们进入C语言的世界吧 实现一个函数,可以左旋字符串中的k个字符。 例如: A…

2023最新性能测试八股文【附答案】,软测人必备!

1. 请描述什么是性能测试、什么是负载测试、什么是压力测试?【参考答案】性能测试:性能测试是和功能测试相对应的。根据用户场景进行的单个用户操作,是属于功能测试领域,主要是验证软件是否可以满足用户的功能需求。比如&#xff…

【刷题之路Ⅱ】LeetCode 11.盛水最多的容器

【刷题之路Ⅱ】LeetCode 11.盛水最多的容器一、题目描述二、解题1、方法1——暴力法1.1、思路分析1.2、代码实现2、方法2——双指针2.1、思路分析2.2、代码实现一、题目描述 原题连接: 11.盛水最多的容器 题目描述: 给定一个长度为 n 的整数数组 height…

44岁了,我从没想过在CSDN创作2年,会有这么大收获

1998年上的大学,02年毕业,就算从工作算起,我也有20余年的码龄生涯了。 但正式开启博文的写作,却是2021年开始的,差不多也就写了2年的博客,今天我来说说我在CSDN的感受和收获。 我是真的没想到,…

QT串口助手开发3串口开发

系列文章目录 QT串口助手开发3串口开发 QT串口助手开发3系列文章目录一、UI界面程序的编写二、发送框程序编写一、UI界面程序的编写 根据上文的未解决问题:我们打开串口按钮打开后只能选择关闭串口,所以这个是循环的过程 上文链接 所以按钮对应的槽函数…

【C++】搜索二叉树(保姆教程)

🍅二叉树底层是堆,之前学习的简单二叉树不是大堆就是小堆,今天是二叉树进阶,一定要好好掌握! 目录 ☃️1.搜索二叉树介绍 ☃️2.底层实现 ☃️3.key模型和key,value模型 ☃️1.搜索二叉树介绍 右>根&…

蜻蜓优化算法Python代码(详细注释)

1.代入例子,目标函数求最优解迭代过程:蜻蜓算法流程:蜻蜓算法(Dragonfly Algorithm)是一种基于种群的优化算法,灵感来自于蜻蜓的群集行为。该算法通过模拟蜻蜓之间的吸引力和斥力,以及蜻蜓的移动…

IDEA好用插件:MybatisX快速生成接口实体类mapper.xml映射文件

目录 1、在Idea中找到下载插件,Install,重启Idea 2、一个测试java文件,里面有com包 3、在Idea中添加数据库 --------以Oracle数据库为例 4、快速生成entity-service-mapper方法 5、查看生成的代码 6、自动生成(增删查改&#xff0…