翻译:Why Spring?

本文翻译自:Spring | Why Spring?

Why Spring?

Spring makes programming Java quicker, easier, and safer for everybody. Spring’s focus on speed, simplicity, and productivity has made it the world’s most popular Java framework.

为什么选择Spring?

Spring让每个人的Java编程变得更快、更容易、更安全。Spring专注于速度、简单性和生产力,使其成为世界上最受欢迎的Java框架。

“We use a lot of the tools that come with the Spring framework and reap the benefits of having a lot of the out of the box solutions, and not having to worry about writing a ton of additional code—so that really saves us some time and energy.”

SEAN GRAHAM, APPLICATION TRANSFORMATION LEAD, DICK’S SPORTING GOODS

我们使用了很多Spring框架附带的工具,并获得了很多开箱即用的解决方案的好处,而且不必担心编写大量的额外代码–因此这确实为我们节省了一些时间和精力。

西恩-格雷厄姆,应用转型负责人,迪克体育用品公司

Spring is everywhere

Spring’s flexible libraries are trusted by developers all over the world. Spring delivers delightful experiences to millions of end-users every day—whether that’s streaming TVonline shopping, or countless other innovative solutions. Spring also has contributions from all the big names in tech, including Alibaba, Amazon, Google, Microsoft, and more.

Spring无处不在

Spring灵活的类库得到了全世界开发者的信任。Spring每天为数以百万计的终端用户提供令人愉悦的体验–无论是流媒体电视、在线购物,还是其他无数的创新解决方案。Spring也有来自科技界所有大公司的贡献,包括阿里巴巴、亚马逊、谷歌、微软等等。

Spring is flexible

Spring’s flexible and comprehensive set of extensions and third-party libraries let developers build almost any application imaginable. At its core, Spring Framework’s Inversion of Control (IoC) and Dependency Injection (DI) features provide the foundation for a wide-ranging set of features and functionality. Whether you’re building secure, reactive, cloud-based microservices for the web, or complex streaming data flows for the enterprise, Spring has the tools to help.

Spring是灵活的

Spring灵活而全面的扩展和第三方库让开发者可以构建几乎任何可以想象的应用程序。在其核心中,Spring框架的反转控制(IoC)和依赖注入(DI)功能为一系列广泛的特性和功能奠定了基础。无论你是为网络构建安全、反应式、基于云的微服务,还是为企业构建复杂的流媒体数据流,Spring都有相应的工具来帮助你。

Spring is productive

Spring Boot transforms how you approach Java programming tasks, radically streamlining your experience. Spring Boot combines necessities such as an application context and an auto-configured, embedded web server to make microservice development a cinch. To go even faster, you can combine Spring Boot with Spring Cloud’s rich set of supporting libraries, servers, patterns, and templates, to safely deploy entire microservices-based architectures into the cloud, in record time.

Spring是富有生产力的

Spring Boot改变了你处理Java编程任务的方式,从根本上简化了你的体验。Spring Boot结合了一些必要条件,如应用环境和自动配置的嵌入式Web服务器,使微服务开发变得轻而易举。为了更快,你可以将Spring Boot与Spring Cloud丰富的支持库、服务器、模式和模板相结合,在最短的时间内将整个基于微服务的架构安全地部署到云中。

Spring is fast

Our engineers care deeply about performance. With Spring, you’ll notice fast startup, fast shutdown, and optimized execution, by default. Increasingly, Spring projects also support the reactive (nonblocking) programming model for even greater efficiency. Developer productivity is Spring’s superpower. Spring Boot helps developers build applications with ease and with far less toil than other competing paradigms. Embedded web servers, auto-configuration, and “fat jars” help you get started quickly, and innovations like LiveReload in Spring DevTools mean developers can iterate faster than ever before. You can even start a new Spring project in seconds, with the Spring Initializr at start.spring.io.

Spring是快速的

我们的工程师非常关心性能问题。使用Spring,你会注意到快速启动、快速关闭和优化执行,这是默认的。越来越多的Spring项目还支持反应式(非阻塞式)编程模型,以获得更大的效率。开发者的生产力是Spring的超级力量。与其他竞争模式相比,Spring Boot可以帮助开发者轻松地构建应用程序,并大大减少劳累。嵌入式Web服务器、自动配置和 “胖罐子 “帮助你快速入门,Spring DevTools中的LiveReload等创新意味着开发者可以比以前更快迭代。你甚至可以通过start.spring.io的Spring Initializr在几秒钟内启动一个新的Spring项目。

