开发没有直径,但也要避免走弯路

2024-05-15 14:58

本文主要是介绍开发没有直径,但也要避免走弯路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        接触开发,从大学开始算,已经整整5年了。从最开始的c,到数据结构,到java,到数据库,到javascript,html,css,到android。作为一个开发者,大家都知道一句名言,那就是唯一不变的就是变化。需求变,技术变,公司变,各种变。这里面,我们开发更加关心的是技术的变化,以及如何去掌握新技术。

    从事java后台开发的,很多程序员对于javascript,css,html不熟悉,写着半吊子的javascript,只要能完成工作,基本都不深究javascript的相关技术。最近参与面试,面试了好几个工作1-3年的程序员,但是却对相关技术非常陌生,给人感觉就是:工作N年,为什么这么基本的知识都不明白呢,深深感到惋惜。所以最近这个问题也困扰着我,为什么工作了这么久,却还是如同一个刚接触开发的新手呢?在这里,一方面是希望给自己的学习历程一个总结,同事也希望给读者一些帮助,少走一些弯路。

在别人的框架下写代码

    进入一个公司,想必都会遇到一个框架,比如java中常见的Spring+hibernate,Spring+mybatis等,然后每个公司的架构师,也都会对这些开源技术进行集成与封装。于是每个开发者,加入一个新公司,基本流程都是:熟悉框架,写demo,进入项目组。由于项目中本身已经有相关的代码可以参考了,所以该流程一般都不会有什么问题。但是很多开发者,有个非常大的误区,就是能在框架下写代码,就以为自己掌握了该框架的相关技术了。比如面试时,面试者一般都会说,我会spring,我会hibernate,我会mybatis,但是只要稍稍询问相关知识,却答不出所以然来。其实每一个成熟的架构,都是经过多个人,费了很大的一段心血才整出来的一套完整体系的代码。虽然可能有些使用的技术不是那么的新潮,可能有些技术已经被淘汰,但是里面的一些设计思想却不会过时。
    甚至有些开发者,更会产生一种不耐烦的情绪,感觉自己每天的工作都是在copy代码。在面试时,不乏面试者说:“我在上一家公司中学习不到技术,框架怎么怎么了,用的技术怎么怎么了”。每个开发者都非常渴望学习新技术,掌握新技能,但是工作中,哪有那么多新技术供你学习,公司也不可能让你在工作时间内,花大量时间在学习技术上。
    对于在别人的框架下开发,本人从来不反对,也不反感,甚至每次接触到新框架时,都兴奋不已。因为每次接触一个新框架,都是一个极好的学习机会。最开始可能只是简单的搭建一个demo,但是只要把demo的原理摸透,那么就可以给自己的架构能力以及视野提供一个新的视觉,为自己的技术选型能力提供更多的参考。比如熟悉ssh的开发者,熟悉下ssm,才能对比出hibernate与mybatis的差异。熟悉struts的程序员,熟悉下spring mvc,才会明白spring mvc的优雅以及struts的优缺点。所以关键点就是要抱着一颗学习的心去学习,去工作,而不是仅仅局限于“可以在别人的框架下写代码,就以为自己掌握了该技术”。

忽略文档的重要性

    面试时,发现不少开发者对于一些常用的api都不熟悉,甚至离开eclipse都不能工作的情况。熟话说,工若善其事,必先利其器。这些文档,就像是我们的基本工作,我们应该熟读于心,需要使用时,快速选择,做到游刃有余。
    比如对java集合框架没有一个整体的把握,对java io没有整体把握,甚至连java lang常用的类都不清楚。实际上这些常用的api,以及相关文档,对我们开发者而言都是极其重要的。比如集合框架中,我们什么时候用LinkedList,什么时候用ArrayList,很多开发者都不知道,每次都是用同一个,问其原因,也回答不出来。比如要对集合进行一个排序,都足以让他们头疼。这类现象,就是对文档不熟悉。所以这里面,笔者强烈建议平时要多翻翻文档,多看看相关的源码。在查看文档时,推荐看英文原版。

