惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
A
About on SuperTechFans
IT之家
IT之家
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Blog — PlanetScale
Blog — PlanetScale
aimingoo的专栏
aimingoo的专栏
云风的 BLOG
云风的 BLOG
The GitHub Blog
The GitHub Blog
Vercel News
Vercel News
G
Google Developers Blog
J
Java Code Geeks
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
Cloudbric
Cloudbric
L
LINUX DO - 最新话题
MyScale Blog
MyScale Blog
H
Heimdal Security Blog
PCI Perspectives
PCI Perspectives
Attack and Defense Labs
Attack and Defense Labs
S
Security @ Cisco Blogs
Latest news
Latest news
I
Intezer
L
Lohrmann on Cybersecurity
C
CXSECURITY Database RSS Feed - CXSecurity.com
月光博客
月光博客
T
Threatpost
博客园 - 【当耐特】
S
Schneier on Security
P
Privacy International News Feed
G
GRAHAM CLULEY
T
Tenable Blog
AWS News Blog
AWS News Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
雷峰网
雷峰网
博客园 - Franky
Engineering at Meta
Engineering at Meta
美团技术团队
S
Secure Thoughts
T
Troy Hunt's Blog
Microsoft Security Blog
Microsoft Security Blog
SecWiki News
SecWiki News
V
Visual Studio Blog
人人都是产品经理
人人都是产品经理
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Cisco Talos Blog
Cisco Talos Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Martin Fowler
Martin Fowler
Webroot Blog
Webroot Blog
Google DeepMind News
Google DeepMind News
H
Hackread – Cybersecurity News, Data Breaches, AI and More

博客园 - 灵感之源

.NET的前世今生与将来 技术人生的职场众生相 - 十多年的经验与心得 爆栈之旅 - 从接触到成为经理,从中国到澳洲 - 我这10年来的开发历程 我的回忆录-青年 爆栈三部曲:数据库开发大系技术栈 (300多技术点) Web前端开发大系概览 (前端开发技术栈) .NET技术大系概览 (迄今为止最全的.NET技术栈) 澳洲生活宝典 (兼我的2013总结) 某连锁酒店泄露数据的分析 我的回忆录 WaterfallTree(瀑布树) 详细技术分析系列 C#开源磁盘/内存缓存引擎 基于STSdb和fastJson的磁盘/内存缓存 怎样记住Integer的最大值(有趣的思维和搞笑的回答) STSdb,最强纯C#开源NoSQL和虚拟文件系统 4.0 RC2 支持C/S架构 在ASP.NET MVC 无需Web Form和Report Viewer 预览SSRS报表解决方案 STSdb,最强纯C#开源NoSQL和虚拟文件系统 C#写的NoSQL开源项目/系统(系列) 老调重弹:年龄大了,码农何去何从
我的软件开发生涯 (10年开发经验总结和爆栈人生)
灵感之源 · 2015-09-13 · via 博客园 - 灵感之源

简介

网名灵感之源,智能实验室创始人,从事软件开发超过10年,写过千万下载量软件,热衷开源,写过多个爆栈项目(系统开发技术栈、.Net技术栈、数据库技术栈、前端开发技术栈)。现定居于澳大利亚悉尼,研发经理,从事系统架构开发。

爆栈人生

现在流行说全栈。每种开发都有其相关的技术。您是否觉得难以罗列某种开发所包括对技术(技术栈)呢?

您是否想过:

  • 我做的这个职业,究竟包含哪些技术呢?
  • 我所掌握的技术这个子集,在整个技术大系这个超集里面占的比例是多少呢?
  • 我究竟还没有掌握多少技术呢?
  • 面试的时候会考哪些技术呢?
  • 那么,开发是否也应该有这样的技术栈概览图呢?

我搜索了很久,没有找到一个符合我要求的“较为全面”地表述各种技术大系的图表。所以我创建了爆栈,覆盖了以下技术栈:

