程序员

高级程序员与初级程序员差别在哪里?

丶灬走出姿态 提交于 2019-11-27 08:48:14
之前在公众号里有个读者给我留言: 请教个问题,公司高职级和初中级,都是写业务代码,那么高职级的价值在哪里呢? 由于公众号回复留言的限制,当时我就简单的回复了如下的几个点: 初级多在写代码,高级多在设计代码; 初级多在解决一个问题,高级多在解决一类问题; 初级多在考虑技术问题,高级还要参与业务上的需求; 初级工程师只管接需求,导致自己忙不过来,高级工程师会砍需求, 用自己得经验告诉产品这个需求不需要,告诉设计师这个交互没必要; 初级工程师可能做完一个项目就完了,高级工程师可能会封装几个组件,整理一个脚手架出来。 还有很多很多,初级工程师和高级工程师差距不仅仅是代码质量上,而且其他能力上,解决问题的能力,抽象问题的能力! 今天有时间,想详细的跟大家谈谈我所遇到的、见到的厉害的程序员,同样是写业务代码,为什么会比初级程序员拿的工资高? 初级多在写代码,高级多在设计代码 一般人可能拿到需求,就开始写代码了,写着写着由于页面功能越来越多,感觉代码越来越复杂,自己都会觉得难以维护了。 我拿我自己举个例子,之前有一次我写完一个页面之后,然后给另外一个同事(可以理解为高级程序员)让他帮我 Review 代码,看到我的代码之后就觉得这个写得不对呀,怎么会这么去 设计 呢? 然后他给我理了下整个页面应该如何去设计,一个页面分为哪些块,有哪些事件,每个事件应该 dispatch 哪些 action

对照检查!高效程序员几乎都有这七项技能

一个人想着一个人 提交于 2019-11-27 08:11:42
软件工程师们总是花费许多时间磨练面试技巧,如练习力扣题(leet code)和完善各自的简历。而一旦他们在一家新创企业、谷歌、亚马逊、或其他公司得到了工作,也许就会发现,其实日常工作中用不到当初为了得到这份工作所获得的技能。 谷歌的TechLead提出了高效程序员该有的七项技能。本文我受到启发,提出高效程序员该有的七项技能,一起来看看吧。 1、学习如何阅读别人的代码 能够阅读其他人的代码是一个很厉害的技能,且能带来许多好处。 不管上一个工程师的代码有多乱有多糟,你还是得读懂它。这毕竟是你的工作。就算那些烂代码是你一年前写的。 这个技能有两个好处。第一,学会如何阅读其他人的代码可帮助你更了解什么是糟糕的设计。在看过其他人的代码时,可以学会看出代码可不可用。更重要的是,也可从中得知哪些代码更易被其他工程师理解或否。 在阅读其他人的代码时,尽可能地对其评价。这样,其他工程师才会知道眼前的工程师多么的不简单。 作出评价时,记得提起可维护代码和清楚注释的重要性。这将给编程领域里的优势加分。 你本身的代码应该设计得好,好到无需注释。事实上,一个优秀的程序员本就不应该给自己代码进行注释。那只是在浪费时间,而宝贵的时间应该用在编码和开会上。 学会阅读其他人杂乱的代码也有助于必要时对其进行更新。这有时意味着更新你可能不那么熟悉的代码。举个例子,我们曾沿着一个脚本语言

好程序员Python学习路线之python爬虫入门

*爱你&永不变心* 提交于 2019-11-27 08:08:20
  好程序员Python学习路线之python爬虫入门,随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,Yahoo!和Google等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性. 1.什么是爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来。想抓取什么?这个由你来控制它咯。 比如它在抓取一个网页,在这个网中他发现了一条道路,其实就是指向网页的超链接,那么它就可以爬到另一张网上来获取数据。这样,整个连在一起的大网对这之蜘蛛来说触手可及,分分钟爬下来不是事儿。 2.浏览网页的过程 在用户浏览网页的过程中,我们可能会看到许多好看的图片,我们会看到几张的图片以及百度搜索框,这个过程其实就是用户输入网址之后,经过DNS服务器,找到服务器主机,向服务器发出一个请求,服务器经过解析之后,发送给用户的浏览器 HTML、JS、CSS 等文件,浏览器解析出来,用户便可以看到形形色色的图片了。 因此,用户看到的网页实质是由 HTML 代码构成的,爬虫爬来的便是这些内容,通过分析和过滤这些 HTML 代码,实现对图片