Spring is secure

Spring has a proven track record of dealing with security issues quickly and responsibly. The Spring committers work with security professionals to patch and test any reported vulnerabilities. Third-party dependencies are also monitored closely, and regular updates are issued to help keep your data and applications as safe as possible. In addition, Spring Security makes it easier for you to integrate with industry-standard security schemes and deliver trustworthy solutions that are secure by default.

Spring是安全的

Spring在快速和负责任地处理安全问题方面有着良好的记录。Spring的提交者与安全专家合作,修补和测试任何报告的漏洞。第三方依赖关系也被密切监控,并定期发布更新,以帮助保持你的数据和应用程序尽可能的安全。此外,Spring Security使你更容易与行业标准的安全计划集成,并提供默认安全的值得信赖的解决方案。

Spring is supportive

The Spring community is enormous, global, diverse, and spans folks of all ages and capabilities, from complete beginners to seasoned pros. No matter where you are on your journey, you can find the support and resources you need to get you to the next level: quickstartsguides & tutorialsvideosmeetupssupport, or even formal training and certification.

Spring有庞大的支持系统

Spring社区是一个巨大的、全球性的、多样化的社区,涵盖了所有年龄和能力的人,从完全的初学者到经验丰富的专家。无论你在你的旅程中处于什么位置,你都可以找到你需要的支持和资源,使你达到一个新的水平:快速入门、指南和教程、视频、聚会、支持,甚至是正式的培训和认证。

如何进行积极沟通?

“积极沟通”,是本文提出的核心观点,并非传送意义上的沟通。

本文提及的 “积极沟通” 是本文提出的一个新概念,意在让你如何快速掌握沟通技巧,主动出击。

理解沟通一词

沟通,是双向的,主要是为了增加彼此的认识,了解目的、解决问题

很多时候的谈话,算不上沟通,比如你听到别人的抱怨,此时你对它的开导很多时候并不算。

为什么这么说?如果你只是敷衍一下对方,安慰一下对方,这太简单不过了,但它是单向的。这意味着,除非你真心非常关心对方,此时对话才算是沟通。

一般认为,沟通第一步是”善于倾听“,在本文中并不适用。

在沟通前,你首先要认识到沟通是双向的,否则条件不成立。

身份确立

在进行沟通时,第一步是要认清”我“与”对方“所对应的身份。

这里的身份,有3种

  • 主观沟通者
  • 客观沟通者
  • 双方沟通者

双方沟通时,这种情况比较少,比较灵活多变,指的是双方需要增进彼此的了解,通常发生在男女之间、招聘和应聘等。

主观沟通,指的是沟通起始时你有问题,要询问对方,

客观沟通,与主观沟通相反,先是别人有问题。

一次沟通的开始,就要先确立身份,当然在实际沟通过程中,身份可能会反复变化,不过每一次立场转变时,都应该精准的感知。

发表疑问

无论你处于哪种身份,你都应该”主动出击“,这能让你掌控主场,把握节奏,进而随时结束沟通,这也是”积极沟通“的精髓,而积极沟通,意味着你应该尽可能的转换身份为主观沟通者。

在进行每次对话时,快速分析,并捕捉疑问,但这并不够,如果你一开始就是主观沟通者的身份,更应该提前准备好问题。

例如,你想去面试,你应该先准备好询问hr的一些问题,而不是先等待hr对我的询问

咋一想,好像没什么好问的,其实并不是,

例如可以反向问hr,你觉得xxx人员什么水平算得上优秀?这能看到hr选人的标准,以及衡量自己是否符合。

或者,当hr说公司待遇时,问:公司加班时提供免费工作餐吗?一是看看是否经常加班,而是问个措手不及,一个精心准备的问题能给hr留下一个深刻的印象。

如果不会发问,你就永远只能处于被动状态,尽可能的找机会发问,当然不要强问,显得太生硬。

分析意图

倾听,是沟通过程中很重要的一部分,不过在倾听时要注意分析对方真正意图,对方可能含蓄、可能表达不清。

如果你发现对方含蓄、或表达不清,你可以这么问,你说的xxx是表示…的意思吗?不要不好意思,一定要当场问清楚,否则对方以为你懂了,实际你没懂。

