不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。
1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。
2. 丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。
3. 最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。
4. 不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。
5. 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。
6. 多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。
7. 良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。
8. 韧性和毅力。这也许是"高手"和一般程序员最大的区别。A good programming is 99% sweat and 1% coffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。
这些是我这几年程序员生涯的一点体会,希望能够给大家有所帮助。
相关推荐
Unity3D中修改Text文本颜色与还原方法
Color属性是一个RGBA格式的颜色,我们可以使用Color类的构造函数来创建一个新的颜色对象,然后将其赋值给Text组件的Color属性。本文介绍了在Unity3D中修改Text组件的文本颜色和还原文本颜色的方法。我们可以通过获取Text组件的Color属性来修改文本颜色,也可以使用ResetColor()方法将其还原为默认颜色。有时候,我们需要在代码中动态地修改Text的文本颜色,或者将其还原为默认颜色。上述代码中,我们首先在Start函数中保存了Text组件的默认颜色,然后将其颜色设置为红色。
作者:金蝶中间件公司CTO袁红岗
不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。 1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一
Cadence IC618/Spectre231安装避坑指南:详解环境变量配置与License管理那些事儿
本文深入解析Cadence IC618/Spectre231安装过程中的环境变量配置与License管理难题,提供从变量冲突解决到高效License管理的实用方案。针对常见的64位标识冲突、路径污染及License服务器连接问题,给出具体诊断步骤和优化建议,帮助用户构建稳定可靠的EDA环境。
【胡思乱想之】为什么大多数人认为”技术“不重要?
吐槽一下,关于自身周围这个对“技术”不重视的环境
期末求生指南:手把手教你用F12开发者工具绕过百一测评的切屏检测(JavaScript/jQuery实战)
本文详细介绍了如何利用F12开发者工具绕过百一测评的切屏检测,通过分析JavaScript/jQuery中的blur()和focus()事件监听机制,提供实战技巧动态修改代码。文章涵盖事件监听定位、代码修改方法及应对高级检测机制的策略,适合需要临时解决线上考试限制的学生参考。
手把手教你用PLECS仿真BUCK数字电源(含DSP代码实现)
本文详细介绍了如何利用PLECS仿真软件与Visual Studio 2022搭建高保真数字电源开发环境,手把手指导从BUCK电路建模、编写硬件感知的C控制算法到参数调优的全过程。重点阐述了通过DLL接口实现软件在环仿真,模拟DSP的ADC/PWM时序,并将验证后的代码无缝迁移至TI C2000系列DSP,构建从仿真到固件的完整数字电源开发闭环,显著提升开发效率与一次成功率。
对话名企CTO,AI求职6问
在互联网行业流传着这样一句话:“得人工智能者得天下。”人工智能可以说是当下最火热的领域。 据统计,到去年年底,在财富 500 强企业中,有 180 家对外宣布将要启动人工智能项目,从 Google、Facebook、亚马逊到国内的华为、 BAT 等顶尖科技企业,都在热忱地以高薪招募人工智能专家。以机器学习工程师为例,该岗位少则月薪1-2万,多则年薪百万,很多行业巨头甚至会以月薪几
GoDaddy域名解析 到 阿里云域名DNS
一:登录GODaddy,点击“个人中心”,然后点击“管理域名” 二:域名解析 第一种:直接解析到对应的服务器 添加一个,类型默认A,主机填写二级域名前缀(image.主域名),指向填写目标服务器ip即可(注意目标服务器80端口是否开放) 第二种:将主域名dns转到阿里云域名下 三:若要修给为阿里云解析服务器,要做以下修改,点击“更改” 点击更改后出现如下页面,此时需要到阿里云官网云解析DNS下添加域名解析 四:阿里云添加域名解析...
程序员如何能提高自己的编程水平?
读书破万卷,下笔如有神,虽然网上有各种各样的视频教学和技术博客,但我个人觉得它还是过于零散而不成体系,那些优秀的技术书籍能作为一本工具书,让你随时查漏补缺,从而实现编程水平质的提升。当你学不下去的时候,可以先去看看大厂的JD,去刷刷外包私活的岗位要求,你就会发现人外有人,天外有天,还需要付出更加艰苦卓绝的努力。②试图去接一些外包私活,完成一些你已经很久没有接触过的项目,在和甲方对接的过程中磨砺自己的技术水平,同时还可以获得一笔不错的收入。①不要问自己这样做有什么意义,找到一个目标,做就对了。
Codesys电子凸轮功能块MC_CamIn的masteroffset和slaveoffset参数的使用
问题1:在Codesys使用作轴电子凸轮时,MC_CamTableSelect的参数设置为MasterAbsolute=1,SlaveAbsolute=1,此设置为绝得模式, 此时主从轴当前位置都不为零时,此时Masteroffset=0、slaveOffset=0,凸轮启时出现突变,实轴无法启动。问题分析:在觉得模式下,主轴位置和从轴为是对应凸轮表的相位的,Masteroffset=0、slaveOffset=0,启动点时在主轴位置=0,从轴位置=0的点启动,此时主轴当前位置不为零则主从轴位置发生突变,
手把手教你用Cadence VPWLF源和参数扫描:搞定非周期激励与gmid曲线绘制(避坑指南)
本文详细介绍了如何在Cadence Virtuoso中使用VPWLF源生成复杂非周期激励信号,并结合gmid方法进行双参数扫描优化电路设计。通过实战案例和避坑指南,帮助工程师高效解决波形生成和参数可视化难题,提升模拟电路设计效率。
为了提高编程水平,来到了这里!
为了提高编程水平,所以来到了这里.希望能够跟各位高手学习.
【100%通过率】华为od统一考试B卷【需要打开多少监视器】JAVA&Go 实现
某长方形停车场,每个车位上方都有对应监控器,当且仅当在当前车位或者前后左右四个方向任意一个车位范围停车时,监控器才需要打开:给出某一时刻停车场的停车分布,请统计最少需要打开多少个监控器
如何通过ChatGPT提高自己的编程水平
通过ChatGPT,我们可以更加高效地解决编程中的问题,提升编程水平。它不仅是一个智能的代码助手,还是一个强大的学习工具,能够帮助我们不断进步。无论是初学者还是有经验的开发者,ChatGPT都能为我们提供及时的技术支持和学习资源。最重要的是,ChatGPT能够根据我们的提问和需求进行个性化的回答,帮助我们更快地理解复杂的概念,迅速掌握新技术,提升我们的编程水平。随着AI技术的不断进步,未来我们将能够依靠ChatGPT来提升我们的编程能力,从而在开发领域中更加游刃有余。
Lumerical 教程,包含作者个人理解及相关设计案例 (目前共计184篇,持续更新中)
4138。
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
如何提高编程水平
我列举了一些提高编程水平的方法: 加油,努力! 不会要问 可以定一个小目标,尝试完成它 完成小目标后,根据自己的实际情况再定一个目标 写游戏的,先学算法,好的游戏是算法搭出来的 竞赛的,尝试疯狂刷题(前提是健康要保证) 不要放弃 要积极,不要消极 当然,饿了就吃、渴了就喝、困了就睡,不要强迫自己哦! 以上条例可能会和别人的差不多,但这篇文章是我绞尽脑汁原创的! ...
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
如何提高自己的编程水平 [转载]
如何提高自己的编程水平 by ahtbcffffrom:http://www.eimhe.com/viewthread.php?tid=10596&extra=page%3D1内容: 不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。 1. 扎实的基础。数据结构、离
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
如何提高自己的Java编程水平
学习了java,感觉学习java,方法很重要,还有原则!所以从网上找了一些提高自己java编程水平的原则。在此展示,希望大家了解、了解。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。 1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当你
怎样运用刻意练习提高自己的编程水平
最近在阅读《刻意练习》,怎样运用刻意练习提高自己的编程水平有点想法: 刻意练习的重点在于刻意,刻意的针对自己薄弱的环节,不断的重复练习,从而提高自己,而不是无意思的重复自己已经熟悉的方面练习。 刻意练习的另一个方面及时的反馈。及时反馈是为了能让练习者尽快的知道自己做的对还是不对。从而知道自己在应该在哪个方面做刻意的练习。 对于程序员来说,代码是否能正确的运行,是否能到达需要的效率。这样的及时反馈...
如何提高Java编程水平
如何提高Java编程水平 不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。 1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他...
程序员如何提高自己的编程水平?
编程水平的概念有点大,我们这里约定编程水平是指代码正确性,代码的逻辑性以及代码可读性三个方面。根据多年的编程经验,总结一下提高编程水平的几个建议,偏颇之处,还请高手们评论中指正,下面和小编一起来看看吧! 一、提高代码的正确性 所谓代码的正确性是指程序在运行过程中,代码层面运行正常。也就是我们常说的代码健壮(代码健壮其实还包含业务层面)。 1、关于编程手册 通常,代码正确性反映工程师对一门语言的掌...
1836



被折叠的 条评论
为什么被折叠?