程序员毕业设计—考试管理系统【SSM框架版】-王勇-专题视频课程

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-27 08:02:19
程序员毕业设计—考试管理系统【SSM框架版】—90人已学习 课程介绍 本套Java大学生毕业设计_SSM考试管理系统,采用SpringMVC+Spring+MyBatis三大框架,主要实现试题管理,学员管理,在线考试,在线评分等常见功能,本套毕业设计教学视频浅显易懂,即使学员没有学习过SSM,框架也能跟随视频,来一步一步的实现自己的毕业设计。本套视频包含mysql安装,SSM环境的搭建,不仅可以让学员了解掌握SSM框架使用,同时可以通过本视频掌握SSM框架的实际使用 课程收益 让学员会做java毕业设计 讲师介绍 王勇 更多讲师课程 动力节点王勇老师,CCTV《影响力对话》栏目特约嘉宾,Java培训知名讲师,中国Java培训领军人物,北京动力节点创始人,董事长兼CEO。1995年接触软件开发,曾工作于清华同方、联想、普天信息技术研究院,拥有丰富的项目实战能力,是国内手把手教授Java项目开发、分析底层源代码讲授SSH框架教学思想的开创者,并成功发布DRP Web项目、SSH流行框架免费视频,获得广大Java学习者的一致好评,下载量超过千万次,教授的学生分别在加拿大、法国、日本及国内大中城市成功就业,成就了广大学生的软件工程师梦想!详情百度“王勇Java” 课程大纲 1. 程序员毕业设计_考试管理系统_用户模块_准备工作 7:54 2. 程序员毕业设计_考试管理系统_用户模块

程序员专用文本编辑器MacVim

给你一囗甜甜゛ 提交于 2019-11-27 07:41:21
MacVim for Mac版 是一个将Vim程序员编辑器带入Mac的项目。另一方面,Vim基于强大的Vi应用程序,这是一个为Unix操作系统开发的文本编辑器。除了其他功能之外,MacVim应用程序还支持使用热键,包括全屏模式,允许您使用透明背景等等。请记住,即使MacVim可以处理文本,它也不是一个WYSIWYG处理器。 MacVim for Mac软件介绍 Vim是一个高级文本编辑器,旨在提供事实上的Unix编辑器'Vi'的强大功能,具有更完整的功能集。无论您是使用vi还是使用其他编辑器,它都很有用。Vim是一个很好的旧UNIX编辑器Vi的改进版本。添加了许多新功能:多级撤消,语法突出显示,命令行历史记录,联机帮助,拼写检查,文件名完成,块操作,脚本语言等。还提供了图形用户界面(GUI)。仍然保持Vi的兼容性,那些拥有Vi“手指”的人会有宾至如归的感觉。请参阅runtime/doc/vi_diff.txt与Vi的差异。此编辑器对于编辑程序和其他纯文本文件非常有用。所有命令都使用普通的键盘字符,因此可以用十个手指键入的人可以非常快速地工作。另外,功能键可以由用户映射到命令,并且可以使用鼠标。Vim运行在MS-Windows(NT,2000,XP,Vista,7,8,10),Macintosh,VMS和几乎所有类型的UNIX下。移植到其他系统应该不是很困难。较旧版本的Vim可在MS

程序员是最好的产品经理

喜夏-厌秋 提交于 2019-11-27 07:32:40
今天来说个有意思的话题 程序员和产品经理的斗争,从根本上就是个伪需求 我抛出两个观点: 1、在当前国内互联网大势下,9成以上非程序员出身的产品经理都是垃圾 2、无论在什么地方,什么时候,程序员都是最好的初级、中级产品经理人选 不是找喷,而是事实 下面论证一下以上观点 一、产品经理有没有搞清 个人能力成功 和 平台资本加持成功 之间的区别? 我说一个产品经理的画像,大家应该相当熟悉了: 我会写文档,知道怎么切图、我会用Axure,我会思维导图,我知道墨刀这种新互联网产品设计工具,我平时特别喜欢琢磨别人的应用,我对新鲜事物特别感兴趣,我热爱数码产品,我是果粉,我。。。 是的,你已经意识到自己是一个主流的产品经理了,但是你还没有意识到的是: 你可能还是一个“垃圾” 这里的 垃圾 不是贬义词,而是一种 客观的陈述 ,如果一个人在团队和项目中,把他替换成其他人,依然可以无缝切换运转的时候 那么他,根据上海最新的垃圾分类规则,应该是一个“可回收垃圾”,到别的团队依然可以继续做产品经理 但为什么很多产品经理有时候依然优越感十足,一副见过流行世面,一副我有独特审美,一副我经手的产品特别成功的模样呢? 因为他并没有搞清楚 平台价值和个人能力区别 我国的互联网和软件行业是有趣的,在趋势和和资本推动下产业不断革新,在这浪潮之下,优质的产品不断涌现,也造就了一个 热门的岗位 :产品经理,和一个 普遍的幻觉

上周热点回顾(8.29-9.4)