如果对方问问题,你很难回答,或者你完全不了解相关的东西,该怎么办?既然无法回答,势必要真实回答,而且在这个过程中应该从别的方面入手,比如态度端正、言语诚恳,注意力集中,你在表达自己的不足的同时,要显得尊敬对方,而且要保留自己的风度和自信。

如果别人从你的缺点中揪着不放,无限扩大,你也不得发怒。你可以转换性质,例如你粗心搞砸了一点小东西,你可以这么说:我有时候比较粗心,学习学着就忘记吃饭了,很难改正,不过经过你这次的提醒,我印象非常深刻,相同的错误想再犯也很困难。

你需要注意,如果只是随便一问,确实应该诚恳的承认错误,而故意揪着你的错误,或无中生有,无限放大,此时万万不可承认,你可以偷换概念、转换性质、避重就轻各种方法躲避,会这么问的人它更期待你给出一个更灵活的答案,它可能只是想跟你玩个文字游戏而已,如果你大方承认反而是要被鄙夷的。

倾听,是为了保证沟通的继续,引导对方表达,也为了更好的发表恰当的提问,所以倾听和发表提问本质上是一体的,只会倾听的人无法完成整个沟通。

其次,要多练习,积极沟通是需要练习的,从实践中不断提升技能。

软件开发行业入职前至少应该了解哪些问题?

在面试、入职前,对入职企业有更深入的了解是必要的。

工作内容、工作职责

应聘时,无论是你自己选的岗位,还是公司分配的岗位,你都应该问清楚工作内容、工作职责

一个对工作内容、职责不过问的应聘者,相对显得有那么一点不负责任。

相同的岗位,在不同的公司中工作内容、职责可能不完全相同。这是什么意思?虽然都是软件开发,但某个公司可能专门做某一类IT产品,比如银行系统、金融软件等及具行业气息的软件开发。如果你入职了银行系统开发、一旦你辞职,你会发现银行系统的技术比较落后,再应聘其他公司就会比较困难。

综上,就工作内容上,我们是必须要问的,该公司该岗位是否服务于特定行业?

工作职责,和工作内容可能比较模糊,工作内容是日常工作具体工作事项、而工作职责它指的是我充当什么角色,这个角色的工作范围,指的是“应尽”的工作范围,也包括非强制方面,比如认真工作、维护公司利益、尊老爱幼等。当然这个不是必须要问的,语文不好的hr会被你问懵,当然你也可以强行给hr灌输一点知识,不过有些公司会要求保密协议,不得泄露内部信息,这些公司可能不允许上外网。

工资待遇、福利制度

询问工资时,不应该直接问能给多少工资,一般来说是根据个人能力进行一定的调整。不过可以换个问法

比如:贵公司xxx岗位平均工资水平?

一个岗位的工资范围可能变化很大,但平均工资是一个很好的评定参考。

此外,工资是否有上限?工资是能否涨薪?平均多久涨薪一次?

稍微对hr察颜悦色,以决定是否咨询更多的问题,一般来说,问“平均xxx”是不会得罪面试官的。

在这里提一下:尽量不要去外包公司,除非你只是想单纯的锻炼一下自己,但实际上这并没有什么用,外包公司是靠员工挣钱的,挣的也是苦力钱,如果它跟你说待遇很好,多半是钓鱼,你怎么可能反向撸羊毛?

此外,有的公司除了普通工资外,还有其他的福利,比如年终奖,比如一些公司会有期权、内部股票什么的。

对于软件开发行业,还要看个人成长,是否有其他学习资源,比如有的公司在入职一年内分配一个前辈携带你做项目,是否有其他培训。这点其实非常重要,如果你只会开发,没有一个深入了解的行业是没有竞争力的,比如你做金融软件开发,你是否了解金融行业??企业是否有定时金融方面的培训?一开始你可能感觉不出来有什么意义,实际上意义重大,如果你不了解金融行业,那么你如何设计一个金融行业的系统?每个行业可能都有一定的规则,没有一个深耕的行业那么是很难发展的,软件开发不仅仅只需要技术,还需要对行业有所了解,这也是不推荐外包的第二个重要原因。

需要注意,年终奖是一定要发的,不发是违法的。但如果发的多,则表示这个公司福利制度好,你可以咨询:平均年终奖…

不过一般都是一些比较零碎的,每个公司不一定

  • 夏季防寒降温补贴,(北方可能没有)
  • 节日礼金、礼品
  • 伤病补贴
  • 加班时免费工作餐
  • 突发事故补贴

住宿、五险一金

公司是否提供免费住宿?提供住宿不一定是免费的,提前咨询以免套路

公司是否有五险一金?

五险一金是指用人单位给予劳动者的几种保障性待遇的合称,包括养老保险医疗保险失业保险工伤保险生育保险,及住房公积金

需要注意,公司给你交了五险一金,实际它只能给你交大部分,也就是有小部分必须从你工资扣除,大概500左右。

也就是从你工资里一定扣除500元,如果你自己交会更贵。

研发部门?

研发部门的待遇,一般比开发部门要好,但不一定

同样应该按照上述问题咨询,平均工资?平均多久涨薪?等问题

工作时间、假期制度

一天上班多久?每周上班多少天?假期制度?

正常来说,软件开发一天上班8小时,每周工作5天,

855表示,早上8点到下午5点,即每天8小时,一周工作5天

996表示,早上9点到晚上9点,一天12小时,每周6天

而007则是每天零点上班零点下班,一周工作七天,这种工作制度就意味着每一天都要在公司里工作。

国家法定节假日一定是有假期的,但是太少,比如过年时法定假期是7天??所以,有没有带薪休假,带薪年假是一个可以去问的问题,有很多公司年假都会有15天。

反向hr最为致命?

除了关心自身工资、福利、发展等问题外,反向套路一下hr也是很有必要的。

你在这个职位上怎么才算成功?

这其实是变相地让面试官给你讲述工作岗位需求和他心目中对这个岗位任职人员的期望。这样以来,你就能非常清晰准确了解他们理想候选人的模样。这样的好处是:一,能帮你快速确定自己是不是公司的恰当人选,以及你能否达到他们的期待;二,就算是你自己的条件与公司的要求有所出入,但你清楚自己努力的方向,知道怎样修正自己。这样,一旦你应聘来工作的时候,就可以快速地进行调整了。

你应该向谁汇报?

这是你快速了解谁是你的未来上司的机会。在公司上班,与同事和上司能否相处融洽是非常重要的一件事。在很多公司的面试中,你的上司一般都会出场,所以你其实在还没有正式工作前,就已经开始与他打交道。所以,你要尽量想办法弄清楚他是谁,虽然面试的接触非常短暂,但就像他面试你一样,你其实也可以通过面试的过程,判断出来他的风格,他与团队相处的方式,以及他的团队值不值得加盟。

如果有可能,请求参观公司

你应该尝试沟通,让面试的人(不管是未来的上司,还是未来的同事)带你参观一下公司。基本上,参观公司的目标都能达成。

实际上,一眼胜千言,毕竟语言是非常抽象的东西,描绘起来与实际还是有较大的出入,感受一家公司氛围的方式,就是进去看看,只要走一圈,你立即就会感觉出这家公司是否符合你,走廊里过往人员的打招呼方式,公告栏通知的风格,透过窗户看到的同事们之间的互动方式以及氛围,可以让你你立即判断出这里到底是不是自己想来的地方。

如何理解维持现状偏差?

基本概念

“维持现状偏差”是一种人类规避变化的心理本能,即使该变化可能带来好处,但是对改变的恐惧会让人无法采取行动。

深入理解

也就是说,人类的大脑比起对于做新事物之所得,反而会对做新事物之所失有扩大性的评价,于是大脑程序会尽可能地做出没有变化的选择。比如:

A:无条件获得1000日元。

B:玩“剪刀石头布”,如果赢了,得3000日元;输了,一分钱没有。

在确定要二选一的情况下(尽管理论上的期待值是B更高),但大多数人会选A(因为只有胜负两种情况,所以B的期待值是3000日元除以2等于1500日元)。

反之:

A:不得不交1000日元的罚金。

B:无“剪刀石头布”,如果赢了,可以免处罚金;但是输了,要交3000日元。

在这种情况下,虽然理论上期待值是A更高,但是选B的人数却在增加。相对于之后可能到手的东西,人们会对已经到手的东西更加爱惜,于是日常生活中会发生下列事情:

  • 尽管在职场中有各种不满,但就是没办法跳槽。
  • 对已经在一起很久的恋人即使有不满,也没办法开口说出分手。
  • 哪怕交往很久的恋人,也没办法踏入婚姻的殿堂。
  • 尽管有自己一直想挑战的体育项目,但就是没办法开始参与。
  • 尽管想减肥,但就是控制不住吃零食。

