在公司做的项目和自己在学校做的有什么区别?

前言

只有光头才能变强。

文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y

不知道大家还是学生的时候有没有这个问题:公司做的项目和自己在学校练手的项目有多大的区别。我以前在学校跟着视频做一些项目练手,总感觉公司做的东西会要难很多,不知道跟公司的真实项目区别在哪。

总的来说,我实习的总时间也快半年了,谈谈我觉得公司项目和自己练手的项目有啥区别,欢迎补充。

一、区别

在视频练的项目大多数都是由讲师在本地编码来讲解整一个项目的开发过程,而我们去到公司做的第一件事是啥?把项目clone(checkout)到本地来看。

这就有两个区别:

  • 去到公司往往不是从零开发一个项目,项目的框架和代码都已经写好了。我们更多要做的就是迭代这个项目(或者说修复这个项目原本就有的Bug)
  • 一个项目往往都会有几个人进行开发,这就肯定要用到版本管理工具(SVN/Git)。所以,去公司做项目之前最好是提前去学学Git/SVN这些工具的使用

比如说,我们使用Git的时候,要修改代码的时候会新建一个分支,改完了再合并到master分支上。

好了,现在项目已经在本地上了,那我们要将项目在本地上启动起来吗?这得问同事。在公司做项目,一般都分了好几个环境

  • 线上(现在正在给用户用的)
  • 测试(写完功能,先看一下在测试环境下有没有问题,没问题才发布到线上环境)
  • …等等(可能名字叫起来不一样,但不可能在本地上写完的代码直接就放到线上去跑了)

有的时候,可能环境过于复杂(各种系统相互依赖),clone(checkout)下来的项目就很难在本地上启动起来,或者说在本地上的数据跟线上的数据差距太大了(比较难看出效果)。所以,有的时候可能就不用在本地将项目启动起来。

那问题来了,我写完的代码怎么调试啊?我们可以这样干的:将本地写好的代码push到测试环境,然后本地远程连接测试环境,对其进行调试。

远程Debug

还有,我们自己做项目的时候,try-catch完了之后,习惯可能就e.printStackTrace();

万能的e.printxxxx

但公司的项目不会有e.printStackTrace();这种代码的存在。因为这打印出来的错误信息没有日期、等级等等,分析起来不方便。

分析起来不方便

在公司一般将错误的信息(或者有用的信息)写到log(日志)中。

  • 比如说:LOG.error("send java3y article failed, {}", e);

于是,一般出现了问题,我们先去登上机器,查一下日志的信息是怎么样的。而登上线上的机器上,也不是直连的,会经过一层堡垒机。堡垒机是做啥的?

来源:https://www.zhihu.com/question/21036511

每次登录线上的机器都要ssh xxxxip 到堡垒机上,然后再到堡垒机上输入线上机器IP连接,着实麻烦。于是大佬们就会写自动登录堡垒机,直接输入IP到线上的脚本

于是乎,我们就登录到堡垒机上,然后再连上线上机器就去查看日志了。查看日志怎么看?

还有一点就是,在公司开发都要申请权限才能对数据库/机器/各种资源进行操作。而不像我们个人开发各种root权限,数据库各种DDL/DML随便玩。

DML/DDL数据库操作都要申请权限,发布代码到线上也要申请权限,想要去线上的机器上查看日志也要权限…

最后

总结:

  1. 版本控制工具
  2. 远程连接Debug调试
  3. 不再使用e.printStackTrace();,而是log.error()来替代
  4. 各种权限都需要申请和审批

乐于输出干货的Java技术公众号:Java3y。公众号内有200多篇原创技术文章、海量视频资源、精美脑图,关注即可获取!

转发到朋友圈是对我最大的支持!

觉得我的文章写得不错,点

### 企业项目学校项目区别 #### 一、目标导向不同 在学校项目中,主要目的是教育学生掌握特定技能技术知识点。这类项目往往围绕教学大纲设计,注重理论联系实际的能力培养[^1]。 对于企业项目而言,则更侧重于解决具体业务问题并创造商业价值。通过引入先进的信息技术手段来提升工作效率服务质量成为核心追求的目标之一[^2]。 #### 二、规模复杂度差异明显 学校内的开发任务通常具有较小的数据集以及相对简单的应用场景;而面对真实世界的企业环境时,所处理的信息量庞大且结构多变,这对系统的性能提出了更高要求[^3]。 例如,在构建大型分布式系统过程中可能涉及到多个组件间的协同工作,如采用HBase作为Flink SQL计算框架下的中间状态存储解决方案以应对海量数据带来的挑战。 #### 三、团队协作模式存在差别 学术环境中个人或小组形式完成作业较为常见,成员之间分工界限清晰明确;相比之下,公司内部则强调跨部门合作的重要性,涉及角色众多(项目经理、产品经理、前端工程师等),沟通成本较高同时也更加考验整体协调能力。 #### 四、技术选型考量因素各异 由于资源有限加上学习目的为主导,校园里的实践课程倾向于选用易于上手的技术栈供初学者快速入门;然而到了职场里,除了考虑易用性之外还需要兼顾长期维护的成本效益分析等因素,因此可能会优先选择那些经过市场验证成熟稳定的产品组合。 ```python # Python代码示例:模拟简单的学生管理系统vs复杂的ERP系统架构对比 class StudentManagementSystem: def __init__(self, name): self.name = name def add_student(self, student_info): pass def remove_student(self, id): pass from sqlalchemy import create_engine import pandas as pd class ERPSystem: engine = create_engine('mysql+pymysql://user:password@localhost/dbname') @staticmethod def query_sales_data(): sql_query = 'SELECT * FROM sales' df = pd.read_sql(sql_query, con=ERPSystem.engine) return df.describe() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值