只谈情不闲聊 提交于 2019-11-27 07:11:35
文章转载自: http://www.pythonheidong.com/blog/article/3009/ 热点随笔: · [译]Web设计者和开发者必备的28个Chrome插件 ( JK_Rush ) · 程序员装B指南 ( 查一把 ) · javascript 设计模式 - 文章很长,请自备瓜子,水果和眼药水 ( 聂微东 ) · 我为啥喜欢WinPhone ( jujusharp ) · 浅谈专心只学一门C#的优缺点[邀月补充:一精胜于十专] ( 通用权限组件源码 ) · 你觉得wp7很棒? ( 孤独流星 ) · 34个漂亮的应用程序后台管理系统界面(系列二) ( 梦想天空(山边小溪) ) · 老赵面试题参考答案(一) ( 孟晨 ) · 算法--两道百度笔试题 ( 啊汉 ) · 新浪微博应用开发 - 哥,坚持18秒 ( 博弈居 ) · 25个非常棒的jQuery滑块插件和教程 ( 梦想天空(山边小溪) ) · [原]强大的数据库访问类dbhelper 2.0,欢迎拍砖 ( Sun_Blue_Sky ) 热点新闻: · 神秘的程序员们(23-28) · 好的程序员做不出好的软件设计 · 内部人士证实凡客裁员:扩张过快 削减成本降压 · 雷军:乔布斯有一天也会死 所以我们还有机会 · 中电信高校大批光缆被剪:上万学生断网 · 惹恼程序员的10件事 · 苹果第三位创始人

Swift 面试题

耗尽温柔 提交于 2019-11-27 07:10:47
文章转载自: http://www.pythonheidong.com/blog/article/2188/ 1. 给一个数组,要求写一个函数,交换数组中的两个元素 二X程序员: 好简单啊,直接写出以下结果 func swap(_ nums: inout [Int], _ p: Int, _ q: Int) { let temp = nums[p] nums[p] = nums[q] nums[q] = temp } 普通程序员: 首先跟面试官沟通,是什么类型的数组?面试官会说,任意。普通程序员微微一笑,写出以下代码 func swap<T>(_ nums: inout [T], _ p: Int, _ q: Int) { let temp = nums[p] nums[p] = nums[q] nums[q] = temp } 文艺程序员: 与面试官沟通,是什么类型的数组?有什么其他要求和限制?面试官会说,这是一个Swift面试题。文艺程序员心领神会,于是写出以下答案 func swap<T>(_ nums: inout [T], _ p: Int, _ q: Int) { (nums[p], nums[q]) = (nums[q], nums[p]) } 同时对以上代码写上相应测试,检测各种边界情况,再确认无误后,才会说,这道题目我完成了。 这道题目看似简单

闲话RFC

别说谁变了你拦得住时间么 提交于 2019-11-27 07:07:16
如果你经常去查阅相关的互联网协议,比如: HTTP , MetaWeblog API , ATOM , WebDav , SMTP 。你都会不经意的发现它们都有一个相对的RFC编号,这些编号会对应一个像“ http://tools.ietf.org/html/rfc2616 ”的一个链接页面,这个页面详细说明了该协议的定义规范。通常一个协议都定义都需要比较长的内容,但是通过阅读这些协议本身我们就可以更好,更完全的理解该协议本质和实现方法,这将更有助于我们去实现协议基础上的应用。这组RFC编号具有如此重要的意义,我们也就有必要更多的去了解RFC。 RFC是Request For Comments缩写,它实际上是一个“备忘录”的作用,是由于 IETF 进行管理和发布的一系列以编号排定的文件。这些文件描述了Internet相关的协议的研究,行为意图,实现方法。现行基本的互联网协议都在RFC文件内有详细的说明,比如Http 1.1协议对应的的 RFC2616 。同时RFC也是在不断的丰富和完善中发展,任何人都可以提交自己最新的研究成果成为RFC的一部分,比如 ATOM ,尽管目前还没有成为业界标准主流,它目前还没有办法完全取代RSS 2.0在人们心中的影响,但是它也已经有了自己的RFC编号rfc5023,作为一个开放的发展标准,已经成为 IETF 的建议标准,用于取代相对封闭

面向对象

a 夏天 提交于 2019-11-27 06:06:37
创建方式   1.使用Object或对象字面量创建对象   2.工厂模式创建对象   3.构造函数模式创建对象   4.原型模式创建对象 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script> // 1.使用Object内置的构造函数来创建对象 var person = new Object(); person.name = '热狗'; person.age = 20; person.fav = function () { alert(this.name) }; person.fav(); // 2.字面量方式创建 var person = { name: '热狗', age:18, fav:function () { alert(this.name) } }; person.fav(); // 3.工厂模式 function createPerson() { var person = new Object(); person.name = '热狗'; person.age = 20; person.fav = function () { alert(this.name) }; return person; } var p1 =