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

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如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Python异常处理之避免try-except滥用的3个核心原则

《Python异常处理之避免try-except滥用的3个核心原则》在Python开发中,异常处理是保证程序健壮性的关键机制,本文结合真实案例与Python核心机制,提炼出避免异常滥用的三大原则,有需... 目录一、精准打击:只捕获可预见的异常类型1.1 通用异常捕获的陷阱1.2 精准捕获的实践方案1.3

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10