Category: 软件工程

免费才是最贵的 – 说说软件保护和花钱买软件

上周英国黑五 (Black Friday), 这周一 Cyber Monday (电子产品促销), 我在 MythemeShop 上花了30美元买了一博客主题和一年的维护费, 这要是在几年前, 我是不太会花钱买主题, 软件, 甚至是维护费. 所谓的维护费 (Subscription) 一般是按年交, 这在欧美软件市场很是流行. 你买了软件, 一般送你一年的免费更新, 一年后想要再升级或者获得技术支持 (support) 就得再交维护费. 去年我花了60美元买了一主题, 刚好一年了, 即使不交钱, 去年买的主题还能一直用下去, 只是不会再获得更新. 我本身就是在软件公司工作, …

说说技术债 Technical Debt

技术债 Technical Debt 是软件工程上特别是敏捷开发 (Agile Development) 中的一个概念. 指的是解决一个当前问题最好的方法往往需要更久的时间和精力, 但是为了加快软件开发进度, 赶在代码冻结前按时交差, 采取的一个较为折衷的解法方法. 但是这就是一笔债一样, 可能会把潜在的问题越积越大(利息), 甚至将来却无力偿还(修复). 1年半前, 我提了个BUG, 这个BUG大概是说一种数据文件里如果用TAB而不是空格来隔开字段, 则导入数据过程中软件会崩溃, 这个BUG的确是有效的, 因为把这数据文件放到别的软件中导入则是没有问题的. 前前后后讨论了半年, 然后总算被批准了, 不过由于开发任务繁重, 而且也不是那种非改不可的BUG, 所以就一直拖, 拖到今年10月份, 突然接到邮件通知: “agreed to …

逻辑测试系列之三 – SUBT

@justyy 的逻辑测试系列: 逻辑测试系列 – 一种只有4种语句的编程语言 – (1) 逻辑测试系列之二 – DECR 上次添加了 DECR 函数来把 一个变量减一, 我们这次来定义一个 SUBT 函数来实现 把 减法运算, 也就是 X-=Y 如果我们用 C++ 来实现, 大概是这样的: void subt(unsigned int &x, …

一顿饭与 一个 C++ 软件工程师的职位

今天晚上, 公司两大股东(其中一个是英国总公司的HR, 另一个是中国公司的总经理)请我吃饭. 我本来以为我犯了什么事呢, 提心吊胆, 结果原来是公司为了招人而犯愁呢. 我们公司(初创公司)最近在招一个 C++ 软件工程师 (C++ Software Technical Expert), 但是一直招不到合适的人选. 但项目启动迫在眉睫, 所以想听听的我意见. 客观来说, 我们公司的待遇还是不错的, 但是C++的牛人一直招不到有一大原因就是: 剑桥市有很多很牛的大公司, 比如苹果, 微软. 能力强的很多不会到剑桥郡的一个村庄里上班. 先说好处: 我们公司给办工作签证(五年英国绿卡), 所以如果你想来英国工作或生活, 这个机会难得, 因为据我所知, 英国并不是很多公司愿意给外国人发工签. …

逻辑测试系列之二 – DECR

逻辑测试系列 – 一种只有4种语句的编程语言 – (1) 这种只有4条语句的语言能做什么呢? 今天我们来定义一个DECR函数, 该函数就是把 变量 X 减一. DECR(X) { } 要求填写函数体, 使用 INCR, LOOP, ZERO, 和 ASGN 仅有的4个语句. 我们不妨想一下, 已知变量 X 是非负整数, 那么我们只需要 循环 X-1次, …

逻辑测试系列 – 一种只有4种语句的编程语言 – (1)

一般大公司都会有类似逻辑测试或者IQ测试题, 这些题考的并不是你对某种技能(编程语言)的掌握情况, 相反, 这是为了过滤掉比较笨的人, 因为……我觉得太笨的人写不了程序. 所以, 你选任何一种语言都是带有偏见的, 碰巧, 这里有一种语言, 只有4条指令, 处理所有的都是非负整数. 在这种语言里, 变量不需要定义, 但是使用前需要像 PYTHON一样赋值(或者清空), 这种语言好理解, 也能拿来当面试题. 清空变量 用 ZERO(X) 来把X变量清空, 比如以下 相当于 X=0 ZERO(X) 赋值 用 ASGN(X, Y) …

你是 研究性的软件工程师么? Research SDE

越来越多的人在学术界里(大学里 比如做博后) 对专业知识和编程研究都很专长. 虽然这个技能组合是非常有价值的, 但是这些人在学术界里缺乏认可. 这意味着没有简单的方法来认可他们的贡献. 英文里有一个专业的工作职位 Research Engineer. 这些研究人员大部分时间都在写代码 但是也做做研究. 有的人边做研究边写程序, 慢慢的发现写程序更有意思. 你是否是一个研究性质的软件工程师? 不管你的现在工作职位是什么 只要你以下的回答大部分是 YES 的话 你就是一个 Research Engineer. 你被请来开发研究用的软件? 你花更多的时间在开发软件而不是进行研究? 你是一个博士后研究员, 但是你主要在软件开发的工作吗? 在你的研究小组里 你是写代码的? 尽管你写的软件很重要 但是经常发表文章里没有你的名字? …