如何成为软件高手

成为软件架构师需要什么? 在我作为软件工程师和软件架构师的过去 20 年的职业生涯中,我与各个领域和学科的软件工程师进行了许多对话。他们中的一些人是拥有 8 年或 10 年经验的高级工程师。他们中的许多人在职业生涯的早期就拥有 3 到 5 年的经验。其中一些是我的同事。有些是求职者。在某些时候,他们都以我一遍又一遍听到的同一个问题告终:“我想成为一名解决方案架构师。有哪些资源可以进一步了解建筑?”— 许多软件工程师提出的... 阅读详情

从事软件业也有几年了,经历几多个不同的公司、不同企业文化、不同的开发流程,不变的身边总是有零星高手和多数的普通程序员。我总是苦苦思索,一个刚入行的程序员如何才能成为一个软件高手呢?在这里我们不讨论那些奇才怪才,比如几岁或十几岁就接触电脑、初中高中就会编程,或者大学期间就积累了一些经验和人脉,或者辍学开公司去了的牛人们。我们只讨论一个普通的或相对优秀的程序员,在公司里工作的过程中如何成长为一个高手。

    近几年国内的大学,计算机专业毕业的学生,上学期间只有几名学生有过软件业相关的实践,大多数可能连编程还不懂,即使学过c、c++、java课程。我一直反对大学毕业考研或者保研、直博或者考博然后留校任教。因为上学期间即使做过实习,与真正的商业上的开发也是有区别的,一般公司不会把重要的任务交给一个实习生去做。何况大部分人没有实习经历,你可以想象这样的老师能教出什么样水平的学生。

    在几年的工作过程中,我发现很少公司有很好的培训体系,能够为自己员工的职业生涯发展做出系统规划和扎实培训的公司。一方面有些公司并不想去做这些,因为投入很大,并且效果不见得好,更可能为竞争对手做嫁衣裳;另一方面即使想去做,也很难找到合适的人去做。这里面很大一部分原因是国内搞软件的整体风气比较沉闷、缺乏交流,跟管理咨询行业的培训根本没法比。

    写这个系列的目的是与大家探讨从小工到专家的成长路线,这是一个地图,是一个导航,条条大路通罗马,我愿意选择相对省力又高效的途径。至少不要南辕北辙。并不是说我就是高手,也不认为不是高手就没有资格说这个话题。太多人沉默不会有好的结果的。各方面都是这样,大家只要看看我们生活的人文社会环境就知道了。

     这篇作为这一系列的序言,总体介绍一下我认为初学者成为软件高手需要掌握的必备技能,这些不是充分条件而是必要条件。

    1. 一门语言的语法,SDK的常用API,算法与数据结构

        有了上面的知识,再加上一点实践,再从网上找一些笔试题做几套,基本可以过笔试这一关。

    2. 编码规范、高性能编码经验技巧。

        要成为一个职业化的、专业化的程序员,首先要养成良好的习惯,良好的习惯从规范化的点滴日常工作开始。

    3. 熟练掌握IDE、常用工具的使用

        工具可以提高生产力,用一把小刀去砍树很困难,用电锯立刻变得很简单。

    4. 面向对象的原则

        这里重点掌握面向对象的原则,比如:单一职责原则 SRP、开放-封闭原则、替换原则LSP、依赖倒置原则DIP等,明白了这些原则,对后面内容理解的深入会有很大的帮助。其实这才是根本,不了解这些原则去学设计模式有种空中楼阁、头重脚轻的感觉。根基不牢上层建筑就好像浮云一样。

    5. 重构

        重构就是在不改变软件功能的前提下改善代码的设计以提高可维护性。修改别人的代码或者优化自己的代码都需要用到重构技术

    6. 设计模式

        基于一些常用的模式来学习如何使用设计模式。设计模式对于做框架开发的程序员比较有帮助。我们会选择一些常用的来讲解。

    7. 最重要、最难,看上去却最简单的功夫:修改代码的艺术

        我看到很多新员工进入大公司都是从这步做起,但我认为代价是很大的,无论对公司还是员工本身。对公司来讲,一个没经验的人修改了一个bug,可能会引出几个问题,然后再去修改,如此恶性循环。对于员工来讲,赶鸭子上架,不了解代码的逻辑、针对表象简单粗暴的修改,有时我看了真的很是心痛。对程序员本身的能力提高也是缓慢的。其实修改别人的代码开始是功夫,之后就是艺术。就好像你要给一个人治病,你要成为医生,先要掌握人体基本结构、各个脏器的特点、各种药物的功能、常用的诊治方法等等,医院不会让一个医学院毕业的学生去给病人看病,总要有段实习,由经验丰富的医生带一段时间。然后从难度较低的做起。

    8. 架构设计

        这一点我是不太自信的,一是感觉资历不够,二是在这一点上能忽悠的人太多,而这又不是我的强项,我诚实的说出自己的看法可能被误解,不过这是成为高手必不可少的部分,这里就与大家共同探讨。

    9. 软件工程

        开发软件的过程,我经历过公司从CMM到敏捷的转变,我个人是比较推崇敏捷开发的,这里想与大家站在工程的角度聊一聊软件开发。

    10. 质量管理

        越往后其实越偏向管理了,开始是个人修炼,后面是站在组织、站在公司的角度来看软件。质量是说得多、做得少,尤其在软件领域,我一直觉得很邪门的事情是不懂软件开发的人甚至被淘汰出去的人去从事软件行业的质量管理,真是令人担忧。质量管理中有很多很好的理论和工具,是值得我们学习的,不只可以应用到软件开发上,生活中也很有用的。

       国内很多IT培训机构基本上也是停留在应试教育,就是以通过笔试面试为目的,再往后整个行业的职业培训几乎没有。这里原因很多,我不想多谈,这是中国软件从业人员的悲哀。

       希望通过这个系列的文章,能够帮助一部分程序员成长,同时也希望更多老鸟高手给我一些指导,因为你们不站出来才有我的看似有点张狂,实际上我是很谦虚的。