系统开发技术栈

您是架构师/设计师吗?您可以在系统开发技术栈这里找到比较全面的基础、分析、项目/计划、文档、设计/建模、实现、质量、管理、编译、测试、发布、维护、排错和学习等。

Web前端技术栈

您是前端攻城师/设计师吗?您可以在Web前端技术栈这里找到比较全面的浏览器、平台、类库、框架、工具等。

数据库技术栈

您是数据库开发人员/管理员吗?您可以在数据库技术栈这里找到比较全面的关于SQL Server和Azure等数据库系统的技术细节。

.NET技术栈

您是.NET码农吗?您可以在.NET技术栈这里找到比较全面的关于.NET技术的框架、平台、IDE、开发包、桌面系统、web开发、SOA、数据访问、生产力、组件、工具等信息。

这些技术栈不仅提供相关技术的描述、网站、GitHub地址等,还提供交互式的HTML预览,方便你全面理解各种技术点的关系。

不管您是否前端攻城师/设计师、数据库开发人员/管理员还是.NET码农,我们都欢迎您加入我们的行列!

软件生涯的开始

上初二,学校开了电脑课。电脑老师叫邓腾飞,

第一次上课,眼睛里看见的是一台台白色的机器,带了个像电视的东东,能显示东西,真神奇。课程上多了,觉得电脑挺好玩的,感觉就像在跟电脑交谈,而且比较听话,从来没有人这么听我的话。不过问题来了,当时安装的是DOS3.x版,满屏幕是英文,很多都不认识。这个时候我就更加希望能把英文掌握好。

到了初三,终于有了属于自己的第一台电脑,386,DX40,4M内存,120M硬盘,当时感觉很好了。以前是一个月才回家一次,有了电脑后就常常回家了,一到家就“抱”着它,经常捣弄到凌晨4-5点。

后来电脑升级了,486,DX80,开Turbo的,4M内存,210M硬盘,光电鼠标,还带个钩可以挂到显示器边上的,很有趣的设计。至今,这台电脑还放在老家,或许,多年后,要么放博物馆,要么给孙子说:你看,你爷爷当年的电脑是这样的。

初三毕业,会考,我的英文拿了满分,英文老师很替我高兴,说这么多年没有人拿这么高分,说要奖励我一本英文语法书,名字忘记了,但我仍然记得封面颜色是红是的,而且到现在还保留着,放在老家。当时就有那么一个念头:我是为了电脑学好英文的。

电脑老师的电脑,记得是Novell的无盘工作站,我们当年为了要拿权限,试图模拟个登录界面,荡老师输入密码时,这样我们就可以盗取了。不过最后没有成功。后来学生们的电脑用上了DOS 3.x。先用的GWBASIC,后来接触了Quick BASIC和Pascal。

上了高中,在电脑课中认识了几个志同道合的人,我们平时会常常交流技术。但大家都想做自己的事情,成立自己的工作室。这跟我以后所认识到的个人英雄主义很类似。我记忆中最大的便是我们几个曾经在一个暑假中进行一个比赛,用自己最熟悉的语言写一个程序,比一下技术水平,看看谁写得更好,可惜最后不了了之(没有评比)。当时大家的作品我仍然保留着,后来一次硬盘坏了,所有以前研究的东西都没有了。

其中一个厉害的家伙是张敏锋,他在DOS下利用QuickBASIC实现了一个类似x-windows的图形化的界面 ,支持中文直接写屏、鼠标、带中文输入法、图片(自己定义的位图格式!)、动画和音乐,实在让我惊叹不已!可惜他现在不再写程序了,实在太遗憾了。

另外一个是“道友”,他更牛,特别擅长用PASCAL和QuickBASIC,他的算法功底很扎实,经常给我们演示他写的算法,并用图形表现出来。后来他上了大学了,用Delphi+DirectX写了一个很著名的《决战坦克》,效果好得不得了。多年前他在珠海金山公司开发WPS。

