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

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开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

jupyter代码块没有运行图标的解决方案

《jupyter代码块没有运行图标的解决方案》:本文主要介绍jupyter代码块没有运行图标的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录jupyter代码块没有运行图标的解决1.找到Jupyter notebook的系统配置文件2.这时候一般会搜索到

Java Optional避免空指针异常的实现

《JavaOptional避免空指针异常的实现》空指针异常一直是困扰开发者的常见问题之一,本文主要介绍了JavaOptional避免空指针异常的实现,帮助开发者编写更健壮、可读性更高的代码,减少因... 目录一、Optional 概述二、Optional 的创建三、Optional 的常用方法四、Optio

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark