以我自身经从来看,有以下几点感触?html
(1)全面发展;前端
(2)施展的平台的机会比较大;mysql
(3)加班的频率;面试
(4)跟领导的关系;sql
(5)与同事的关系;shell
(6)自觉性;数据库
1、全面发展tomcat
咱们公司加上经理常在的也就是6我的。安卓两个,Java开发三个。人少天然就要多个方面用。性能优化
好比以上家公司为例,每当接到一个新的单子,咱们老板都会派遣对应的项目实施人员去跟客户交互,通常就是跟客户聊聊需求之类的,而后整理成一个需求文档,固然了,在此以前老板会跟这个客户谈价格,这个价格分为两个方面,一个是只卖服务不卖源码,另外一个是源码+服务一块儿卖。这也是办公自动化软件公司比较广泛的两套营销策略吧。话有些说偏了。而今在这家创业公司,我如今所处的这家创业公司主要是作共享经济方面的,好比共享车、共享洗浴等等诸如的。能够说是作本身的产品。作本身的产品有一种归属感,上家公司给个人感受虽然说是作办公自动化,可是在我看来跟外包没有什么区别,只不过至关于专注性型外包(专作办公方面的)前端框架
在这家创业公司,我作过可行性方案设计,以个人可行性方案设计,因为咱们是本身作本身的产品,通常可行性有这么几个考量?
第1、技术可行性;
第2、成本可行性;
拿技术可行性来讲,主要有这么几个考虑?
(1)成员熟悉度(以Java为例,咱们主要用SSM框架,没有用SpringBoot或者SpringCloud,由于咱们组成员广泛对这个框架很是熟悉);
(2)可靠性(好比Spring全家桶就很可靠);
(3)文档丰富性(就是若是出现什么问题,能够快速在现有的搜索引擎当中搜索获取对应的解决方式);
拿成本可行性来讲,主要有这么几个考虑?
(1)时间成本;
(2)技术成本;
(3)人员成本;
(1)时间成本
时间成本主要指的是项目的开发周期,项目的开发周期取决于项目的复杂度和需求变动度,复杂度高变动度高,那么延期是必然的,固然了也能够是非必然的,能够用加班来达到按时交互的目的或者是一些强有力的手段。
(2)技术成本
技术成本有这么几个方面?
a.技术的实现成本(效率和时间);
b.服务器的成本(购买服务器);
(3)人员成本
a.五险一金;
b.工资;
关于全面发展,进入这家公司我不只仅是一个后台开发人员,并且也是前端开发+运维+测试+DBA+架构(兼职)+技术支持(主要是安装设备+调试设备)+产品设计等。
能力虽然是获得全面的锻炼,可是除了后台方面相对过硬,其余基本都是浅尝辄止,能够理解为都不够深刻。
好比运维方面,我仅仅只是知道对tomcat、mysql如何调优,以及Linux常见的性能测试命令(free、top等)和其余的经常使用命令(内存、CPU、线程、管理用户等)及其一些经常使用的shell脚本(好比部署、备份数据库、邮件告警等)。
好比前端开发,我除了比较熟悉HTML+CSS+JS(多亏曾经在学校的时候手动敲代码写了十几个网页,所以基础仍是比较好)以外仅仅只是对jQuery+BootStrap+layui+Vue.js等前端框架比较熟悉,看了API知道怎么用和异步交互的方式,及其一些前端性能优化方面的,对于如今的服务端的Node.js仅仅只是停留在简单使用和环境搭建上面。
好比测试,除了很是简单的功能性测试以外,也就是用Jmeter作一些tomcat、mysql等性能测试(压力测试),还有就是开发经常使用的单元测试,至于网站的性能测试我是直接用国外网站测试的,能够参考个人这篇文章:网站在线性能测试分享。
好比DBA,除了受权分配对应的用户对数据库的权限以外,SQL能力相对较好(这也是一直以来使用MyBatis的缘由之一)和一些简单调优及索引方面的等。
好比架构,这里的架构职责有两个方面,一个是技术架构,好比制定开发的规范,使用什么后台框架(SSM仍是SpringBoot),采用MySQL仍是Oracle,须要使用消息队列吗,或者是前端指定要什么框架(Metronic仍是Vue或是EasyUI)、数据库的设计、究竟采用单体仍是微服务或是是单体式业务拆分方式等;另外一个就是业务方面的,好比分析业务需求、概括整理、编写概要文档、编写详细文档和扩展业务等。
好比技术支持,好比配置路由器(由于门锁须要链接这个路由来达到通讯的目的)等。
好比产品设计,前端方面的话,手动画设计图,大概是怎么样的(页面的布局之类的)和一些宣传动画的制做(用万彩动画大师制做产品宣传视频之类的)。
其实,大概看了看,感受和一些外包公司的开发人员职责没有什么不一样(由于有一些外包公司,也是一人身兼多个岗位)。固然了,好处也是有的,除了我的的学习能力获得提高以外,还有就是对于业务方面及其整个项目环节十分清楚,利于业务积累和技术积累吧。
2、施展的平台的机会比较大
施展的平台的机会比较大,为何要这么说呢?
第1、你能够成为规则的指定者;
第2、你能够尝试引用新的技术(借此能够学习,可是前提是你要扛得住风险和压力(遇到问题临时解决不了怎么办));
1.规则的制定者
(1)编码规范,我能够大致上参考Java开发手册,而后在这个基础上从新一些规范或者是守则等等,固然了,团队成员虽然很少,可是因为每一个的习惯不同,因此仍是须要在商议一下。
(2)创建代码Review的制度,有些人或许会问,就三个Java开发还须要代码审核吗?我给那些有这个见解的朋友的回答是:很是有必要。
首先说说代码Review的好处,好处不少,我这边只讲几个?
a.减小Bug率(知道有人会审核本身的代码,代码会写的严谨点,好比在学校的时候,老师没检查做业的时候,不写或者写的乱七八糟敷衍了事,当老师要检查做业并要求卷面整洁,哪怕你写的不那么整洁,可是至少比你以前敷衍了事或者写的乱七八糟要好的多;
b.提升代码质量(人都是有尊严的,码农也不例外,看到别人的代码质量很好,本身的不好,不免会内心不爽,因而追赶对方,想要比对方更好,我以为在团队中这种良性竞争仍是好的,这个代码质量的衡量指标,有这么几个方面,第1、看起来清楚整洁;第2、没有冗余重复的代码块。);
c.提升开发人员的责任感,有人说,项目bug一大堆很大缘由是由于开发人员致使的,由于不负责任,完成任务就好,至于bug,管他三七二十一(实际上,从某个角度看,这也是没有办法的事情,由于若是不把任务完成的话,面临的就是项目经理的直接斥骂或者是其余一些成员的歧视或者是幸灾乐祸。之因此代码review能提升开发人员的责任感,一句话,没有对比就没有伤害,看到人家的比较本身好,天然内心嫉妒,这是人性的体现,包括我本身也有这样的心理。看到别人的代码质量好(即实现功能又美观),本身慢慢争取超过他或者是向他请教,我想一家公司的开发团队若是能有这样的氛围,那么软件的质量将会很是好的,可是就中国的这个大环境而言,中小公司对于代码Review并非特别热衷,由于项目经理或者是项目组长以为人少不必屡次一举;
d.熟悉彼此的代码,防止由于某人由于有事情须要请假,万一他的代码上线测试的时候有问题,须要改bug时,要么就是等他到时候上班的时候改,要么是本身硬着头皮看他的代码思路逻辑来改(固然了,若是他的代码写的优雅美观、逻辑清晰,那但是一件很是棒的事情,若是反之,乱七八糟,你将会怀疑人生),同时也在必定程度上,防止当这我的离职后,他负责的模块没人熟悉,固然了,也许会有人说,通常开发人员在提交离职申请书,都会有一个过渡期,让交接人员对接熟悉他的代码,可是若是有一个像淘宝、支付宝等这样的大项目呢或者是这个公司有不少业务,每一个人负责至少二三十个模块等之类的,或许有人说,领导会考虑到这一点,让那我的离职延期直到交接所有后才批,可是现实是有的人直接会说,我半个月后就走,你必须给我批或者是你明天就要走或者下周,请问老板又能怎么办呢?因此说,从长远的角度看,代码Review就是为了防止这种状况出现,好比吴军先生曾经在他的一篇文章中,这样说过,“美国顶级的软件公司,开发项目历来不会由于一我的离开而进度受阻,你会发现有些人度假一周,整个项目仍是在往前进行。可是中国不少大公司,你们得一块儿开发,任务没完成,经理不批准任何人的休假。这是开发管理水平不到位所致。”
2.引用新的技术,提升本身的学习能力
好比我当初以为MyBatis很差用,因而便引用了一个开源项目MyBatis-Plus,当初用的时候,遇到不少困难,可是通过一段时间的使用,发现对它是愈来愈了解和熟悉了,包括它所出现的大大小小问题,我都能快速地解决,同时该技术对于咱们团队而言,学习成本很是低,由于只要用MyBatis的使用经验,不须要一个小时就能学会怎么使用了。
固然了,并不表明引用新的技术就能提升本身的学习能力,引用新的技术,只能说明你的学习适应能力很强。我看了很多想guns、renren-security等这样的开源项目,发现它们的共同点其实就是我们原有的那些框架的衍生或者强化,就如MyBatis-Plus本质上仍是MyBatis,只不过作了一些强化罢了。
3、加班的频率
说到加班,记得刚刚进入这家公司的时候,刚开始第一个月基本是有双休的,可是第一个月后,为了完成老板的任务,基本就是周周六。天天也就是9点对8点,有的时候回来还得加会班完成工做任务。这个加班我仍是可以理解的,创业之初,没有一个相对成型的产品,老板去吹牛拉投资也很差拉啊。
后来有一个阶段加了会班,是由于一个展会上须要展现咱们的产品,为了保证产品在展会上不会出故障,咱们那几周拼命调试改bug。
除了这个阶段外,还有一个阶段加班比较多,是由于咱们团队成员(包括我在内)的缘由,代码写的不够好,当初遗留的问题太多。
一般状况下,只要你工做足够认真负责,平时花点时间巩固下基础或者是接触一些新的技术,或者是看其余的书籍扩展扩展视野,提升本身的见识及其沟通能力,通常的话,是不用加班的。固然了,有一种状况除外,那就是公司团队人太少了,可是生意太好,一单又一单,这就是没有办法的事情了。
4、跟领导的关系
领导跟我是老乡,都是一个地方的人,我以为,也许是由于老乡的缘故,感受比较亲切,以为相处也是蛮不错的。另外咱们领导奉行的是“无为而治”。这个“无为而治”,并非说无论咱们和听任自如,而是指给咱们足够的自由空间,任咱们发挥,固然了,还有一个硬指标,那就是每周工做任务不得低于十项。
5、与同事的关系
公司人少,天然一些勾心斗角的事情是没有的,可是吵架仍是有的,通常吵架都是由于业务方面的缘故,每一个人理解不同吧,好比你上午跟我要改这个功能和新增另外几个功能,而后我跟你确认两到三次后,你说没有问题,那我开始弄,弄完后,你却找我,说仍是改成原来的吧。我想换作任何一我的,都会十分的生气。
除此以外,以为团队成员仍是蛮融洽的,没有必要为了勾心斗角而花费没必要要的心力。
6、自觉性
咱们领导没有对咱们的电脑实现什么的监控之类的,同时,也没有根据代码提交的频率或者是功能的新增、bug的修改、功能的优化等指标来衡量咱们的工做指标是否完成。
想偷懒的话,有一大把机会偷懒。可是我以为没有这个必要。就比如南郭先生吹竽的故事那样,以前能够混在其中投机取巧,以后,想投机取巧都没有机会了。
我以为咱们开发人员对于我的的约束很是重要,确实有些公司对于员工的管理仍是比较松懈的,可是有的员工却借此机会偷懒。
小结:
今天主要围绕全面发展、施展的平台的机会比较大、加班的频率、跟领导的关系、与同事的关系、自觉性等,阐述了我在创业公司的感触。固然了,感触远远不仅这么几个而已,还有不少,以上的几个都是相对典型的。但愿能给你们有所帮助。
最后来个问题解答:
有人问我:在大公司好仍是小公司好?
个人回答是:能去大公司则去大公司,特别是对于应届生小伙伴们而言,大公司各方面条件都比小公司要好,至少大公司的培养人才机制仍是很完善的,去大公司从实习到工做与小公司相比不会太累。
有人问:大公司分不少种,有像软通动力或者是中软国际这样的外包公司,也有像百度腾讯这样的公司,也许规模没有它们这么大。那么我该去哪一个公司?
个人回答是:前提是你的面试经过拿到offer,我以为你仍是选择那些有自主产品的公司,缘由是利于业务积累。
有人问:若是我没有进入大公司,却进入了一家小公司怎么办?
个人回答是:仍是那句话,选择有自主产品的公司,固然了,若是你以为本身编码能力不行的话,能够去外包锻炼锻炼一年左右或者两年。作过的项目足够多,编码能力天然能上来。
还有人问:万一找不到工做怎么办?
个人回答是:若是是由于能力不行的话,尽可能一方面花点时间提升自我,临时抱佛脚总比每天打游戏要好,或者是你的眼光过高忽略了本身的实际能力,建议放低本身的姿式,不要眼高手低,要实事求是。
最后,给应届生朋友们几点建议?
1.离毕业越近的时候,不要过于恐慌,尽管IT这一行也能够说是狼多肉少,可是与其恐惧慌忙不如脚踏实地的多钻研钻研提高自我;
2.找到工做后,特别是对于第一份工做,特别是那些学的不是特别好的,建议,只要工资能解决温饱就行,其余以积累为主,在这家公司尽可能待长一点,能够是一年也能够是两年,我相信只要你足够踏实努力,领导绝对会给你涨工资的;
3.那些一时没有找到工做的朋友和老是面试碰壁的朋友们,大家千万不能放弃,特别是老是面试碰壁的朋友们,大家必定要多多总结面试的经验,不只仅要从面试官的看,还要想一想本身的不足之处;
4.有很多没有良知的培训机构打着招聘的幌子,忽悠应届生来培训,建议应届生朋友们,要放亮本身的眼睛,特别对于那些写着致力于在IT界发展或者是对于应届生工资特别高(技术要求不高)的,要特别注意,最好仍是百度或者其余途径搜索一下,看是否是培训机构之类的,或者是几个好哥们一块儿面试共享,看那些是培训机构之类,这样避免去浪费没必要要的时间;
因为我本身工做年限不是特别长,给工做年限三年之内的小伙伴们的建议是:
1.专一于技能的提高,不断学习;
2.专一于业务的积累,提高本身的业务理解能力;
3.博览群书,提升见识;
4.虚心而不自大,人外有人,山外有山;
5.不要过于安逸(当工做一年或者两年后,你会发现工做上基本都能搞定,因而就显得懒惰和不思进取了,有些时候我以为本身都有点开始安逸了);
6.多运动,跑跑步(有氧运动)或者是打打羽毛球(防止颈椎病),闲暇时,多走走,去公园走走,哪怕陪陪女友逛街也行,至少走也是一种运动方式;