这是个好问题,我就遇到新入职的同事问我这样的问题
那是17年,我们招了个后台开发,工作经验有6-7年,从传统行业出来的,之前没有做过互联网开发
来了之后先从管理系统入手吧,一般互联网后台除了给前端提供api接口,也会有个后台运营管理系统,给运营同学做业务配置,报表查询,多数情况就是CRUD
入职不久这同事就在一次周例会跟我抱怨工作没有技术含量,就是增删改查
增删改查是没啥技术含量,但其他工作你准备好了吗?
当时我要求他做服务器巡检,就是根据nginx日志和业务日志统计下哪些接口响应较慢,业务经常抛出哪些异常,这个用linux 的awk很容易统计,结果他是把日志下载到本地,用文本编辑器来统计,搞得一头大汗
后来一个需求是从谷歌市场爬app的分类,详情等数据,之前负责的同学要离职,交接给他,结果他完全hold不住
后台工作肯定不止CRUD,为什么上级只让你做CRUD呢?那是给你时间提升的,你应该和其他同事学习,看自己还有哪些不足,赶紧提高,这样上级才会给你更有挑战性的工作
身为一个java码农,我来说几句
程序猿如何避免crud?我觉得这个在于自己,我相信80%的程序员都是干着crud的重复工作,5年以上工作经验的人也都做着curd的工作,只不过别人的crud比你的高级一点,仅此而已。
不过话说回来,如果一个程序猿做了5年还只会crud,那么他只能算是一个码农,不能算一个程序猿,一个合格的程序猿应该是对计算机原理,常见的数据结构与算法有这比较熟悉的理解。
问题在于为什么现在大部分的程序猿都只会crud呢?一问到数据结构就gg,其实这和程序猿的工作有很大的关系,以java为例:现在的java框架已经非常成熟,springboot、springcloud等等,让他们编写程序的时候无需关心架构的实现与维护,只需要写好和自己相关的业务代码即可,至于架构,一般都有专门的架构师维护,所以这也导致了一个问题,一般的程序猿很难接触到架构这一块,再加上现在的开发模式基本上都是敏捷开发,公司实行狼性文化,每天都被大量的业务代码围绕着,做完业务代码可能都晚上10点了,哪还有时间去看架构的知识呢?
虽然这样说,但是还是可以让自己成为架构师或者算法工程师的,为什么?
在读书的时候,经常听老师说的一句话就是:时间就像海绵里的水,只要愿意挤,总会有的,以前觉得这句话很搞笑,现在才懂得这句话的含义。
没错,时间挤挤总会有的,我们可以利用上下班挤地铁的时间,周末休息的时间看书学习,如果不想天天crud,那么一定要看书,至于看什么书,这个就需要根据个人的兴趣爱好了,只有大脑里面都是知识的时候,才会在机会靠近你的时候你能抓住,否则,机会都和你擦出火花了,你也抓不住。
以我个人为例吧,我周末的时候会写写博客,看看技术类的书籍,让自己过的更加充实,这是我最近看的书籍,想要避免crud,就一句话:挤出时间,多学习,多思考,我相信总有一天,当机会靠近你的时候你能握的住,加油吧,少年!
Java后端要避免只会写CRUD,只能靠自己去学习。国内的公司大部分都是搞业务开发,很少有搞开源项目供大家使用的。这样在工作中你是很少有时间和机会能接触到新东西,大部分公司都是一套框架下来,之后就一直用这套框来填充业务。所以你在工作中是很难逃出CRUD的。要想提高自己就需要平时抽空自己学习,这对程序员来说真的很重要。经常只CRUD也是有提高空间的,你可以用不同的方式去实现,还可以学习源代码。比如常用的mybatis的源码实现,你可以在开发空闲时间研究一下mybatis的实现,这样你对mybatis的使用会更熟练。还有业务开发中经常使用的spring boot、spring框架,可以自己研究一下,如spring boot的加载机制、spring mvc的请求流程、spring bean的加载机制、spring aop等。其实要学习的东西有很多,而且这些都是开源的,自己开发项目空闲时间就可以去看看这些源码,会对自己有很大的帮助。不要只用框架而不知道原理,基础原理很重要。推荐一本Java基础的书《Java编程思想》,里面介绍Java基础知识很详细,而且很多都是平时我们容易忽略的知识点,学习之后会使你的Java基础有很大的提高。喜欢的话可以点击下方链接购买。
我个人经历来讲,要避免只会crud,最好的办法就是学习netty等一些网络编程技术。
刚入行两年的时候,我也只会crud,拿着springmvc干着重复的活,还沾沾自喜以为精通了java,后来有个同事推荐我看看netty,深入了解下网络这块的东西。
我学了之后,发现原来java还有那么多好玩的东西,netty可以自己解析http协议,可以自己写分布式框架,对于io,多线程,分布式事务,分布式锁以及异步编程又有了更深的认识,我可以写一个基于udp协议的文件传输,也可以写一些很有意思的程序,脱离spring,脱离crud。
写crud和写好crud是两回事,你不写好后面搞bi的搞ai的何不蛋疼,不都是基于你的数据!
说个最简单的例子,今日头条评论表设计,架构,开发你会怎么做,这可是最简单的crud,没几个人能hold住
当然,如果公司业务是这样,避免不了crud,同时你又觉得你的才能和才华发挥不了,那就跳吧!
换个公司你会发展,妈的还是做一样的工作
如果你不是搞底层,搞科研,基本上所有的得javaer都是crud boy,javs主要应用于web网站的后端开发,所以只要你还从事java开发,这估计无法避免。所以我认为应该思考怎么变为一个更好的crud boy,
需求理解能力作为一个Java开发者,能够准确理解用户需求是非常重要的。如果你无法理解用户需要什么,那么你写出的程序很可能无法满足用户的要求。为了提升自己的需求理解能力,可以采取以下方法:
多与用户沟通,理解他们的需求和痛点;学习产品经理的知识,了解产品设计和需求管理的方法;阅读相关的技术文档和书籍,提高对领域知识的了解和理解。善用设计模式设计模式是程序设计中非常重要的一部分,熟练运用设计模式可以帮助开发者更好地解决问题,提高代码的可读性、可维护性和可扩展性。设计模式是前人总结的经验之道,值得好好学习并用于实践当中。
优化程序整体架构好的程序架构异常重要,这里说的架构指的业务逻辑整体架构。我工作中会遇到过一次,上线的初版不满足业务扩展需求,造成程序全部重写,这消耗的人力物力成本不可想象,最后项目根本赚不到钱。所以初期的设计很重要。
理解和善用开闭原则开闭原则是指一个软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。Java开发者需要理解并善用开闭原则,即使业务需求发生变化,程序的修改也应该最小化。这其实很难,很多都需要经验和试错之后才有的经验体会,比如少用继承使多用组合等。
善用开源社区提升自己开源社区是广大程序员展示自己技术、学习交流的最佳平台之一,也是提升自己的好机会。通过加入开源社区,你可以参与到各种有趣的项目中,并与其他高手互相学习、交流经验。
首先,你可以通过开源社区接触到各种新技术、新思想。在开源社区中,有许多优秀的程序员,他们的代码和思想值得学习和借鉴。通过阅读和学习他们的代码和思路,你可以不断提升自己的技术水平。
其次,你可以通过开源社区展示自己的技术水平和贡献价值。开源社区中的每个项目都需要不断地维护和优化,你可以通过参与到项目的维护和优化中,为项目做出贡献,同时也可以展示自己的技术水平和工作价值。通过开源社区的贡献,你也可以获得更多的关注和机会。
最后,加入开源社区还可以拓展自己的人脉。在开源社区中,你可以结识到许多志同道合的人,你们可以一起交流技术、分享经验,也可以一起合作开发项目,建立起良好的人际关系。在将来的职业发展中,这些人脉将会对你产生不小的帮助。
以上就是我的理解希望对你有帮助。
你的问题很关键,如果是这样的话,如果不想办法扭转改变的话,那么就是名符其实的“码农”,35岁以后,甚至到不了35岁,妥妥地被淘汰。
至于具体调整你未来的职业规划有几个方案,说几个供你参考:
第一,去学习理解一些“完整”实战项目的源码,而且一定要吃透,然后想办法找机会参与到公司真正的项目中来。
第二、技能横向发展,去学习安卓开发。但这也是治标不治本的,并非长远之计。
不管你适用Java具体做什么开发,你未来的职务,你的薪酬报,最终那是取决于你的实际工作能力的,所以不断的提升自己,永远才是王道。
不懂就学,不想只写增删改查,就在做好工作的同时,学习其它硬核技能,提升自己,就能立于不败之地,避免被淘汰的俩去。
Java后端开发人员要避免只会做简单的CRUD开发,需要提高技术视野和拓展技能范围。主要有以下几点建议:
1. 了解分布式系统基础理论。像CAP定理、BASE理论、分布式一致性算法、分布式事务处理等。这些理论知识对设计高性能分布式系统至关重要。
2. 学习常用的分布式技术方案。如Zookeeper、Dubbo、Redis等,以及Spring Cloud全家桶等微服务架构技术。掌握这些技术才能设计出高效的分布式系统。
3. 熟练使用常用的设计模式。像单例模式、工厂模式、策略模式、代理模式等,这有助于编写可重用、可扩展的程序代码。
4. 掌握Java高级特性。像泛型、注解、并发包、编译器API等,这可以编写出更加健壮、高效的程序代码。
5. 学习高性能优化技术。比如MQ、缓存、数据库索引、SQL优化、线程池等,这些技术对系统性能至关重要。
6. 关注新技术发展趋势。如区块链、人工智能、大数据等技术都在影响和改变传统行业,Java后端开发人员也需要关注新技术发展,不断学习与实践。
7. 参与开源项目贡献。参与开源项目的开发和维护,不但可以提高代码能力与开发素养,还能获得宝贵的实战经验,对进一步成长至关重要。
8. 不断学习与实践。理论和技能的提高需要不断学习,也需要在实践项目中运用与磨练。要养成持续学习的习惯,并主动寻找机会参与更多实战项目,在实践中不断提高。
9. 培养广阔的技术视野。除Java技术外,也要关注前端、数据库、运维、测试等技术的发展。广阔的视野可以让我们在架构设计和技术选型时做出更加全面准确的判断。
简而言之,要超越CRUD,成为全栈工程师,除了Java本身的技术之外,还需要关注更广范围的技术与理论知识,并在实践中不断磨炼与提高。这是一个长期的过程,需要持之以恒并努力不懈。
以下是几种可以避免只会写CRUD的方法:
1. 学习设计模式:掌握常见的设计模式,可以帮助你更好地组织代码,提高代码质量和可维护性。
2. 掌握数据结构和算法:了解数据结构和算法,可以让你更好地处理复杂的问题。这对于一些大型系统中需要高效数据存储和检索时非常有用。
3. 学习框架和库:学习常见的框架和类库,如Spring、MyBatis等,可以提高工作效率和代码的质量。
4. 学习分布式系统开发:随着互联网技术的发展,分布式系统已经成为互联网领域的重要方向。学习分布式系统开发可以让你更好地应对未来的技术挑战。
5. 参与开源项目:参与开源项目可以让你更好地了解行业最佳实践,并与其他开发者互动,从而扩展自己的知识面和技能。
总之,作为Java后端开发人员,需要不断进行学习和实践,不断提高自己的技能水平,才能在竞争激烈的市场中获得更多的机会。
学习更多的技术知识。CRUD只是后端开发的基础,要想提高自己的技能,就要不断地学习和掌握更多的技术知识,比如高并发架构、分布式系统、缓存、消息队列、搜索引擎、分库分表、读写分离、高可用架构等等。这些知识可以帮助你理解和解决更复杂的业务问题,也可以让你的代码更优雅和高效。多看多写优秀的代码。CRUD的代码往往比较简单和重复,容易让人陷入思维惰性。要想提高自己的代码水平,就要多看一些优秀的代码,学习他们的设计思想、编码规范、异常处理、日志记录等等。同时,也要多写一些有挑战性的代码,比如实现一些算法、设计模式、框架等等,锻炼自己的逻辑思维和编程能力。关注业务需求和用户体验。CRUD的代码往往只是满足业务需求的最基本功能,但是作为一个优秀的后端开发者,不应该只局限于此。要想避免只会写CRUD,就要多关注业务需求的背景和目标,以及用户体验的提升。比如,你可以思考如何优化业务流程,如何提高系统性能和稳定性,如何增加系统安全性和可扩展性等等。这样,你就可以从CRUD中跳出来,创造出更有价值的代码。
另外,以下是一些具体的实践建议:
编写优质的API接口:API接口是Java后端开发中最重要的一部分,一个好的API接口应该具备良好的设计和可读性、清晰的参数和返回值、良好的异常处理和错误提示等特点。通过编写高质量的API接口,你能够更好地处理业务需求,同时也能提高代码的可维护性和可读性。深入理解业务需求:Java后端开发最终目的是实现业务需求,因此深入理解业务需求对于开发人员至关重要。通过深入理解业务需求,你可以更好地实现业务逻辑,同时也能够提高自己的业务理解能力和沟通能力。掌握数据库的优化技巧:数据库是Java后端开发中最核心的一部分,通过掌握数据库的优化技巧,你能够更好地实现复杂的业务需求,并且提高程序的性能。如使用索引、优化SQL语句等。阅读优秀的开源代码:阅读优秀的开源代码能够帮助你学习和掌握更多的编程技巧和经验,同时也能够让你了解业界最佳实践和开发工具。参加技术社区和技术会议:技术社区和技术会议提供了一个很好的学习和交流平台,你可以在这些场合学习到最新的技术和行业趋势,同时也能结交更多的技术人才,为自己的职业发展打下更加坚实的基础。总之,需要在开发中不断学习、实践和总结,提高自己的编程技能和代码质量。
在Java后端开发中,避免只会写CRUD(即Create、Read、Update、Delete)操作是很有必要的。为了开发出复杂和高效的系统,Java后端开发人员需要具备更高的技能和更多的知识。
废话不多说,直接上干货,觉得有帮助的可以点赞收藏:
1 学习更多的设计模式
了解设计模式可以帮助您避免编写冗长和不必要的代码,并且可以更有效地处理复杂的问题。常用的设计模式包括工厂模式,单例模式,代理模式,观察者模式等。
2 了解领域驱动设计(DDD)
DDD是一种设计方法,旨在以业务领域为中心来设计系统。它将领域模型作为核心,并将其转化为技术实现。使用DDD可以帮助您在设计系统时更好地理解业务需求,并且可以避免编写冗长和不必要的代码。
3 学习更多的架构模式
了解架构模式可以帮助您在设计系统时选择合适的技术和方法。常用的架构模式包括微服务架构,分层架构,微服务网格架构等。使用架构模式可以帮助您开发出更加灵活,易于维护和扩展的系统。
4 学习消息队列
使用消息队列可以解决系统的许多性能和扩展问题。它可以提高系统的可用性和可靠性,并且可以帮助您更好地处理大量的请求。常用的消息队列有RabbitMQ,Kafka,ActiveMQ等。
5 学习容器化技术
使用容器化技术可以帮助您在开发和部署系统时更快速,更简单。容器可以让您在不改变代码的情况下在不同的环境中运行程序。常用的容器化技术有Docker,Kubernetes等。
6 了解云技术
云技术可以帮助您快速,简单地部署和扩展系统。云技术还可以提供更强大,更可靠的计算资源,以满足系统的需求。常用的云技术有AWS,Azure,Google Cloud等。
7 学习数据库优化
数据库是系统的核心,对于系统的性能,稳定性有很大的影响。学习数据库优化可以帮助您提高系统的性能,并且可以避免系统因数据库问题而导致的故障。常用的数据库优化技术有索引优化,查询优化,缓存优化,数据库分库分表,数据库读写分离等。
8 学习分布式架构
分布式架构可以帮助您提高系统的可用性,扩展性和稳定性。学习分布式架构可以让您了解如何设计,部署和维护分布式系统。常用的分布式架构技术有微服务,分布式数据库,分布式缓存,分布式锁等。
9 学习异步编程
异步编程可以帮助您提高系统的性能和响应速度。异步编程允许您在不阻塞主线程的情况下执行耗时任务。常用的异步编程技术有Java中的CompletableFuture,JavaScript中的async/await等。
10 学习持续集成和持续交付
持续集成和持续交付是软件开发的一种流程,它可以帮助您快速,高效地开发,部署和发布软件。学习持续集成和持续交付可以让您了解如何使用工具实现持续集成和持续交付,提高软件的质量和开发效率。常用的持续集成和持续交付工具有Jenkins,Gitlab CICD,CircleCI等。
总的来说,要想避免只会写CRUD,Java后端开发者需要学习各种相关技术和工具,扩大自己的技术视野。学习新技术需要时间和精力,但是当您了解了新技术,实践了新技术,您的工作能力将会大大提高。在学习新技术的同时,您也需要不断练习和实践,使用新技术解决实际问题。
作为一名专业的Java后端开发者,仅仅懂得写CRUD操作是不够的,因为这些操作只是后端开发的基础部分。下面我将为你介绍一些方法,帮助你去拓展自己的技能。
首先,你可以在学习中不断地挑战自己,尝试使用新的技术、框架或者语言来解决问题。比如,你可以学习一些Spring家族之外的框架,例如Hibernate、MyBatis等等来处理数据持久化。或者你可以学习一些新的编程语言,例如Kotlin、Scala、Go语言等等。这些新的语言、框架和技术可以帮助你更好地解决复杂的问题。
其次,你可以多注意一些计算机科学领域的基础知识,例如数据结构和算法。当你需要实现一些复杂的业务逻辑时,这些技术可以帮助你更好地处理数据和优化代码。如果你不想花太多时间学习这些基础知识,你可以先尝试掌握一些常见的数据结构和算法,例如树、链表、二分查找、动态规划等等。
另外,你可以尝试开发一些自己的项目,练习一些新的技巧。这些项目可以是你自己的创意,也可以是既有的项目的优化或者扩展。在开发这些项目的过程中,你可以学习到很多新的知识,并将它们应用到实际情况中去。
最后,不要害怕尝试新事物,保持对技术的热情和好奇心。只有不断地学习和实践,你才能成为更好的后端开发者。
Java后端要避免只会写CRUD,只能靠自己去学习。
国内的公司大部分都是搞业务开发,很少有搞开源项目供大家使用的。这样在工作中你是很少有时间和机会能接触到新东西,大部分公司都是一套框架下来,之后就一直用这套框来填充业务。所以你在工作中是很难逃出CRUD的。
要想提高自己就需要平时抽空自己学习,这对程序员来说真的很重要。
经常只CRUD也是有提高空间的,你可以用不同的方式去实现,还可以学习源代码。比如常用的mybatis的源码实现,你可以在开发空闲时间研究一下mybatis的实现,这样你对mybatis的使用会更熟练。
还有业务开发中经常使用的spring boot、spring框架,可以自己研究一下,如spring boot的加载机制、spring mvc的请求流程、spring bean的加载机制、spring aop等。其实要学习的东西有很多,而且这些都是开源的,自己开发项目空闲时间就可以去看看这些源码,会对自己有很大的帮助。
确实java开发人员有时会觉得工作内容单调,乏味,觉得每天都在重复性的做crud,之所以会有这种感觉,是因为在公司工作中,只负责写某一功能模块的代码,久而久之没有创新性和突破性就会感觉乏味单调。其实所有的程序归根到底都是处理数据,都是crud,因为计算机的本质就是处理数据计算数据。如何避免单调的感觉,那就只有尽量的做写一些功能性丰富的模块。比如登录,权限,工作流等,用功能性的满足感填充一下简单模块的空洞。。
本文由作者:用户2531133373.5 于 2023-06-22 发表,原创文章,禁止转载。
本文链接: https://app.yangtata.com/question/6837738613452259592.html