首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

理解程序员并不是一项简单的任务, 即使你当过程序员

本文转载自「序员」 最近在读一本软件团队管理方面的书 :books: ,是两位在软件行业的资深从业者写的,其中有一个章节在讲如何理解程序员这件事。 理解程序员并不是一件简单的任务,即使你当过程序员也不例外。 文中提供的多种视角还是蛮有趣的,转述一下,供大家讨论消遣,还有其实想让大家认识到一个事实就是程序员之间的差异真的非常大,只有很了解程序设计的人才能完全了解这一点,而大多数的高层管理者对所有的程序员都一视同仁,而更多的企业更是把程序员当做工具、资源看待。 程序设计工种 这其实是常用也是比较简单的方式去

04

理解程序员并不是一项简单的任务, 即使你当过程序员

最近在读一本软件团队管理方面的书 :books: ,是两位在软件行业的资深从业者写的,其中有一个章节在讲如何理解程序员这件事。 理解程序员并不是一件简单的任务,即使你当过程序员也不例外。 文中提供的多种视角还是蛮有趣的,转述一下,供大家讨论消遣,还有其实想让大家认识到一个事实就是程序员之间的差异真的非常大,只有很了解程序设计的人才能完全了解这一点,而大多数的高层管理者对所有的程序员都一视同仁,而更多的企业更是把程序员当做工具、资源看待。 程序设计工种 这其实是常用也是比较简单的方式去理解一个程序员,就是分