http://www.cnblogs.com/suiyc/archive/2011/05/27/2059733.html

重构于模式、修改代码的艺术PDF 在不改变代码外在行为的前提下,使得代码更加健壮、易读、可扩展、改进代码设计 立即下载

相关推荐

修改代码的艺术(扫描高清中文pdf版)

修改代码的艺术(扫描高清中文pdf版) 9part,共13part

修改代码的艺术(奋斗的小鸟)_PDF 电子书

下载地址:

奋斗的小鸟之博客 1456

修改代码的艺术 (PDF电子版)

修改代码的艺术.pdf 让你更好维护老代码,快速上手能修改。

《修改代码的艺术》

分享书籍《修改代码的艺术》 我的百度云链接:https://pan.baidu.com/s/1DkLpUzARHvCHjzksAG3kwg 微信扫描二维码,关注成功后,回复《修改代码的艺术》即可获得链接密码,如下图所示回复方式都可以, 这是我自己的公众号,如果大家对以后公众号的内容感兴趣,可以保留,如果不感兴趣拿到密码后也可自行取关,嘿嘿。...

Mr.Xie的博客 1850

修改代码的艺术 pdf

低价大放送。。。。

修改代码的艺术(完整书签)

修改代码的艺术(完整书签)

修改代码的艺术(中文版)pdf

下载地址:网盘下载内容简介······我们都知道,即使是最训练有素的开发团队,也不能保证始终编写出清晰高效的代码。如果不积极地修改、挽救,随着时间流逝,所有软件都会不可避免地渐渐变得复杂、难以理解,最终腐化、变质。因此,理解并修改已经编写好的代码,是每一位程序员每天都要面对的工作,也是开发程序新特性的基础。然而,与开发新代码相比,修改代码更加令人...

weixin_30847865的博客 884

修改代码的艺术 [Working Effectively with Legacy Code]

☆ 说明如下:☆ 《修改代码的艺术》 《Working Effectively with Legacy Code》

如何成为优秀软件设计师

如何成为优秀软件设计师Just some ideas from other place , Hope these can give you some new ideas : ::) 1、人比技术重要; 2、理解要实现的东西; 3、要谦虚; 4、理解用户需求; 5、需求很少改变,改变的是对需求的理解; 6、保持阅读的好习惯; 7、降低软件耦合度; 8、提高软件内聚性; 9、考虑软件可移植性; 10、

SHOOOW博客 2771

修改代码的艺术.pdf。part13

修改代码的艺术.pdf。 扫描版 非文字版,有点大

交流电路计算方法:复阻抗和相量法

一,复阻抗 电容电路,电压与电流的大小比值是XC=1/WC,相位上电流比电压超前90度 这样描述很麻烦,在复平面里,相位超前90度,可以用什么数学表示呢? 也就是说,一个相量,乘以j之后,大小没变化,相位变得超前90度了 同样的,大小不变,相位落后90度应该除以j 原来我们说电容电路,给个电压,算电流又要算XC,又要另外说相位超前90度,现在可以简单点 在这个计算式里,1/wc还是原来的容抗大...

theory and practice的博客 3万+

如何成为优秀的软件人才

如何成为优秀的软件人才                      ——让普通人成为优秀软件人才的经验之谈                       林  锐   博士 1. 软件白领的现状 1.1 青年白领阶层小康了吗     改革开放20年之后,中国基本上解决了全民的温饱问题。现在国家提出了“全民奔小康”的奋斗目标。所谓“小康”是指全国人均年收入达到1000美元。你千万不要觉得“全民奔小康”这

齐天大圣的天空 2161

《AI应用架构师智能特征工程实践的前沿趋势解读》

面对传统方法的局限性,智能特征工程(Intelligent Feature Engineering)应运而生。智能特征工程是指利用人工智能、机器学习和自动化技术,实现特征提取、构造、选择和优化过程的自动化、智能化和可扩展化的方法和技术体系。效率提升:将数据科学家从繁琐的人工特征工程中解放出来,大幅缩短特征开发周期。质量保障:通过系统化方法发现人类难以察觉的特征模式,提高特征质量和模型性能。可扩展性:能够处理大规模、高维度和多类型的数据,适应不同领域和场景。降低门槛。