还有一个,名字忘记了,用汇编写了个图形功能库,在QuickBASIC中调用,实现真彩色,因为QuickBASIC的Screen12模式就支持16色。可惜现在不他的知道下落。

还有一个,阿祥,用PASCAL的牛人,实现了类似张敏锋的图形化界面,多年前他在腾讯公司写QQ。

还有一个,Chicken,这家伙最喜欢钻研技术,从DOS下的QuickBASIC到Windows下的Visual BASIC,再到VC++,再到Java,多年前在21CN做开发,现在在创业。

还有一个,Silly,这家伙好像学了10多种语言,有一些我根本没有听说过的。现在下落不明。

实际上,我们高中毕业那一届出来的,很多出来都做软件开发,可能是那一年开始市场比较热吧。

事实上,我们从正规电脑课程中没有得到多少专业知识,这应了一句老话:师傅领入门,修为在个人。在高中的时候,我们做了不少荒唐事情,其中一件跟学习电脑最难忘的是:我们“入侵”电脑老师的房子。

那应该是在读高二的时候,一个周末,我们几个热衷学习编程的在学校留宿的同学,跟平时一样,到电脑老师的房子用他的机器,因为周末的时候电脑室不开,而且电脑老师也乐意于让我们学习电脑。但那个周末老师不在家,而我们习惯了每个周末都用他的电脑,大家又没有钥匙,碰巧另外一个老师经过,说:"break in啊",当时就震惊。然后大家都说:你看,这老师都让我们闯进去了,那就闯呗。最后,我们爬窗进去了。当晚大家的确研究了不少东西。我们还在老师的房子里面开小灶,弄了一锅粥,吃得挺开心的。大家累了倒头便睡。第二天早上,老师开门看见我们和变样了的房子,“责骂”了我们一顿,他其实也没有什么的,呵呵。不过我们之后都没有在未曾得到老师的同意之前“入侵”他的房子了。

在高中,从求伯君先生的作品WPS了解到他的个人经历,很钦佩他,便把他作为我的偶像和目标,或许这便是个人崇拜吧。至今仍然记得DOS下的WPS打开文档的万能密码是CTRL+QIUBOJUN (求伯君的拼音)。

我把所有课余时间都放到学习电脑和编程中了。很少玩游戏,而且比较少参与课外活动,周末和假期都把所有时间都投入到学习编程中。

高中,学习的确繁重,但我仍然把相当多的学习时间都放到学习编程中。

毕业后知道电脑老师自己开了间电脑公司,但没有了解其近况。

第一次开发人生的感悟

在大学的时候写了篇感悟,现在原文放出来。

我是一个英文专业的大学生,但我真正想做的,却是成为一位IT人。六年多以来,废枕忘食,连那“黑色七月”前的莘莘学子浴血奋战,杀得昏天暗地的疯狂日子里,我仍然是“两耳不问窗外事,一心只顾编程序”。更离谱的是,连在答语文考卷的时候,我不由自主地想起前一阵子的还没有完成的程序来。高考结果出来却有点出乎意料,考上了第一志愿。

这六年多以来,我想成为一位IT人的愿望越来越强烈,这更让我疯狂地学习电脑知识,尽可能地接触与电脑有关的东西,关注有关电脑的信息,对自己不断“充电”。在家里时,我常常在白天构思程序,晚上从别人开始入睡的时候开始上机,大概是11p.m.吧,一直地打到窗外第一屡阳光射进我的工作室为止。原因有2: 1.晚上安静,我的思维为一天中最清晰的,这样能更好地让我发挥; 2.晚上正常的人都睡了 。

