关于程序员,任何时候都不要忘了学习,现在各种技术各种语言层出不穷,如何定位自己,找准自己的方向很重要,更不能满足于现状,否则早晚会落伍。任何一个程序员,都应该有自己的学习计划,成长计划,学习是一个过程,打基础很重要,也要由浅入深,这是一个积累过程。还要有自己的学习笔记,正所谓好记性不如烂笔头,学习如此,工作亦是如此,等你回过头来看自己的历程,你会有很多自己的看法和意见。这也是为什么同样工作三五年的人,有人可以做你的上级,所以学习和积累很重要。这两年在公司,由于一些原因,在这方面远没有以前做得好,我会反思。
关于编程,如果是使用java编程,如果连JVM的原理都没了解过,那只能说你是一个会java的人,而不是一个懂java的人,因为你只是会写,而不知道为什么要这么写,这么写有什么好处,为什么这么写执行效率就高。网上经常有很多文章关于好的编程习惯,但这些好的编程习惯正是因为懂得编程原理和java工作原理才总结出来的经验。打个比方来说,同样实现一个功能,好的程序员写出来的代码就应该比别人写得更优雅,更具备可读性,可扩展性,生命周期更长,运行效率更高,而不只是简单的实现这个功能。所以我会经常强调要有好的编程习惯,对自己对别人都是有很多好处的。
关于规范,所谓无规矩不成方圆,一般各个公司都有自己的一套编程规范,各个编程语言也有自己的规范,各个系统也有自己的设计规范。在各种维度的规范上,我们要有先后顺序去遵守。不能一个人有一个人的风格。
关于设计,如果是一个编程了三五年的人,而不只是写代码了三五年,我想多少都会接触到设计这一块。这是一个常常被提及的话题,因为它始终影响着项目的生命周期。而设计又分架构设计,概要设计,详细设计,数据库设计,业务模块设计等。关于概要设计,估计不少公司都直接把这一步给忽略了,其实这一步很重要,如果做得好了,那剩下编程就是填代码了。优秀的程序员能知道哪些逻辑是写带前台的,哪些逻辑是应该写带后台的,哪些事情是应该在设计时就做好的。写代码其实不复杂,只是编程的最后一步而已。好的设计会使系统运行效率更高,同时开发效率更高,可复用的代码更多,程序问题更少。相反不好的设计只会让程序员整天沉于问题的查找,bug的修改,苦不堪言,谁又愿意在这样的公司长呆呢。比如说一个设计得不好的项目遇到一个问题或者遇到了瓶颈,你能找到问题所在吗?你能解决问题吗?是网络的问题,是硬件的问题,还是软件的问题,还是设计的问题,还是编码的问题。上次私有云环境请求很慢的问题就是一个很好的例子,当然最终问题不是程序设计上的问题,但设计上多少还是有一些问题的。
关于技术框架,做WEB开发接触到最多的框架可数ORM框架,ORM框架只是所有数据关系映射框架的统称,具体的如Hibernate、Mybatis,Spring Data Jpa等,框架是为了解决特定问题而存在的,其它诸如模板框架、缓存框架,安全框架等等,框架不能直接使用,需要在框架的基础上进行一些开发和调整便可满足要求。对于开发过程而言,选择合适的框架会提高软件的质量,降低成本,缩短开发时间,形成一种良性循环。好的框架是专门有人维护和升级的。比如Spring Framework体系,Spring生态从很早的2.X版本到3.X版本到4.X再到当前的5.X版本、从最初的XML配置到注解扫描性配置,再到现在流行的Java Config配置、从单纯的Spring Framework到Spring Boot,再到目前流行的Spring Cloud服务治理生态。 框架的升级往往伴随着开发成本的降低。
关于架构, 架构作为一个比较高的层次,往往需要考虑的问题比较多,需要懂的也多,从网络,硬件,软件,操作系统,业务系统,业务等等都需要有比较深入的理解。软件开发经历了面向过程,面向组件,面向对象,面向服务,到现在比较流行的微服务,都和架构息息相关。架构分为逻辑架构,网络架构,技术架构。逻辑架构要考虑系统的整体逻辑,数据流向,可分为多少个子系统或者服务,子系统间如何交互等等。网络架构要考虑安全性,并发性,监控等。技术架构往往和程序员息息相关。 相信很多人都希望设计一个大而化一,具有轻量化,高性能,松耦合,高扩展,能适应一切需求的架构,但这是不现实的,我们只能设计得更合理,更适合我们项目的架构。 我一直认为一个好的架构师能够减轻程序员的负担,让大家共同成长。能够提前预知并解决系统问题,当系统遇到瓶颈了能使用合理方式解决。
关于职责评定,公司能否留住一个优秀的员工,让员工有归属感,实现自己价值的同时得到成长升级,另外相应的报酬也同样重要,而报酬往往是和岗位职业挂钩。java编程一直流行的SSH想必多少都清楚,只是会用的人不少,但真正懂得这些框架原理的又有多少,为什么要用这些框架呢,我用别的框架不行吗?你能说出用这些框架的好处吗?和同类型的框架比较,他们的优缺点呢?如果你真正懂了,而不只是会用,我想开发遇到问题,遇到瓶颈,或者架构升级的时候,你一定有自己的看法。但问题是,做为一个写了三五年代码的程序员,仅仅只满足于会写会用吗?那还不如直接用一个刚毕业的学生,我想稍微指导一下也能做到。所以要明白公司为什么要花比别人高的代价录用你,正是是因为你有更高的使用价值,懂得比较多,但更重要的是你懂得比别人更深入,你能处理别人不能处理的问题。所以对专业知识的掌握程度往往是判断一个程序员的主要标准,是了解还是比较了解,是掌握还是熟练掌握。其次,专业能力也是评定一个程序员级别重要标准,学习能力,创新能力,执行力等等,不要说会这个框架,会那个框架,会这个语言,会那个语言,工作了三五年的人,给一个新的框架或者新语言,我想用不了多少天,看看原理,看看quick start,不行就再看看demo,应该都会用了,应该能基本编写代码了,具体遇到问题可以再查手册,实在不行google百度。我想问题不大,如果还有问题,那只说明不具备基本的学习能力。
其实上面说了那么多废话,总结起来就是多学习来提升自己,养成良好的编程习惯,遵从规范,要注重设计,要了解系统的架构,然后就没了。
相关推荐
这个压缩包“一个关于编程的资料”似乎包含了丰富的学习资源,特别是针对C++的学习。让我们逐一解析其中的文件内容。 1. **contents.htm**:这通常是一个网站或电子文档的目录页面,它提供了所有可用资源的概览。在...
### 关于编程之言 #### 编程语言与编程思想并重 在IT行业的浩瀚领域里,编程作为核心技术之一,其重要性不言而喻。《关于编程之言》一文深刻阐述了编程语言与编程思想之间的辩证关系,强调两者并非孤立存在,而是...
这篇描述主要列举了五本关于编程、计算机科学和科学领域的书籍,这些都是作者推荐的重要读物。以下是这些书籍的详细介绍: 1. 《The New Turing Omnibus》:这是一本计算机科学的经典著作,由Alexander K. Dewdney...
【标题】中的“关于编程的知识”表明这是一个涵盖了多个编程相关领域的资源集合,特别是提到了“Python和C++”。这可能包括这两个语言的基础语法、高级特性、应用实例等内容。"数据结构"和"算法"是编程学习的核心...
从提供的文件信息中,我们可以看到这是一个关于编程猫知识测试的模拟测试题附答案。下面我们将对标题、描述、标签和部分内容进行详细的解释和分析。 标题: 编程猫知识测试模拟测试题附答案 这个标题表明,这是一...
我的api,有关于java的api,挺好玩的,简单
- 提供了一些外部链接,关于如何选择编程语言,以及Python、C++和Java的学习资源。 总结来说,文档重点讨论了如何根据学习目的和专业发展方向来选择适合的编程语言。它不仅为初学者提供了学习路径,而且也强调了...
关于编程语言如何顺应时代发展,书中可能会探讨一些话题,例如编程语言是如何适应新的计算范式(如云计算、大数据、人工智能等),以及它们是如何吸取其他语言的优点或避免其错误的。这些内容可以帮助我们理解编程...
《MacTalk·人生元编程》是由池建强所著的一本关于编程与人生的书籍,它不仅探讨了技术层面的问题,更深入到编程思维对个人成长和生活的影响。这本书结合了作者丰富的编程经验和人生感悟,旨在帮助读者理解编程的...
《编程珠玑番外篇》是由Google工程师徐宥创作的一系列关于编程语言和技术开发的深度思考文集。这个压缩包包含13篇PDF格式的文章,每一篇都蕴含着丰富的编程智慧,对于程序员和软件开发者来说,是不可多得的学习资料...
标签"书籍 编程"明确了该资源的主要内容,即一本关于编程的书籍。书籍作为知识的载体,是学习和提升编程技能的重要途径。而“编程”这个标签则涵盖了诸如语言基础、数据结构、算法、软件工程等多个子领域,是软件...
一篇很好的文章,对学编程的真的有很大的启发。
标题“编程高手箴言pdf扫描版.pdf”表明该文件是一本关于编程高手的箴言或者编程高手分享的经验总结的手册。箴言通常意味着精华的语句或者深刻的道理,因此,可以认为这本手册包含了从编程实践、理论到技巧等多方面...
在电子工程领域,编程器是一种用于向各种类型的微控制器、微处理器和其他可编程器件烧录固件的设备。...记得在实践中不断探索和学习,你将能够掌握更多关于编程器的知识,甚至可能创新出更高效、更便捷的设计方案。
关于leetcode中跳跃问题的解答,基于较小的空间复杂度以及时间复杂度
《编程科林20171》是一部关于编程技术的电子书,其文件格式为EPUB,被压缩成了7Z格式。7Z是一种高效的压缩格式,由7-Zip软件创建,它提供了比ZIP和RAR更高的压缩率,同时支持多种压缩算法,如LZMA和PPMd,有助于减小...
3. 标签信息:通过标签“编程珠玑 续”,可以知道这本书是关于编程实践和技巧的书籍,适合对编程有深入兴趣的读者。 4. 版权信息与出版背景:文件中提到了这本书的出版信息,包括出版社名称、地点、ISBN号码以及...