“维持现状偏差”是人类具备的生存和防御的本能。“迄今为止,这样的行事方式也不至于消亡,所以就继续控制在这种方式内而不采用新方式”的想法确实增加了脱离生命危险的可能性。

然而要完成新目标的时候,“维持现状偏差”就变成了实现目标的最大阻碍。

例如产生下面这些劝导自己的内心独白:

  • 尽管工资很低,但是觉得适合自己,而自己也没有太大的抱怨。
  • 现在的恋人虽然不完美,但是分手之后难以保证会遇到更好的人。
  • 因为现在很忙,所以等有时间的时候再想吧。
  • 结婚之后可能会十分幸福,但是也会产生各种制约。
  • 这个月的聚会太多,减肥这件事等下个月再开始进行吧。

这就在无意识中阻挡了变化和新的挑战。

此外,这种心理还可能被人所套路,例如网购先体验再付款,虽然并不十分满意,但又懒得退货?分期购买时,若不完全支付将失去最终资格,已使用一段时间虽然效果并不理想却还是继续付尾款?

甚至,会让人变得毫无斗志,无法明确自己的人生目标,

不想设立目标的原因是一旦公开却没有完成的话,不仅非常尴尬,而且心理上受不了。由于虚荣心作怪,所以很难跨越“维持现状偏差”这一障碍。

克服办法

如果要克服这个心理,让自己走出舒适区,进入学习区(简单指乐于接收新事物),仅需要一点,要坚信自己有无限的可能性。例如

发明飞机的莱特兄弟最初肯定没有思索“怎么做才能设计出能载人飞翔的物体”,而是想“人如果能翱翔于长空,那该多逍遥啊”。

如果一开始就思考“怎么做”,就不会想“虽然迄今为止没人能在天上飞,但是我可以做到”,然后内心就会受到阻碍。

当时周围的人看到莱特兄弟肯定会说:“什么?要飞上天?这两个家伙的脑子还真是奇怪。”但是,他们深信自己有无限的可能,认为人类也可以在天空飞翔,所以才能发明出飞机。

不管你设立的目标有多高远,都没有人能证明它不可能实现。

即使以自己过去的经验判断自己不行,也不能成为你现在无法完成的理由。

即使目标是至今都没人能做到的事,也不能成为你无法做到的理由。

把自己跃跃欲试的事情设立成目标,完成的概率会大大提高。

概述快速原型模型的思想和特点

快速原型模型的主要思想是:首先快速建立一个能够反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践让用户了解未来目标系统的概貌,以便判断哪些功能是符合需要的,哪些方面需要改进。用户会提出许多改进意见,开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用……,这样反复改进,最终建立完全符合用户需求的新系统。

快速原型模型可以减少模型设计成本,针对于仅完成一些功能性的软件,而不考虑性能、空间等效率要求,比如系统的shell

用户的需求可能产生变化,快速原型模型可以方便的升级得到用户最终需求。从开发周期来看,可以看出它是一种循环进化的过程,用户的参与和反馈,使得这种方法开发出来的系统能够更好地满足用户的需求。

但在实际中由于开发原型系统使用的语言效率低(指开发效率低,如java,效率高的如python)等原因,除了少数简单的事务系统外,大多数原型模型都废弃不用,仅把建立原型模型的过程当作帮助定义软件需求的一种手段。

瀑布模型的优缺点?

瀑布模型是一种线性模型,也称生命周期模型。

这种模型是将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型。它包括问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试和维护。它规定了由前至后、相互衔接的固定次序,恰如奔流不息拾级而下的瀑布。

目前,瀑布模型仍然是软件工程中应用的最广泛的过程模型。软件过程基本上可以用瀑布模型来描述,而且是以文档为驱动,适合于需求很明确的软件项目开发的模型。

瀑布模型,在促进软件开发工程化方面起了很大的作用。但是,按照瀑布模型来开发软件,只有当分析员能够做出准确的需求分析时,才能得到预期的正确结果。它是一种理想的线性开发模式,缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。由于大多数用户不熟悉计算机,系统分析员对用户领域的专业知识也往往不甚了解,因而很难在软件开发的初始阶段清楚地给出完整的需求。