大数据洞察的博客 1181

如何成为一名软件架构师

希望,谢谢!

liuxingyu3000的专栏 130

Ubuntu20.04复现instant-ngp,自建数据集,导出mesh

本次仅仅记录一下自己复现instant-ngp的过程,如果里面的参考有冒犯到原博主请联系我删除,本人也是nerf的小白一枚,可以一起交流学习神经辐射场,希望大家在复现instant-ngp的时候少走一些坑,情况允许下可以去复现一下npg-pl和nerfStudio,最后希望大家一起进步。看到一些博主说葵司的npg_pl也不错,而且葵司是台湾人,在youtube上也有讲解的视频。渲染的效果还是可以的,相对于源码来说还是有点模糊,我一些参数也没有设置,直接就拉进来进行渲染,速度是非常快的。

weixin_59961223的博客 9451

sap 标准委外和工序委外_SAP PP 工序委外详解

在SAP里有外包和外协两种:外包:指把原材料发出去,扣减库存,然后供应商加工生产,最后再作为成品入库。主要是在MM模块下实现的。对应的英语叫Subcontracting。外协:一般是指某种工序外协,在工艺路线里设置某个工序为外协后,系统自动会产生一个采购订单,一般是指采购某种服务。采购回来后再继续本公司的其他工序。主要是在PP模块下实现的。对应的英语叫Processing。2.当有委外加工的业务流...

weixin_26849971的博客 4579

成为软件工匠

软件工艺活动探讨了把实践作为开发编程技能以成为软件工匠的一种方式。大家都认为技术实践非常重要,它值得花时间去学习,以成为更好的程序员。\u0026#xD;\n\u0026#xD;\n软件工艺宣言是这样说的:\u0026#xD;\n\u0026#xD;\n作为有追求的软件工匠,我们正在通过实践不断地提升专业软件开发水平,并帮助其他人学习这门工艺。在工作过程中我们总结了以下的价值观:\u0026#xD...

啊啊啊啊2 372

【第六届起重机创意大赛国一作品——资料分享】

文章目录前言一、比赛内容分析二、确定方案与作品模型1.方案简图2.作品模型三、电控部分控制思路单片机选择与资源分配拓展板的设计接线与走线代码分享总结

qq_19308801的博客 7781

成为软件高手的几个忌讳

成为软件高手的几个忌讳1) 不会英语:CS源于美国,重量级的文档都是英文的。不会英语,那么你只能忍受拙劣的翻译和大延迟的文档(翻译出来的文档几乎都是很久以前出版的东西)。 2) 急于求成:什么都没学习就开始编程是最大的机会。写C++程序语法都能错,数据结构连线性表都不知道,数据库不知道关系模型,TCP编程不知道socket,还是先坐下来学习几年再说(如果说工作急需,我只能说:早

北斗星上的尘 的专栏 1278

ACR 磁共振安全手册 2024 更新版:全面保障 MRI 安全实践

MR 环境:MR 系统周围的三维空间,包含法拉第屏蔽体积和 9 高斯线,医疗设备在此区域可能因暴露于 MR 设备产生的电磁场而构成危险,需进行访问控制以降低风险MR 受控访问区域:MR 系统周围的局部定义区域,包含 MR 环境(包括其静磁场),访问仅限于授权人员MR 抛射物区域:围绕 MRI 系统的 IV 区区域,铁磁物体在此有成为抛射物的风险图一 磁共振环境:场地规划与区域划分。

楚山之石的博客 2600

SAP Fiori 会话超时全解析:从 Launchpad 到 Identity Authentication 的统一策略

SAP Fiori会话超时机制解析与配置策略 本文深入探讨SAP Fiori项目中的会话超时机制,分析其对系统安全和用户体验的双重影响。文章系统拆解了SAP Fiori Launchpad与SAP Cloud Identity Services之间的会话超时工作原理,重点介绍了两种超时机制:服务器驱动的超时(通过SESSION_TIMEOUT_STOP_DATA_REFRESH参数控制)和UI驱动的超时(通过SESSION_TIMEOUT_INTERVAL_IN_MINUTES参数控制)。文中结合制造业产线

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 213

怎么样才能成为软件高手呢?

suyeyun的专栏 417

【ODX介绍】-5-用于Flash刷写的ODX-F文件概述

用于Flash刷写的ODX-F文件概述

「汽车电子助手」的博客 2531

如何成为软件架构师

什么是软件架构师? 架构师(Architecture)是目前很多软件企业最急需的人才,也是一个软件企业中薪水最高的技术人才。换句话说,架构师是企业的人力资本,与人力资源相比其能够通过架构、创新使企业获得新的产品、新的市场和新的技术体系。那么什么是架构师、架构师的作用、如何定位一个架构师和如何成为一个架构师呢?这是许多企业、许多程序员朋友希望知道的或希望参与讨论的话题内容。 所谓架构师通

huanggang982的专栏 825

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: Demo整理(一)----- 字体竖直排版的实现
下一篇: Fragment小实例
Steffen02
博客等级 码龄16年 138粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值