熟悉常用的技术

    DRY原则告诉我们,不要造重复的轮子。世界上那么多的开发者,肯定有着非常多各种各种的轮子,我们要学习借助别人的轮子,让自己走的更快。
    比如大名鼎鼎的apache commons项目,比如spring,比如mybatis等,都是我们应该熟悉的轮子。笔者也并没有使用过apache commons中的所有项目,但是apache commons提供了哪些组件,还是比较熟悉的。所以在平时的工作中,都会偶尔浏览下一些常用的社区,看看每个技术的一些特性,查看时,主要关注:该组件能做什么,适合做什么,相关文档是否完善等。具体到api细节,一般都是需要使用时,才会深入学习。

阅读开源代码

    想要提高自己的编码水平,有多种途径。查阅优秀的开源代码,是一种非常好的学习方式。程序是外国人开发的,所以他们的母语非常适合开发,命名起来也更是手到擒来。我们在阅读的过程中,可以学习他人如何命名变量,如何设计类,如何设计方法等。
    当然,有时候,看开源代码也是一种挑战,因为一般开源项目涉及的类非常多,有时候会让我们无从下手。特别是一些开发经验略少的开发者,看到一大堆的类,甚是恐惧。我在大学期间,也尝试阅读spring的代码,压根看不懂!但是不要放弃,后面经过多番尝试,才算是能勉强一读。下面是我阅读代码的一些小技巧,希望对大家有所帮助。
        1.去该技术的官方,查看相关技术介绍,一般会介绍:能做什么,适合做什么,以及一些example
        2.使用构建工具,将源码下载下来,并且将该项目的example跑一跑(推荐使用maven)
        3.从example入手,配合着debug,看看那些类是核心,然后沿着这些类发散出去
        4.查看整个项目的源码包结构,猜测下每个包的作用,然后再猜测每个类的作用
        5.google该技术的源码分析,一般都会找到一些相关的源码分析文章
    经过这些步骤的折腾,基本上就足以掌握如何使用一门技术了。

阅读基础书籍

    基础的重要性不言而喻。比如我们搞java的,如果没有掌握java基础知识,想要学习spring等框架,自然是事倍功半,费力不讨好。当然,这里面的基础书籍,并不仅仅是某一门语言的基础语法。还包括:数据库理论知识,操作系统理论知识,数据结构理论知识,网络协议理论知识等。以前上大学时,这些课程学的枯燥无味,因为没有实际代码作为支持,纯理论的东西让人消化。后面随着代码的累计,以及阅读一些相关书籍,慢慢的发现,原来大学设立的课程,是非常有远见的,只是在执行力度上,有所欠缺。所以这里面,建议大家业务时间,可以看看操作系统、数据库原理、网络协议等相关知识,提高自己的内功。

总结

    1.善于利用下班时间,学习新技术
    2.挖掘能接触到的每一个架构的技术
    3.多阅读开源社区的相关技术文档
    4.多看看基础书籍,将编程知识体系化
    5.多些代码,多看代码,多重构自己的代码
    6.坚持阅读英文文档

这篇关于开发没有直径,但也要避免走弯路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/992139

相关文章

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,

C#多线程编程中导致死锁的常见陷阱和避免方法

《C#多线程编程中导致死锁的常见陷阱和避免方法》在C#多线程编程中,死锁(Deadlock)是一种常见的、令人头疼的错误,死锁通常发生在多个线程试图获取多个资源的锁时,导致相互等待对方释放资源,最终形... 目录引言1. 什么是死锁?死锁的典型条件:2. 导致死锁的常见原因2.1 锁的顺序问题错误示例:不同

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

电脑没有仿宋GB2312字体怎么办? 仿宋GB2312字体下载安装及调出来的教程

《电脑没有仿宋GB2312字体怎么办?仿宋GB2312字体下载安装及调出来的教程》仿宋字体gb2312作为一种经典且常用的字体,广泛应用于各种场合,如何在计算机中调出仿宋字体gb2312?本文将为您... 仿宋_GB2312是公文标准字体之一,仿China编程宋是字体名称,GB2312是字php符编码标准名称(简

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做