我们做我们必须做的事情,因为我们可以做到 -GLaDOS
伊热夫斯克,今天
自从我正式开始担任软件工程师以来,二月初恰好是二十年:
我继续到今天。 出于某种原因,在我看来,很多人都想了解如何在不离开家乡的情况下就能成功完成水平编程事业的历史,并且几乎所有的时间都做得很有趣(即使不是疯狂的)。
当然,每个人都有自己“成功”的标准,但是我的事实是,过去15年我一直在项目的高级职位上工作,这些职位主要与大型公司或外国客户相关,几乎每项新工作都能独立找到我。 而且还是不累。
我想警告一下,我的故事是第一人称面试形式中的典型的漫长旅程,有时很无聊,而且几乎没有图片,因为我基本上是一个后端。 没有技术背景的读者可能会很困难,因为它充满了编程术语(我试图解释一些术语,但不是全部)。 以及体面的古代模因,怀旧细节和当地文化研究。
但是你喜欢
自闭症的自传,不是吗?
伊热夫斯克,八十年代中期
这一切都是很久以前开始的。 有一天,我的母亲曾在一家普通的苏联研究所担任程序员,从事西方计算机技术样本的逆向工程,他带我去工作-展示什么,如何做以及让我玩。 最近,他们来到了走私的“个人”电脑/ AT,运行各种挖掘机和俄罗斯方块。
在“工作人员”出现之前,研究所曾为苏联工作(克隆IBM S / 360,占用一个房间)和SM(克隆VAX,PDP-11等,通常是一台钢琴大小的机柜),因此在家里我们使用了一些线轴穿孔纸带和打印输出以及装配清单。 我的母亲还定期出差,携带“薄煎饼”包装-每块重15磅的可移动磁性驱动器,怕乘坐无轨电车旅行-因此我为这次旅行做好了心理准备。 预计会看到与当时的科幻电影相似的景象。
我看到了。 但是,即使在单色屏幕上,有些东西在旋转,灯泡闪烁,风扇嗡嗡作响的橱柜也不如Digger令人印象深刻。 以及用于PCB布局的软件,将它们绘制在绘图仪上(看着墨水标记在A1纸上飞翔-似乎是一种魔术),以及无数熟悉的组装机清单,这些清单是我当时正在使用的CNC机器程序的清单。妈妈
不用说,成为一名程序员的决定立即在二年级学生的脑海中浮现,并坚定地立在那里? 我当时只有7岁,我不记得以前曾经梦想过成为一名宇航员,消防员或孩子们通常想去的地方吗-但是,一旦我决定要成为一名程序员(而且,好吧,因为这很重要)变坏?),没有其他让我感兴趣。
要成为一名优秀的程序员,您需要努力学习。 我以优异的成绩完成了一所综合学校的前三个班级,并且能够以数学偏见进入一所中学。 一般而言,当时该市有几所学校的教育质量很好-29、30、41(中学),56(体育馆)。 每个人都是一个本地品牌,是一个由技术,人道主义或管理人员组成的王朝托儿所,具体取决于个人简介,精英。 特别是“三十”级人员-几乎所有当地的工厂经理(传统上伊热夫斯克是一个城市工厂)都从中毕业,并且通常从毕业班上毕业。 但是,就像我的母亲一样(她最终也成为了领导者,但后来更多了)。
如果我们谈论学校,那么事实上,在二楼的走廊上有一张配有全套数字的象棋桌,他们经常需要休息,而窗户上的花边窗帘却是令人眼花white乱的白色,那么,值得一提的是,从七年级开始的转换考试-当地学生与其他学校的孩子共同参加。 当时,“三十”仍然保留着该品牌(在我发布后,她放弃了,不幸的是完全放弃了)。
文化很高,竞争非常激烈。 与我一起升入五年级的30名优秀学生中,有10名在期末考试之前仍处于数学指导下,其余以其他方式分散甚至退学。 实际上,这里有两个班级,但只有第一个班级的学生(占学术排名的上半部分)才可以参加奥林匹克团体,该团体传统上在共和国和俄罗斯举行(有时参加国际比赛)。
我在第六名的某个地方闲逛,并定期爬高,因此,在准备奥运会期间,我经常和其他在前台工作的高级人士在一起,在那里解决问题+,任务°甚至任务**而不是独立工作。 实际上,我没有奥林匹克思想-我很好地探究了问题的实质,但是我认为步伐太慢并且总是做几种试验方法,所以我从未走过城市舞台。 好吧,至少我参加了,其结果可以被认为是非标准的大脑训练(但与典型的奥林匹克竞赛(通常严格地是临时性的)的决定相反,是可重复的)。
无论如何,即使按精英幼儿园的标准来算,最后三人本来也是一所正规学校的优秀学生,但在大学里却令我感到震惊……但是,这是有秩序的。
经过多年的评估,我有时会后悔自己没有选择任何一所首都大学而不是当地的技术大学,因为我的同学们成功地从莫斯科物理技术学院和莫斯科国立大学毕业(有些最终在谷歌工作),但这令人遗憾当我记得我在“赤道”之前的一般学期学习时,很快就会过关。 我根本没学过-学校的包,,包括由同一位大学老师教授的其他课程,几乎可以容纳所有学科的“机器”。 但是,我什至没有参加入门课程-我在四月份完成预备课程并在模拟考试中得分最高的时候就成为了一名学生。 如您所知,这并不困难。
最后,在整个大学课程中,至少我不知何故只需要一门数据库课程-在90年代末,它已经过时了15年(如果没有的话),并且主要的教学骨干是由前工厂程序员制作的。 除了原始的“瀑布”和程序编程之外,他们可以教的东西是一个反问。 这样的“教育”的优点-我可以阅读汇编程序,并且我了解OS如何与Iron一起工作。 但是从现代意义上讲,工业编程绝对不可能在大学学习。
只有在战斗中接受自我教育才能拯救我,第二年我找到了工作。 就在该部门的系统管理员。 这项工作是这样的,但它保证了可以无限访问教师服务器和Internet,还可以让您至少在实验室中闲逛几天,并且不仅要花时间与附近一所大学的女孩在IRC上聊天,还可以为各种随机代码编写代码。客户。 1999年的最低工资是83卢布49戈比(为什么要给学生多付钱?),而在教务大楼对面的院长商店里一瓶Chuvashia花束的价格是4.60,所以有时我们和其他类似的管理专业的学生一起丢了几箱用于体育教育的廉价啤酒,以免浪费时间在体育场内毫无意义的圈子里。
取而代之的是浪费时间,而不是浪费自己的时间在Perl和tcl上浪费时间(对
Irz聊天
机器人进行编程以招待附近一所大学的女孩非常有趣),并根据
ACM规则开发了一个举办比赛的内部系统。
伊热夫斯克“ mehan”还成立了自己的奥林匹克队,当时它还没有参加国际比赛的最后一席之地,但是在我看来,为比赛提供基础设施比让他们的大脑更加有趣。 而且,排名应该是这样。 除了绝对低级的语言和脚本语言之外,我并没有回避使用大量实用工具来进行一堆1C和Visual Basic上的簿记操作,或者去掉FoxPro和Delphi上的Deanery,并且为了娱乐,我用Java在自己的服务器上为“仓鼠”编写了applet。
实践不是多余的,就像金钱。 此外,由于对第一门课程比较懒惰,所以我为学习打分,并且没有奖学金。最后,由于课程不及格,我最终去了这所学院。 虽然,脚下的流感和不快乐的爱情导致的抑郁症也起了作用。
尽管如此,我还是第一次没有完成第四年的学习,我不得不花六个月的空闲时间来善加利用,同时努力不招兵入伍。
2001年夏季,伊热夫斯克
哪里有能力学习nyx的无学历学生和一些简单编程知识的随身行李? 除了没有系统管理员,他们没有任何文凭,但是我会承担任何工作,只是要等到我恢复为止。
幸运的是,办公桌上出现了演讲人的名字“ Virtual Izhevsk”。 一个微观的网络工作室,但由于当时它被认为是任何自重的网络工作室-带有区域资源目录,网络服务器以及许多边缘程度不同的项目。 您如何看待在线选美大赛“ Miss BikiNu-2002”? 而且,如果我说他对赞助商有一个封闭的部分,里面有更有趣的“模特”照片?
简而言之,是相同的加法器。 另一方面,办公室主任的想法是将所有工作室开发工作从制动Perl升级到新发布的PHP版本4,因为他在某处读到自己有未来(而且他的速度很快)。 总的来说,导演没看错。 我只在那里呆了六个月,但至少我学会了用PHP编写出可以忍受的东西-并且,由于项目的特殊性,我不得不注意安全性。 他们试图以欺骗选票的方式打破比赛-比赛中的赞助奖相当不错,例如前往土耳其的一个朋友公司旅行,并且来自那所邻近大学的女孩们聚集了整整群祝福者,准备将他们推向高潮。
同样有趣的是,同一位主管发起的一个活动集结了一个本地Web开发人员社区-一个所有Izhevsk开发人员和提供者都可以参加的论坛-并且,即使在第五次转世中,它仍然可以在某些方面存活下来。 哪个城市有自己的摇滚音乐节(可容纳1500名IT人员)? 在伊热夫斯克(Izhevsk)有RockIzhaiti。 这一切都始于一个自写的留言板上,十几个当地办事处的开发人员和经理最初在文化上秘密地分享了他们的项目和经验,然后开始培育出迅速下线的史诗级人员。 2000年代初那些传奇性的口头辩论和商业仇杀的最后回声仍然在当地社区中mol绕。
我在大学里恢复了生活,没有更多理由在同志少校躲藏在地下室里昼夜不停地闲逛。
但是命运本身立即将网络工作室的工作推高了几层(以及项目等级)。 那时我的母亲已经完成了编程生涯,但她并没有离开IT(要离开并离开IT并不容易),而是找到了那所邻近大学的一个基础设施部门的副主任的工作,在这个故事中已经被提到过两次的女孩来自那里。 但是,男孩子们也在那儿学习,甚至在“某领域的计算机科学”专业中也学习过,但是这所大学不是技术学校。
该部门被称为“多媒体和互联网技术中心”,正式参与大学网站,远程学习系统等的支持,但实际上,它是大学商业环境的一部分,是一种混合结构,也就是说,它正在赚钱,并且不仅维护形象。
多媒体部门为本地工厂(例如
Izhmash和
SEGZ )制作了演示光盘,而互联网技术部门则是经常在行业展览中获奖的同一网络工作室。 老实说,主任办公室的墙上挂满了从地板到天花板的文凭,很受启发。 基本上,来此主题的客户同意下一个代表性站点的开发。
只是发生了一点麻烦-赢得了所有这些奖项的程序员和设计师团队接手并离开了整个建筑,将他们目前的一半项目都带走了。 在没有橡胶的大学工作人员中容纳不断增长的人群是很困难的,总的来说,他们想要更多。
我迫切需要一个“至少有人”的替代品,但我很成功地获得了自由。 妈妈只是拖着我的脖子拖着我,把我扔到办公室服务器的控制台后面,命令我把所有东西都交给我自己。 多媒体部门同样也交到了我母亲的女友儿子的手中,我们开始弄清楚!
实际上,很难想象会有更大的压力:取代公认的专业人员,赶上空中悬而未决的陌生和完全陌生的发展,并假装您有能力将所有这些都排除掉。 是的,至少不会更糟。 我不记得接下来的几个月-早上我不得不在我的大学里拜访一对夫妇(感谢上帝,我没有做任何事情,一些物品被重新装了给我),然后将自己拖曳穿过整个城市到附近的一个城市,并在那里闲逛直到深夜。 周末也在上班。 我也想出去玩,但是要成为一名学生,并且不要喝醉...
大约花了六个月的时间来阅读所有的技术RFC,所用语言和平台的所有手册,解析从旧团队继承的所有代码堆(尤其是大学站点,这些站点使用Java和PHP的早期版本以及自写扩展名的可怕混合物编写),并保持并行开发自己的软件基础-仅在PHP中。 不仅因为新的扫帚应该以新的方式报仇,而且至少出于卫生方面的原因:在旧团队十年的项目工作中,这些项目在没有任何版本控制的情况下进行,累积了很多垃圾,而且从新的外观看,它非常引人注目。
还值得考虑的是,当时的市场还没有发达的
CMS ,实际上,Web开发的当前状况很难称为“市场”。 每个办公室都写了一些原始的东西,还有自己的动物园。 因此,我
到处都是开放源代码“
nude ”的可用示例,在第二个夏天,就在第五年之前,我用论坛的备件和竞争性的“引擎”组装了一个简单的CMS,这使得解决临时任务成为可能。 此外,我还停留在
UX的主题上,并研究了当时可用的所有HIG,由于某种原因,我受到了Microsoft Wizards 97的启发.Microsoft Wizards 97我试图在界面中尽可能多地实现其思想,在所有场合都实现逐步向导。
奇怪的是,但恶作剧取得了成功。 我不仅成功地完成了已经在我自己的引擎上崩溃的项目,而且还多次加快了开发速度。 此外,由于需要仔细记录我们所拥有的项目,因此我自然而然地为一家典型工厂的典型代表地点提供了最详细的技术任务-以及针对市政地点作者的培训手册,因为其中一个项目正是这样,带有模板的《
联邦法律》尚不存在。
许多新手开发人员低估了文档的功能,尤其是方法手册的功能,但是据我所知,在那一刻,经历了所有用户案例并感受到了客户的痛苦和需求之后,我从新手开发人员转向了新手系统分析师。 而且如果以前程序员的工作对我来说似乎是解决有趣难题的一种解决方案,那么现在它已成为真正的东西-人的日常工作自动化。
而且!
程序员不是创造者。 — , , , , , , , .
但是,我们不要被哲学分散注意力。很抱歉,我在多媒体中心的“乌德穆尔特州立大学多媒体和互联网技术中心”工作了近五年。我完全是通过为格拉佐夫市的市政地点介绍我的CMS实验版本而获得伊热夫斯克国立技术大学的文凭的(将来他还将获得鲁内特奖类别的Runet奖;该项目在第四版中仍然有效)。这是该部门历史上第一个有关互联网附近主题的文凭,因此,在插页上,该主题被列为“大洲管理系统(原文如此)”网站。好吧,在2003年,没有人知道“内容”一词,所以我没有开始纠正那个时代的人工制品。我们很快用同样的学生填补了失踪的人员配备表(嗯,也许不像我那样有目的性和固执)-变成了一种伪造的人员。许多人是在我系开始其职业生涯的,当时他们是受训者或毕业生,现在经营着自己的办公室和项目,并且是该市颇受尊重的专家。通过将开发工作放在开发流程中,我逐渐改进了流程本身和CMS(特别是我想出了自己的模板标记语言编译器,这使我可以即时更改网站设计,不仅包括样式,还可以更改HTML和脚本)。在办公室中选择的商业模式并不意味着产品的转让-我们宁愿提供作者支持订阅,但如有必要,客户可以独立管理其网站,仅向我们付费以托管和CMS更新-详细的用户指南和分步向导使他们可以工作在不影响整体质量的情况下自动进行的,其中许多人与我们在一起长达十年之久。我离开后的许多年里,我开始的项目继续存在和发展。在相同的代码库中工作了13年之后,我去年秋天收集的最后一个被字面替换了。没有单一的服务差距。我不得不多次参加谈判(与市政当局交谈特别困难-而且,我的上帝,当我发现我的《联邦法》培训手册中的直接报价随时间推移而出现时,我感到非常惊讶;它很可能是通过我们市政府中的一员传到了立法者手中的客户),解决团队成员之间的利益冲突,培训用户,甚至进行两次设计。他本人并没有注意到他是如何成为主人的。当地社区也无所适从,经常不得不与办公室争夺项目,这些项目的数量是大学部门人员的几倍,然后根据重新征服的结果通过私下法庭,这些都是在当地论坛上进行的。比主题要难得多。一旦我从备份中还原了站点后忘记了重置CSS服务器缓存,我的一位同事就立即抛出了一个截图,其中保留了指向Lebedev的完整布局。 对于lulz。 底线:一个著名的模因。但是技术官僚主义的方法是有利的,在伊热夫斯克其他办事处的背景下,我们的项目至少看起来并不差,而且存在的时间肯定比同事所做的绝大多数时间长几倍。 还有一些,例如Izhmoto.ru,甚至幸免于原始客户的死亡。 甚至第二个。
为了娱乐,我曾经进行了一次完全不人道的实验。 有一个针对农村信息学教师的培训计划-当他们被驱赶到来自共和国所有25个地区的不同的伊热夫斯克大学,并向他们教授了有关场地建设基础知识的课程时。 自然,我以我的引擎为例进行授课,并且不禁利用这样一个巨大的机会,对数百个不幸的接口上的多个版本的接口进行A / B测试。 这很有趣,我学到了一些关于用户行为模式和感知的完全出乎意料的事情(Microsoft员工将Office UI重新设置为上下文相关时是正确的-这是最有效的方法;绝对不可能从界面上用软盘删除“保存”按钮)。
但是最后,我还是很无聊。
那么,您可以铆钉多少个网站? 好吧,多站点(这是当十二个互连站点位于不同域上,但是在引擎的一个副本上并且具有传递授权)。 好吧,文档门户(文档目录中挂有关于您的圣诞树的元数据,并可以实时搜索所有参数)。 好吧,内部网,视频博客,媒体站点(只是原始CMS的专用插件,根据我的要求,这些插件是由研究生编写的)。
很明显,是时候进入例如以前的团队并离开建筑物的时候了。 不幸的是,我没有足够的资格担任业务主管。 从技术上讲,我可以,但是为什么呢? 在网上,光没有汇聚,进步也不会停滞不前。 在2002年是专有的,在2006年已经成为主流,并且Bitrix总体上将网站建设引入了手工艺。
但是是否要移动到相邻区域。 为什么呢?
只有在哪?
我去了几个不同的办公室。 我到处都没有张开
双臂迎接
伊扎伊蒂的可怕巨魔(几乎没有人喜欢这种巨魔),但是我的选择却很丰富。 可以使用桌面.NET和一些程序进行编程(尽管这是在工厂中进行的,因此,可能的结果是“是”,而不是“是”)。 但是我特别喜欢为流血的企业开发大型系统的想法-仅在这个世界上Java才是驱动力,而且我只知道Java具有通用的“仓鼠”小程序的水平,并且在以前的工作中埋有类似面条的遗产。 也是1.1版。
因此,我接受了当地电信提供商
Izhsvyazinvest的报价 (它是“多服务”,即它提供Internet,电话和电视;在2008年危机后,我死于痛苦,被Beeline收购,但那时生意兴隆)。
在这里,您需要对本地Internet的历史进行一些评论。 这要归功于马克公司(与20多年的历史无关),它与典型的俄罗斯公司有很大的不同-自90年代中期以来,伊热夫斯克一直以超低的速度和覆盖面领先,而且价格较低,不仅所有邻国,还要去莫斯科。 而且,DSL调制解调器的时代让位给了铜的时代,然后是家庭光缆,很快,伊热夫斯克的快速互联网普及了,这家提供商是当地行业技术和管理人员的杰出铸就。 甚至本地的fidosnaya tusa也大多是通过Markov以太网传输的。
马克的原住民创立了多个竞争办公室,其中包括Izhsvyazinvest。 他们带来了帐单-一个巨大的系统,它在Oracle集群中运行,而且是一个经典的系统,位于公司Sanovo铁器的顶部和日光浴室下。 这个chthonic怪物的几乎所有业务逻辑都被奇迹般地存储了起来,甚至发给客户的付款信也是从一个异步作业发送来的。 尽管实际上它几乎完全是通过System.out.println()生成的,但管理面板中只有一小部分是用Java(1.4版)编写的,它看起来像地狱。 没有泪水看待用户Web界面是不可能的(不仅因为它全部是7.5pt)。
特别是与当时CMS的管理面板相比。 它是一种
HTA应用程序,即使它是用纯JS / DHTML编写的,它也可以从本地应用程序与外部应用程序区分开,甚至不需要鼠标。 部门主管印象深刻,以至于他立即把我当做UX专家。 意图很简单-为漂亮的计费怪物提供漂亮,快速,便捷和本地的界面,然后将其出售给其他提供商。 实际上,从九十年代中期开始发展的可能性方面,他撕毁了所有可用的类似物,将其视为王牌,但竞争对手的UI却很健全,而TELSI却没有。
要将
口红涂在猪身上……但是,如果接口没有类似于AJAX的远程端点,则不能将接口固定在逻辑上。
端点层必须通过集成到现有代码中来编写。 但是在2006年,Java 1.4已经是相当古老的东西了,所以我要做的第一件事是使用相同的头发梳理和整理代码将admin的现有细菌复制到当前版本(是的,我不得不再次挖掘继承的内容)。 在此过程中,我研究了J2EE技术堆栈,但由于具体原因,我目前仅限于servlet和所有随附的绑定以及JDBC(您需要拉出存储),Velocity(与PHP模板引擎最相似)和事实上的核心Java。
渐渐地,我们了解到,与横向显示用户有关的所有逻辑,甚至与与用户交互更是如此,应从存储中拉出并在Java的服务层中实现,因为随着时间的推移对功能的要求不断提高,通过JDBC构造对存储文件的原始调用很难维护(一切都需要在两个地方进行更改,并且使用代码的版本,数据库仍然很糟糕,更不用说第八个Oracle了)并且脆弱。
“好吧,”部门主管说。
我花了一年的时间才把这整个事情变成现实。 一年! 代码的数量简直太可怕了。 我可以记得一次大约一个兆字节的源代码,这里的代码只将存储空间拉了五倍。 未使用的一半,另一半递归地调用,并且通常被编织成一团面条,如果没有老板的帮助,绝对不可能拆开它。
我每周必须工作六天,每天要工作十一小时-其余的程序员都坐在现有怪物的支持下,无济于事。 结果是一次中风(26岁,我的屁股!),并在平板电脑上呆了六个月。 我吸取了教训-从那以后,我再也不过分。 工作不会跑开,但是健康可以。
一段时间后,事实证明,以目录的形式存储部分计费数据更为方便-即不是很普通的关系表,而是由键值集组成的文档,这些键值集的每条记录通常带有未知的元数据。 Oracle本机不支持此功能,并且通常,在那些年中,NoSQL仍然很烂。