05
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    删库跑路,某大厂程序员被判有期徒刑9个月

    IT圈子里一直流传着这么一句话:“删库一时爽,跑路进号房”,作为程序员,编写代码是他们的家常便饭。 大雄周围的许多朋友也是从事程序员行业,有时他们的工作压力大了,经常会在群里相互开玩笑说,公司要是把我逼急了,大不了“删库跑路”,本以为这是一句玩笑话,但这其实经常发生在现实生活里。 近日,百度某“95后”校招员工金某某在任职期间,私自建立隧道进入数据库“删表”。最终因犯破坏计算机信息系统罪,被判处有期徒刑九个月。 金某某使用链接内网的工具,打通外部与公司服务器之间的链接,然后在家中使用手机登录隧道进入到公司

    02

    大家如何看待这两天在微盟删库跑路的那个员工?

    最近被微盟的员工删除数据库这事情刷屏了,这种事情发生过不止一回,未来很可能还会再发生,作为一个工作十几年的程序员在工作中还真遇见过这种事情,而且刚刚不久发生的事情,只不过事情的性质和这个有区别,但造成的结果是一样主要有个程序员在操作数据库的时候直接把数据库给清空了,好在服务器数据库有2个月前的备份,但是也把公司给折腾的够呛,最终通过查询之前的交易记录以及个人导出的一些数据才勉强找回90%,这种事情一旦发生对于企业都是灾难性的结果,特别是数据量众多的数据库,所以在这里还是提醒类似的厂家要做好数据库的备份工作,而且备份机制不要只是开一个通道。

    02

    程序员修神之路--做好分库分表其实很难之二(送书继续)

    在正式开始之前,菜菜还是要强调一点,你的数据表是否应该分,需要综合考虑很多因素,比如业务的数据量是否到达了必须要切分的数量级,是否可以有其他方案来解决当前问题?我不止一次的见过,有的leader在不考虑综合情况下,盲目的进行表拆分业务,导致的情况就是大家不停的加班,连续几周996,难道leader你不掉头发吗?还有的架构师在一个小小业务初期就进行表拆分,大家为了配合你也是马不停蹄的加班赶进度,上线之后反而发现业务数据量很小,但是代码上却被分表策略牵制了太多。拆表引起的问题在特定的场景下,有时候代价真的很大。

    04

    浅谈数据库设计技巧(上)(转)

    转一篇他人写的数据库设计技巧,感觉也不一定都正确,开拓一下思路吧。 说到数据库,我认为不能不先谈数据结构。1996年,在我初入大学学习计算机编程时,当时的老师就告诉我们说:计算机程序=数据结构+算法。尽管现在的程序开发已由面向过程为主逐步过渡到面向对象为主,但我还是深深赞同8年前老师的告诉我们的公式:计算机程序=数据结构+算法。面向对象的程序开发,要做的第一件事就是,先分析整个程序中需处理的数据,从中提取出抽象模板,以这个抽象模板设计类,再在其中逐步添加处理其数据的函数(即算法),最后,再给类中的数据成员和函数划分访问权限,从而实现封装。   数据库的最初雏形据说源自美国一个奶牛场的记账薄(纸质的,由此可见,数据库并不一定是存储在电脑里的数据^_^),里面记录的是该奶牛场的收支账目,程序员在将其整理、录入到电脑中时从中受到启发。当按照规定好的数据结构所采集到的数据量大到一定程度后,出于程序执行效率的考虑,程序员将其中的检索、更新维护等功能分离出来,做成单独调用的模块,这个模块后来就慢慢发展、演变成现在我们所接触到的数据库管理系统(DBMS)——程序开发中的一个重要分支。   下面进入正题,首先按我个人所接触过的程序给数据库设计人员的功底分一下类:   1、没有系统学习过数据结构的程序员。这类程序员的作品往往只是他们的即兴玩具,他们往往习惯只设计有限的几个表,实现某类功能的数据全部塞在一个表中,各表之间几乎毫无关联。网上不少的免费管理软件都是这样的东西,当程序功能有限,数据量不多的时候,其程序运行起来没有什么问题,但是如果用其管理比较重要的数据,风险性非常大。   2、系统学习过数据结构,但是还没有开发过对程序效率要求比较高的管理软件的程序员。这类人多半刚从学校毕业不久,他们在设计数据库表结构时,严格按照教科书上的规定,死扣E-R图和3NF(别灰心,所有的数据库设计高手都是从这一步开始的)。他们的作品,对于一般的access型轻量级的管理软件,已经够用。但是一旦该系统需要添加新功能,原有的数据库表差不多得进行大换血。   3、第二类程序员,在经历过数次程序效率的提升,以及功能升级的折腾后,终于升级成为数据库设计的老鸟,第一类程序员眼中的高人。这类程序员可以胜任二十个表以上的中型商业数据管理系统的开发工作。他们知道该在什么样的情况下保留一定的冗余数据来提高程序效率,而且其设计的数据库可拓展性较好,当用户需要添加新功能时,原有数据库表只需做少量修改即可。   4、在经历过上十个类似数据库管理软件的重复设计后,第三类程序员中坚持下来没有转行,而是希望从中找出“偷懒”窍门的有心人会慢慢觉悟,从而完成量变到质变的转换。他们所设计的数据库表结构有一定的远见,能够预测到未来功能升级所需要的数据,从而预先留下伏笔。这类程序员目前大多晋级成数据挖掘方面的高级软件开发人员。   5、第三类程序员或第四类程序员,在对现有的各家数据库管理系统的原理和开发都有一定的钻研后,要么在其基础上进行二次开发,要么自行开发一套有自主版权的通用数据库管理系统。 我个人正处于第三类的末期,所以下面所列出的一些设计技巧只适合第二类和部分第三类数据库设计人员。同时,由于我很少碰到有兴趣在这方面深钻下去的同行,所以文中难免出现错误和遗漏,在此先行声明,欢迎大家指正,不要藏私哦8)   一、树型关系的数据表   不少程序员在进行数据库设计的时候都遇到过树型关系的数据,例如常见的类别表,即一个大类,下面有若干个子类,某些子类又有子类这样的情况。当类别不确定,用户希望可以在任意类别下添加新的子类,或者删除某个类别和其下的所有子类,而且预计以后其数量会逐步增长,此时我们就会考虑用一个数据表来保存这些数据。按照教科书上的教导,第二类程序员大概会设计出类似这样的数据表结构: 类别表_1(Type_table_1) 名称     类型    约束条件   说明 type_id   int   无重复   类别标识,主键 type_name   char(50) 不允许为空 类型名称,不允许重复 type_father int 不允许为空 该类别的父类别标识,如果是顶节点的话设定为某个唯一值   这样的设计短小精悍,完全满足3NF,而且可以满足用户的所有要求。是不是这样就行呢?答案是NO!Why?   我们来估计一下用户希望如何罗列出这个表的数据的。对用户而言,他当然期望按他所设定的层次关系一次罗列出所有的类别,例如这样: 总类别   类别1     类别1.1       类别1.1.1     类别1.2   类别2     类别2.1   类别3     类别3.1     类别3.2   ……   看看为了实现这样的列表显示(树的先序遍历),要对上面的表进行多少次检索?注

    01

    SQL Server数据库进阶之表分区实战演练

    1.1、需求背景 假设,你有一个销售记录表,记录着每个销售情况,那么你就可以把这个销售记录表按时间分成几个小表,例如说5个小表吧。2009年以前的记录使用一个表,2010年的记录使用一个表,2011年的记录使用一个表,2012年的记录使用一个表,2012年以后的记录使用一个表。那么,你想查询哪个年份的记录,就可以去相对应的表里查询,由于每个表中的记录数少了,查询起来时间自然也会减少。但将一个大表分成几个小表的处理方式,会给程序员增加编程上的难度。以添加记录为例,以上5个表是独立的5个表,在不同时间添加记录的时候,程序员要使用不同的SQL语句,例如在2011年添加记录时,程序员要将记录添加到2011年那个表里;在2012年添加记录时,程序员要将记录添加到2012年的那个表里。这样,程序员的工作量会增加,出错的可能性也会增加。 使用分区表就可以很好的解决以上问题。 1.2、解决方案 数据库结构和索引的是否合理在很大程度上影响了数据库的性能,但是随着数据库信息负载的增大,对数据库的性能也发生了很大的影响。可能我们的数据库在一开始有着很高的性能,但是随着数据存储量的急速增长—例如订单数据—数据的性能也受到了极大的影响,一个很明显的结果就是查询的反应会非常慢。在这个时候,除了你可以优化索引及查询外,你还可以做什么?建立分区表(Table Partition)可以在某些场合下提高数据库的性能,在SQL Server 2005中也可以通过SQL语句来创建表分区,但在SQL Server 2008中提供了向导形式来创建分区表。 1.3、本次分享课程适合人群如下 1)、有一定的.NET 开发基础。 2)、有一定的SQL SERVER基础知识。 如果您同样对本次分享《SQL Server数据库进阶之表分区实战演练》课程感兴趣的话,那么请跟着阿笨一起学习吧。废话不多说,直接上干货,我们不生产干货,我们只是干货的搬运工。

    02
    领券