`
Mootools
  • 浏览: 46508 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

(译)你不是全面的专家

阅读更多

    对于软件开发,干的时间越长,就越感觉自己懂的知识少,似乎要学习的知识还有很多很多。最近恰在DZone上看到一篇小文,作者谈到是否有必要成为全面的专家。道理其实很浅显,大家也都懂,我只是随手翻译一下罢了。

    编程不仅仅是写代码--而是要处理一大堆抽象。从0和1开始,到处理器,内存地址,底层的网络协议,数据结构,再上升到网络服务,组件框架和用户界面。这一过程,就是从乏味的底层抽象,到更有趣的可用且可维护的抽象。


    我们被归为"高级开发者"。对于某些人来说,这就意味着我们在所有的抽象层面都是专家。如果不是这样,那么我们就不够好。我不倾向于赞同这种观点,而这并不只是为了证明我并不是在所有抽象层面上都是专家。


    这基本上就是一种折衷--要么你专注于某些层面,然后变得对它们十分精通,要么,你这也学学,那也干干,然后对哪一样也不精通。接下来你会争辩到,在多数 领域的某些方面你应该达到专家级。但随着时间的推移,这些专业知识将会变得冗余。如果我今天把应用设计与框架方面的知识丢到一边,而去钻研算法或TCP编 程,那么由于技术更新,三年后我可能就不再精通之前的那些领域了。


    存在抽象的原因之一就是防止你陷入底层细节的深渊。如果没有这些抽象,我们就不可能写出合格的软件。而我们可能需要做的就是专注于更高层,因为低层已经被 处理好了。将底层编程当作某种深奥艺术可能只是为了显摆,但事实上它并非什么深奥艺术,只是有对底层编程的需求罢了。


    当然,这就不是说通过学习JQuery,Rails和Spring就能使你变成最好,而不需要知道其它东西了。你要尽可能地熟悉你所专长层面之下和之上层 面的工作原理。一般地,因为所有抽象都会"泄露",所以你不能忽略应用程序所消耗的内存,当需要快速访问时,你最好使用Hashtable,TCP连接可 能被防火墙阻隔,尽管你不需要编写析构函数,不需要实现Hashtable,或者了解TCP。但了解其它层面的工作原理并不会使你成为那方面的专家,其实 你也不必成为那种专家。


     为什么我要写这些呢?因为很多公司(包括大公司)中的人们倾向于认为专家就应该在所有层面上都达到专家级,尤其是在底层方面。在面试时会问你很多底层的细节问题,好像你一生都在从事数据结构和网络编程方面的工作,你当然不是那样,但这并不意味着你不是一名专家。


    不做全方位的专家是一件很好的事情,只需要在若干层上达到专家级就行了。但你必须了解更低层和更高层领域的工作原理,这样当有需要时,你也可以成为那一层的专家。

 

(2013.06.30最后更新)

1
4
分享到:
评论

相关推荐

    NET 大局观_候捷荣耀译

    《NET大局观_候捷荣耀译》是一本深入探讨.NET技术体系的重要著作,由著名技术专家候捷翻译。这本书全面地介绍了.NET平台的核心概念、架构和技术,为开发者提供了全面理解和掌握.NET开发的宏观视角。书中的内容涵盖了...

    卡巴斯基应急响应指南(译).pdf

    本指南不仅适用于技术专家(如系统管理员)和IT、信息安全管理负责人,同时也是对信息安全有兴趣的个人的宝贵资源。然而,指南明确指出,这不是一个综合性的操作指南,而是一个提供基础建议和描述建设性行为流程的...

    关于HTML5牛逼的10本书.docx

    通过阅读这些书籍,读者可以全面了解HTML5的各种特性,掌握响应式设计、移动开发、触摸界面设计以及JavaScript编程等关键技能,成为精通HTML5的前端开发专家。无论是初学者还是有经验的开发者,都能从中找到提升自己...

    cmd-bat-批处理-脚本-variables.zip

    cmd-bat-批处理-脚本-variables.zip

    基于python+OpenCV和Mediapipe实现手语手势识别检测项目源码.zip

    基于python+OpenCV和Mediapipe实现手语手势识别检测项目源码.zip 【项目说明】 1.多数小白下载后,在使用过程,可能会遇到些小问题,若自己解决不了,请及时私信描述你的问题,我会第一时间提供帮助,也可以远程指导 2.项目代码完整可靠,但难度适中,满足一些毕设、课设要求,且属于易上手的优质项目,项目内基本都有说明文档,按照操作即可,遇到困难也可私信交流 3.适用人群:各大计算机相关专业行业的在校学生、高校老师、公司程序员等下载使用 4.特别是那种爱钻研学习的学霸,强烈推荐此项目,可以二次开发提升自己。拿来作毕设、课设直接用也行,不过尽量弄懂项

    cmd-bat-批处理-脚本-vcvars140.zip

    cmd-bat-批处理-脚本-vcvars140.zip

    苹果cms后台影视 小程序源码 带视频教程.zip

    苹果CMS后台影视微信小程序源码 带视频教程

    新型武器装备作战需求论证方法与实践.zip

    新型武器装备作战需求论证方法与实践.zip

    基于遗传算法优化的BP神经网络预测模型代码及注释

    遗传算法优化BP神经网络(GABP)是一种结合了遗传算法(GA)和BP神经网络的优化预测方法。BP神经网络是一种多层前馈神经网络,常用于模式识别和预测问题,但其容易陷入局部最优。而遗传算法是一种模拟自然选择和遗传机制的全局优化方法,能够有效避免局部最优 。GABP算法通过遗传算法优化BP神经网络的权重和阈值,从而提高网络的学习效率和预测精度 。 种群:遗传算法中个体的集合,每个个体代表一种可能的解决方案。 编码:将解决方案转化为适合遗传操作的形式,如二进制编码。 适应度函数:用于评估个体解的质量,通常与目标函数相反,目标函数值越小,适应度越高。 选择:根据适应度保留优秀个体,常见方法有轮盘赌选择、锦标赛选择等。 交叉:两个父代个体交换部分基因生成子代。 变异:随机改变个体的部分基因,增加种群多样性。 终止条件:当迭代次数或适应度阈值达到预设值时停止算法 。 初始化种群:随机生成一组神经网络参数(权重和阈值)作为初始种群 。 计算适应度:使用神经网络模型进行训练和预测,根据预测误差计算适应度 。 选择操作:根据适应度选择优秀个体 。 交叉操作:对选择的个体进行交叉,生成新的子代个体 。 变异操作:对子代进行随机变异 。 替换操作:用新生成的子代替换掉一部分旧种群 。 重复步骤2-6,直到满足终止条件 。 适应度函数通常以预测误差为基础,误差越小,适应度越高。常用的误差指标包括均方根误差(RMSE)或平均绝对误差(MAE)等 。 GABP代码中包含了适应度函数的定义、种群的生成、选择、交叉、变异以及训练过程。代码注释详尽,便于理解每个步骤的作用 。 GABP算法适用于多种领域,如时间序列预测、经济预测、工程问题的优化等。它特别适合解决多峰优化问题,能够有效提高预测的准确性和稳定性 。

    cmd-bat-批处理-脚本-hello world.zip

    cmd-bat-批处理-脚本-hello world.zip

    cmd-bat-批处理-脚本-Messagebox_Cancel_TryAgain_Continue.zip

    cmd-bat-批处理-脚本-Messagebox_Cancel_TryAgain_Continue.zip

    各种电能质量扰动的MATLAB模型.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    qwq3 model 4 use for ollama

    qwq3 model 4 use for ollama

    2025年系统集成项目管理工程师考试下午题精编.doc

    2025年系统集成项目管理工程师考试下午题精编.doc

    模块化SOC主动均衡模型:六节电池串联系统的充放电均衡解决方案 电池管理系统

    内容概要:本文介绍了一种专为六节电池串联设计的模块化SOC主动均衡模型。该模型采用底层双向反激变换器和顶层buck-boost均衡的双重策略,旨在解决电池组中各节电池SOC不一致的问题。通过模块化设计,模型实现了灵活性和扩展性,适用于不同类型的电池组。文章详细介绍了模型的工作原理、设计思路以及仿真实验结果,验证了模型的有效性。 适合人群:从事电池管理系统的研发人员、电力电子工程师、科研工作者。 使用场景及目标:①研究电池组充放电均衡技术;②优化电池管理系统的设计;③作为论文创新和仿真实验的基础。 阅读建议:重点理解双向反激变换器和buck-boost均衡的具体实现方法及其协同工作的机制,结合仿真实验数据进一步验证模型效果。

    cmd-bat-批处理-脚本-npx.zip

    cmd-bat-批处理-脚本-npx.zip

    cmd-bat-批处理-脚本-str3.zip

    cmd-bat-批处理-脚本-str3.zip

    基于Java与SQL Server的学生成绩管理应用开发

    《Java+SQL Server学生成绩管理系统》是一款融合了Java编程语言与SQL Server数据库技术的软件,专为高校或教育机构设计,用于高效管理学生的考试成绩。它具备数据录入、查询、统计分析等功能,旨在提升教学管理效率。 该系统的核心技术包括:一是Java后端开发。Java承担后端任务,处理HTTP请求、实现业务逻辑以及与数据库交互。项目可能借助Spring框架,利用其依赖注入、AOP等特性,简化开发流程。Spring MVC则助力实现MVC模式,处理Web请求。二是JSP技术。JSP是一种动态网页技术,页面融合HTML、CSS、JavaScript和Java代码,用于呈现用户界面及处理前端简单逻辑。三是SQL Server数据库。作为数据存储后端,SQL Server支持通过SQL语句完成表的创建、数据的增删改查等操作,还可借助存储过程和触发器提升功能与安全性。四是数据库设计。系统数据库设计关键,包含“学生”“课程”“成绩”等表,通过主外键关联数据,如“学生”表与“成绩”表通过学生ID关联,“课程”表与“成绩”表通过课程ID关联。五是B/S架构。采用浏览器/服务器架构,用户经Web浏览器访问系统,计算与数据处理在服务器端完成,降低客户端硬件要求。六是安全性。系统设置身份验证与授权机制,如登录验证,确保信息访问安全。同时,为防范SQL注入等威胁,采用预编译语句或ORM框架处理SQL命令。七是异常处理。Java的异常处理机制可捕获运行时问题,保障系统稳定性与用户体验。八是报表统计功能。系统具备成绩统计功能,如计算平均分、排名、及格率等,常使用聚合函数(SUM、AVG、COUNT等)和GROUP BY语句。九是设计模式。开发中可能运用单例模式、工厂模式等,提升代码可维护性和复用性。十是版本控制。项目可能使用Git等版本控制系统,便于团队协作与代码管理。 该学生成绩管理

    cmd-bat-批处理-脚本-prog.zip

    cmd-bat-批处理-脚本-prog.zip

Global site tag (gtag.js) - Google Analytics