考上大学的近一年来,我总在问自己,“到底有没有选择错了?”为什么我会有这个想法呢?我理科不大好,害怕考不上大学,所以在高中分科的时候选择了文科,希望能考上大学后可以选择与电脑相关专业,即使是旁听也好。但是考上大学后,发现这根本是不可能的事情,因为我所在的大学不但没有电脑专业,连相关的专业也没有。当获悉这令我顿感近乎绝望的事实,我消沉了。不能学电脑,又能怎样?

我平时行为不羁,独来独往,不受束缚,穿着更是以舒服为重,因此经常成为老师跟同学“攻击”我的借口。老师曾多次找我做“思想工作”,苦口婆心地向我表明作为freshman应该尽量接触英语,多读英文名著,扩大词汇量......,如此云云。我当然明白老师的出发点是很纯洁的,但是,老师,你可知道,对我来说,英语,是作为我学习电脑的工具,而非电脑作为学习英语的辅助工具。我曾多次对自己说:“一定要在保证英语过关的基础下,才能搞电脑!”但往往不能keep promise,因此我常常感叹:“到底有多少人能信守承诺,又有多少人可以达成愿望?”

我每当遇到不如意的事情的时候,经常以“世事没有完美”来安慰自己,应该说是欺骗才对,因为我深知这仅仅让心里好过点,如此而已。但在这以后,又可以做些什么呢?但一件事让我明白到一句古语——“只要有恒心”的的确确是不假。体育课要考1500米,要是以前,我根本是不会害怕的,但几年来已经荒废了,颇有“廉颇老已,尚能饭否”的感觉。真正站在起跑线上时,我知道,该来的都会来了的......我不大擅长描写心理活动,想必很多网友都有过同样的感觉。结果怎样?跑了个第一。不但重拾了当年的感觉,而且深深明白:成功贵乎坚持。虽然很多网友都明白这点,但是,又有多少人能真正在实际中运用了呢?先辈虽然留下了不少的至理名言,但是,没有多少能真正体会到个中含义,这不能不说是个遗憾。

是否,

有过不知方向的感觉?

问自己,

“为什么?”

生活中,

往往决定方向的,

不是自己,

而是众说纷纭,

不知所措,

其实,

真正的方向,

是自己决定,

不由别人左右。

有感 于1999年

职业软件开发生涯

工作经历

1. 大学四年级(貌似)的时候去深圳蛇口工作了几个月,算是第一份工作吧,做的是医药销售管理系统(GSP)。公司效益不好,同事们纷纷离开,我是倒数第二个走的,最后公司倒闭了。或许这就是谣言很厉害的说我做过的公司都倒闭的来源之一吧。其实我有一个码农同事,他最近做的3家公司都倒闭了。主要用ASP和VB,SQL Server好像是6.5什么的,还是用的MMC的管理器。在这间公司认识了一个程序媛,工作期间交流多了,关系好起来,她成了我的女朋友。后来中学70周年纪念,带她回去,感觉很自豪。大家常说:“做软件开发的,哪里会有女朋友?”,其实,书中自有黄金屋,书中自有颜如玉。做开发的也可以找到女朋友。不过,后来因为一个经典的原因,分了。

2. 毕业后第一份正规的工作是做办公自动化(OA)的,应该是中国第一家公司使用ASP.NET+VB.NET+SQL Server做的。当时还是.NET 1.0 Beta,那里我第一次接触.NET,学了VB.NET (我的背景是DOS下的GWBASIC、QuickBASIC,一路到Windows下的Visual BASIC)。不过,当时很多事情发生,一直影响到现在,其中一样就是,我在那里遇到了我现在的老婆。你看,做软件开发还真能找到老婆的。 部门经理经常删除我的代码,我离职了,还冤枉我破坏服务器,公司克扣了我近两个月工资,然后我就直接回老家和老婆结婚了。后来这个部门经理被查出倒卖产品源代码,被炒了。对了,这个源代码当年在网上流传很广泛,相信很多做.NET的都下载过。在这里掌握了ASP.NET、VB.NET、SQL Server等。

