程序员

作为一名程序员,我为什么要做写作这件事?

大憨熊 提交于 2019-11-26 13:51:15
工作了好几年,逛了好几年的程序员论坛。在论坛里看过很多帖子,通过帖子的讨论也解决了很多实际的工作问题。但是有一个问题总是无法得到切实的答案,这个问题就是: 作为一个程序员,要不要坚持写作这件事 。 疑惑主要有两点: 现在写文章的程序员那么多,海量文章已经覆盖了工作中能遇到的几乎所有问题,如果我花费时间精力写出重复主题的东西,是不是在浪费时间,俗称划水:) 我写文章,到底能解决什么实际问题。 目前为止对于问题一的体会还不是很深,但是对于问题二的答案我想已经被我找到了,那就是: 坚持写作,是为了掌握不常用的技术栈。 对于找到这个答案的机缘,是因为我最近看了一本叫如何高效学习的工具书,书里引申了很多学习方法,通过这本书我又查阅了很多类似的资料,最终遇到了经典的费曼学习法。 下面来说一说费曼技巧: 找到一张白纸。 在白纸上将最重要的概念,流程写下来(在一本书中我们需要去选择) 想象将给一群人讲授这些概念,将如何去讲,如果有卡壳的地方,回归回去学习。 简化,用自己的语言去阐述这个概念,可以用类比、比喻、故事等方式去延伸。 简单来说,就是不借助外在的提示,把学过的知识,通过自己这个主体,用自己的方式,将知识重新’生产’出来。当你成功的产出了,或者用这些知识解决了实际的问题,那么你就掌握了它们。 本着程序员学以致用的思维:),这段时间我一直刻意练习这种学习方法,感觉学习过程变得更加吃力了

程序员越老,越容易阴沟里翻船,很多人都不懂

寵の児 提交于 2019-11-26 12:57:52
做了这么多年开发,期间出过数不尽的bug,发现往往最难解决的问题都是小问题。 小阴沟翻车这么多年不止一次,凌晨2点回到家也在想这些问题,晚上做梦还在想,睡不着。很多的时候心里也知道是小问题,但是始终解决不了。 感觉自己可以解决但是始终解决不了,很不懈。哎。反思啊。 这么多年遇到过很多bug坑: 1、业务经验不足,照着文档结果还是漏了很多。这个应该老大去修改更完整的文档。原始设计就是错的,也应该归在这里,也是需要重新设定设计。 2、工作任务重,比如同时分配了好多不大相关的东西,导致了无法专心。这个应该老大合理调配任务,比如尽量分类型类似的任务。当然自己本人也应该合理分配自己时间,让自己不要处于混乱的状态。 3、代码习惯不好。有人喜欢复制代码,或者写很长的函数,或者硬编码这种。这种坏毛病很多。都是很容易出错的地方。 4、加断点、打log… 很多时候算法太复杂了, 自己也不知道正确的值应该是什么样的,即使单步跟踪都看不明白是对是错… 还有一个办法挺有效,拿起你的笔头,在纸上画画可能就明白了。 5、个人不重视。有人把完成功能觉得理所当然,所以顺着感觉就写下来。觉得反正后面有测试。但其实,大部分人完成的代码并没有高深的算法,就是逻辑。写完,照着功能逻辑,再想两个异常,调试两次,一般代码的问题可以少很多。但是有时候就是做不到,代码写完,觉得很简单,编译通过就提交。这个,我见过不少次

90%程序员都是在打破重粘贴

一曲冷凌霜 提交于 2019-11-26 12:55:45
需求一个挨着一个,先弄个样子出来,先写死,后期再改。没有产品设计、没有需求文档、没有测试、甚至连美工、发布也得我一个人兼着,时时安慰自己,反正写代码最拿手,功能实现再说,以后有的时间慢慢改呗。 分析 懒,自己挖坑自己填 就是复制粘贴,所谓复用,90%的时候就是打破重粘贴。所谓架构,就是知道去抄啥;所谓开发,就是老大说抄我就抄;所谓初级开发工程师,就是东看看西看看,瞧瞧别人怎么抄,自己跟着抄;所谓高级开发工程师,就是同一个模块抄过一遍的人,第二遍更熟点。 Github搬运工 有现成的用现成的,没现成的找现成的,找不到就不做了,对外宣称无法实现。 我们不是在抄,我们做的叫 “系统集成” 但是如果需求变了,就瞪眼了,我X,这个模块如果改我就需要写10个地方,因为当初没有抽出来做个公共的,这就是自己挖坑自己填。 遇见问题从不思考,直接百度,百度已经有人遇见想通的问题,我永远不是第一个遇见这个问题的人。 时间太紧,加班 软件行业的竞争就是速度的竞争,比如吃鸡手游,先上线往往意味着先占领市场。所以公司会夜以继日的拼速度,加班就在所难免了。程序员其实不喜欢加班。但是行业就是这么个行业,加班就像是约定俗成的行业规矩一样。不加班的程序员也有,要么非互联网行业,不存在速度竞争,比如给企业做个管理系统啦,维护啦。要么就是外企,严格按标准发放加班费的那种。否则你在这个行业中,加班就是不能避免的事情