→

→
可点击的图片该死的,但是有些事让我想起了……哦,文档门户。 事实证明,如果您查看个人资料,所有信息系统都是关于同一个人的? 好吧,好
好的,我说。 几个月后,他使用触发器,创建视图的存储以及某种形式的母亲在Oracle表之上实现了一个面向文档的存储库。 它的运行速度不是很快,但似乎可以半开。 现在是时候将Minx螺栓投入试运行了。
然后2008年的危机降临到伊热夫斯克
虽然,他来到了每个人。
不仅每个人都有钱,办公室也有钱,特别是为了让程序员在系统的未来版本上工作。 为了赶上生存,办公室急忙招募新客户,他们决定离开我去对这头古老的怪物进行例行维护,因为工作量增加了,新项目陷入了困境。 他们还削减了工资,因为“一般”一词没有钱。
“再见,”我说。 我说:“现在我是一个老人,我知道功夫,我很感谢您向我展示功夫,但我想练习功夫而不是胡说八道。”
不幸的是,这比说要难。 在血腥企业的肆虐危机中,情况与TELSI差不多(即“推迟”到“以后”),但是在新的经济现实中,西方企业作为降低成本的手段之一,引起了俄罗斯外包商的关注,他们被淹了。 我不得不将这家企业推迟数年,然后做能带来收益的事情。
我很快就在下一个工作室找到了工作(更确切地说,他们找到了我-尽管如此,在当地社区声名,起,甚至有些古怪,有时很有用)。 好吧,作为工作室……他们有网络开发功能,但是在更大程度上,这个“信息和发布中心”将自己定位为外包商。 好吧,也可以当印刷厂。 这是另一种混合业务。
外包的主要方向是地理信息系统的开发-即使用制图数据执行某些操作的系统。
例如,当前的项目对
Zend上的丹麦骑自行车者来说是一件可怕的事情,它带有Portlet的某种类似物(不要问它是什么,我只知道小应用程序和炸肉排),并且通常还存在某种极其奇怪的TK。 当时只有我坐下来仔细阅读,因为骑自行车的人与办公室的技术总监一起躲在一个未知的方向,因此,事实证明,诱使我代替自己。
好吧,“换一个”。 我们需要一个新项目的首席开发人员-一个仅涉及卫星电视的GIS。 SatBeams.com-仍然存在,您可以看到,请不要将其降低。
一个有趣的项目。 是的,我再次不得不回到PHP,但是最技巧是设计基础。 在地球静止轨道上,几百颗卫星悬挂在其经度上方,每颗卫星上都悬挂着几根(最多数百根)天线-在多个频带中广播的转发器。 他们广播节目包,在每个节目包中都有几个(多达数百个)电视频道,每个频道都有一套特征(由于语言的缘故,多达数百个)。
问题的实质是:不仅需要在地图上为每个应答器绘制覆盖范围,而且还需要为它们实时生成在某个位置接收到的板上所有通道的所有特征的差异变化,并将其吐出到RSS中。 此外,对于此类信息,卫星电视的专业爱好者要花很多钱。
听起来似乎很简单,但是嘿。。。乘以一百乘以几,乘以一百乘以,乘以...哎呀。 所有可能参数的笛卡尔积都超过一万亿,我们需要实时建立
差异 。 顺便说一句,这是一个奥林匹克问题。
在这里,大学数据库课程以及与之合作的所有先前经验以及我刚刚拥有的所有系统设计经验对我来说都很方便。 结果,所有这些导致了几十个表,将其标准化为
5NF ,对非正规化的表进行了历史记录,并为每个页面提供了许多请求。 通过棘手的联接,可以考虑所选DBMS的优化器行为。 MySQL,我的意思是。 客户不同意。
第二位程序员共同管理了大约一年的时间。 到目前为止,如果您还没有使用habraeffect删除它,它会起作用。 我喜欢这个项目。 而且不仅仅针对后端,还包括satbar.js-我碰巧写的最后一个界面小部件(从那时起,我就再也没有接触过用户界面了)。
意外的障碍是在Google地图上绘制应答器的足迹-Google通常希望将其厚重的Mojo放在第三方集成上,并从每个新的API卡版本2中系统地为每个功能剔除功能卡。结果,它获得了令人难以置信的拐杖,并需要持续的支持。将项目投入运营后,第二个程序员的另一端-并迁移到API的第三个版本,并逐渐变得沮丧。 但是该客户吹嘘PMa Google Card桌面的图片,上面印有我们网站的标签,并带有“漂亮的多边形”签名-当他访问当地总部时,他秘密地制作了这张图片。
但是很酷的项目往往会结束。 好吧,如果成功的话。
危机继续蔓延。 如果只有办公室付钱,我就不能承担那么酷的项目。
我再次竖起大拇指,收集了几个地点,几乎没有恢复意识。 不用做任何事情,我用以前的工作带来的界面开发更新了CMS-包括从新Office中获得的某些Ribbon UI(在此过程中,它比Microsoft本身更早完成,但是当然更简单,尽管神奇的ALT也可以)。我会给你看的东西,这值得一个单独的故事。 他甚至为一个州客户着手在.NET + SQLite上开发桌面数据库,以换取Firebird上的Legacy解决方案(甚至FoxPro吗?嗯,我不记得了,但是是在一个完全古老的东西上),但是这个项目带来了一个新的PM,声称担任技术助理的角色,我们无法在时间安排上达成共识。 因此,我无法深入研究.NET桌面堆栈。
然后,一个曾经在我系获得文凭(即相同的“文档门户”)的前学生突然给我写信。 在过去的五年中,他已经成长为自己的办公室的负责人,幸运的是,该办公室的业务涉及血腥的企业SAP(SAP),并且在Java EE上进行了更多开发。
祝你好运。 他只需要一个专家来帮助一个新项目。
这个项目的本质(通常是含义)很难解释。 对于still斯坦的风险投资家的动机,我仍然一无所知,他希望制作一种类似于MS SharePoint + Exchange + Lync + Dynamics的SaaS / PaaS /盒装产品,但仅限于J2EE上的服务器部分以及“加厚型” Java Swing客户端。 起初,他称他为NewOutlook,然后他完全称呼OfficeSuite。 另外,他还是一名罂粟工人,这就是为什么他不得不在办公室购买罂粟的原因-在MacOS下,胖客户端的摆动组件有时表现得难以预测。 一个非常非常奇怪的项目。 但是非常有趣。
总共至少有三支队伍参与其中-除了我们之外,这些家伙在喀山和明斯克的某个地方,还是什么? 还是在基辅?,我们的团队被认为是主要的团队:我们需要开发服务器部分和客户端的通用架构,一种在它们之间同步数据的机制,还需要实现一个用于管理个人财务的模块。 其余的人应该从事
统一通信以及投资者所想象的其他一切(没有特定的传统知识)。
同步器的实现似乎是最困难的任务-现有团队中没有一个人完全不知道如何实现它。 我们记得,客户端很“厚”,也就是说,它可以并且应该完全没有服务器部分,并且同时它必须能够根据计划或用户请求连接到服务器,以便在此处和那里更新“对象”(无论如何)。 。
起初,我不知道该怎么做,但是我的眼睛很害怕,而且我的手还在做。 巧妙的“客户端和服务器体系结构”一词实际上只是一些设计良好的设计草图,可以很好地设计为结构化文档。 当然,“任何类型的对象”都是这样的要求,但是幸运的是,自多媒体中心成立以来,我就能够设计出可以描述其对象类型的主机插件系统,在Izhsvyazinvestovsky怪物之后狡猾的ORM并没有吓到我,但缺少了我可以很快从EE学习J技术。
“建筑师” ...当这个词用在程序员的职位上时,我不喜欢它。 System Designer的英语翻译很歪,所以成为“设计工程师”会更正确。 但是,我认为,即使是客户也无法想象的,从头开始创建未来产品原型的过程更好地描述了“研究工程师”一词。
七个月后-在过渡交付之时-所有三支球队,只有我们的球队才有值得展示的东西。 我们的团队编写了一个功能齐全的个人预算管理模块,同步器以最佳方式同步了所有内容,服务器核心和应用程序的客户端部分已准备就绪,可以连接其余的插件。
对于其余的人,这匹马没有滚,风险投资家似乎意识到他已经威胁到了毫无意义的任务,并从地平线上消失了。该项目立即关闭。作为客座专家巡回演出后,像其他杂技演员一样,我并没有特别的需要,因为办公室负责人决定专注于SAP。妈的这就是风险业务。我有点讨厌这样的话:没有理想的工作。无论您走到哪里,都会有好事,有坏事,好吃,令人作呕,合理而又异常。既不是辩证法的问题,也不是客观地用不同的颜色描绘生活。这主要取决于您对存在的各个方面的态度-只要神的火花在温暖着您,您注定会经历关于不同事物的不同情感。该死的,这发生了。
并非总是变得更好。已经是2011年了。仍在伊热夫斯克
在这段时间里,城市景观发生了根本变化。网络工作室的队伍大大减少,工厂和其他具有内部开发能力的供应商有所缩水,但杂货店的数量明显增加,甚至大型外包商也进入了这个城市。特别是EPAM。那就是真正血腥的企业所在。EPAM(以及Luxoft和其他类似的怪物,俗称“厨房”)是工厂。巨型工厂用于生产定制软件,并且生产过程中绝对有传送带。每个人都受到“流程”的统治-从最微不足道的每日例行时刻开始,在各种场合下使用书面和非书面形式的正式和非正式规则,以强制不可抗力和充分的人力资源。内置的系统级别无关紧要,无论是否需要,您都必须服从它们。您需要成为机制中的一环,并发挥作用。但是,嵌齿轮的尺寸,螺纹方向和键都不同。有些甚至必须是英寸,而不是公制,这在很大程度上取决于特定项目。这里的笑话是,拧紧的规则非常非常高。他们甚至想跟随-我从未在其他地方看到过如此周到和深入的学习。事实证明,通过相当准确地执行规则,系统中工作人员的个性特征在某种程度上变得不重要。但仅在一定程度上。毕竟,从某种意义上说,人们总是地狱。由于具有良好的正式规则,以下人员可以在EPAM上成功地工作:•与我不仅不会与外界进行侦察,甚至与世界上任何人都无法交流的人;•没有想象力的人,没有美感的人;•没有神的火花但铸铁的人;•没有分寸和机智的人;•彼此心理上不相容的人;•古怪的人。幸运的是,他们中的大多数并没有很多,但有更多普通的学生,但是总的来说,这样的“优秀学生”(来自他人)非常好!强烈!
宠坏!另外,在传统的办公室中,人不是“资源”而是“专家”,没有“发展池”的概念,而没有“部门”的概念,人们不是在同一个群体中受雇,而是可以彼此合作朋友在一起-也就是志趣相投的人。在EPAM中,仅从一般资源群中根据形式特征选择项目团队。我怎么到那里?他们打电话来,并答应从事办公室历史上最血腥的企业项目,并答应立即送给高级女士。不要上当。他们以领主的身份领主。而我得到的第一个项目真的很可怕。客户是具有圆形绿色徽标的银行,一个可容纳50人的团队(这仅在EPAM中,在其他分包商中仍然有相同的人群),这是关键任务系统本身。它应该用Java EE编写,但是在情节上有一点曲折:供应商是IBM。平台-WebSphere AS和MQ,数据库-DB2。甚至这个捆绑包中的JVM本身都是异国情调的-J9,当时它与Sanovo参考完全不同,并且令人毛骨悚然(但是后来当我遇到许多错误时才意识到这一点)。他们告诉我:现在您是主要的开发人员(并且是建筑委员会的成员),所以这里有一个团队供您使用(该模块看上去不适合新手)和TK(该模块长300页)。我说:是的(大约有15位“建筑师”,伙计们……不一样,在比赛中砖头对应了三遍,令人难以置信)。我们走了……两年来,我不得不参与几个子系统的开发。通往外界的门户。内部文件存储。三大运营商的付款处理状态同步。用于将模块部署到计算机场的系统(其中大约有25个)(因此,该系统无法幸免,但是Applications.xml仍作为产品的一部分)。一旦他不小心进入了另一个团队的职责范围,并发现有19种独特的方法可以在JNDI中搜索资源。我必须让所有人耳边听,为自己准备配置模块,并找到一个共同的分母。大量的血液溢出。这是一家企业!之后,该版本的发行版就存在一定的缺陷,因此决定将主干回滚到早期版本。版本控制系统-SVN。好吧,这是必要的。我做了一次,然后……然后我必须成为“仓库管理员”(该死!)直到最后并监督所有后续合并,尤其是在发行之前。最后,这些是在最不方便的时候来自J9和DB2驱动程序的错误……IBM对其进行了修补,但仅六个月后,并且一般甚至将其任务通知了他们。而且-由于包括我和PMa在内的个人不兼容因素,团队中发生了很多冲突...简而言之,我想要一个血腥的事业,但我收到了它,但没想到会有这么残酷的锡,而不是我期望的那样。最后,他要求另一个项目。为此,我不得不完全与PM混为一谈,因为他们不想让我离开。关键的开发者不是替补席上任何不必要的Vasya。但是我离开了-那是“坐在板凳上”。有一阵子松了一口气。但这仍然令人不自在,因为办公室里充斥着卧底游戏和阴谋诡计的气候-无论距离有多远,它都会粉碎。几乎已经决定完全离开-离开这个疯人院的任何地方-但后来另一个项目突然把我扔了。也是一家企业,但更简单,更传统,几乎没有血腥。我不知道为什么我同意带领他担任技术主管。有必要降低,但是我决定最后一次尝试管理。当时唯一可用的开发团队由坐在板凳上的“优秀学生”组成。所有因毒性而未被接受其他项目的人,但都经过正式评估,因此无法被解雇。后来我意识到,与第一个项目的项目经理发生冲突对我来说是一种奖励,但为时已晚。而且,它开始时似乎还不错,但是...它很快开始滑入技术债务泥潭,由于不愿发展任何东西,而只想获得8个小时坐车报酬的“优秀学生”的破坏,几乎以一场彻底的灾难告终。在工作日的办公室里,分析员没有完成任务,而是对跟踪器中的每个任务充满了很多澄清问题,并且只有当我全身心地挣扎时才编写代码。他们的立场是这样的:您在这里是最酷的,因此您会做所有事情。我们是小人们,在这里我们温暖了一个温暖的地方,我们很正常。正如我已经说过的那样,不可能通过正式的标志将这些数字赶出项目-他们通过了所有评估并取得了良好的结果。结果,我不得不离开我的职位,否则我会提供即使我全天24小时为自己和那些人编写代码,除了纯粹的管理任务外,交付也是不可能的。我会再接一次缺血性发作(不行,一个就足够了),然后死在工作场所。新的techlid有权更改团队的组成-他立即做到了(免费的普通开发人员在办公室神奇地找到了),最终他设法使该项目取得了胜利。但是为了确保这种可能性,我们不得不以分支指挥官的身份使用重型火炮,但是解雇最恶意的“优秀学生”很重要。这是难以想象的艰难和令人作呕。我学到了一个教训:我在工厂真的没事做。第二课:再也不会介入管理。经过如此麻烦的潜水,陷入公司泥潭,甚至间隔了不到一年的潜水时间,我还是逃离了EPAM-脚后跟燃烧不堪,完全丧气,精神被烧毁,精神上像柠檬一样被挤压。精疲力尽,说?什么是倦怠?我只是什么都不想要。更确切地说,我希望这个世界被一头猪烧死,在第一批罪人当中,我被世界末日骑士的蹄子所困。我在昏迷和家庭蔬菜养生之间花了五个月的时间。他研究权利,并偶尔参加一些IT聚会(仍然参与当地社区,即使是被遗忘了一半的传奇人物,有时也非常有用)。伊热夫斯克,2014年夏季
其中之一,嗯,一个醉汉,这是一种隐瞒的罪过,也就是真正的醉汉,发生在一个名不见经传的办公室里。一家美国公司以其好笑的名字tinypass(轻骑兵在徽标上用p手指开玩笑说了多少笑话)决定在伊热夫斯克开设开发中心。创始人和共同所有人是当地人-刚回到他的家乡。立刻哭了-老兄,去一家美国初创公司,我做到了!来自EPAM的最合适的同事(他们对所有垃圾的厌倦程度不亚于我的)立即出现。还有其他办事处经验最丰富的人(包括一些科学候选人)。我的一位前同事(在风险投资家时代曾与我们成为朋友)正好在聚会上,在新的办公室举行,可以通往屋顶,从那里可以欣赏到城市的美景,邀请我加入。好吧,我说过两周后我可能会上班。来了我看着这个项目。我很伤心该项目原来是原始的,微不足道的,令人作呕的。这位技术领导人是创始人的密友,来自纽约,他是世界上最顽固的人,既不能说服,说服也不能同意。但是你可以胜过。第二条线索可以减少一行代码,仅此而已(结果,他们摆脱了这一点,但并没有马上解决)。但是在新的凉爽的办公室里,有一个退出的屋顶,聚集了一支非常强大的团队(一家美国初创公司实际上已经准备好付任何钱)-我从来没有机会与我们这个六十分之一的小镇上最好的程序员一起工作。进入门槛太高了(具有大量集成的内容提供商的订阅服务中间件很难),而更简单的人根本不会这么做。而且,由于我只有九个席位,所以我有机会建立与我对理想的理解接近的开发流程。就是说,当它们全部独立运作时。在我们的共同努力下,该项目逐渐进入了一个理智的状态。瓶颈仍然是技术人员的教育,但他们在纽约。这里没有。在这里,每个星期四您都可以在办公室喝啤酒,无一例外!与城市最好的开发商中的最好的人一起度过美好的时光。标签#Izhevsk Google。这非常酷,直到初创公司的最初有15个人,然后才有20个人。只是某种兴趣俱乐部,但在这样的俱乐部中,不会有太多兴趣不同的人。但是在增加了团队之后,我们搬到了一个更凉爽的办公室,可以欣赏到城市中部的全景-这使Instagram上史诗般的日落成为了更多女性同事。很难准确描述我在Piano所做的工作(与竞争对手合并并改变品牌后,伊热夫斯克办事处仍然是主要的开发部门),因为在一家初创公司中,每个人实际上都必须这样做。包括英语,最后学习。最初,我用Java编写了很多东西,然后连续进行了几次极其不成功的实验功能(the强的纽约人不太喜欢负面结果,但是当地同事相信我的经验-最终我是对的,我没有被解雇)。交付了持续集成过程-使QA工程师团队的出现成为可能。在一个健康的团队中,应该有女孩测试员!但是,认真地说,在短短两年半的时间里,建立DevOps流程可能是我所做的最有用的事情。然后他又在Java中写了很多东西,已经成为纽约第三名领导的团队的一部分。在这里,他是一个高超的家伙,也是一个很酷的专业人员-可惜他很快就逃了出来(因为另外两个人几乎在那儿把他吃掉了),结果进行了庞大的工作来本地化该系统(从未尝试本地化一个最初不应该本地化的系统)最好从头开始重写它),花了一年的时间,我们还是没有完成最后的胜利-第一次。然后,缓慢而可悲的是,它们在后台完成。您是否曾经尝试过合并一个分支,该分支在项目中会影响数十万行代码?凉爽的感觉,并不是每个过山车都会给人这种感觉。根据合并,什么都没有下降,也没有恶化。我们得到了一个本地化的蛋糕。在那之后,又出现了一些非常疯狂的DevOps,形式化不当,但是很酷的研究任务。可以在python和Google BigQuery下撒尿很多代码,以及Node.js上的各种垃圾(对于一个老笨蛋有时要换一匹马,有时要换一个滑雪板非常有用)。好吧,蛋糕上的任务变成了蛋糕上的樱桃,出于道德上的可疑性,我拒绝接受它三次。出于某种原因,在我看来,这并不是很好的检测方法,甚至更是如此,请尝试迫使用户在浏览器中关闭广告拦截器。实际上,Piano提供的中间件的最终用户是发布者,而位于屏幕后面的那个仅仅是内容的消费者。但是,实际上,我试图让人们为人们服务,并尊重他们的选择。是否启用我的广告块与您无关。甚至更多,因此尝试找出它是不正确的,因为有很多方法可以阻止大量广告,并且从技术上来说很难全部检查它们,而且很多人坐在地铁某处的不良通道上都会遭受误报的困扰。好吧,如你所知。当然,我是一个狭circles的圈子里著名的“研究工程师”,但是在这种情况下,我不想执行任务(这很有趣,我不争辩,但要让其他人破坏人们的生活)。老实说,我不认为我会因为道德差异而离开办公室。此外,办公室在所有其他方面都很酷。标签#Izhevsk Google。伊热夫斯克,已有40年了
当您在两个工作之间几个月都不做任何事情时,真是太酷了。但是,这一切都变得无聊了,并且出现了永恒的问题-怎么办?为了回答这个问题,我做了一个清单。[x]是Web开发。[x] GIS是。[x]有一家血腥的企业。[x]酷时髦创业公司。[x]在有铁的工厂里,我显然没事做。[x]产品开发也不适合,因为这很长一段时间,而且我使用CMS已有11年(11 !!! 11)年了,我很累。还剩下什么?[x]除非与其他三维游戏一起使用,但那里仍然充斥着学校。[]等等,大数据正在发展。在钢琴界,那些科学候选人参加了大约会,很难进入他们的私人俱乐部。好吧,看,这个城市还有别的吗?偶然发现。当然,绝大多数提案是莫斯科,但幸运的是,并非全部。我来找我现在工作的地方聊天,PM从门槛上就说出该项目是地狱般的。没事再一次,GIS,只有计算全部基于MapReduce(我希望在Spark上进行),在ArcGIS 上进行地图,所有这些都在无人能及的云中旋转。我认为,这是一个不错的选择!已经一年半了,我仍然认为这个选择很棒。总的来说,之前所做的一切都是有用的。在这里,我用Java发亮(因为我不是博士学位,所以我没有改用Scala),而有开发人员的AWS和Web GIS,以及一间配备齐全的厨房的出色办公室,每个星期四(当然,有例外)您都可以在其中安排烹饪俱乐部会议。毕竟,我是一位经验丰富的好厨师。我爱并且会做饭。比萨,面食,饼干和其他带有字母P的东西-以及其他任何字母。办公室里有很多女孩。在下一个部门,他们看到了HUDWAY。 #标签由Wudmurtia制作。总计,我们将继续努力。因为我们做我们必须做的事,因为我们可以,而我仍然可以。, ,— . , , , . , - , . .
, , , 20 . , ( , ), , , — , .
, , ( )? , , / ( , mortgage 25 ). ( , ).
, , , - , . (, , -, , , ). , , . , — - ever.
, , 20 .