3. 第三份工作是一家给南方航空做新在线售票系统的公司,用的Java,那是我第一次接触Java,做了好像3个月不到,不喜欢,走了,没多久,公司剧变,要倒闭,员工们都在周末回公司抢机器来抵工资。

4. 第四份工作是一家做房地产管理系的公司,在这家公司呆了5年,完善.NET和数据库技术,就是在这个期间写了个人的千万下载量软件。如果不是移民澳洲,可能会提前走。对了,在这里用到了Silverlight,这个技术已经被淘汰。语言主要用的C#,掌握了Oracle和O/RM等技术。

5. 第五份工作是来澳洲后的第一份,做能源管理的,呆了两年,老板是斯里兰卡人,公司大部分员工是印度人,部门经理是伊朗人,其它都是印度码农。在这里接触到海量数据(起码当时来看算吧,单表30亿条,每天更新数百万),数千存储过程,在这里,做了大量数据库优化,性能暴升,我的数据库技术大增,还重写了主系统,掌握了ASP.NET MVC、Bootstrap、Knockoutjs等等一票技术。

6. 第六份工作是做Care的,接触到医学方面的知识,譬如身体检查就有近20个的项目,复杂的算法,几百个问题,过百页的算法。这里呆了2年,菲律宾大妈,你还安好?在这里掌握了Service Bus、angularjs、bower、yeoman等。

7. 第七份工作是做金融/财务贷款/支付的,呆了4个月,老板是犹太人,比较懂得把钱用到极致。经常要我加班,有些时候加班到晚上10点多,一些时候甚至星期天凌晨。

这个公司刚上市了,同事们都成富翁了。。。我还是穷人,悲从中来。。。

8. 第八份工作是做GIS相关的,目前呆了快一年,这里在微博吐槽了几十回了,不再细说。在这里掌握了团队管理/GIS、增强了WPF/数据挖掘/数据仓库等技术。

好了,说完经历就说职场吧。一句话:职场黑暗。遇到好多不爽的事情和混帐的人,有人的地方就有浆糊,有利益就有买卖,就有手段,博弈。这么多年就只有一个半公司尚算正常能让我好好地搞研发。

跳槽是加薪的最佳办法,跳槽是加薪的最佳办法,跳槽是加薪的最佳办法。重要的事情要说三遍。

如何成为一名程序员

说明:文章中提及的技术大部分已经过时,正确点来说,应用范围已经比较小了。因此我并不是介绍新技术,只是谈谈程序人生。

从事软件开发,可以是科班出身,也可以不是。我知道从事软件开发的,除了计算机专业的(计算机科学/软件工程等),还有科班是学电子、化学、生物、数学、医学等等,不一而足。而我,是学英语的。

做开发,首先是个人的能力。个人能力可以包括很多方面,不过,我觉得最重要的两样是:学习能力、交流能力。

可能有一些程序员会问怎样学习好英文,除了在课堂上认真学习英文外,可以尽量多看些英文节目、连续剧、新闻、广播来练习听力,多看英文技术书籍、文章提升阅读能力,多在英文技术论坛、博客交流提升表达能力。

我偏好高质量的代码。刚毕业的时候,写了一篇20多页的《VB编程标准》,想发表在《电脑报》上,可惜没有给编辑采纳,可能是我的语言表达太差了,但我仍然希望能在原来公司里面推行,可惜能理解的人太少。

这些年来,遇到各种各样的开发人员,各有各的编程风格,水平参差不齐。中国的程序员有个性,他们中的部分人相信能凭一己之力就能把一个系统做好,实际上,单枪匹马的英雄时代已经过去,开发人员应该是实干家,不应该发白日梦。他们为什么会拒绝接受编程规范呢?理由很简单:“我有我的习惯,为什么要花时间重新学习别人的规范?别人的规范不一定就好。”是的,别人的规范的确不是最好的,但在工作实践中总结出来的规范能切合实际需求,能让开发快速进行并完成,最关键的是能满足客户需求。同时,遵循同一规范,无论在开发交流还是工作移交,都能快速领会。