代码之美——《重构》、《代码整洁之道》

天涯浪子 提交于 2019-11-26 12:43:11
什么样的代码才是美的代码?一千个coders可能会给出一千个答案。今天,让我从一个简单的角度来谈谈对于代码之美的理解。 可读性高的代码才有可能是美的代码 相信大家都有过这样的经历:接手一个项目要修复bug或者开发新功能的时候,发现代码可读性非常差。哪怕是在有说明文档的情况下,都不太敢提交代码,唯恐引入新的bug或者直接导致系统崩溃。 软件系统在代码方面的成本分为两部分,第一部分是开发成本,第二部分是维护成本。 开发成本很好理解,就是把一个系统开发出来需要支付的各种成本,其中最大一块很可能是人力成本。任何一个大型软件系统都不可能没有bug。系统开始运作之后,这些bug可能会导致业务出错、运行缓慢,甚至是宕机,需要程序员找出漏洞并且修复上线。在这一阶段的成本,我们称之为维护成本。 运维成本往往会超过开发成本。我毕业后的第一份工作是在一家ERP公司做二次开发,最早的代码注释时间有十几年前的,常年从事维护开发工作的人员超过十个人。开发需要的时间远比维护的时间要短得多,维护人员的数量并不会比开发人员的数量要少太多。 如果适当增加开发成本可以大幅减少维护成本,那么对节省整体成本有着极大的帮助。 在进入到互联网时代的今天,像ERP这样开发完成之后变化不大的“重”系统已经不多了,模块化、服务化的“轻”系统已经占到绝大多数。这些现代软件系统强调的是迭代开发,以月或者周为单位更新版本

Java介绍-百度百科

断了今生、忘了曾经 提交于 2019-11-26 12:06:50
Java 是一门 面向对象 编程语言,不仅吸收了 C++ 语言的各种优点,还摒弃了C++里难以理解的 多继承 、 指针 等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 [1] 。 1996年1月,Sun公司发布了Java的第一个开发工具包 (JDK 1.0) ,这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。9月,约8.3万个网页应用了Java技术来制作。10月,Sun公司发布了Java平台的第一个即时 (JIT) 编译器。 1997年2月,JDK 1.1面世,在随后的3周时间里,达到了22万次的下载量。4月2日,Java One会议召开,参会者逾一万人,创当时全球同类会议规模之纪录。9月,Java Developer Connection社区成员超过10万。 1998年12月8日,第二代Java平台的企业版J2EE发布。1999年6月,Sun公司发布了第二代Java平台(简称为Java2)的3个版本: J2ME (Java2 Micro Edition,Java2平台的微型版),应用于移动、无线及有限资源的环境; J2SE (Java 2 Standard Edition,Java 2平台的标准版),应用于桌面环境; J2EE

OSChina 技术周刊第十一期

最后都变了- 提交于 2019-11-26 11:49:52
每周技术抢先看,总有你想要的! 前端开发 【软件】 Chartist.js —— 基于 SVG 的响应式图表库 【博客】 node.js构建http服务器(一) 【博客】 AngularJS SEO 简易教程 【资讯】 Semantic UI 1.0 发布,前端 UI 框架 服务端开发/管理 【翻译】 HTTP/2 常见问题回答 【软件】 持续集成和发布服务器 Strider 【软件】 Trailblazer —— Rails 的扩展概念驱动开发框架 【软件】 Java数据库移植框架 Flyway 【博客】 Tiny快速入门之服务开发 【博客】 Tiny快速入门之Web界面快速开发实践 【博客】 Tiny1.2.0预览版全面开源 【博客】 自己动手编写IOC框架(一) 【博客】 自己动手编写IOC框架(三) 【博客】 nginx动态代理方案(续) 【博客】 从零搭建LNMP环境(三) - 安装MySQL数据库服务器 【博客】 通过Express4构建Restful API服务器 - 结合AngularJS 【资讯】 即将到来的 GCC 5.0 为 x86 带来的新优化 游戏开发 【软件】 基于HT for Web的3D呈现A* Search Algorithm 【博客】 HT for Web基于HTML5的图像操作(三) 编程语言 【翻译】 C++17 将有什么变革? 【软件】

Java编程思想---第一章

