ajax脚本出错编程过程中一直出错,怎么砸电脑才能优雅不失风度?

11K1,108 条评论分享收藏感谢收起赞同 11132 条评论分享收藏感谢收起&h2&前言&/h2&&p&2015年03月第一次编写这个答案,之后于2016年01月和2018年03月分别进行整体修改。只适合于入门,评论中的一些问题参见&a href=&https://www.zhihu.com/question//answer/#%E9%9B%86%E4%B8%AD%E5%9B%9E%E5%A4%8D& class=&internal&&集中回复&/a&。&/p&&h2&正文&/h2&&p&我觉得入门学习算法与数据结构时应包含三个部分:&/p&&ul&&li&选择一本合适的书。&/li&&li&编程实现和应用。&/li&&li&反复学习。&/li&&/ul&&h2&1. 选择一本合适的书&/h2&&p&十分推荐普林斯顿的这本橙书:&a href=&//link.zhihu.com/?target=https%3A//algs4.cs.princeton.edu/home/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《算法 第四版》&/a&,是我认为最适合拿来入门的。在橙书中淡化了算法分析和证明,强调了实现和应用,并且通过一些有趣的习题对比显示了优秀的算法与数据结构在时间和空间上的高效。&/p&&p&橙书是使用 Java 进行代码实现,在第一章前两个小章节介绍了全书可能需要使用到的一些简单的 Java 语法,使得我们不会将过多的精力花费在编程语言的学习上。&/p&&p&并且普林斯顿在 &a href=&//link.zhihu.com/?target=https%3A//www.coursera.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Coursera&/a& 上也公开了两门对应课程:&a href=&//link.zhihu.com/?target=https%3A//www.coursera.org/learn/algorithms-part1& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Algorithms, Part I&/a& 和 &a href=&//link.zhihu.com/?target=https%3A//www.coursera.org/learn/algorithms-part2& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Algorightmsm, Part2&/a&。依次注册待开课后,&b&认真跟住&/b&课上内容(英文授课有字幕,如果已熟稔书本内容,并事先自己翻译了课件,英文听力不好也能理解),并&b&独立完成&/b& &i&Exercises(选择题)&/i&,&i&Programming Assignmengs(编程作业)&/i& 和
&i&Job Interview Questions(面试题)&/i&。&/p&&p&这2门 Coursera 公开课在知乎上也盛誉很多,在此不多赘述。不收费,同时也不给电子证书,一年开课几次,可随时加入。&/p&&h2&2. 编程实现和应用&/h2&&p&理解一个数据结构与编程实现其完整功能是完全不同的挑战。自己动手亲自实现一些基础数据结构(如排序,集合,图和字符串处理)的简化版 API 能够极大的提升对数据结构内部细节的理解。&/p&&p&&b&编写 API&/b&&/p&&p&我曾使用的一个较笨的方法是尝试默写书本中的实现。另一种较有成就感的方法是在如 &a href=&//link.zhihu.com/?target=https%3A//leetcode.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Leetcode&/a& 等 OJ (&a href=&//link.zhihu.com/?target=https%3A//baike.baidu.com/item/Online%2520Judge/Ffr%3Daladdin& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Online Judge&/a&) 上,选择一些简单的但会使用到上述基础数据结构的题目,自己实现那些需要使用到的数据结构,而不使用语言本身提供的,如 c++ 的 STL 或 Java 的 util。&/p&&p&&b&可视化帮助&/b&&/p&&p&同时,除了底层 coding,最好也从顶层宏观的去观察一种数据结构的各种操作。这里推荐一个动态可视化网站 &a href=&//link.zhihu.com/?target=https%3A//visualgo.net/en& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Visualgo&/a&。比如进入 Binary Heap(二叉堆),插入一个77,就可以看到整个堆的变化过程。可以通过左下角的按钮调慢演示过程。正刚刚在书本上学完二叉堆原理,可能也自己动手 code 实现了过程,那么再在网站上演示一下元素的各种操作过程,会带来一些更直观的印象。&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-26aa167b4ce712ed6386c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1920& data-rawheight=&946& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&https://pic4.zhimg.com/50/v2-26aa167b4ce712ed6386c_r.jpg&&&/figure&&p&(在 Visualgo 上进行二叉堆操作的演示)&/p&&p&&b&尝试应用&/b&&/p&&ul&&li&认真且独立完成 Coursera 上《算法 第四版》的公开课作业。&/li&&li&对书本后的编程习题进行实现。&/li&&li&在 Leetcode 等 OJ 上解决相关数据结构的题目。&/li&&li&网上一些开源项目等。&/li&&/ul&&p&以上这些实践均能较快产生成就感。算法与数据结构学习不算轻松,能有一些及时的正反馈最好。&/p&&h2&3. 反复学习&/h2&&p&因为算法与数据结构所涵盖的知识较多,所以一本书里的内容可能都需要分几个阶段去学习,难免会遗忘之前的内容。我建议敏捷学习,尽量快的往后学习。如果一个知识点实在不懂,可以存疑,“不求甚解”,很多时候经过后面的学习,前面的一些内容就自然明了。然后反复学习。&/p&&p&除了基本的复习,还需要其他书籍进行一些补充和升级。推荐&a href=&//link.zhihu.com/?target=https%3A//mitpress.mit.edu/books/introduction-algorithms& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《算法导论》&/a&。除显著加强算法分析的能力外,一些算法章节,如摊还分析,动态规划等是对《算法 第四版》较好的补充。其网上开放课程,中文有&a href=&//link.zhihu.com/?target=http%3A//open.163.com/special/opencourse/algorithms.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&网易公开课&/a&,英文有 &a href=&//link.zhihu.com/?target=https%3A//www.coursera.org/specializations/algorithms& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Coursera: Algorithms Specialization&/a&(可不要证书免费旁听)。&/p&&p&总之,要 &b&多做题善总结!&/b& 可以是 Online Judge 上的编程题,书后思考题,手上的编程项目或者面试题等等。&/p&&h2&补充&/h2&&ol&&li&因为我第一次编写这个答案时正看完&a href=&//link.zhihu.com/?target=https%3A//book.douban.com/subject/1139426/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《数据结构与算法分析 - C 语言描述》&/a&,就在第一版回答中推荐了这本书。然而作为入门(个人意见)不如橙书详实,但它用 C 语言实现 ADT (抽象数据类型)的方法值得借鉴。&/li&&/ol&&h2&集中回复&/h2&&blockquote&&b&1. 问题是关于考研数据结构的学习,回答偏题!&/b&&br&确实。因时间久远我已经不记得原问题是什么,当初为什么在这个问题下写这个答案,归为某个被遗忘的历史原因吧。&br&&br&&b&2. 没用过 Java/C/C++ ,要先学编程语言&/b&&br&没必要。绝大部分书会使用某一特定语言进行代码实现,但都只用到该编程语言最基本的语法,凡有编程基础,都不需先从头学这门语言。&br&&br&&b&3. 英文不好,听不懂 Coursera 上的公开课。&/b&&br&可以先阅读中文书学习知识点,预先翻译网课课件,慢放视频,实在不行可暂停播放手动翻译字幕。刚开始这么做确实很吃力,但越往后越轻松,因为陌生的词汇就那么多,会一个少一个。&br&&br&&b&4. Coursera 需要翻墙?PC 上打不开。&/b&&br&PC 上访问不需要翻墙,可能是 DNS 污染的问题,参考&a href=&https://www.zhihu.com/question/& class=&internal&&知乎回答&/a&。&br&&br&&b&5. 《算法 第四版》课后题好多,又没有参考答案。&/b&&br&关于书后习题的讨论,参考&a href=&https://www.zhihu.com/question//answer/& class=&internal&&知乎回答&/a&。&/blockquote&
前言2015年03月第一次编写这个答案,之后于2016年01月和2018年03月分别进行整体修改。只适合于入门,评论中的一些问题参见。正文我觉得入门学习算法与数据结构时应包含三个部分:选择一本合适的书。编程实现和应用。反复学习。1. 选择一本合适的书…
&p&计算机学院 &/p&&p&张程老师 经验丰富 友善且有趣的老师&/p&&p&向涛老师 上过他的三门课 不听他的课觉得简直是浪费啊!虽然向涛大大偶尔会觉得我们弱弱嗒,但是被大大嫌弃着也是很高兴啊(所以是疯了吗我&/p&&p&周庆老师 三门课同 &/p&&p&夏云霓老师 走的高冷风 也爱嫌弃我们 同样能感觉到是恨铁不成钢的嫌弃哈哈&/p&&p&大四上有幸选到了沙院长的课 强推!!!!&/p&
计算机学院 张程老师 经验丰富 友善且有趣的老师向涛老师 上过他的三门课 不听他的课觉得简直是浪费啊!虽然向涛大大偶尔会觉得我们弱弱嗒,但是被大大嫌弃着也是很高兴啊(所以是疯了吗我周庆老师 三门课同 夏云霓老师 走的高冷风 也爱嫌弃我们 同样能感觉…
&p&因为回答了问题:&a href=&http://www.zhihu.com/question//answer/& class=&internal&&你是如何转行的?转行容易吗? &/a&&/p&&p&并且讲述了我自学软件开发的经历:&a href=&http://www.zhihu.com/question/& class=&internal&&《折腾》三卷:孕育 (初稿)&/a&&/p&&p&所以有一些同学就私信/QQ问我相关的问题,问多了答多了,其实问题就那么几个,翻来覆去的回答好像太无聊了点。所以总结并自问自答如下:&/p&&p&&br&&/p&&p&1、该不该转行?&/p&&p&我自己都迷茫着呢!所以只能给个很不靠谱的答案:&a href=&https://www.zhihu.com/question//answer/& class=&internal&&觉得自己不喜欢现在的工作,所以过得不开心,怎么办?&/a&&/p&&p&&br&&/p&&p&2、IT是个挺大的范畴,究竟是怎么分类的?&/p&&p&Good Question. 能问这个说明还真是用了点心思,做了点功课的。我大致的非常粗糙的回答一下:&/p&&p&首先,IT分硬件和软件。硬件就是看得见摸得着的这些东西,一般都是工厂生产出来的,比如电脑、路由器、打印机之类的,估计绝大部分同学所说的IT不是这个东西。同学们一般说的IT,其实是指的软件开发,也就是写程序/代码、编程、做程序员。&/p&&p&然后,软件开发又分了两类(我自己分的,不严谨,大家只要领会其精神就可以了):&/p&&ul&&li&计算机基础科学:是具有科学研究性质的、底层的、不是解决某个具体需求。按说学了就应该是人工智能,开发芯片、操作系统,发明计算机语言之类。(听着就高大上,是吧?一般人干不了)&/li&&li&软件工程:利用已有的语言、框架等开发面向最终用户的软件系统,比如开发一个网站、做一个APP之类的。(目前我们绝大多数人干的就是这事)&/li&&/ul&&p&最后,我为什么要这么分类呢?和下面的问题有关。&/p&&p&&br&&/p&&p&3、我“数学/逻辑思维能力”不行,能学好软件开发技术么?&/p&&p&我只能说:按上面的分类,软件工程不需要很深奥的数学知识。基本上有初中数学基础就够用了。&/p&&p&但是,无论如何,还是需要一定的逻辑思维能力的。通俗的讲,要思路清晰。软件工程里还是有比较复杂的逻辑的。因为里面经常会有:如果……就……;第一个“如果”里,又可能分三种情况;三种情况中又可能细分……&/p&&p&&br&&/p&&p&4、软件工程里又有哪些分类?&/p&&p&大致来说,有:&/p&&ul&&li&需求分析(产品经理):产品经理是个新名称,我不太肯定这是个什么职位,估计和需求分析差不多。就是需要把这个产品/项目究竟怎么做弄清楚弄明白。因为一开始的时候,我们脑海里只有一个大致的想法,需要一步步的具体化,形成很明确的需求,才能开始开发(编程)工作的。&br&&/li&&li&开发:没啥好说的,直接写代码,实现各种功能呗。&br&&/li&&li&测试:一般来说,自己是很难发现自己代码的问题的。所以,由专门的测试人员对开发人员的代码进行测试,是保证软件质量的一个重要步骤。&/li&&li&支持:软件交付使用了,可能还是经常出问题的。我们经常看到的就是网页打不开了、电脑死机了之类的。这些问题,都需要及时的解决。通常这就是支持人员的工作了:用各种办法(比如重启系统,呵呵。但不包括改代码),迅速的恢复系统。&/li&&/ul&&p&&br&&/p&&p&5、逻辑能力不行,有哪些选择?&/p&&p&确实有一些女孩子,碰到一些复杂的逻辑就开始发晕。但你们还是有希望的,上面四种分类,除了开发,你都可以试试。而且这些都挺适合女孩子的,细心周到才是重点。&/p&&p&&br&&/p&&p&6、(程序)开发里面又有哪些细分?&/p&&p&这个分类的方法就太多了。我按所需要的特长技能,大致分类如下(以下“专业”特指计算机基础和原理):&/p&&ul&&li&专业性极强的。比如人脸识别技术、工业机器人程控技术、所谓的“单片机”开发……反正一般人的脑袋凭常识是想不明白的。&/li&&li&需要一定的专业能力,但同时也需要其他的一些能力。比如做个网站、或者一个普通的APP,以淘宝为例:对数据进行录入统计(发布并显示一个商品信息,对多个商品按一定规则排序),进行的是一些简单的加减乘除运算(统计购物车总价,或者打个折扣之类的)。这是我所从事的领域,稍后将详细讲解。&/li&&li&不怎么需要专业能力的,更多的需要其他能力。典型的就是美工,人家也是开发人员啊!做个效果图,然后把效果图弄成html页面。干这活,最需要的就是美感强用户感强,做出来的界面才好看好用。或者项目经理,对外和客户“勾兑”,把需求弄清楚,把项目给验收合格;对内把进度理顺,保证按期交付。&/li&&/ul&&p&&br&&/p&&p&&i&接下来就主要针对上述第二种展开讨论。&/i&&/p&&p&&br&&/p&&p&7、除了专业能力,我还需要哪些能力?&/p&&ul&&li&自学能力。这个大家都应该能够理解,软件开发这个行当,各种新技术新工具层出不穷,什么都想要学校“教”,肯定是不行的。&br&&/li&&li&英语。至少在很长一段时间吧,程序都还是得用英语写,最前沿的技术都是用英语发布交流。所以,你要是不会英语,只能等着国内有翻译才能跟上,始终是慢人一步差人一步。但好消息是,入门阶段英语不是必须的。&/li&&li&“整洁清晰”的能力。我以前以为这只是一个“意识”的问题。后来我发现一些同学,无论怎样要求,他们写的代码我就是看不懂理不清,但确实是“对”的——感觉他们的大脑更接近于电脑而不是人脑一样?我觉得是有这么一批人,你可以观察,那些做数学题不写解题过程的同学,大概就是了:他瞬间就能知道答案,但让他说清楚这个过程,他却很痛苦。这种同学,逻辑能力是非常强的,适合于做上面第一种,或者干脆是计算机基础性研究;但确实不适合于做软件工程:一是浪费了天赋,二是代码是写给人看的,别人看不懂没法和你合作啊!&/li&&/ul&&p&&br&&/p&&p&8、我要不要考研?&/p&&p&这个怎么说呢?多一个研究生的学历肯定不是坏事,但要花上三年的时间和学费,国内的研究生教学质量,包括还要花时间学政治之类的,呵呵……自己权衡吧。&/p&&p&我只能说:只要有本事,没人在乎你的学历;没本事,再高的学历也吃不开(除非在高校或者政府机关)。&/p&&p&&br&&/p&&p&9、我是该自学还是参加培训班?&/p&&p&第一、看你的时间紧不紧。&/p&&ul&&li&如果你急着找工作,当然参加培训要学得快一些,可以少走一些“弯路”。但这就和喂饲料的“速成鸡”一样(看我这比喻用的),根基其实并不扎实。&/li&&li&如果你还在大一大二,有一大堆的时间可以挥霍,当然可以慢慢的专研琢磨,这个不断碰壁的过程其实也是一种能力的锻炼。&/li&&/ul&&p&第二、看你的学习能力强不强。&/p&&p&最简单的测试,整一本入门教材,跟着学跟着做,能不能最后弄出个东西来?比如一个小网站,一个小APP。能行,你就有这个能力;不行,两眼一抹黑,连怎么配环境都搞不定,那你还是花点钱交学费吧。&/p&&p&&br&&/p&&p&10、我自学的话,从哪里开始入手?&/p&&p&我是不主张从二进制、或者什么算法数据结构之类入手的,而是应该从“实践”直接开始。我一直强调:软件工程是一门实践科学。编程语言,我们称其为“语言”,语言就是拿来说拿来用的,有输入有输出,才能不断的形成反馈和激励,越走越远。&/p&&p&我们现在的大学课程设置得很有问题。&/p&&p&我一个侄女,学的是计算机专业,现在大三了,估计他们班上没几个最后能学出来。当然他们学校也不好,但同样不好的生源,进培训机构,两年过后大部分人都能上手工作啊?&/p&&p&一个很重要的问题,就是大学的课程设置太呆板太落伍太反人性了。我侄女大一的时候,还是很认真学习的,一打电话就是在图书馆。我问她你在学什么?&/p&&p&“C语言。”&/p&&p&“哦?现在图书馆都有计算机了?”&/p&&p&“没有啊!”&/p&&p&“那你怎么学C语言?”&/p&&p&“看书啊!”&/p&&p&“怎么看?”我奇了怪了。&/p&&p&原来她每天就捧着一本C语言的书在图书馆,一本书上画满了横线、波浪线、三角形圆形,然后就开始打瞌睡……&/p&&p&学了一学期的C语言,独立的打一个三角形都打不出来。&/p&&p&码这么多字,就是特别强调:编程不是这样学的!特别是一些女生,切记切记!!!&/p&&p&其他的参考:&a href=&https://www.zhihu.com/question//answer/& class=&internal&&如何自学成为程序猿?&/a&&/p&&p&&br&&/p&&p&11、如何找到第一份工作?&/p&&p&学到一定的时候,肯定是要找工作的。我个人觉得,越早找到工作越好,毕竟在工作中学,要比自己摸索快得多。&/p&&p&很多同学心里害怕:我没有文凭没有学历……&/p&&p&其实呢,这只是你自以为。通常只有很好很好的单位,才会有意识的招一些很有名气的大学应届毕业生。一般的大学毕业文凭,没什么用的,作用基本上等同于你的身份证。&/p&&p&为什么很多同学都怕呢?可能主要还是心虚招聘启事上第一条就写着的要求:计算机专业本科以上学历。这都是HR按惯例整上去的东西,就像入团/党要写的那些……一样。&/p&&p&我投简历的时候根本不看这些东西!有这个时间我还不如多投几份简历呢。&/p&&p&当然,第一份工作肯定比较难。但心态要好:这是你转行的代价啊!就准备好三个月六个月,一直投简历,一直面下去,每次面了回来就总结,迟早修炼成“面霸”,这个过程一样有助于能力的提高。&/p&&p&万事开头难,第一份工作可以“将就”一点。自己憋足气,不断提高,第二份工作就可以“嚣张”了——那时候,人家看的就是你的工作经验了。&/p&&p&&br&&/p&&p&这里有一个小问题:需要“伪造”学历么?&/p&&p&首先,我觉得没必要。&/p&&p&当然你实在觉得没有学历这个“敲门砖”连面试机会都没有,在投简历的时候伪造一下也可以,因为HR不懂这些。但面试结束(最好是开始)的时候一定要如实的向面试你的技术负责人说明情况。一般的技术人员都能够理解,他不理解就不理解了——此处不留爷自有留爷处!&/p&&p&&br&&/p&&p&12、真实的程序猿/攻城狮/IT民工生活是怎样的?&/p&&p&首先,这些都是“自黑”。就像“人民公仆”一样——好像我哪里说错了?&/p&&p&其次,任何一个行业,都有很多讨厌自己本职工作的人。哦,你自己都已经要转行了,想来我也不用多说了。&/p&&p&然后,这肯定是一个“朝阳行业”。伴随着“万众创业”的口号,程序员的身价这几年猛涨。你看,到处都是“只差一个程序员”了。当然,三十年河东三十年河西,小心泡沫吹破了。&/p&&p&最后,这个行业还是有几点“不好”的地方:&/p&&ul&&li&没办法投机取巧。行就行,不行就不行!“我爸是李刚”也不管用。&/li&&li&知识更新快,需要不断学习。工作肯定会有积累,但不能一直吃老本。&/li&&li&对着电脑的时间远远大于对着人的时间。会被人家认为古怪或者“宅”。&/li&&li&会被亲戚朋友经常叫去装机修电脑。&br&&/li&&/ul&&p&其他的,大家可以参考:&a href=&https://www.zhihu.com/question//answer/& class=&internal&&独居的作家或其他SOHO如何满足日常健康的社交需求?&/a&&/p&&p&&br&&/p&&p&13、以后的发展方向?&/p&&p&这个问题经常被问,但确实很难回答。可能和这个问题交相辉映的,就是:&a href=&https://www.zhihu.com/question//answer/& class=&internal&&迷惘的30多岁的程序员如何考虑自己的未来?&/a&&/p&&p&其实我觉得呢,与其不断凭空焦虑,不如踏踏实实的静下心来做事。&/p&&p&焦虑什么呢?这其实是我最近才想明白的一个道理,还是怕走弯路:我学了这个有没有用,我选的那个究竟有没有前途……&/p&&p&但真的有捷径么?那些真的都是弯路吗?难说得很。&/p&&p&不说看路边的风景,就说最后的结果。人这一辈子,真的得讲究积累。很多时候,成功只是水到渠成的结果而已。&/p&&p&&br&&/p&&p&++++++++++++++&/p&&p&日 补充:&/p&&p&鉴于很多同学在自学的过程中,遇到的一些“奇怪的”“独特的”“就我电脑上才有的”“网上找不到帮助信息的”……问题,创办了网站: &a href=&//link.zhihu.com/?target=http%3A//17bang.zyfei.net/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&一起帮&/a&。&/p&&p&希望通过“一对一”的“远程桌面”模式,老人带新人,大家一起帮,直接了当的解决这些稀奇古怪的问题。 &/p&&p&注册可使用这个链接: &a href=&//link.zhihu.com/?target=http%3A//17bang.zyfei.net/Register/Home%3Fname%3D%25e5%258f%25b6%25e9%25a3%259e%26code%3D1786& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&17bang.zyfei.net/Regist&/span&&span class=&invisible&&er/Home?name=%e5%8f%b6%e9%a3%9e&code=1786&/span&&span class=&ellipsis&&&/span&&/a& (其中包含我的邀请码:叶飞,1786)&/p&&p&++++++++++++++&/p&&p&日 补充:&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/#tipjar& class=&internal&&直播:从头开始一个真实的项目&/a&&/p&&p&欢迎加入。&/p&&p&++++++++++++++&/p&&p&日 补充:&/p&&p&为了让更多同学实际的体验感受一下:真正的项目开发,是怎么样的一个过程。我每周一到周五,晚上8:00到9:00,会直播一个小时我的工作情况。&/p&&p&算是部分实现我《&a href=&//link.zhihu.com/?target=http%3A//www.cnblogs.com/freeflying/p/4796369.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&野生程序员:优先招聘&/a&》里的诺言吧——好吧,我承认,打了个折,但变现快呀,是不是?等我把《架构之路》系列写出来,黄花菜都凉了。最近创业,我也实在是太忙了,大家就先直播将就着看吧?&/p&&p&有兴趣的,加QQ群:&/p&&p&&i&++++++++++++++++++&/i&&/p&&p&日 补充:&/p&&p&开设了:&b&&a href=&https://zhuanlan.zhihu.com/project?author=tan-ye-91& class=&internal&&项目管理和架构之路 - 知乎专栏&/a&&/b&,欢迎光临。&/p&
因为回答了问题:并且讲述了我自学软件开发的经历:所以有一些同学就私信/QQ问我相关的问题,问多了答多了,其实问题就那么几个,翻来覆去的回答好像太无聊了点。所以总结并自问自答如下: 1、该…
先介绍下自己的背景情况,题主可以作下参考:
&br&1.本科通信工程,非计算机科班,大一学过C语言基础,后来因为专业课程需要,学了一点汇编以及Matlab。这部分经历我认为对于我后来的编程学习只有基础语法理解方面的帮助。
&br&2.去年11月中开始系统学习编程语言,由于想做Android开发,所以入门语言选择了Java。
&br&3.11月中到12月中,边看传智播客的一套视频边敲里面的练习。
&br&4.12月中到1月中,20天左右时间看了《编程之美》,并用Java实现书里百分之五十左右的算法题,剩下的题由于难度太大
或者比较复杂,当时没有深入研究下去。
&br&5.1月中到2月中,选择了网易公开课里面的《斯坦福大学公开课—编程方法学》这套视频,同样是边看视频,边完成里面的Assignment。在这里感谢帅帅同学@王帅 推荐这套视频。里面的Assignment题都是经典题目,对于初学者来说非常适合。
&br&6.2月底开始学习Android语言,花了1个月左右的时间,照着《第一行代码》里面的例子,敲代码进行实现。
&br&&br&由于在学习编程之前就有两个小产品的构思,所以也没有想自己基础是否打扎实了,先试着去实现,看看能不能做出个可用的产品来。截止到目前为止,两个小产品都已经开发完毕了,其中一个“苹果序列号查询”已经在小米、豌豆荚、Google Play、魅族Flyme等应用市场上线并且有了一版更新,本篇文章就结合这个应用和题主的问题来说下自己的想法,同时也当是此应用的一个开发总结。
&br&&br&-----------------------------------------
&br&&br&问题1:开发一个APP有多难?
&br&&br&这个与产品的复杂度有很大的关系,复杂度包括业务逻辑多不多,业务模块多不多等,对于玩票的爱好者或者初学者来说,一般会先选择功能比较少的产品来实现。我的第一个APP“苹果序列号查询”就属于这种功能很少,逻辑不复杂的应用,简要来说就是:
1.找一个API,根据序列号去请求查询数据,返回数据后进行解析呈现
2.另一个大功能就是记录查询历史
&br&功能少,逻辑不复杂对于我来说有一个好处是:虽然心里还是没底能不能完成,但是至少自己思路一直很清晰,先完成什么事情,再去完成什么事情。
&br&&br&最终第一版做出来大概花了10天左右,程度是刚好能用,但是有好几个需要优化的功能,以及需要新添加一些功能。当时由于很想快点上线同时也看看有没有一些反馈,就把这个很糙的1.0版上线了。后来帅帅同学@王帅 提了好几点优化建议,再结合自己此前的想加的功能,也就是第2个版本的改进目标了。第2版开发大概花了5天左右,最终在5月18日上线(4月14日上线,到目前为止下载量已经超过1000)。现在,“苹果序列号查询”是这个样子的:
&br&&figure&&img src=&https://pic4.zhimg.com/50/aceb2f5c022f66bccb8b44ce_b.jpg& data-rawwidth=&1690& data-rawheight=&2857& class=&origin_image zh-lightbox-thumb& width=&1690& data-original=&https://pic4.zhimg.com/50/aceb2f5c022f66bccb8b44ce_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/50/698af2afc12_b.jpg& data-rawwidth=&1690& data-rawheight=&2857& class=&origin_image zh-lightbox-thumb& width=&1690& data-original=&https://pic3.zhimg.com/50/698af2afc12_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/50/ea05ccf0be5b75d779cbf6_b.jpg& data-rawwidth=&1690& data-rawheight=&2857& class=&origin_image zh-lightbox-thumb& width=&1690& data-original=&https://pic4.zhimg.com/50/ea05ccf0be5b75d779cbf6_r.jpg&&&/figure&&br&关于开发“苹果序列号查询”具体实现逻辑介绍,请移步(最近好像需要翻墙):&a href=&//link.zhihu.com/?target=http%3A//jeffinbao.github.io/android//applesnquery-summary-forcast.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JeffinBao - Android开发,读书,见人,行事&/a&&br&&br&问题2:需要经历哪些流程?
&br&1.像我这样没有编程基础的,学习基础知识的过程肯定是必须的。我的学习过程在背景介绍里面已经描述过了。
&br&2.有了一些基础之后,就需要有做出应用的构思。如果没有自己想要做的产品,类似于天气查询这样很多人都会拿来练手的应用是比较好的选择。API成熟;做过的人多,有问题随时查询基本都能有答案。我做“苹果序列号查询”是因为之前没有这样的应用,每次需要查询苹果产品激活信息都要去那些广告繁多的网站上,体验很不好。刚好聚合数据又有苹果序列号查询的API,所以就想自己做一个
&br&3.这一步就是写代码的过程了,对于Android来说,代码有两个方面:布局配置(xml)+具体业务逻辑(一般用Java语言)。
&br&4.完成开发之后就是在各大应用市场上线了。
&br&&br&上面所有流程,对于新手来说肯定会遇到各种各样的问题,还好Google搜索很强大,遇到问题,大胆去搜吧。
&br&&br&问题3:难点都在哪里?什么时候出现?
&br&就像上面说的一样,新手会遇到各种各样的问题,我不认为都是难点,由于对于新事物的不熟悉,很多别人认为很简单的地方在我这里都会成为拦路虎,唯一能做的就是保持耐心,不断去找答案。比如在“苹果序列号查询”开发过程中,阻碍最长时间的是这样一个问题(耗了两天才解决):在使用聚合数据API时,请求数据的一个代码块始终无法执行到,我在网上查了两天,再反复看自己的代码,都没有解决。实在没办法了,工作日的时候,向聚合数据的工程师求助,最后问题是我在配置文件里面少写了一行代码,导致sdk初始化不成功。聚合的工程师在远程很快就发现了这个问题,所以我认为遇到的不见得都是难点,关键还是遇到问题后自己怎么去寻找解决问题的途径和方法。
&br&&br&问题4:需要哪些人员进行开发?
&br&标准的配备一般是:产品,设计,软件工程师,测试工程师
&br&但是根据项目大小以及性质,可以精简。个人项目,当然1个人就充当了上面4种角色了。产品原型在纸上画出来,设计样式软件工程师在代码中不断调整实现,软件工程师写完后自己进行简单测试。
&br&&br&问题5:需要多少钱多少时间?
&br&钱方面不清楚,时间上也是根据具体应用业务逻辑多不多,业务模块多不多来决定的。目前我个人完成的2个应用,做出第一版花费的时间都在10-15天左右,这个速度肯定是偏慢的,因为对于我来说很多知识都需要去现学。
&br&&br&------------------------------------
&br&&br&写了这么多,不知道有没有帮助到题主,下面我也想安利下自己的应用以及在求职中的自己:
&br&&br&1.小米、豌豆荚、魅族Flyme、Google Play、锤子应用商店上搜索“苹果序列号查询”,有任何问题,欢迎反馈给我丫。
&br&&br&2.第二个应用做的是个人简历—JeffinBaoCV,没有上线,感兴趣的朋友可以通过下面链接下载(由于身边手机不多,可能在小屏幕低版本系统的手机上会有适配问题,如果有,也欢迎反馈给我丫,多谢):&a href=&//link.zhihu.com/?target=http%3A//pan.baidu.com/s/1g39kq& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&百度云 请输入提取密码&/a&.(提取码:9x6d)
&br&&br&3.下面是跟我有关一些主页的链接:
个人主页:&a href=&//link.zhihu.com/?target=http%3A//jeffinbao.github.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JeffinBao - Android开发,读书,见人,行事&/a&&br&
主要用于写技术文章和一些自己认为写得比较好的文章,刚开始用jekyll引擎不久,所以内容比较少。
GitHub主页:&a href=&//link.zhihu.com/?target=https%3A//github.com/JeffinBao& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JeffinBao (Jeffin.Bao) · GitHub&/a&&br&
主要用于托管自己的代码,寻找一些好的开源项目来学习使用。
&br&&br&-------------------------------------
&br&&br&深知自己在Android开发上只是个入门选手,但还是想踏出这一步开始找工作,原因有以下几点:
&br&1.从去年11月辞职开始,这大半年时间中除去出去玩+过年,真正学习编程的时间在5个月左右,我认为这是我的劣势:接触编程时间太短;但也是我的优势:这5个月中,从结果来说,我通过自学以及师友的帮助,完成了两个我个人构思的应用,虽然比较简单,但是通过这两个应用,让我了解了如何完成一个应用的开发上线以及维护。也证明了大学毕业1年半以后我的学习能力依旧没有丢掉。
&br&2.希望能接触更复杂的项目,我相信真正面对用户的商业应用挑战更大当然也更能让我成长。
&br&3.希望能接触牛人,总是一个人闷着学习开发,缺少与牛人的沟通交流对于技能的成长是不利的。
&br&&br&如果你对我感兴趣,请私信我或者通过下面邮箱联系我吧,谢谢!
&br&邮箱:
先介绍下自己的背景情况,题主可以作下参考:
1.本科通信工程,非计算机科班,大一学过C语言基础,后来因为专业课程需要,学了一点汇编以及Matlab。这部分经历我认为对于我后来的编程学习只有基础语法理解方面的帮助。
2.去年11月中开始系统学习编程语言…
谢邀。&br&就拿我自己来说,我是学技术的,计算机专业硕士毕业,毕业当年就找了产品的工作。如果用一&br&句话概括现在的心情,就是喜忧参半。&br&&br&优势:&br&1.程序员说简单词汇如url,说三态,说thrift接口等等,你大概明白,不会让技术觉得跟你说话是对牛弹琴。&br&2.做产品设计的时候,不会异想天开,认为没有技术实现不了的东西,你会考虑背后的成本。&br&3.遇到不是非常配合,或者说不愿意加班,想偷懒的程序员,你了解技术背景,不会被坑,一个小时工作量他告诉你要一个星期。&br&4.可以在项目阶段中,提前预估风险,并且进行风险规避。&br&5.会很好的理解技术们的辛苦,因为你走过来的。&br&6.一个项目进入开发,推动力执行力会相对比较强,就像写程序一样,你急切希望debug完成,&br&得到一个结果。&br&&br&&br&劣势:&br&1.对应上面的1,有时候会存在这样的现象,你听他们讲完技术方案,表露出“哦,原来这样,&br&很简单啊”类似这种,分析技术们的心理,他希望你对他膜拜,这样的话,他们很反感你。&br&2.对应上面的2,你很容易被自己困住,思路打不开。&br&3.除非你真的有积攒,有留心,一般来说面对枯燥的编程多年,你对产品设计、交互、美感不如&br&其他专业童鞋。&br&4.对应5,你固执的往前跑,除非你真的很擅长协调处理关系,否则会太简单直白,做事太直接&br&,让人厌烦。&br&&br&不要以为做产品就轻松:&br&做了产品之后,技术加班你也加班,技术不加班,你也要加班;&br&技术只需要实现产品就好,你要费尽心思、死去活来去想产品背后的逻辑,去验证你的思路;&br&产品数据不好,你扛着;&br&团队激情下降,你负责调动气氛;&br&当你压力太大的时候,你能找到方法减压;&br&当你被所有人冤枉时候,当你背着黑锅的时候,你却无怨无悔,心甘情愿;&br&&br&做到上面,那你来吧!&br&&br&建议:产品是一个长期月累积攒的行业,没有什么法子能让你一蹴而几。如果你真的想好了,那就一心态好,二留心行业发展,三多思考,四热爱生活。应聘某个公司,务必先熟悉产品,有针对性进行分析准备!
谢邀。 就拿我自己来说,我是学技术的,计算机专业硕士毕业,毕业当年就找了产品的工作。如果用一 句话概括现在的心情,就是喜忧参半。 优势: 1.程序员说简单词汇如url,说三态,说thrift接口等等,你大概明白,不会让技术觉得跟你说话是对牛弹琴。 2.做产…
抛开「为什么要转运营」的问题不谈,我觉得技术转产品有这样一些优势和劣势。&br&&br&&b&优势&/b&&br&&br&&ul&&li&&b&优势一:懂技术,更容易解决产品相关问题&/b&&br&&/li&&/ul&用户提出要求的时候,有技术背景的同学能更好地判断做这件事情的成本,给用户更合适的回复。比如有些产品功能对用户来说感官上是小功能,但实际上涉及到一系列复杂的后台与前端交互的逻辑。这种情况下用户会理所当然地认为做这个产品很容易,并且再三质问你们为什么不能很快就开发出来。这时候你就可以更好地向用户解释为什么它不会很快得到更新,并且给用户推荐当前情况下可以替代的方案。同时在团队中,你可以结合技术将这个用户反馈很好地传达给产品设计,帮助产品更全面地考虑这个功能。&br&&br&当用户反馈了一个 bug 的时候,你能够迅速利用技术经验识别问题是否为技术问题,用技术工具追溯更深的错误原因,以及它是否是波及面很广、严重程度很高的技术问题,然后进一步将它准确清楚地传达给技术人员,帮助他们迅速 fix。&br&&br&没有和用户打交道的时候,你自己频繁使用的后台也会出问题,你也同样可以去查找问题的根源,给到后台开发人员项目的优先级。或者,有一天当你希望技术去抽取你想要的数据的时候,你可以更有底气地根据数据库的存储去给到时间上的要求。&br&&br&总之,运营工作中所有和产品、技术相关的问题你都可以进一步的技术相关信息,而普通的运营则需要经过长时间的训练才能有这样的积累。有技术经验非常有利于产品和开发的工作,你会因此经常感到骄傲的。&br&&br&&ul&&li&&b&&b&优势二:习惯向有经验的人学习&/b&&/b&&/li&&/ul&我经常羡慕工程师有那么多论坛和文档,有那么好的线上交流氛围,可以用来解决工作中实际的问题;同时我也很羡慕工程师们因为每日的工作而养成了 Google 、查阅、试验的习惯。&br&&br&好的开发经验是来自于有开发经验的人,对于运营来说也一样。从技术转做运营的同时,如果也始终坚持将别人的好经验尝试运用于自己的工作中,就会受益良多。可惜的是,很多做运营的人并不相信经验,而是执迷于「想法」和「创新」。有问题需要解决的时候,他们往往花费更多的时间去寻找一个完美、新鲜的解决方案,而将宝贵的时间白白浪费了。有的时候,运营的方法就和一个库一样,你经常花费很多时间选择一个方案,但是只有真正应用了之后你才知道是否真的有效,以及效果如何。&br&&br&&br&&b&劣势 :&/b&&b&运营与技术工作的差别&/b&&br&&br&我学习计算机时,大部分时候是将现有的计算机思想应用到实际的场景中去解决具体的问题;而运营则是你从实际的场景中,不断地去提炼抽象的思路,以便用于之后不断重复出现的类似问题中。也不似计算机知识,运营目前并没有全面、深入的「知识体系」。缺乏学习资源,你可能一时会感到难以适应。但就如同我之前所说的,坚持去找答案,并且向有经验的人——包括竞争对手学习,你就把这个让你痛苦的劣势转化成了优势——因为大部分人不这样做。&br&&br&另外,运营的日常工作看似琐碎,一会回个用户消息,一会发个 push,一会开个会,一会喝个咖啡,再看看微信,似乎一天就过去了。除了更为资深的运营需要对着电脑冥思苦想好的点子,有技术背景的人恐怕在运营工作中很难找到类似半夜两点全神贯注编程的时刻。因为事情繁杂,流程很长,运营工作见效的周期明显地要长于开发,许多本来从事运营的人在坚持一段时间之后也很难找到成就感,以至于效率下降,工作错误百出。这个时候可能需要你在心中反复地向自己明确自己工作的价值,反复地找到自己工作的成就感的来源,才能不断往前走。&br&&br&&br&&i&每次能够与开发沟通技术问题的时候,我都很庆幸自己在大学里学习了计算机、数据库、计算机网络、编程知识。一方面能够方便同事的工作,一方面自己处理用户的问题也越来越有底气。也许以上文字中我对技术的理解与存在偏差。若有疏漏之处,还请不吝赐教。&/i&
抛开「为什么要转运营」的问题不谈,我觉得技术转产品有这样一些优势和劣势。 优势 优势一:懂技术,更容易解决产品相关问题 用户提出要求的时候,有技术背景的同学能更好地判断做这件事情的成本,给用户更合适的回复。比如有些产品功能对用户来说感官上是…
&p&【&a href=&https://zhuanlan.zhihu.com/jnshu& class=&internal&&IT修真院 - 知乎专栏&/a&】&/p&&p&【&a href=&https://www.zhihu.com/lives/107520& class=&internal&&知乎 Live - 全新的实时问答&/a&】&/p&&p&我想这篇文章说是【互联网职业入门圣经】一点都不过份,毕竟2年以来有数万人从本文收益,而且,文中内容没有太多变动,和当前的职业变化相差不大,除了单纯CSS几乎消失,Android和iOS走如低谷后略有回暖。&/p&&p&希望你们喜欢。&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&互联网行业的薪资水准相对较高,刚入行一个月,半年,或者一年超过其他行业薪资很正常。&br&那么,互联网行业究竟有哪些职位呢,又分别适合哪些传统行业转型?&/p&&p&1.产品&br&2.UI&br&3.CSS&br&4.JS&br&5.后端(Java/php/python)&br&6.DBA(mysql/oracle)&br&7.运维(OP) &br&8.测试(QA)&br&9.算法(分类/聚类/关系抽取/实体识别)&br&10.搜索(Lucene/Solr/elasticSearch)&br&11.大数据工程师(Hadoop)&br&12.Android&br&13.IOS&br&14.运营&/p&&p&&br&&/p&&p&&br&&/p&&p&然后等下我会分别介绍每个职业的工作内容,发展前景,入门门槛,适合哪些职业转行,成长周期,薪水范围等。&/p&&p&* 薪水都以北京为例&br&* 运营和市场都有更细致的划分,然而我并不太了解了&br&* 其他的偏门的&/p&&p&&br&&/p&&p&一.产品&br&========我是求某个姑娘快原谅我的的分割线=============&/p&&p&&br&&/p&&p&&br&&/p&&p&1 工作内容:了解用户需求,做竞品调研,画产品原型,写产品文档,讲解产品需求,测试产品Bug,收集用户反馈,苦练金刚罩以防止程序员拿刀砍。&/p&&p&2 需要技能:PPT,Word, Axure,XP,MVP,行业知识,沟通&/p&&p&&br&&/p&&p&
PPT是最容易被忽视的技能,很多时候很多人都把产品经理=画原型,如果你这么想,再做五年的产品经理也是一个画原型的。我在修真院的时候,给修真院的弟子讲过很多次,产品经理更多的是理解一个行业,熟悉这个行业的用户,知道这个行业有哪些没有满足的需求,寻找解决方案,对比行业,找到自己的切入点,最终落地成:哪些功能要做,哪些功能不要做。&/p&&p&
这些都是要在PPT里写清楚的。所以,PPT并不是简简单单的一个工具,而且是用这个工具把你对这个行业的了解和分析和解决方案展示出来。&/p&&p&
XP是敏捷开发,不会敏捷开发的产品经理很难说会是一个好的产品经理(我很偏激,所以接受不了可以直接无视)。敏捷开发对于产品经理来讲,是逼着产品经理去用Story的方式去思考,去考虑自己每一个Story的价值是什么,所有的Story优先级是什么。&/p&&p&
MVP是最小化验证产品的缩写,这在精益创业里是很重要的概念。也就是说,你臆想了一个产品,他有了什么样的功能,但是!请注意,我们认为所有没有经过用户验证的功能都是在扯淡。所以,你其实是设计了一个扯淡的功能然后交给一堆人去开发,再交给人去运营,直到一个月或者是三个月以后才能拿到反馈结果。我们等不了,所以你必须在程序员开始启动之前,先想办法验证自己要解决的问题是存在的,要解决的需要是用户确实需要的---你有无数的办法可以这么做,真的。好比是,我做IT修真院,并没有先直接做线上的网站,而是直接去贴吧发贴,用QQ群,在论坛直接做,去观察这些弟子的行为,然后去修正自己的产品设计,我发现了他们需要日报,需要点评,需要有班级的概念,需要有学号,需要有首席大弟子等等等等这些。然后我会把这些需要分析整理之后加入到网站的设计里去,这就是MVP的价值--当年穷疯了每个决策都慎重的时候,就会特别喜欢这种方式,土豪除外,只会浪费时间而已。&/p&&p&Word是产品需求文档,我自己不太喜欢Word文档,更喜欢XP的Story,不过会一点也没有关系。&/p&&p&行业知识是产品经理最重要最重要的技能,没有之一,你可以不懂PPT,不会Axure,不会Word,也不会什么XP和MVP,但是绝对不能不懂一个行业。某种程度上来讲,产品经理拥有的其实是快速了解一个行业的能力。现在的互联网已经和以前的不一样了。以前的产品经理懂点儿交互,知道什么是表单,知道点IT术语就能混日子了,现在必须要懂一个行业,地产,金融,汽车,教育,餐饮,医疗等等各种行业,你都需要了解这个行业的模式,如果你不懂,你就是一个画原型的人。&/p&&p&沟通也是产品经理的必备技能,出门不带沟通技能,一定会被程序员砍。一方面是要跟用户沟通,一方面是要跟程序员沟通(这是世界上最难沟通的物种,没有之一),一方面要跟领导沟通(其实就是想办法拍领导马屁然后哄着他们听自己的话)。&/p&&p&&br&&/p&&p&&br&&/p&&p&3 发展前景&/p&&p&不用说,产品经理绝对是一个炙手可热的职业,而且,TNND的几乎是零门槛,这表示,是个人都可以说,我想成为一个产品经理。&br&
然而,好的产品经理很多么?并不多,所以,好像围棋一样的,入门容易,学精难。&/p&&p&而且,似乎并没有一个系统的教程(这真是一个很难让人相信的事情啊,这么一种职业,没有大学的知识培养,甚至都很少有标准化的职业化培训,全靠业界手把手培养和自发的交流,就能够拿着无数DS程序员根本就想像不到的薪水--产品经理真的跟DS有点儿不搭边的,当然,我大修真还是在努力做产品人员的培养的)。&/p&&p&产品经理的发展前景是很赞的,只是越来越体系化了,而且很容易出人头地。&/p&&p&一般来说:&/p&&p&0~6个月:4K~8K&br&6~12个月:6K~12K&br&1年~3年:10K~24K&br&3年~5年:20K~40K&br&5年~
:30K~&/p&&p&三个月到半年左右就可以算是迈入这个行业啦,如果遇到P2P这种对于专业属性要求比较高的,随便在一家公司混点经验,跳到另外一家新的公司就是一个产品总监:因为并没有其他人又了解金融又了解互联网。&/p&&p&&br&&/p&&p&&br&&/p&&p&成长路径:&/p&&p&产品助理-产品经理-高级产品经理-产品总监-CEO&/p&&p&&br&&/p&&p&大致这个样子。&/p&&p&&br&&/p&&p&&br&&/p&&p&4.入门门槛&/p&&p&无(甚至你可以不认识字)&/p&&p&&br&&/p&&p&5.哪些行业适合做产品经理&/p&&p&IT界:程序员,UI,QA,运营,市场&br&
其他界:无限制&/p&&p&PS:想了想,还真是没见过身边有做运维的转产品经理的。&/p&&p&&br&&/p&&p&6.职业限制&/p&&p&很多产品经理都很怕跟程序员沟通。而且经常会苦恼,觉得自己设计的功能,程序员做不了,做不出来,做的太慢,做的太差。惟独不会觉得自己设计的太烂。&/p&&p&所以,很多产品经理都会认为不同技术是自己的一个弱项,我曾经整理过一个产品经理需要了解的技术术语,有需要直接看楼下的广告。&/p&&p&&br&&/p&&p&7.去哪里学,怎么成长&/p&&p&还用问,自然是跟着大修真院最好。&br&
如果IT修真院你看不上,可以去一些有产品经理培训的地方去,虽然我肯定觉得自家的好。&br&
如果这些产品经理培训的差不多了,有了一个基本概念了,找个产品助理或者是实习的职位去吧。&/p&&p&会画点儿原型图,有个线上的作品,就能找工作(虽然我很不喜欢这样的产品经理)。&br&
然后有机会就去大公司了解一下各个部门是如何扯皮的,镀镀金,Over了。&/p&&p&&br&&/p&&p&二
UI&br&=============我是累死了的分割线================================&br&马丹,首先写软文,又要写成干货,又要带广告真心不是一件容易的事儿。我在之前&a href=&http://www.zhihu.com/question//answer/?group_id=064576WEB& class=&internal&&如何在一个月之内从零基础成为初级CSS前端开发工程师? - xdyl 的回答&/a& 的贴子中,写了整整一个星期才写出来。我写小说都是分分钟好么。&/p&&p&可是没办法。一个是确实需要跟大家介绍一下每个职业的比较和特点,一个是也确实需要告诉更多的人,写代码真的不是看视频看会的。&/p&&p&好了我接着说。&/p&&p&1 工作内容:收到产品原型,给原型上色,偶尔会自作主张调整下原型的位置,出不同的风格给老板和客户选,然后听他们的意见给出一个自己极不喜欢的风格,最好给Android,IOS或者是CSS做好标注,还有的需要直接帮他们切好图,最后要练出来象素眼,看看这些不靠谱的程序员们有没有上错色或者是有偏差。&/p&&p&&br&&/p&&p&2 需要技能:PS,Illustrator,Sketch,耐性,找素材&/p&&p&PS是最基础的技能。各种图层通道蒙版神马的细节的东西就不用说了,很多时候很多公司都愿意出所谓的高保真图。什么叫高保真图,简单说就是不折磨产品折磨UI的破玩意儿。就是把所有的图都画出来然后对着UI图来改,偶尔还会要求做出来网页能够点,对于这点我不想再吐槽了,总之,PS是少不了的技能,基本上很多时候其他人都会以为你只需要用PS就能搞定一切。&/p&&p&然而PS始终只是一个工具而已,所以在这里,PS代表的更多的是一种方案的选择。比如什么行业用什么配色,怎么样对齐,怎么突出重点,PC下应该是多宽,手机应该是多宽,等等等等。&/p&&p&ILLustrator最近似乎是用的少了,我不太确定,但是做矢量图以前是就是靠他的。什么是位图什么是矢量图,自行百度就好。以及还有CoreDraw,不知道现在是否常用。然而,慢慢的似乎Sketch流行起来了。&/p&&p&SKetch和Illustrator和CoreDraw之间的差别我说不上来,我记得我的UI小姑娘跟我讲这个工具很好用。&/p&&p&&br&&/p&&p&耐性必须是UI必备的技能,因为有的时候,老板跟你较真起来,一个星期不停的反复修改一个首页是很正常的事儿。可能颜色要从红换成黑再换成绿。所以你必须要有耐性,除非你做的设计没人管,你说了算。而且,UI这东西,是个人都有自己的审美观。更不用说之前朋友圈的测试,人和人看到的颜色真心不一样。&br&所以你必须要有耐性,这是很重要的。&/p&&p&找素材的能力也是必不可少的,你手上必须要备几个常用的素材网站,大部分的人都是在别人的素材基础上改来改去。&/p&&p&&br&&/p&&p&说到这里,其实忍不住想加上一句。UI设计师最重要的能力并非是以上几种,而在于是理解产品经理的需求--前提条件是产品经理很明确的说出来了而且讲清楚了需求。&/p&&p&比如说,一个页面的重要是什么?最想引人注目的内容是什么?应该配什么样的图?加上什么样的元素能让网站的风格更醒目一些呢?&/p&&p&这里大部分其实都是原型设计师要做的事儿,我一直有一个观点,就是UI其实最应该做原型,只有这样,才能让产品经理着重去考虑功能点,让设计完美传达产品的功能点。&br&然而原型设计师这个角色慢慢的被消融了,已经变成了产品经理了。所以大部分产品经理都以为自己是画原型的,然后大部分UI都会自作主张改掉原型,因为没有美感。所以通常你会发现美感说有了,也有那么一点儿,可是总觉得会有一些不对。&/p&&p&我对他们的要求就是,先别管美不美,你先告诉我这张页面每个模块想要重点表达的内容是什么,能不能让人分清主次。做到了这一点 ,再去考虑美感。&/p&&p&&br&&/p&&p&&br&&/p&&p&3 发展前景&/p&&p&UI的发展前景是很赞的,在两到三年前,甚至都有人推动让UI来代替产品经理来驱动。某种程度上来说,UI其实最好的发展方向就是UE,也就是交互,然后就是所谓的用户体验优化师--坦白的说我并未觉得有多少公司会真正的设置这个职位,因为太泛了。但是对于现在火热的O2O来说,无论是线上还是线下,都希望提供一个极致的用户体验,所以我说不好。&/p&&p&但是大部分的UI都应该去朝着交互的方向发展,而不是去切页面。。。&/p&&p&&br&&/p&&p&UI薪水其实跟产品经理在前期差不太多,中期差点。后期相差比较远,一般来说:&/p&&p&0~6个月:4K~8K&br&6~12个月:6K~12K&br&1年~3年:10K~20K&br&3年~5年:16K~30K&br&5年~ :24K~&/p&&p&UI的成长时间大概是在两年左右,基本上PC,IOS,Android,H5全部都做过一些项目,设计过几个Logo,做过一些专题和Banner图,才算是比较完美报。&/p&&p&然而想要做的更好一些就有点困难了,除非你的遇到了一家公司,对用户体验要求极致,然而那个时候,并不仅仅是UI和UE相关的内容了。&/p&&p&&br&&/p&&p&&br&&/p&&p&成长路径:&/p&&p&实习UI-初级U-中级UI-高级UI(UE)&/p&&p&&br&&/p&&p&大致这个样子。&/p&&p&&br&&/p&&p&&br&&/p&&p&4.入门门槛&/p&&p&UI对入门门槛要求还算是比较高的。首先你得有一台Mac。。大部分的情况下你都需要Mac。&br&然后你要懂之前提到的常用软件,UI的交互规范,配色等等等。&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&5.哪些行业适合做UI&/p&&p&IT界:无&br&其他界:传统做VI的,就是平面设计的会转一些。跟着基本上就是小鲜肉了,刚毕业就从事这个行业的会比较多一些。还有一些学美术的,会手绘的。&/p&&p&PS:想了想,从没怎么见过程序员转行做UI的。只见过UI人员会写代码的。&/p&&p&&br&&/p&&p&6.职业限制&/p&&p&UI这个职业的限制在某种程度上就是不太清楚自己应该朝着UE发展。所以时间长了工作就会变得单调,两年或者是三年之后原地踏步走没怎么有进步的人很多。像Metro(扁平化)或者是material design这样的风格一不熟悉二不了解三不想尝试的人还是挺多的。&/p&&p&很多人做了很久其实还是分不清产品经理想要在一个页面上表达什么--这有时候真的并不是UI的错。&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&7.去哪里学,怎么成长&/p&&p&对于初学者来说,找个培训学校还真是比较好的选择。&br&我大修真院暂时并未打算去培养UI人员,主要是没有时间也没有精力去做一个系统的教程,而且我们自己在UI上也在不断的摸索。&br&一般来说,最好的成长路线就是不断的去参考别人的例子,然后再多动动脑子,多看一些UI规范。&/p&&p&先想清楚自己要表达什么,然后想想用什么表达,再去查查怎么样能做到自己期望的结果。&/p&&p&&br&&/p&&p&&br&&/p&&p&三 CSS&br&=============我是再也不要写软文的分割线================================&/p&&p&没办法。自己拉的屎不能拉个开头就提裤子走。。。说起来这也是知乎挺好玩的地方,如果不是知乎允许这种自问自答的方式,只要你说的是真正有价值的内容,并不拒绝你有做广告的嫌疑,恐怕我也不会写这些东西,你们也看不到这个贴子。&/p&&p&以下的内容是我从UI那边粘过来的,还没改呢,等我去沙发上喘口气歇会再写。中午吃的麻辣香锅有点咸。&/p&&p&&br&&/p&&p&&br&&/p&&p&1 工作内容:产品设计好原型,UI做出来了效果图,剩下的就是CSS工程师用代码把静态文件写出来的。&/p&&p&所以CSS工程师和OP一样,都是可以在不用了解业务需求的情况下就能完成工作的唯一两个特殊职业。&br&一般来说,CSS工程师并不存在,写CSS的人多少要写一些JS代码,然而确实也会有一些妹子真的就是学不会JS,有一些汉子真的就是写不出来JS,所以我还是把他们两个拆开了。&/p&&p&CSS工程师要考虑更多的就是兼容性,简单说,IE内核和非IE内核(WEBKit),IE10以下和其他。我是强烈建议新人不要去学IE10以下的Hack的写法的,让IE10以下的,不支持Html5的都去死吧,表再来跟我说用户还在用IE678了。&/p&&p&当页面切完以后,另一个工作就是去帮助菜鸟后端和某些JSER把页面又重新套错了,什么是套页面,可以看这个 &a href=&http://www.zhihu.com/people/ptteng/answers& class=&internal&&http://www.zhihu.com/question//answer/&/a& 。&/p&&p&&br&&/p&&p&&br&&/p&&p&2 需要技能:&br& 环境【IDE(WEBStorm,Sublime,EditPlus),源码管理(SVN/Git) ,WEB服务器(nginx)】&br& 基础【PS,域名,Html,Html5,CSS,CSS3】&br&扩展【自适应,响应式,Bootstrap,Less,Flex】&/p&&p&&br&&/p&&p&无论是哪一种程序员,学会搭好的自己的环境都是第一步。选好IDE,选好源码管理工具,学会每天把自己做好的Html文件发布到服务器上可以直接访问。这都是最基础的技能,记着这些东西并不难,你只是需要不断的去练习去熟悉它而已。所以从第一开始就去适应它。&/p&&p&&br&&/p&&p&会用PS是因为一是要切图,二是要制作雪碧图。这儿简单说一下,很多人都会说,切图这个活倒底分给UI还是分给前端。我一直都觉得这是CSS必须要做的,因为只有CSSER才会知道怎么切合适。然而大部分Android和IOS人员都不具备切图的能力,这也是我一直很无语的工作方式,反正,我要求我的Team,无论是Android还是IOS都必须要会自己切图。&/p&&p&另外再解释一下所谓切图和切页面的概念。切图指的是把需要用到的小图标了神马的切出来。切页面一般指的是就是把整个效果图做成Html网页。两种叫法我都觉得Low的不行,然而很多人都喜欢这么叫,而且会混到一起,时间长了,也就习惯了。&/p&&p&&br&&/p&&p&自适应和响应式是前端人员必须要懂的概念,也是必须要能做到的。毕竟现在是各种跨屏时代,以及各种分辨率都层出不穷,H5又是眼下最火红的职业和技能。&/p&&p&曾经有过工作半年或者是一年都不太懂什么是自适应和响应式的,这并不好。&/p&&p&Bootstrap,Less和Flex也是CSS工程师必须要会的。学会Bootstrap更重要的还是要去学习它的思想,这是很重要的一点,它帮助你开阔视野,你才会明白,靠,原来可以这么写。&/p&&p&Less也是一样,在推荐less和Sass之前我犹豫了很久,然而看到Sass要Ruby环境就有点不喜欢了,虽然Bootstrap已经转向Sass,但是在一般的项目中,Less也够用了。所以还是果断的推荐Less了。&/p&&p&Flex是一个好东西,我了解的还不多,在真实的项目中还未有使用过,不过挺看好的。&br&简单说呢,前端工程师需要的大多数就是技术相关的技能,倒不需要太多的沟通啊和耐性啊神马的技巧。&/p&&p&哦哦,想起来了,CSS的知识比较零散,要死记的东西其实是比较多的。&/p&&p&&br&&/p&&p&&br&&/p&&p&3 发展前景&/p&&p&CSS的发展前景最近几年好的不行。在Android和IOS大行其道的时候,一大部分人都转去做了这两个行业,然而突然之间,因为微信的缘故加上JS的魅力,H5突然又火爆起来,所以呢,CSS整体来说还是一个挺靠谱的职业。最关键的是,CSS入门最快的职业啊,几乎零门槛,只是转JS还是挺不容易的。&/p&&p&CSS薪水如果纯粹只是做CSS的话,12K到15K基本上就是封顶了。。。所以:&/p&&p&0~3个月:4K~6K&br&3~12个月:5K~8K&br&12个月以上~:8K~15K&/p&&p&&br&&/p&&p&CSS的成长是非常快的。修真院的线下弟子都是一个月左右就可以独立做项目,可以进入IT修真界闯荡江湖了。正常情况下,3个月左右是没问题的。&/p&&p&我的要求比较高,所以所谓的独立做项目就一定是独立做项目,不用怀疑这一点。包括自适应,响应式和Bootstrap。&/p&&p&所以。想要拿高薪,CSS都必须要学JS,没有其他的途径。&/p&&p&&br&&/p&&p&&br&&/p&&p&成长路径:&/p&&p&CSS工程师-初级JS工程师-JS工程师-前端架构师-前端Leader(IOS,Android和JS通吃)&/p&&p&&br&&/p&&p&不要相信NodeJS,那只是玩玩而已。不要想从前端转后端,太难了,后端和前端是两个不同的概念,特别是对基础知识要求的特别高。&/p&&p&CSS和JS最好的方式就是IOS和Android通吃,精通一种,然后其他的能做项目,并不需要考虑其他的选择,推荐再学点其他脚本语言,首推Python,永远不要去学PHP,表问我为啥,个人好恶。&br&你一定要问,等我心情不好的时候再说。&/p&&p&&br&&/p&&p&&br&&/p&&p&4.入门门槛&/p&&p&零门槛!你相信咩,一个程序员的职业居然可以零门槛进入。。。&br&好吧,大多数人其实并不把CSSER称为程序员,不过,你至少学会了CSS,就能在IT修真界这个神奇的元世界里生存,就有了进军其他职业的可能性。&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&5.哪些行业适合做CSS&/p&&p&IT界:All&br&其他界:All&/p&&p&PS:正常人都可以学的会啦(马丹我就不是正常人)&/p&&p&&br&&/p&&p&6.职业限制&/p&&p&CSS的职业限制有三个,一个就是不去学自适应和响应式,一个是不去学框架,另一个就是学不会JS。&br&这三点都是很重要的突破。然后这个职业呢,怎么讲,在一家公司里可替代的程度比较高,并不算特别重要,做不了核心岗,也不存在什么代码交接。你就算代码写的再烂,也最多就是花一个月时间重写。。。&/p&&p&所以如果你不想做JS,你就真的真的发展受限制了,一定要记着,CSS只是你的一个跳板。&br&另外,因为零门槛,所以你其实还是有很多计算机相关的知识要补的,这是一定的,没什么可商量的。&/p&&p&只是做前端还好,如果想做后端,只是不想花那么长的时间才进入这个行业,就必须要从CSS做起,跟着用自己的其他时间恶补计算机基础了。&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&7.去哪里学,怎么成长&/p&&p&之前说我的贴子是广告的,你们错了。&br&看到这里,这才是真正的广告。&/p&&p&要说去哪里学CSS,绝对是IT修真院,请先看这里 &a href=&http://www.zhihu.com/question//answer/?group_id=934336& class=&internal&&如何在一个月之内从零基础成为初级CSS前端开发工程师? - xdyl 的回答&/a&。&br&IT修真院跟其他任何一家培训机构都不一样 ,完完全全不一样的教学模式。看完这篇贴子,其实你就能大概明白这是什么样的教学方式。&/p&&p&而且,线上学习完全是免费,不仅如此,大修真院还给你入院就提供了良好的人脉关系。嗯。&br&然后,如果你真的不想来大修真院,或者我没看上你,那么你就也不要看视频或者是交钱学什么的,看W3C吧,自己偷偷按照修真院的Task做项目,跟着就找家公司实习去吧。&/p&&p&虽然慢了点,好坏也入门了。&/p&&p&&br&&/p&&p&四 JS&br&=============我是第一次过100赞的分割线================================&/p&&p&JS说起来必须是一个神器,这个当年10天内被开发出来的神器,以一种谁也想象不到的速度快速发展,它击败了Java Applet,逼死Flash,当Android和IOS看似一统全球的时候,JS慢条斯理的和Html5一起蚕食App市场,甚至还出来了NodeJS这种连后端都不放过的残暴东西。&/p&&p&原生和WEB的两种方式一直在争论不休,而我自己在三年前就是绝对的WEB支持者,windows对于JS支持的更彻底,只是Winphone一直不给力。&/p&&p&好吧,对于拿NODEJS做后端工程项目我还是有点不情愿,然而提供各种辅助工具什么的还是挺不错的。JQuery,Ajax和RequireJS和Angularjs和PhoneGap都是一些标志性的转变,还包括ReactJS。JS简直了,简直了,简直什么都不放过。&/p&&p&所以JS简单么?我带着你们了解一下JS工程师是什么样子的。&/p&&p&&br&&/p&&p&&br&&/p&&p&1 工作内容:JS工程师其实分成两类,在之前讲CSS的时候已经提到过,一个是套页面的,一个是前后端分离的。对这两个概念还是分不太清的,可以回过头去看CSS的部分。&/p&&p&对于套页面来说,JS工程师的职责非常简单,一个是做一些简单的动画和交互和验证,轮播图,弹框,验证用户名是否为空等等。另一个就是通过Ajax取一些后台数据,然后在页面上展示出来。&/p&&p&那个时候的JS工程师并不被太多人重视,很多时候一些后端的人把前端的工作也做了--除了写CSS,大部分的后端工程师写点JS还是不成问题的。&/p&&p&可是前后端分离的出现,彻彻底底的改变了前端的世界。前端居然有架构了,前端居然也有“编译”的概念了(你能想象么,JS的项目居然不能直接打开源码直接使用了,必须要经过编译才可以)。前端工程师和后端工程师只通过Json数据交互(感谢Nginx提供了一个完美的跨域解决方案,再也不用什么Jsonp了),然后服务器端的同学发现:好简单啊,我对Android,对IOS,对Html都只需要提供一套API就够了~~&/p&&p&前端同学更开心,再也不用去搭建各种悲剧的开发环境了!前端变的很轻,而且控制欲很强(AngualarJS好赞),页面跳转神马的SoEasy,而且也有了Bower这样的包管理工具,还有类似于JSP自定义Tag的指令,MVC,还有了Service的概念,马丹,前端到底发生了什么!&/p&&p&所以我们现在说到的,基本上就是前后端分离的工程师,他们的工作职责就是和IOS&Android的工程师一样,跟后端定接口,确定框架和架构,分模块,然后跟后端联调互相吐槽对方是渣渣。&/p&&p&项目结束之后修复线上Bug,不停的跟用户说:在我这里是正常的,你换个浏览器试试?不行就清一下Cookie,再不然就换台电脑。&/p&&p&&br&&/p&&p&2 需要技能:&br&环境【IDE(WEBStorm,Sublime,EditPlus),源码管理(SVN/Git) ,WEB服务器(nginx)】&br&基础【Http,REST,跨域,语法,组件,F12,Json,Websocket】&br&框架【JQuery,AngularJS,Bower,RequireJS,GruntJS,ReactJS,PhoneGap】&br&业务【金融,教育,医疗,汽车,房产等等等等各种行业】&br&第三方【微信,QQ等各种第三方登录,支付,IM,地图,语音,视频,图片】&/p&&p&&br&&/p&&p&&br&&/p&&p&环境不说了,参考CSS的。&br&基础跟CSS差别就好大了,要有一些网络协议的基本概念,要了解什么是Http,什么是Https,什么是WebSocket,什么是Rest,各种JS的语法(太复杂的完全不用管,别去管什么闭包什么Prototype什么This的指向),Json是必不可少的东西。&/p&&p&框架就多了去了。直接拿JQuery来学习就好,表去太在意什么原生语法,大部分场景你都不用担心引入一个JQuery的库导致系统变慢,AngularJS真是一个好东西,表太纠结一些细节,Bower,RequireJS和GruntJS这些会有一些前端大牛帮你搭好框架你直接用就好了。 &br&想做点App就用PhoneGap,想尝试一下ReactJS就去试吧(我很想试一下然而看到有Render就看不下去了)。&/p&&p&必须提醒一次,如果你是从CSS转到JS的,那么一定要看一下这篇贴子。&a href=&//link.zhihu.com/?target=http%3A//bbs.ptteng.com/forum.php%3Fmod%3Dviewthread%26tid%3D7473%26extra%3Dpage%253D1%2526filter%253Dtypeid%2526typeid%253D2& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【IT修真院】怎么样从CSS转JS-IT修真院&/a& 。这里强调的就是,你必须要懂业务逻辑,这跟CSS完全不需要懂业务逻辑简直是天壤之别,很多时候你并不是因为技术而无法学会JS,而是缺少对于业务逻辑的理解。&/p&&p&当然啊,这并没有完。还有无数的第三方库等着你,做微信呢你必须要用WX的SDK,要用百度地图呢就必须要用百度的SDK,还有各种支付啊神马的。如果你要做IM就有环信啊神马的。&/p&&p&&br&&/p&&p&&br&&/p&&p&所以。JS就是一个真正的程序员,一个真正的工程师,不但要能把代码实现,还需要理解需求,需要懂得编码规范,需要知道如何控制项目流程和进度风险,需要修复线下Bug,需要调优,需要做版本管理,需要制订接口,需要编写技术文档,还需要做新技术的调研或者是带新人。&/p&&p&现在你了解了咩?(如果不了解,加入IT修真院嘛,老大带你在IT界从菜鸟修成大神)&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&3 发展前景&/p&&p&我说了那么多,你们对JS的期望也很高了吧。坦白的说,有点高的离谱!&br&JS是唯一一个可以在两年之内薪水到20K的职业。&br&虽然工作五年或者是七年的JS在薪水上差别并不太大,但是也已经让很多人难以置信了好么。&/p&&p&好多人在别的行业,工作十年都拿不到10K啊亲。&/p&&p&&br&&/p&&p&0~6个月:6K~10K&br&6~12个月:8K~14K&br&一年~两年:12K~20K&br&两年~五年:18K~30K&br&五年以上:24K~&/p&&p&&br&&/p&&p&&br&&/p&&p&JS的入门相对来说比CSS难的多(表怕,有我大IT大修真院),但是他的好处是学会一点是一点,并不像Java一样,绝对是前期Gank型英雄,到了6级就能四处杀人。Java是后期,要到16级以后才能出山才能够震撼全场。&/p&&p&所以JS相对来说比较平滑,而且现在学习的曲线也比较清晰,慢慢在业界都形成了相对完善的框架。JS可以选择前进的路有很多种,只要你不是太瞎(跟着修真院就一定不会瞎),就没什么大的问题。&/p&&p&&br&&/p&&p&&br&&/p&&p&成长路径:&/p&&p&JS菜鸟-JS初级工程师-JS中级工程师-JS架构师-UED-前端Leader-前端大牛&/p&&p&大概这个样子啦,JS工程师在后面有一点后续无力,一般来说,我还是强烈推荐JS,IOS,Android三者通吃,在我的带的Team中也一直要求他们这么做(虽然并未能完全实施成功)。&/p&&p&这三者有太多相似之处了,到最后你会发现,语言只是一种工具而已。要做的事情,其实是差不太多的,并不需要对所有的语言都特别熟悉,有一种打底的,其他的都可以随意去玩了。&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&4.入门门槛&/p&&p&必须有CSS基础,必须有CSS基础,必须有CSS基础。&br&或者是有后端Java基础。&/p&&p&总之你要么是会了CSS,要么是精通了一种后端语言,千万不要CSS没学好,后端语言也不会就直接学JS,心里会没底,不踏实。&/p&&p&其他的都没什么了,列出来的基础知识,自己慢慢补就行了。&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&5.哪些行业适合做JS&/p&&p&IT界:CSS,然后是所有的都可以&br&其他界:所有的都可以&/p&&p&好蛋疼的结论然而事实上就是如此,这波JS的红利受益于微信,以及移动端的普及。我不确定在三年或者是五年之后会不会还是这种状态,然而三年和五年已经足够可以改变你的人生了,所以,你在等毛线?&/p&&p&大修真院的弟子中有搬砖的有退学的有高中毕业的有做电汽和通信的,你想想为什么你不可以?唯一不合适你的大概就是:你真的没有编程思想哈哈哈,然而这确实是一件很难解释和预测的事儿。我也确实见过反应比较慢的,进度比较慢的,但是无论如何,混口饭吃,不成问题。&/p&&p&&br&&/p&&p&&br&&/p&&p&6.职业限制&/p&&p&JS的职业限制也挺多的,主要就在于学习的方向上很容易误入歧途(至少在我眼里是这样的,相信我,我不是什么好人,我并不会我说过的每一句话负责)。比如说一直坚持喜欢用原生,各种喜欢写一些奇奇怪怪语法(我把我看不懂的语法都归结为奇怪的语法),各种回调等等等等。&/p&&p&学到一些好的框架其实很赞的,对于大多数人来讲,就够了。只是缺少一个清晰的指引。&br&有的时候你会发现,你对Http了解的比较少,会是一个瓶颈。&br&你对数组啊,循环啊不了解,是一个瓶颈。&br&你对MVC不了解,也是另一个瓶颈。&br&对Json不懂,不知道怎么定接口,也是个问题。&/p&&p&这些都学会了,也会遇到一些问题。就是JS的工程师三年,五年,七年的差别,大多数人都不算特别的大。&br&所以总会有人想学后端--但是我绝对不赞成学Java,NodeJS也可以不去学,不如去学习Python,更不要提PHP啦(我真心不喜欢PHP,不知道为嘛)&/p&&p&或者说,后端并不是语法,而是牵涉到算法,架构,性能,业务,选型等等跟前端几乎没有任何关系的知识,所以学习一门脚本语言,能做点简单的东西就好了。&/p&&p&还是需要把注意力转到IOS,Android上去。&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&7.去哪里学,怎么成长&/p&&p&不用说。首推的当然还是我大IT修真院。IT修真院是先总结归纳一个能够独立完成项目的JS工程师需要掌握的技术体系,然后设计15个Task来让你逐步完成对于知识的掌握。修真院一直在传播代码是写出来,而不是看视频看出来的概念。更看重你们在真正去做Task的时候独立解决问题的能力,除此之外,还有跟你一起学习和成长的师兄。这就是IT修真院去培养JS工程师的方式,而且,线上是完全不收费的。&/p&&p&如果你不想用这种方式去学习,还是我之前说的那些话,W3C,然后做点东西,跟着去一家公司实习。&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&五 后端(Java/python/go)&br&=============我是想玩Dota的分割线================================&/p&&p&说到后端,其实我主要想说的是Java。C和PHP这两种语言我都不喜欢,之前也说过了,我自己绝对不是一个说话公平公正的人,什么观点都带着自己偏激和极端的调调。&/p&&p&我之前在贴吧跟Java吧的吧主一直在撕逼(原因很简单,我说教大家学Java,一个月收400块钱,他说我是骗子封我贴。然后我说好吧,我不说教大家学Java了,我来给大家解决在学习过程中遇到的困惑,他说贴吧不能发问答贴。我说行,那么我就写一些新人学Java必须要学数据库,数据结构和计算机网络,于是一群吧主过来喷我说,我没学过这些我也照样学会Java了啊,什么多线程什么继承等等,我无语了解释说Java语法不重要,重要的是要学会后端的架构,要懂算法,要懂业务,要懂系统的扩展性,要会调试程序,于是吧主们就把我封了,我很不爽,就新开贴子跟他们撕逼对骂--我从来不是一个重身份的人,我骂人会很脏,所以如果看到这个贴子觉得我很厉害那么你瞎眼了,我就是一个不喜欢就说,谁喷我一脸我喷谁一身的性格,现在的结果就是Java吧的吧主每隔10天就来封我一次-哈哈哈哈哈比闹钟都要准,所以三个月过去了,我带出来很多CSS和JS的学员,然而Java的学员并没有多少。所以如果有人去Java吧替我骂一下那些XX吧主并且截图给我看,我会很开心很开心很开心,说不定就会给你们开小灶哈哈哈哈。)&/p&&p&之所以说这些,一方面是400多的赞让我觉得有点羞愧,另一方面也是想强调一个概念,学后端,学会语法只是开始而已,最后一个就是我是一个小人,谁欺负我我就想欺负回去。&/p&&p&我想想该怎么描述后端的工作。后端跟前端是截然不同的,之前讲过。前端是Gank,后端是大后期,要等到16级以后才能V5起来,而且我非常不推荐前端去学后端(所谓的全栈工程师完全是扯,我有时间会写一下,为什么不要去做一个全栈工程师)。后端要积累到足够多的项目经验,才能够成为一个靠谱的后端工程师。我觉得。我来举一个跟着我线下半年的小培宇的例子就能简单说明一下后端的工作。&/p&&p&小培宇是第一个来到我大修院面试(嗯,最初我是给他们发工资然后带他们学习的)的人,跟我讲他是考研失败,差了几分,然后也做过点项目,我随便问了几句就知道了他的状态:人挺聪明的,但是在学校肯定玩的疯,所以问点排序算法还是能够答的出来,数据结构也懂一点儿,LinkedList和ArrayList删除数据谁更快也能答的挺靠谱的,但是绝对绝对没写过一行工程代码。&/p&&p&他打动我的那句话就是:不在乎工资多少就想多学点东西。很好,我默默的点个赞,因为我本身就想把自己这几年积累的经验和知识和走过的坑整理出来,告诉互联网的新人,所以也不抵触带新人,坦白说,愿意像我这样带新人的公司,几乎没有,带新人真不是一般的累。幸好我之前在各种公司中都带过各种新人,好的坏的都带过,所以还算是熟悉。&/p&&p&于是我给培宇精心设计了他的学习曲线,这也是我大IT修真院的核心观点:&br&1.先搭建基础环境(Maven,SVN,Eclipse,jetty,SecureCRT,Linux,Mysql)&br&2.做简单的CRUD(DAO-自己封装的数据层,junit,Log4j,Rest,Spring,Spring MVC,Json,JsonTaglib)&br&3.做一个相对复杂的系统DB设计,接口设计,项目部署,错误提示,Bug查找,怎么打系统日志。&br&4.做了一个微信相关的项目,了解微信的API,交互方式,Cookie,拦截器,AOP,登录系统的设计,命名规范等。&br&5.拆分Service,将Home和Service分开,使用RMI调用,实现各个层次之间都可以完成分布式的部署,使用Tuscany(真心喜欢Tuscany)完成SCA。&br&6.使用MongoDB完成地理位置的搜索,短信,图片上传,云存储,使用Tiles来配置页面模板。&/p&&p&这些内容他花了将近三个月的时间。对他来说已经是学会了很多东西了,这三个月是几乎没日没夜的学出来的,要知道他之前压根就不知道什么是Spring,生成Json和套JSP的区别我骂了他好几次他才弄明白,经常会遇到一些Maven或者是Tuscany的报错不知道该怎么解决,数据库字段的规范和接口规范常常被我黑的体无完肤。很多东西都只是知道个皮毛而已,你们自己说说,学会Java语法算什么?&/p&&p&这还是有我来带,有我来教,有我给他定制合适的项目教给他去做,如果没有这些,你们自己学,学会我说的这些东西要多久?&br&别的不说,学会怎么打日志,怎么根据线上的报错去找错就不是一个月两个月能解决的。做为一个工程师,应该明白,很多时候要学会正确的路怎么走,还必须要知道错误的路是走不通的。正确的路大概就那么几条,错误的路呢?&/p&&p&为什么很多时候我看到错误日志就会明白是什么地方报错了,是因为我之前花了无数的心血和心力在查找这些错误上,所谓的经验就是这样,看的多了,一眼就知道大概什么地方报错了,然后随便百度下,就能找到解决方案,跟着去尝试倒底行或者是不行。这些是看书,或者是看视频能教会你的么?&/p&&p&到现在为止培宇已经跟了我快半年了,还是被我骂的狗血喷头,别的不说,就是接口的Wiki文档和代码保持一致,他都会经常犯错---这跟Java语法有什么关系,然而不经过一个好的训练,想做的很好,很不容易。&/p&&p&其实他接下来要学的东西更多。Memcache或者是Redis,ActiveMQ或者是RabbitMQ或者是QPid,Mybatis或者是SpringJDBC,Struts或者是SpringMVC,我告诉他的只是一个我们在项目中经过实践的,认为最合适的架构体系,然而他并不知道是怎么选择的。他必须要把这些相关的选择都有所了解,然后才能成为一个架构师。这个时间,如果一直跟着我,我觉得应该是在一年到两年左右。&/p&&p&这是一个横向扩展的内容,在这个时候我还没有要求他去看一些深层的东西。只是需要他停留在会用的状态就可以。在会用这些技术之后,再去了解一些自己喜欢的技术的细节,不成为一个只会使用工具的码农,所以培宇问我还需要多久才能达到我的水平的时候,我其实并不想打击他。我也是很刻苦努力的人啊,曾经无数个日夜也是默默的去一行一行代码去用最笨的方法调错,并没有人告诉我怎么样是正确的只有靠一个又一个的项目总结出来的经验。&/p&&p&而且我还会一些Drools,CRM,Lucene等等一些和架构师关系不大的事儿偏算法一些的东西,毕竟当年也学过点数据挖掘机器学习之类的内容。&/p&&p&就算是学会这些了,对于一个后端工程师来说就够了么?不不不,还需要学习JVM优化,监控,部署流程,发布流程,项目进度管理,代码重构等等等等。&/p&&p&所以,你们自己算算,这些东西如果都学会,一个Java工程师要多久才能成为架构师?&/p&&p&然而我还是对带培宇很有信心,首先他相信我,他愿意学,跟我当年一样,不怕苦不怕累,人也够聪明,做事也有责任心,其次我知道他应该怎么走这条路,先做什么,再做什么,哪些该花时间和精力,哪些不该花。&/p&&p&我希望他能够在一年之内就成为一个架构师。就如他在三个月和六个月之间独立做项目已经不成问题了一样(记着,我说的是独立做项目,自己设计DB设计接口设计架构完成需要的功能,从设计到实现完全自己来)。&/p&&p&我也希望我能够帮助很多和培宇一样,有实力有能力只是没有遇到我的那些人,这也是我为什么在知乎发贴的原因,IT技术的培训,哪些培训机构能做到这一点?&/p&&p&&br&&/p&&p&这个真实的小故事,就是想跟大家提前说清楚,我对后端的要求有多高,这也是后端特别好玩的地方。你必须要会很多种框架,有足够宽广的视野,还需要有足够多的项目经验(做金融和做地产是两个完全不同的概念),还需要懂项目开发流程以及快速定位线上问题的能力。&/p&&p&这些,就是我说的后端的主要工作内容了,这也是为嘛我说到后端的时候,大部分就是在指Java,而我说Java的时候,基本上是只指后端,根本就不是指Java的语法。更不是说是Android。&/p&&p&现在明白为什么后端是大后期了么, 为什么不建议前端学后端了么。后端要懂的东西,太多了。&br&言归正传,我来讲一下后端工程师的相关内容。&/p&&p&&br&&/p&&p&1 工作内容:&/p&&p&大部分的后端工程师都停留在功能实现的层面上。这是现在国内二流或者是三流的公司的现状,甚至是在某些一流的公司。很多时候都是架构师出了架构设计,更多的外包公司根本就是有DBA来做设计,然后后端程序员从JS到CSS到Java全写,完全就是一个通道,所有的复杂逻辑全部交给DB来做,这也是几年前DBA很受重视的原因。&/p&&p&所以你能看到成千上万行的存储过程(存储过程,视图,事务,外键 这些东西我真心希望永远不要在Mysql里出现),这就是外包公司中最常见的架构体系。来个SSH,Over。&/p&&p&好一点的会个WebService,用过ActiveMQ,也用过Redis,甚至还会用过Dubbo。然而大多数情况也根本不了解为什么这么用。&/p&&p&很多人写了两年或者三年代码都没做过独立的DB设计,不知道什么是REST,不懂怎么做接口设计,也不知道怎么去定位问题。&/p&&p&所以对于他们来说,拿到产品经理的需要,会有一个项目经理或者是Leader分配任务,跟着按步就班的把代码写完,跟前端调试完,QA测试不通过,加班改回来重新改,改完QA又没通过,再加班再改,QA终于通过了然后上线了突然发现另一个好的功能不能用了,跟着再接着改,在线上发布一次又一次。。眼睛熬的通红最终真的受不了了,休息几天换另一家公司涨个40%左右的薪水继续这样的日子。&/p&&p&不不不。我带出来的后端程序员并不要这么做。所以,我带的后端程序员的工作方式是这样的。&/p&&p&拿到产品需求-》后端程序员做接口设计,架构设计,DB设计-》拿出方案来做技术方案评审-》评审通过,开始预估时间-》每日更新自己的Task-》接口完成自测一百遍,每日部署到开发环境,随时集成-》CodeReview-》重构代码-》性能测试-》Demo通过-》发布到测试环境-》修正Bug-》重新发布-》发布到线上环境。&/p&&p&这中间需要理解需求,需要拿出多个方案,需要跟前端配合,需要跟QA配合,需要跟运维配合。需要跟产品沟通,有时候还需要找UI。后端几乎是一个核心节点,而这个核心节点接起来了所有的人。&/p&&p&我不知道我讲清楚没,很多时候我都发现我可能太久没做一个IT新人了,都忘记了新人们关心的问题或者是困惑是什么。&br&这就是我知道的,两种后端程序员的工作内容。你选哪一种?&/p&&p&&br&&/p&&p&&br&&/p&&p&2 需要技能:&/p&&p&环境【IDE(Idea/Eclipse,Maven,jenkins,Nexus,Jetty,Shell,Host),源码管理(SVN/Git) ,WEB服务器(nginx,tomcat,Resin)】&br&基础【Http,REST,跨域,语法,Websocket,数据库,计算机网络,操作系统,算法,数据结构】&br&框架【Spring,AOP,Quartz,Json TagLib,tiles,activeMQ,memcache,redis,mybatis,log4j,junit等等等等等】&br&业务【金融,教育,医疗,汽车,房产等等等等各种行业】&br&第三方【微信,QQ等各种第三方登录,支付,IM,地图,语音,视频,图片】&/p&&p&环境不说了,搭环境永远是后端人员比较头疼的事儿,所以才会有很多人想用简单方便的的语言来解决这些问题,比如说Python之类的。我还是喜欢Java,大概很多人觉得重,然而我喜欢,我觉得不是“重”,而是“正”。好像剑一样,王者之剑,路子很正。 &/p&&p&基础知识太多了,正是我一直强调的,做后端,这些基础知识了解多少,其实就是决定了你以后能走多远。这些科班出身的计算机ER,会了这些,才有了一个平台,才可以站在这个平台之上去搭建更高层的建筑,如果根基不稳,你觉得你会对上层的知识理解透彻么?&/p&&p&&br&&/p&&p&框架是Java最有资格说自己是架构师的原因。无数的开源框架,选型,筛选,对比,填坑,优化,维护,寻找最适合的业务场景,很多时候很多公司的架构简直了(我不吐了,很多技术都在用然而每一种用法几乎都是错误用例的典范)。所以你想想,你大概要有多少框架要学要用?很多时候,你必须要想清楚,哪些是需要认真了解的,哪些是需要一笔带过的。&/p&&p&业务对于后端人员来讲无比重要,不懂业务,就没有架构。这是我经常说的一句话,这个世界上不存在不懂业务的架构师(我不怕被打脸),一个架构师必须要深入了解业务体系,知道哪些是会变的,哪些是不会变的,哪些是重要的,哪些是不重要的,然后才能做出来适合某个应用场景的架构来。比如说,同样的表,几千万的量和几亿的量差别非常大,频繁读和频繁写的设计也完全不同。会有一些通用的架构思想和理念在里面,但是都是需要跟业务结合落地的。&/p&&p&PS:很多金融证券行业的程序员,就

我要回帖

更多关于 ajax脚本出错 的文章

 

随机推荐