掌握好开发语言是每个程序员必须做的。但怎样才算及格呢?很多人说,掌握越多越语言越好,一些则说掌握一种就够了。我认为都有道理,但我相信在很好地掌握一种语言的基础上,举一反三,触类旁通地学习并能应用其它语言就更好了。实际上,我们不能强求不同的客户需求使用同一种语言,开发必须为客户需求服务。现在.NET大行其道,想想在2003年很多论坛上还有大量的帖子,主题都是围绕是否放弃现有掌握的技术,去学习.NET。这种问题类似于一直以来的争论不休的两种语言之间的优劣,最后还是不了了之的。实际上,任何语言都有其存在的理由,不必去争论什么,关键是自己用得舒服,能满足客户需求就好。我在工作中也要根据不同需求用不同的工具。除了语言本身,还的掌握好IDE(开发环境)/工具,工欲善其事,必先利其器。

要做好开发,除了个人/团队技术过硬之外,还应该多学习同行,前人总有让我们学习的地方。我的做法是:做开发之前,先客户需求分析,再下研究一下市面上领先的同类软件/系统/解决方方案,借鉴他们的优点,注意,是学习优点,不是抄袭。

怎样成为一名雇员

大部分程序员都得找工作糊口(一小部分可能自己给自己打工,做老板),这样就免不了要找工作:首先是写好一份简历,然后是过面试关,然后是协同开发,还有跟同事相处了。

这些年来,我既做过应聘者,也做过面试官。最近我在找新工作,网友调侃:“你不是在去面试的路上,就是在面试中”。

首先,是写份好简历。之于简历,我更强调过硬的个人能力,不过现在仅仅谈谈简历。

一份好的简历很重要,它是你的应聘某份工作的敲门砖。简历内容因人而异,但宗旨是要诚实。实在太多的人写自己精通xx了,有更离谱的, 称自己精通几种甚至十几种语言。我相信世界上最伟大的程序员都不这样说。还有工作和项目经验,很多人写得很玄,一看就知道是捏造的,经典的如北大青鸟的学生的简历,都是套模板的,水分太大,建议大家老老实实地写。不过,仍然可以有点技巧的:那就是专业规范化的文字描述。建议多看看各大技术网站的相关文章。

需要强调的一点,那就是证书。现在社会风气是很强调证书的,各种证书多得我看证书缩写根本认不出来是什么。很不好意思的告诉大家,我连初级程序员都不是,因为我从来没有参加过国内任何认证考试。大家可能觉得很奇怪,为什么我做软件开发这好么久了仍然还不考一个证书;可能大家更加关心的是:我没有证书怎样成功应聘职位。我不大注重证书。我觉得证书只是能力某种程度上的体现,并不是能完全代表你的所有能力。或许也就是这样,很多程序员考了一大堆的证书。

写好了简历,就是投简历了。除了直接投,还可以“骚扰”猎头。除此之外,还可以找熟悉的人做内推。当然,如果你名气大,直接就被雇主骚扰了。我当年没经验,把自己当万能膏药,同时投了同一个公司应聘多个职位,我以为招聘公司会把我当全才,但实际上他们会认为你什么都不行,纯粹为了混个工作做做。所以,应该有针对性地投心目中感觉最对口、最有可能的那个。

关于职位广告,部分或真或假或夸张,如果分辨,那是门学问。

关于猎头,猎头大多不懂技术,而且部分真的很烂,说得不好听,这些烂中介就是买卖人口的,譬如一些从来不答复你,一些说:"行啊,我晚点回复你,然后就没下文了"。

未完待续

接下来还有第二部分,包括:

  • 扩展能力
  • 开源人生
  • 开发质量与性能追求
  • 理想与将来