本秂侑毒 提交于 2019-11-26 10:57:02
第一章 对象导论   计算机革命起源于机器,因此,编程语言的产生也始于对机器的模仿。但计算机并非只是机器那么简单,面向对象程序 (Object-oriented Programming, OOP) 设计便是以计算机作为表达媒体的大趋势中的组成部分。 1.1 抽象过程   所有编程语言都提供抽象机制,人们所能够解决的问题的复杂性直接取决于抽象的类型和质量。   面向对象方式通过向程序员提供表示问题空间中的元素的工具而更进一步,这种表示方式非常通用,我们将问题空间中的元素以及在解空间中的表示称为 “对象”。这种思想的实质是:程序可以通过添加新类型的对象,使自身适用于某个特定的问题。这是一种更灵活和更有力的语言抽象。   Alan KAy 总结了第一个成功的面向对象语言,同时也是 Java 所基于的语言之一的 Smalltalk 的五个基本特性,这些特性表现了一种纯粹的面向对象程序设计方式:     1) 万物皆为对象。 将对象视为奇特的变量,它可以存储数据,还可以要求它在自身上执行操作,理论上讲,你可以抽取带求解问题的任何概念化作构件。     2) 程序时对象的集合,它们通过发送消息来告知彼此要做的。 要想请求一个对象,就必须给该对象发送一条消息,可以把消息想象为对某个特定对象方法的调用请求。     3) 每个对象都有自己的由其他对象所构成的存储。

程序员除了高薪,还有什么理由坚持做下去?

倖福魔咒の 提交于 2019-11-26 10:34:02
科技公司一直都在努力弄清楚如何才能让员工愉快地工作。然而,这并不是一件容易的事。根据我自己的经历,我接触的技术人员平均在一家公司供职的时长为18个月。每当我询问他们的离职原因时,得到的答案通常都是那么几个。 他们之所以不考虑离职,我总结出了六个我认为最重要的原因。当然,薪水很重要,但如果无法满足以下情况,仅仅靠薪水也无法留住员工。 1.相处愉快的领导 有人说,员工离职不是为了离开这份工作,而是为了离开他们的领导。千真万确!你应该与你的领导保持紧密的联系,能够彼此信任。而你的领导应当站在你的立场上为你着想,能够捍卫你的权利。说话时态度要尊重,不能对你颐指气使,不能滥用权利或者侮辱你。我所共事过的很多领导直到今天都依然是我很好的朋友。 管理或许是世界上最困难的事情之一。当然,成为领导不难,成为一位优秀的领导则很难。你需要为团队努力工作,拟定期望并保持士气高昂。这并不是所有人都能轻松做到的。 在我入职的第一天,我的领导把我隆重介绍给大家,还组织了团队聚餐,所有人都跟我碰杯并表达对我的欢迎。每周我和领导都会进行一对一的会议,跟踪我的工作进展,讨论并解决遇到的问题,这让我非常舒心。这些事虽小,但非常重要。 2.鼓励新技术和创新 这可能更多地与我现在处于高级职位有关,但我觉得团队的创新想法会进入我们的应用程序或者工作流程。新技术以及新思想推动受阻或许因为公司太大,公司到了一定规模

程序员的情人节

流过昼夜 提交于 2019-11-26 10:32:49
今天是一个好的节日,七夕呀! 程序是最好的女朋友,它是不会骗你的。它偶尔会发些小的情绪。只是你没有懂它。 来源: https://blog.csdn.net/qq_34244712/article/details/98787717

本年度C++程序员如何创造意想不到的七夕情人节表白神器!

橙三吉。 提交于 2019-11-26 10:30:00
让C/C++程序员告诉你什么叫浪漫,表白黑科技,炫酷多彩求爱利器 最近抖音上火了一个由小伙伴自己制作的一个表白代码,很多小伙伴都在问这个表白代码是怎么写的?大家都知道是使用vbs实现的!虽说我也承让VBS实现更简单,但是如果把打印心那个程序用起来,C语言是反而更妙一点。今天小编带着大家用C语言实现下,顺带复习下C语言中的格式化读写操作 (虽说用windows编程几个对话框就搞定了,但是还是用最基础的C语言实现下吧)想学习编程的小伙伴们可以关注+私信回复:“资料”就可以拿到一份我为大家准备的编程学习资料! #define _ CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> void showWindowStyle() { //设置窗口大小 system("mode con cols=15 lines=1"); system("color f0") //设置眼色为白色 system(“title 表白小程序”); //设置标题为朗读工具 printf ("做我女朋友"); } 1.头文件。 2.调整窗口样式。 3.打印一句话。 (这里我用图片表示出来,私信回复“资料”获取,手把手教程) 1.文件三部曲:打开文件,读写文件,关闭文件 2.system两部曲,打开vbs文件