一方面要不断深入学习新技术,另一方面,要通过不同类型的项目实战来增加经验。
每次編程之后, 再多想想能不能改進
学会搜索和浏览技术社区
如何搜索,怎么搜索,基本上做Java程序员的同学都应该很清楚。
要善于潜水和浏览各大技术社区和论坛,开源网站什么的,搜索的时候用「Google」比较靠谱,遇到新的控件的使用,不要百度找使用方法,而是应该首先查「API」文档。遇到问题在「StackoverFlow」应该能找到解决方案。没事的时候,多去开源社区比如「GitHub」上逛逛,遇到好的开源项目不要star了就没事了,看看人家的思路,是怎么写的,要喜欢「刨根问底」。
快速提高就靠多做,多运用,网站的新功能开发,原有代码维护改进,每实现一次就是一次进步,实现之后要追求更好的实现,怎样可以使性能更高,怎样可以使程序的扩展性,可维护性更好,不断思考和尝试新技术
1. 搭建个人工作环境 2. 快速熟悉项目类型,以及工作内容 3. 熟悉代码框架,处理流程。 4. 熟悉业务。 5. 多做多练
链接:http://pan.baidu.com/s/1p1G4NCUtPNVvkkXE7qxFbQ
程序员进阶攻略。如何才能持续成长,是每一个程序员都绕不开的话题。入行之初,你可能会困惑于技能选择的方向和掌握的方法;编程前期,你可能会苦恼于Bug的调试与修复;技术水平达到瓶颈期,你可能又急于寻求突破和上升。除此之外,职业倦怠了,如何去面对?技术停滞了,如何去解决?人到中年,是选择工作还是选择生活?换工作?换城市?换方向?如是种种,磨蚀着曾经的乐观和现在的不甘,是放任自流还是逆流而上?
课程目录:
开篇词 (1讲)
开篇词 | 程序行知:走在同样的路上,遇见自己的风景
征途:启程之初 (4讲)
01 | 初心:为什么成为一名程序员?
02 | 初惑:技术方向的选择
03 | 初程:带上一份技能地图
04 | 初感:别了校园,入了江湖
修炼:程序之术 (10讲)
05 | 架构与实现:它们的连接与分界?
......
尝试你现在业务可能没直接关系的IT领域,会触类旁通。 1.你可以去随便去个程序知识学习的网站,避免打广告嫌疑,我多举几个例子:菜鸟教程,w3school这些。(教程基本都一样,版块多少可能有差别)然后随便找个领域学。你会发现你迟早都用的 上,还能加深你对已有技能的理解。 当然,最好的是,针对你当前的水平量身做计划。 比如 你只会Java web开发,你可以学下安卓,懂懂前端知识,对于你如何写后端很有好处。同时,前端视图层次这些的知识,对于你写和理解Web前端,比如H5这些很有好处。 2.多脱离IDE 学习那些不用什么IDE一样用的编程语言,ruby这些。用终端+文本编辑器编程。 学习Linux,多了解系统命令。 汇编入门,对计算机多了解。可以买块开发板试试单片机编程。 。。。。。。 你懂的越多,学习速度会越来越快的。这就是登堂入室了。 我举个例子,我现在处于登堂入室,我以前1个月学的东西,现在2天学完,理解还更深刻。学习一门新的编程语言,几个小时可以初步用于开发。负载均衡,智能硬件,移动开发,web前端,后端。。全都会 3.多尝试 比如手工建立个人网站。参考下我的 www.zhengyutian .com 多写博客等等
学什么其实都不要紧,人要首先能看得起自己。学历对于一个人是重要的,但它不是衡量你水平的全部东西。 架构师也不是什么神奇的职业,只要你一心向学,不断提高自身水平,成为架构师都是水到渠成的事。 青春短暂,某个岗位或是称谓其实都是浮华的东西,后悔的是没有珍惜从前那些大好的时光来学习,全都混掉了。。。
1 不能光有决心,一定得多用时间学习
我见过不少程序员一点点从初级升到资深开发,少得用1年半,多的用3年,成功完成升级的都有一个共同点:进步得靠学习,学习得靠时间堆砌。
我个人不算聪明,所以我对曾国藩的一句话体会很深:结硬寨,打呆仗。用在学习上,就是不投机取巧,学习时为自己,踏实地掌握基本功,然后一步一个脚印。这一定得靠时间积累。
来算比能用在学习方面的时间账:
1 每天早上起来后,大概半个小时。
2 每天上班时,不大可能总干活,与其上网划水,还不如搜索些技术资料,平均一天就算半个小时吧。
3 晚上回家,哪怕再累,总可以抽出半个小时。
这样一天大概能用1个半小时,一周5天,至少能有7个小时,周末至少能有2个半小时,至少一周10个小时吧。
这不算多,以我亲身经历,每周10个小时学习,人而且还不累,如果再挤出点空闲时间,甚至一周能学15个小时。
如上算是鸡汤文吧,但这也是本文的前提。一般来说,工作3年一般能升级到高级开发,如果无法保证一周10小时学习量,那么升级的进程就会延后,甚至无法完成升级。
2 先在java core方面打好基础
这部分需要学习的内容:
1 基本语法 2 集合 3 异常处理流程 4 基本的IO操作 5 JDBC 6 多线程
在这个阶段无需学的内容:
1 界面编程,比如Swing, AWT 2 Socket编程
在初级阶段可以适当了解,但无法过多深入学习的内容:
1 面向对象思想,刚开始学时可以了解下语法,比如继承,重载的语法,尽量体会其中的含义,但真正做到理解得到高级开发的级别。
2 设计模式思想,这个也可以适当了解。
3 虚拟机方面的内容。
书不在多,而在于精,我个人推荐一本:java编程思想(thinking in java),真的把这本书里的内容理解了,java core方面真能算掌握了。
怎么样才能真正理解,不是光靠看,而是得边看边运行书中的例子,而且边运行边看书里的解释。
这本书中的讲解非常到位,而且全书是围绕着面向对象思想讲的,边看边运行代码,估计最多用2个月就能看好。
这个我个人感觉是,打基础是必要的,但不能过多拘泥于语法,所以要求大家边运行代码边学习,如果只看书,一方面无法帮助大家深入理解代码和知识点的含义,另一方面,看过以后印象不深,估计很短时间以后就忘了。
3 通过一些框架了解Java web方面的内容
这部分是进阶。
目前大多数公司是用Java做Web项目,互联网公司就更别说了,这方面常规的学习路线是:
1 可以先通过jsp+servlet了解下 web编程的概念,尤其是servlet,可以直接从3.0入手,了解下异步调用。
2 随后可以通过Spring MVC+Mytabis,搭建一个基本的MVC项目,了解下常规的网络框架。
3 再深入了解下Spring IOC,AOP,ORM方面,可以再深入了解下事务和连接池等高级知识点。
其实,了解上述内容后,就可以在公司里干活了,在公司里,初级程序员往往会在架构师搭建好的框架里,通过别人写的代码堆砌完成自己的功能点。
不过,初级程序员在会堆砌代码的基础上,还可以深入了解下分布式组件,集群等知识点。这里可以推荐通过学习Spring Cloud框架里的组件,深入了解下Web方面的知识点。
这方面,讲述Spring Mytabis的书比较多,大家找本偏案例的书即可。
4 不断地提升自己的优化能力
这部分是拉开你和其它初级开发的差距。
资深程序员和初级程序员写出来的代码会有不同,主要体现在如下三个方面。
1 资深程序员写出来的代码结构性比较强,这主要是资深程序员能在写代码的过程中,主动地引入面向对象思想和设计模式。不过面向对象思想和设计模式得靠项目积累,所以对初级程序员而言, 光学理论效果未必大,一定得在工作中多观察下继承,重载和接口复用等做法,因为面向对象和设计模式的表现形式主要包括这些。
2 得考虑性能优化,比如想下,如何让sql语句更快,如何让虚拟机内存性能更好,然后找这方面的资料。这些内容,我的其它博文里都涉及到。
3 一定得在“单机版”程序的基础上问自己,如何搭建集群,或者,如何利用现有的面向集群的组件,比如可以用Eureka搭建服务治理的集群,在集群中用Ribbon做负载均衡。总之,这方面都是有现有解决方案的,而且学起来也不难,但不是每个初级程序员都知道该学这部分的内容。
在这个基础上,大家都可以技多不压身了,比如学些redis,消息中间件等,但一定得围绕上述三个学习方面。
这方面,大家可以看些虚拟机调优,数据库优化以及Spring Cloud方面的书,还是这句话,选择的事情需要看下这书是偏重理论还是案例说明,最好是买些案例多点的书。
5 通过提升自己的软实力,让自己更专业
一般来说,初级程序员更像学生,而不像职场人士,所以对高级程序员的要求往往是能独当一面,而对初级程序员的要求是,能在项目经理的带领下完成本职工作。
所以,初级程序员一定得提升如下的软技能。
1 要会积极主动沟通。能否具备好的沟通技能,这个是能力问题,肯不肯和别人沟通,愿不愿意积极主动地展示自己的想法,这个是态度问题。我见过不少初级程序员在干好本身的活以后,就缩在一边,遇到测试和领导找过来时,也是敷衍,或者是不耐烦,这些人往往在公司中表现都不怎么好。
2 得提升自己解决问题的能力,积累解决问题的经验。虽然目前很多问题都能靠百度,但比较专业的异常解决手段,以及基于框架的性能调优等,一般都得靠积累,所以初级程序员在遇到问题时,哪怕靠自己能力无法解决,但至少得想,得通过搜索等手段去解决,最后别人解决时,也得学下解决方法,这样就能不断提升自己的能力。
3 协调,甚至是扯皮的能力。比如一个活,自己做不完,这个很正常,但有些初级程序员就宁可自己扛。这样哪怕是靠自己加班最终完成了,但对整个团队来说,有延迟进度的风险。遇到这类情况,就可以早说,早让项目经理协调。有些事甚至不该你或者你的组管,遇到这类情况,就可以推掉这类事,毕竟一个人的时间是有限的。
4 要学会和别人沟通协调,一起完成一个任务
比如测试方面有个问题,而这个问题需要你和别人一起解决,这时,就要求你和测试沟通,了解问题细节以及重现方式,最终和别人一起解决这个问题。在这个流程中,技术问题倒是次要的,关键还在协调和沟通方面,初级开发可能会比较被动,坐等别人过来告诉自己该怎么做,但更应该主动和多方面沟通,积极推动事情往前发展。
随着移动互联网大潮的来临,擅长写代码的程序员成为一份非常热门职业。这份职业的好处是,薪水很高,不需要靠关系,不需要有好爸爸,只要你够实力;坏处就是,在项目紧急开发的日子里,他们就像陀螺一样,没日没夜的转,甚至很多时候吃住都在公司,劳累时以桌为床,养精蓄锐,醒来时唤醒电脑屏保,又开始一天的忙碌。如此一来,很多的程序员就遇到传说中的脱发。确实,程序员的工作性质决定了他们容易脱发,这绝不是危言耸听。据调查,10个程序员中至少有2个饱受脱发困扰。对于这个特殊群体来说,头发是比青春更容易流失的东西,等真正失去了,那剩下就只有一声声叹息了。
李灿是个程序员,因为工作用脑过度,加上经常熬夜、吃油腻食物等不规律的生活习惯,导致大量油脂分泌,将头皮毛孔堵住,从而导致的脱发。随后他还听信一些“30天生发”的谎言,通过吃中药、食补等方式对头发进行营养补充,反而加重了自身毛囊的负担,脱发越发严重。原来,李灿这种脂溢性脱发是天生毛囊存在缺陷,当体内雄性激素过多,油脂分泌过盛时,就会不断刺激毛囊,造成毛囊萎缩,出现掉发现象。而针对脂溢性脱发,专家建议他先管理好头皮健康,适当使用药物辅助,留住那些还尚存的原生发。
植发手术可以解决脂溢性脱发
专家表示,植发手术是对毛囊的重新分配,通过毛囊移植来实现头发的再生。李灿的“地中海”脱发区由于毛囊已经闭合,不能再长出头发。而植发手术则另辟蹊径,从李灿的后枕部位提取健康长寿的毛囊,移植到脱发区域,从而消除他的“地中海”。
植发防治脂溢性脱发能维持多久?
植发后的头发是否会再次脱落?植发效果如何?针对这些问题,上述专家介绍,人体的毛囊是不可再生资源。植发手术所移植的毛囊,是后枕部不受雄性激素刺激的健康毛囊,正是因为这个特性才使得移植后的毛囊保持生发能力,新生发可持续生长,并顺利经历生长周期。而想要达到植发的理想效果,脱发患者就必须选择正规的植发机构,正规植发机构拥有比较先进的植发技术、手术经验和对东方人群头皮的研究等。
那么程序员应该如何控制脱发呢?
第一:提前预防
高强度工作中进行适当休息,缓解疲劳;学会压力管理,多听音乐、冥想等,化压力为动力;减少熬夜次数,合理调整与电脑、显示器的距离。如果感觉有脱发迹象,马上想办法改善,该用药用药、该调理调理,早期治疗比晚期要容易得多。
第二:经常按摩头皮
程序员这类的工作太消耗脑力,经常按摩头皮可以促进血液循环,作用很大。如果自己懒得按摩,多梳头也有类似的效果,或者购买激光生发头盔这类的产品,对于局部血液循环是很好的刺激和维护作用。
第三:补充维生素B族和微量元素
如果特别懂营养的人,可以通过饮食来调节,如果你本身是比较懒的人,可以服用一些针对头发的膳食补充剂,像是GNC这类的保健品品牌会有很多针对头发的膳食补充剂,含有头发需要的各类维生素,对于脑力劳动者效果很好,还有一些促进思维敏捷的好处。
信息技术的发展时间虽然不长,但其爆炸式的发展速度使信息技术迅速覆盖社会和人类生活的各个角落。程序员们是这场信息化浪潮的见证者之一,更是其中的主要参与者,这是时代赋予每个程序员的机会和责任。
信息技术的更新速度是惊人的,程序员的职业生涯则是一个要求不断学习的过程,永远不能固步自封。本人在工作期间曾看见过很多程序员只要有闲暇时间就浏览一些没有太大作用的网页,在网上聊天,打游戏,浪费了大量的时间,十分不可取。而另外一种情况是,IT技术的日新月异使很多程序员眼花缭乱,什么都想学,却又不知从何学起,今天看看这个,明天学学那个,贪多不熟。
虽然IT技术发展迅速,但很多技术都是有规律可循,一些基本的概念、原理和方法还很通用,可以举一反三。本人根据自己的体会和经验,向那些刚刚踏入IT行业的新程序员们或正在迷茫的程序员们推荐程序员必须掌握的七种武器,有了这七种武器,虽不敢说笑傲江湖,但将自己立于不败之地还是可以的。
第一种武器:开发工具
至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++或者JAVA是我重点推荐的开发工具,其中以C/C++为首选开发语言。C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C++编写,并且你想成为开发级工程师或者架构师C/C++是必学语言。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而本人对SUN公司的“网络即计算机”的概念相当欣赏。另外,你如果感觉自学C/C++语言有困难的话,我本身是一个C/C++出身的程序员,我整理了一些学习C语言的视频在扣裙,大家有兴趣可以一起来学习,C/C++编程学习,--先7841;后43133。
其次,如果能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,C++ Builder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
第二种武器:数据库
为什么数据库是如此重要?很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL, Postgres等。
第三种武器:操作系统
当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。只有对操作系统有一定的了解后,你会发现自己上了一个新的台阶。
第四种武器:网络协议TCP/IP
在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的WEB Services,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,所以,深入掌握TCP/IP协议是非常必要的。至少,你需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。
第五种武器:DCOM/CORBA/XML/WEB Services
随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间件平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。程序员需要做的不仅仅是利用商业的开发平台来开发软件,而是要理解这些技术的初衷,即为什么需要这项技术,如果你能理解了这一点,再回头看这些技术的具体实现,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布计算的基石之一。
第六种武器:软件工程与CMM
现代大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。一句话可以概括我的看法:“创意无限,流程保证”。
第七种武器:强烈的好奇心
什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。
1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使再精通OOP,遇到一些基本算法的时候可能也会束手无策。 2. 丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。 3. 最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。 4. 不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,会发现那些难题现在竟然可以迎刃而解。 5. 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要坚定信念,一定要找到问题的答案,才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。 6. 多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会有很大的启发。 7. 良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使代码更容易理解,而如果代码已经清楚地表达了思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。 8. 韧性和毅力。这也许是"高手"和一般程序员最大的区别。A good programming is 99% sweat and 1% coffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个 10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。
1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使再精通OOP,遇到一些基本算法的时候可能也会束手无策。 2. 丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。 3. 最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。 4. 不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,会发现那些难题现在竟然可以迎刃而解。 5. 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要坚定信念,一定要找到问题的答案,才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。 6. 多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会有很大的启发。 7. 良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使代码更容易理解,而如果代码已经清楚地表达了思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。 8. 韧性和毅力。这也许是"高手"和一般程序员最大的区别。A good programming is 99% sweat and 1% coffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个 10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。
多写,多思考,没有捷径。 写的多,不思考,没用。 写的少,思考的多,没用。 就算是重复写同样的代码,每次换一种思路去理解它,这样都会有进步。 如另一个答主说的,当你的代码,别人一眼就能看懂的时候,已经是很合格的程序员了
学习编程是一件好事 不过之前你得先了解 你学习编程的目的是什么 这个很重要 因为目的决定发展方向 目前对于编程有很多种编程语言以及相对应的开发软件 下面说明一些常用的编程语言 根据你的情况选一种语言进行学习 不要盲乱学习 C语言 一种可移植性和多系统平台的编程语言 开发软件TC VB 一种可以说是既学既用的软件开发语言 开发软件如:VB6.0 DELPHI 一种和VB差不多的既学既用的软件开发语言不过其功能远比VB强大 代码书写上更加方便 开发软件 DELPHI7.0 JAVA 一种功能强大可移植性强开发语言 程序语言,顾名思义就是语言,是用于交流的,程序就是计算机的语言和人的语言的翻译者,做一个程序员就是要把人类世界的问题用计算机的方法去解决和展现,可是因为种种原因,大多数人在如何学好语言,如何学好开发平台上疲于奔命,到头来你只会敲写代码。 程序基本上都是自学的,买书是一开始碰到的最头痛的问题,计算机的书大多都很贵,现将我的一点经验供大家参考: 如果想做一个合格的程序员,C++是一定要学的, 首先你要花两个月的时间学习C,C++,这样的书很多,去选一些大学的教材足亦,切记,不要花过多的时间研究C++,两个月够了,只要学会其中语法就行了,不要为了深入用DOS编写菜单什么的,那是吃饱人参了。 如果你有过多的时间,接下来你可以学习数据结构,推崇《数据结构C++语言描述》,清华大学出版,58元,但如果无过多时间,还是不看为妙,至少我现在从未用过这本书的知识,许多东西MFC VCL等开发平台都为你已经做好。 接下来开始学习Windows下的SDK编程, 推崇《Windows程序设计》160元,建议去借,不要买,而且你只看上册,你只要了解Windows的运作机制即可。两个月 然后你将转入VC的世界,既然要在Windows下编程,VC不可不学, 推崇《VC++技术内幕》第四版,96元,三个月,不要全部看,看前面的三部分,后面不要看。后面的只是对COM,数据库,Internet形如鸡肋的介绍。 接下来你应该考虑一下你将要发展的方向,如果是做数据库,你可以用VB和Delphi或CB, 如果要做通信方面,或者硬件,你将要深入VC, 如果是WEB相关的,去学学ASP,JAVA,JSP,XML等,但有一样你必须要学的,COM。COM与其说是一样新的技术,还不如说是种机制,推崇潘爱民的《COM原理和应用》39元,你可以一边看这本书,一边学习些ActiveX组件,ATL控件等等。如果你有的是时间,不急于找工作,你还可以看看《Windows高级编程》或《Windows核心编程》,但不管怎么样,你要切记,VC不是用来做界面和数据库的,做网络的现在也有JAVA,都是用来做一些很底层的东西,VC是很高薪的,如果你对自己有充分的信心和有的是时间,你才可以深入VC。否则的话,还是看看人才市场,看看行情,再说。 还有一点切记,有些书,诸如《MFC深入浅出》这些书主要是关于那些技术原理的介绍,我个人认为程序只是工具,只是技术,只要学会用,能完成任务即可,如果有的是时间,才会去探索根源,也许有许多人会说,懂了原理对你编程会有很大帮助,我不否认,但是,要知道,就算你编程技术如何了得,你只是个技术人员,当你学了那么多的技术和知识,第一,计算机的知识其实是各大公司制定出的标准,标准变了,你不是白学了吗?第二,当你花了几年的时间学习,到头来你只不过程序水平提高一点。我认为应当将你的大部分智力和精力用在如何与人打交道,电脑让你用的好有什么用,人脑让你摆弄的好才算真本事,就如《黑冰》里面的计算机工程师,虽然对计算机十分精通,可有什么用,还不是死在王志文的手里?而且死的很惨,脸都毁了。 另外,不要去学你喜欢的,也不要去费劲脑子想该学什么,看看人才市场,市场需要什么,你学什么。 一家之言,仅供参考 (*^__^*) 嘻嘻……
光看书籍是没有用的,一定要花时间去自己写代码!时间长了就会有经验。去论坛看看别人写的代码然后自己在试着写。
编者按:职场或者人生最重要的技能是什么?老板最看重的是什么?解决问题的能力。如何培养解决问题的能力?这事儿也许需要从程序员身上吸取经验。否则的话,你可能就会像个没头苍蝇一样乱打乱撞。Richard Reis总结了程序员的思考方式,并且给出了你如何像程序员一样思考的步骤。
如果你对编程感兴趣,你也许之前已经见过这句话:
这个国家的每个人都应该学会对计算机进行编程,因为它教会你如何思考。
——乔布斯
你可能会在想这究竟是什么意思,像程序员一样思考?怎么才能做到呢?
基本上这一切与更有效地解决问题有关。
本文的目标就是教会你这种思考方式。.
看文本文之后,你将会了解到成为更好的问题解决者究竟需要哪些步骤。
这个为什么重要?
问题解决属于元技能。
我们都有问题。无论大或小。不过有时候我们解决问题的方式可是有点随意。
除非你有一套系统,否则的话你“解决”问题的方式大概是这样的(我开始编码时就是这样):
尝试一种解决方案。
如果这种解决方案无效,再试另一种。
如果还是没有用,重复第二步直到你走运。
你看,有时候你会走好运。但这是解决问题最糟糕的方式!而且非常非常浪费时间。
最好的方式涉及到a)有一个框架,以及b)练习之。
几乎所有的雇主都优先考虑问题解决技能。
问题解决技能几乎毫无疑义是雇主寻求的最重要的资质……比编程语言能力、调试能力以及系统设计能力都要重要。
证明计算思维或者分解大型复杂问题的能力与工作需要的基本技术技能一样重要(如果不是更重要的话)
——Hacker Rank(2018年开发者技能报告)
形成一种框架
为了找到合适的框架,我是按照Tim Ferriss有关学习的书《4小时大厨》里面的建议来做的。
这让我访谈了两位令人印象非常深刻的人:C. Jordan Ball(在Coderbyte的65000+位用户中排名1、2)以及V. Anton Spraul(《像程序员一样思考:创造性问题解决的介绍》的作者)。
我问了他们同样的问题,你猜怎么着?他们的回答都非常相似!
很快,你也会认识他们的。
旁注:这并不意味着他们每一件事的做法都一样。每个人都不一样。你也会有所不同。但如果你从我们都同意是好的原则开始的话,你取得更大突破会快很多。
我发现新程序员的最大错误是关注于学习语法而不是学习如何解决问题
——V. Anton Spraul
那么,遇到新问题时你会怎么做呢?
以下就是步骤:
1、理解
准确了解被问的是什么。大多数疑难问题之所以难是因为你不理解问题(因此这就是为什么这是第一步的原因)。
怎么才知道你什么时候理解了问题了呢?当你能够把问题说清楚的时候。
你还记得问题卡住的时候,你开始解释问题,然后马上看到了此前看不到的逻辑漏洞的时候吗?
大多数程序员都知道这种感觉。
所以这就是为什么你应该把问题写下来,画张图,或者把问题告诉某人(或者某物……有的人会利用橡皮鸭)的原因。
如果你不能用简单的语言解释一个东西,你就没有真正理解它。
——费曼
2、计划
不要在制订计划之前就匆忙投入到问题解决当中(然后指望自己能像没头苍蝇一样找到出路)。先计划好你的解决方案!
如果你不能写下确切的步骤的话,没有东西能帮到你。
在编程中,这意味着不要一言不发就开干。要给你的大脑一点时间来分析问题和处理信息。
要想制订出好的计划,请回答这个问题:
“在输入为X的情况下,返回输出Y的必要步骤是什么?”
旁注:程序员有很好的工具帮助他们做好这个……评论!
3、分解
注意。这是最重要的步骤。
别想着解决一个大问题。你会哭的。
相反,要把问题分解成子问题。这些子问题解决起来要容易多了。
然后一个个地解决这些子问题。从最简单的开始。最简单意味着你知道答案(或者更接近答案)。
之后,最简单意味着这个被解决掉的子问题并不依赖于其他被解决的问题。
一旦你解决了每一个子问题,再将点连成线。
把你所有的“子解决方案”连接起来就能得出原先问题的解决方案。祝贺你!
这一技巧是问题解决的基石。记住它(如果没记住,请把这个步骤再读一次)。
如果我要教给新手程序员一个问题解决技能的话,这个技能会是“问题分解技巧。”
比方说,假设你是一名新程序员,有人要你写一个程序读10个数字并找出第3大的那个。对于菜鸟程序员来说,这可能会是一个艰难的作业,即便这只需要基本的变成语法。
如果你卡住了,就应该把问题分解为简单一点的东西。与其寻找第三大的数字,何妨先找最大的数字呢》还觉得困难?那在3个数里面找出最大的数字呢?或者两个数中较大的那个?
把问题分解到你之大如何去解决的程度然后写下解决方案。把把问题稍微扩展一下,重写解决方案来跟问题匹配,一直这么做,直到你回到原先的起点。
——V. Anton Spraul
4、卡住了?
不过,你可能会想“嘿Richard……这的确很酷,但如果我连子问题也没法解决又该怎么办呢?”
首先,深呼吸一下。其次,这很公平。
但请不要担心,朋友。每个人都会这样!
不同的是最好的程序员/问题解决者会对bug/错误更加好奇而不是感到气愤。
实际上,在遭受打击时这里有三件事情是需要你尝试一下的:
调试:一步步仔细检查你的解决方案找出什么地方出问题了。程序员称之为调试(实际上,所有的调试工具都要做这个)。
调试的艺术在于找出你告诉程序要做的究竟是什么而不是你以为你告诉它做的是什么
——Andrew Singer
再评估:后退一步。换个角度审视问题。有没有什么东西可以抽象为更通用的方法?
对于问题有时候我们太过只见树木不见森林以至于忽视了从更普遍的水平上解决问题的一般原则。[……]
当然,这个的典型例子是一系列连续整数之和,1+2+3+…+n,这个问题一位年轻的高斯很快就能意识到答案是n(n+1)/2,从而避免了必须把一个个数加起来的麻烦。
——?C. Jordan Ball
旁注:重新评估的另一个办法是重新开始。删掉一切再次用崭新的眼光开始。我是认真的。你会对这种办法的有效性目瞪口呆。
调研:啊哈,就是上Google去google一下。没错。不管你有什么问题,可能都已经有人解决过了。找到那个人/解决方案。实际上,哪怕你已经解决了问题也要去查查看!(你可以从别人的解决方案中学到很多)。
警告:不要想寻找大问题的解决方案。只去找子问题的解决方案。为什么?因为除非你拼尽全力,否则就不会学到任何东西。如果你学不到任何东西,那就是在浪费时间。
实践
别指望一周之后你就会变得很棒。如果你想要成为一名好的问题解决者,那就解决很多问题先!
练习、练习,不断地练习。这样下去你意识到“这个问题很容易就能用[在此处插入概念]加以解决。”就只是个时间问题。
如何练习?选项太多了!
国际象棋迷局、数学难题、数独、围棋、地产大亨游戏、视频游戏、cryptokitties等等等等……
其实,成功人士的一个共同模式是练习“微观问题解决”的习惯。比方说,Peter Thiel下国际象棋,Elon Musk玩视频游戏。
Byron Reeves说“如果你想知道3~5年后商业领导力是什么样,那就看看在线游戏发生的事吧。”
回到现在。Elon、Reid、扎克伯格等人都说游戏是自己创业取得成功的基础。
——Mary Meeker《2017年互联网趋势报告》
这是否意味着你就应该去玩视频游戏呢?完全不是。
但是视频游戏是干什么的呢?对了,解决问题!
所以,你应该做的是找一个合适的地方去练习。
比方说,我喜欢变成挑战。每一天我都试图解决至少一个挑战(通常是在Coderbyte上)。
就像我说那样,一切问题都有类似的模式。
结论
就这些了伙计们!
现在你应该对“像程序员一样思考”更了解了吧。
你还知道了问题解决是需要培养的一项不可思议的技能(元技能)。
如果这还不够,注意还知道了如何去练习你的问题解决技能!
这相对酷对不对?
最后,我希望你能遇到很多问题。
你明白我的意思。至少现在你知道了该如何解决它们了!(此外,你也会知道每解决一个问题你都会更上一层楼)。
当你以为你已经成功排除了一个障碍的时候,新的障碍又出现了。但人生之所以有趣正是因为如此……
人生就突破这些障碍的过程——人生就是要突破这一道道的防御工事。
每一次你都会学到一点东西。
每一次你的力量、智慧以及看法都会得到发展。
每一次竞争对手都会被你抛在身后一点点。直到所有对手都看着你的背影望尘兴叹:你也成为了最好的自己。
——Ryan Holiday《The Obstacle is the Way(障碍就是出路)》
现在,去解决一些问题吧!
祝你好运!
软件工程师是令人羡慕的职业。但是如何才能拿到这份工作?又如何才能做好这份工作呢?拥有相关经验的Valeri Alexiev提供了相关建议和工具。其中包括了如何准备面试、如何以软件工程师的身份工作以及如何持续改进方面的经验之谈。
我刚开始工作的头几年是紧张学习的时间。
我得面对现实,成为软件工程师需要有很多技能,这些我之前都不知道。回顾过去,显然学会那些东西是很好的。
所以我就根据自己及其他人的经验写了这篇指南来帮助入行的新人。
本文将覆盖以下内容:
如何尽力做好面试
如何在软件工程师的角色中生存(及发展)
考虑持续改进时可以参考的资源
面试
当你开始软件工程职业生涯时,你得面对一个无可争议的事实。面试很恶心。
参与其中的每个人都觉得很恶心。既被人面试过又面试过别人的我可以证明,面试是一项极其耗时、极其有压力的工作,并且面试其实并不是将来工作表现一个的好的指示器。但不管怎样,这都是一个必要之恶,你和你的简历最好还是做好准备为妥。
做好战斗准备
如果你考虑做软件过程,确保了解一些最常见的编程面试问题,比如“FizzBuzz”:
写一个程序打印从1到100的数字。但是如果数字是3的倍数的话则打印“Fizz”,如果数字是5的倍数则打印“Buzz”。如果同时是3和5的倍数则打印“FizzBuzz”。
来自Coding Horror
听起来很简单,是吧?
好吧,但其实绝大部分面试者都没能通过这一简单的测试,且不说更复杂的变种了。
我个人曾经见过很多角逐资深岗位的候选人在拥有完全互联网访问的情况下没能通过这一测试。所以如果你的简历上面列有编程语言的话,确保你知道如何用它来编写实现FizzBuzz程序。否则的话,你只不过是在浪费所有人的时间,包括你自己的。
当然,为了在面试过后生存,你需要知道的不仅仅只有FizzBuzz。你还需要确保你知道:
基础的数据结构和算法:比如链表、数组、树以及排序。
要知道所选择语言的常见解决办法,比如字符串是否恒定,内存是如何管理的。
类似类与对象,以及继承等面向对象编程的概念。
在职业生涯开始时,你需要就这些问题做好准备,因为你并没有经历去证明自己能做好这份工作。在准备面试的时候有两个资源我会经常推荐:
《Cracking the Coding Interview(破解面试代码)》,这是一本非常好的书,里面介绍了很多的编码问题和解决方案,同时还总结了解决这些问题需要了解的东西。
CodeWars ,这个网站收集了大量的编程问题,你可以运用各种语言在浏览器里面去解决这些问题。最有用的部分是看看别的用户是如何解决同样问题的。这样你就可以看到解决相同问题的不同办法,并且学到你所选语言的新工具。
赋予自身额外优势
为了让自己取得那点额外优势,有几件事情你可以去做。
首先,学会如何沟通你的经验。你应该进行一次电梯演讲来将你的简历总结成连贯的、打动人的个人介绍。
此外,要了解自己的简历!听起来很蠢是吧,但我就见过很多面试者连解释清楚自己简历上的特定事项都很困难。你应该能够回答任何有关你列上简历的经历方面的问题,并且解释清楚这一经历如何让你成为本工作更好的候选人。
接着,要在GitHub(或者其他的公共代码库)上面有一些编码的例子。
眼见为实,面试官能够看到你的代码将创造奇迹。此外,这还证明了你对版本控制系统有了解。
你的代码例子不需要太复杂,但是一定要整洁,能够显示出好的编码实践。这是你展示自己在没有编码面试所带来的时间压力情况下代码写得如何的机会。
一旦你做完了上面的事情后,就得考虑参与一个开源项目了。参加开源项目能表明你能够在已有代码库基础上工作并且可以与其他程序员一些协作。
这是你在无需实际进入一个行业环境的情况下最接近在行业环境下编程的方式了。这也是目前为止最难最耗时的一项任务,所以等到你把前面我提到的比较容易取得的果实都摘完之后再干这件事。
面试你的面试官
在找工作的匆忙与压力之下,很多候选人都忘了面试是一个双向的过程。在公司努力寻找这份工作的合适人选时,你也应该设法弄清楚这家公司适不适合你。
确保你也要提出以下一些问题,哪怕对方是以电子邮件的形式回复你。要意识到公司经常把不遵循最佳实践说成是一项技能,所以要体会其言外之意。
以下是一些你可以去提问的例子:
“对我来说典型的工作日会是什么样的?”
知道特定岗位预期的样子很重要,因为软件工程工作差别相当大。比方说你的工作既可能是维护服务器,也可能是直接跟客户沟通。
危险信号:“我不大肯定。” → 意味着面试你的那个人不在你的团队,或者他们对为什么要招你并没有明确的想法。
“你们是如何测试软件的?”
理想情况下,验证代码质量应该是单元测试、人工测试以及自动化测试的结合。
危险信号:“我们都写不出bug,哈哈。” → 那些人正是会写出bug的人。
“你们使用什么样的版本控制系统?”
版本控制系统对于协作极其有用,在职业环境下没有理由不使用。
危险信号 #1:“额,版本控制系统?” → 快跑,跑得越远越好。
永远记得使用版本控制。
危险信号 #2:“<插入不知名的或者定制的VCS>” → 这表明他们很有可能没有跟上时代并且很久没有升级自己的基础设施了。
“你们进行同行评审吗?”
同行评审,或者让别人看看你的代码再把它放进代码库,这是识别愚蠢错误的极好办法,同时也是开始你的职业生涯时一个关键的培训机会。
危险信号:“我们相互信任!”→很有可能那些资深开发者对自己的代码非常警惕不想给人看也不擅长接受反馈。
“你们的继续教育计划是什么样的?”
作为一名软件工程师意味着当新技术出现、成熟并以令人眼花缭乱的速度走向过时的时候要不断学习。因此,很多公司都有培训预算用来买大学和在线课程、会议或者内部交流。
危险信号:“你是说在闲暇时间读读网上的东西?” →这家公司要么资金紧张,要么把开发者视为可替代的,而不是长期投资。
“你们采用的软件开发流程是什么?”
无论实际的细节是什么,流程对于软件工程都至关重要。至于哪些东西对于优化流程做出了贡献可能大家会有不同的看法,但仅就项目的工作方式达成一致就能将混乱最小化并且确保每个人都能达成共识。
危险信号:“我们的流程受到了自由风格的爵士的影响。” → 很有可能整个部门都处在救火模式,总是不断地从紧急跳到另一个紧急状态而缺乏任何明确的目标。
“你们是如何处理技术债务的?”
技术债务是过时技术以及代码库中临时应急的解决方案的累积。处理好技术债务对于代码的长期健康很重要,这件事情应该持续地做。
危险信号:“我们只关注新功能。” → 他们的代码库一团糟或者很快就会一团糟。
“你们的公司文化是什么样的?”
公司文化也许是个非常含糊的概念,但即便像开放办公室还是小隔间这样的小事情都会显著改变你与同事的日常互动。这方面没有普遍性的危险信号,但是要确保他们的答案是你可以按照每周40+小时的节奏持续相处数年的东西。
以软件工程师的身份工作
在这个阶段,如果你面试过程中表现不错并且喜欢面试官回答你问题的方式,你被录用的可能性就很高了。
祝贺,你正式成为一名工程师了!
那现在又该如何呢?好吧,现在是时候重新学习大量编码和工作方面的东西了。既然我们是程序员,我们就从讨论代码开始。
好的行业代码
好的行业代码有以下属性,依序是:
可读性,因为代码用来读和维护的频次要高于写。代码的意图必须清晰,让其他开发者在多年后依然理解。
防御性,就是要遵循防御性编码的最佳实践。防御性编码本身就是一个课题,不过其要义是:你必须确保自己所写的类和方法的不恰当使用不会导致你的代码搞得软件都崩溃。
优化,位列清单的最后未知,因为大多数时候你并不需要真正去担心这个。这并不意味着你应该编写糟糕代码,在存在线性解决方案的情况下以O(n3)的效率去做某个东西。但开发者通常渴望尝试并且会在不需要的情况下过度优化,却牺牲了代码的可读性和防御性。你永远都应该能够证明牺牲了这些属性的特定优化是值得的。
现在你了解了如何去编写良好的行业代码了。
编码的工作你不会干太多的
说出来也许有点令人吃惊,但是大多数时候你都不用写新代码,而是相反,要做:
调试
读已有代码
开会或者写电子邮件
研究该怎么做以便不用写代码
因此编码以外的技能对你的职业一样关键。
调试和阅读代码
调试远不仅仅是用打印语句。一切使用广泛的语言和技术栈都有各种强大的工具。学会使用它们,因为这些会让调试轻而易举,节省你无数的时间。
理解代码库。大多数技术栈都有某种代码图谱生成工具来帮助你理解代码库的结构。企业级的IDE通常都内置了那种功能。你还可以利用ReSharper、grep 或者Sourcegraph之类的工具来探索代码。
理解产品。你会对居然有这么多开发者在试图“修复”软件前不知道软件应该是怎么工作的感到惊讶。先看看文档再说吧。
组织你的思路
既然你的大量时间都是用在沟通、研究和多任务上,你需要一些工具来帮助一切井然有序。
TODO清单/任务工具:你的公司应该已经有了某种任务管理软件了,但你自己也有类似的个人系统是有帮助的。使用便利贴或者像Trello或者Todoist之类的软件。
笔记:开会一定要记笔记,要致力于改进现有文档并且建立个人的知识库。使用Evernote、OneNote或者笔记本。使用这些工具似乎有用力过度之嫌,但日后在回顾这一耗掉了你3天时间才想清楚的晦涩的开发过程时你会感谢自己的。不做丰富笔记的好的软件开发者我一个都没见过。
图表/可视化:人是视觉动物,创建流程图和架构可帮助你和其他人理解复杂的话题。在跟非技术人员沟通时图解尤其有用。可使用Lucidchart、 Visio或者白板。
知道何时使用库
简短回答:随时都要。
详细回答:99%的时间内你都不应该重新发明轮子。在大多数的软件工程岗位,实现特定类型的东西都属于纯粹浪费时间。这并不意味着你不应该知道所使用的算法和数据结构是怎么工作的,因为这可以帮助你决定用什么以及什么时候用。
为了成为一名高效的软件工程师,你需要理解自己可以任意支配使用的那些库。大多数流行语言的标准库都是极其有用的,其规模比你想象的要大。此外,代码库也许也会利用了额外的特殊库。阅读其文档,知道什么使用去使用它们。
你还应该不要害怕去建议额外的库,如果它们将节省时间的话。然而,你需要确保自己选择了一个好的库供行业使用。好的库的标准是:
开源,这样你就可以验证自身代码的质量,并有可能修补对应用非常关键的bug。
按照MIT和BSD等方式进行的授权,这样你的公司使用起来就不会遇到任何问题。要小心GPL,因为它会让你不小心就将整个代码库都开源出去。
成熟,比方说出来已经有一段时间了,并且功能集非常丰富。
维护性强,新版本推出很密集。
别的公司或者项目也使用,这个可以充当品质认证确保有行业支持,能持续维护下去。
持续改进
为了替自己创建新的职业机会,除了学习会让你更擅长日常工作的技能以外,你还需要持续改进自身技能并且学习新技能。
其实学习的机会有很多,而且其中很多都是你可以负担得起的:
在线课程:向领域内最好的教授学习的机会,而且方式灵活,不容错过。现有技能的补充性教程可以去可以看看 Coursera、 Udacity以及edX 等。
在线硕士学位:在线硕士学位是最近在顶级大学流行起来的一个趋势,这种方式可以灵活地继续你的正规教育。相比之下,这种继续教育方式费用没那么昂贵,修完整个学位大多数在1万美元左右。乔治亚理工大学、UT以及加州大学圣地亚哥分校等大学均提供此类学位。我个人推荐乔治亚理工大学的在线硕士虚伪,我去年刚从这里毕业。
博客:博客是开发者社区的重要组成部分。诸如Coding Horror、Joel on Software等博客或者甚至更加诙谐的网站如The Daily WTF等都可以为你提供信息,了解到作为软件工程师该干什么不该干什么。浏览Medium、r/programming, HackerNews等新闻流也能让你找到好博客和好文章。
会议:最后但并非最不重要的一个,会议时令人赞叹的学习机会,你绝对应该利用公司的培训预算去参加会议。以下是不完全的好会议清单:GOTO(通用), Strange Loop(通用), PyCon (Pytho),CPPCon (C++),DEF CON (安全),Fluent (Web开发)。上述所有的会议在YouTube上都有视频,所以你哪怕不出席也能学到东西!
希望这篇文章能够用相关知识把你武装起来,让你了解到作为软件工程师的职业生涯伊始应该期待什么,并且提供合适的工具给你在开启这段令人兴奋的旅程中助你一臂之力!
文/潘越飞,协助/冯启明 陈海宁 单一,编辑/唐晓园,协助/刘小玲
微信8年,微信公开课PRO版5年。从2014年开始,几乎每年都有一场微信和张小龙的“约会”。
昨天微信公开课白天一整天没露面的张小龙出现在了微信之夜上,这一次张小龙进行了近4个小时的单口专场——从晚上19:45到23:30,期间他主动提出两次中场休息,多次提出“要喝点水”。
张小龙在2019微信公开课PRO微信之夜演讲
张小龙亲口承认,这次是他目前公开课演讲最长的时间,为此他还特意要求工作人员把他的演讲放到晚上。
整个演讲过程,张小龙语速比较慢,会习惯性托下巴,并且出现长达近十秒钟的停顿——并没有冷场,更像是在对自己要说出的思考做最后的确认。
张小龙聊到了他对好产品的思考和认知,聊到了微信的初心和最新改版,他还聊到了——小程序,这一仅占了他演讲十分之一篇幅的产品,今年已成为各大互联网公司都在抢占的高地。
如果说微信是互联网史上的一个异类,那么小程序也算是微信生态里的一个不容忽视的存在。
产品没有成型的时候先放哨,这是微信团队史上的第一次“出格”;发布完了之后,又小心翼翼地撕开一个个口子,“特别小心”地去培育,这是很多平台都做不到的耐心。
“小程序看起来挺慢的。”在演讲进行到一个多小时的时候,张小龙说到小程序,两年前,他跟同事讨论的是小程序会如何死掉。而今天,他思考更多的是如何让创造价值的人获取回报。
也许微信小程序硬生生把互联网新周期的到来加快了十年,这款腾讯一手打造的产品打破了长久以来“受限”的开发环境,终止了暴利而无趣的风口年代。
731天,它克制到狂热地撕开一扇新门。
佛系微信的首次高调
在喧嚣的互联网江湖,小程序的故事看起来少的可怜。
这支由微信创始人张小龙带领的小程序队伍,在两年的时间里交出了成绩单:
根据昨天微信官方公布的数据,短短两年的时间,小程序已覆盖超过200个细分行业。过去的一年,小程序服务超过1000亿人次用户,年交易增长超过600%,创造了超过5000亿的商业价值。
赫赫战绩之外,外界对这支小程序团队的印象却只有两个字:低调。
早在2015年,业内就开始流传张小龙要做一个叫“应用号”的东西。这个来自湖南邵阳的程序员已靠微信成功封神,一举一动都被无限放大。微信以前,张小龙也从未高调宣扬过自己的任何新计划,每次都是炸闷雷。
事出反常必有妖,这话没说错。业内不禁好奇,“应用号”到底是什么?
答案在2016年的微信公开课PRO上被张小龙自己揭晓。
他在公开课上吐露一个自己长久的思考:
如何更高效率帮助用户完成任务,而不是让用户在微信里永远都有处理不完的事。
他几次提到了“价值观”:腾讯的价值观,用户价值是第一位的。微信的价值观,好产品是用完即走的。以及他身为程序员的追求:2016年,想为开发群体做一些事——他想尝试“做到让更多的APP有一种更轻量的形态”,他把这种新形态叫做——应用号。
就这样,小程序外部名字是应用号,内部代号是Web+,技术人员间的昵称是MINA——女性化的名字,颇有致敬乔布斯的Lisa苹果电脑的味道,后者的划时代意义是首次使用了图形化用户界面。
至此,张小龙身为程序员的动机已经明确——为用户提供一款全新的用完即走的产品。APP要下载,网页体验也用户体验不友好,“小程序才是未来”,在QQ邮箱和微信之后,张小龙的亢奋点又回来了。
启动时的小程序团队
现在,他需要一支队伍。
2016年3月,程序员胡浩从美国飞到广州微信面试。当时他的邮箱里还躺着另外两份offer,一家是公司名称全字母的国际互联网巨头,另一家是国内知名IOT厂商。
三选一。选择微信的原因是,他在面试时听到了关于小程序的未来。
“给我介绍了一下小程序未来会怎么样。小程序平台面向的不是C端用户,不是B端的企业,而是D端(developer,开发者)。”
作为技术人员,胡浩觉得能做一个服务其他技术人员的东西出来:“实在太酷了。”
产品经理陈浩也加入了“应用号”项目组。“当时,他(张小龙)在公开课(2016年1月)上说做‘应用号’,我们一头雾水,不知道‘应用号’是什么。外部问,什么是应用号,哪个团队做应用号?我们也都不知道。”陈浩自己还在好奇的时候,突然被调到了应用号开发组,成了第一个产品经理。
其他成员,基本都是在这个状态下加入开发组,因为工位不够搬到了小阁楼,除了偶尔玩把1块钱的实况足球,就是敲代码。
队伍凑齐了,但是没人说得清到底该具体怎么做,这个新世界由什么构成,应该怎么运行。
“他们在会议室开会,突然叫我过去一下”,胡浩在会议室被同事们告知,如果基于外面已有的体系,很多东西没办法原生实现。胡浩对锌财经回忆自己的反应是:“如果要重新推翻的话,那就所有东西全部要自己来做。”
还没有诞生的第一版小程序,就这样被推翻。此时,距离张小龙的公开演讲,已经过去了半年,而距离小程序成为一个拥有150万开发者的开放平台,以及互联网巨头竞相布局的商业生态,还不到两年。
突破发生在2016年8月6日,那天晚上,小程序框架终于有了雏形。
第二天,程序员们经过一轮研讨,最终敲定。“这个框架未来的5-10年内不会有大的改动,除非有什么新的技术突破。” 他们对锌财经说。
小程序的新框架就在那晚诞生并沿用至今,这算是小程序真正意义上的开工。
小程序的必然
关于小程序的缘起,有多个版本。
有的版本是,张小龙看到身边人每天长时间用微信,“不是好事”。他甚至和同事吃饭、开会时规定不能看微信,他认为“用完即走最理想”;有的版本是,看到深圳机场路上的广告牌上,每个企业都放着微信公众号二维码,他很高兴公众号成为标配,随即不高兴了,如果只是看看公司信息,何必非得关注公众号;还有的版本是,有技术人员给他看了新demo,可以在开发上提供基础接口,他就想通过更复杂的接口应用来实现程序所需要的基本元素,完全跳开公众号,去做全新的应用形态。
在昨晚的演讲中,张小龙说为什么非要做这个事情?因为他认为这就是一个未来必然的趋势——APP还要下载安装,网页的体验又太糟糕。而小程序的路径是清晰的,让开发者用得过瘾,让用户用得简便。
经过2016年8月的第二次推翻——小程序原本后台基于服务号,被推翻后,做了一版独立的——小程序终于可以内测了。
情况,并不理想。
“牛粪上浇花。”有程序员这样评价自选股等第一批参与内测的团队,他们认为自己做了坨很挫的东西,其他人要在那上面做得有模有样。
自选股团队内测时非常痛苦,因为技术团队一边写代码修改,内测团队要一边测试反馈。不干完,所有人都不会睡觉。
团队中很多人的生活从996变成了997。原本计划健身减肥的胡浩,在那一年胖了十五斤。
日子就这样一天天过去。2016年,他们埋头捣鼓着什么。在小程序的程序员们看来,他们只是在工作——就像办公室从7楼搬到9楼那么自然。没什么值得特别记录和回忆的。但改变已经发生。
2016年10月,小程序开放内测。在广州TIT创意园微信总部不到200米的地方,有程序员偷偷“潜入”以内测小程序为主题的黑客马拉松活动——他太想第一时间知道同行们对小程序会有什么样的反应。
他等到的结果是:“真难用。”
这是最大的压力。按照Shangyou——世界上第一个写WXML语言的人,也就是WeiXin Markup Language微信小程序语言——的说法,他们把外部开发者看成了“甲方”。但甲方的反馈让开发组的键盘都有点沉。
他们给自己定的目标太高。“像做菜一样,你要煲个汤,有些家庭主妇觉得自己要去买鱼买各种东西一起煲很麻烦,结果超市做出了一套东西,买回家扔锅里就可以做了。”微信开放平台副总经理胡仁杰说小程序要做的,就是给程序员提供超市那套东西。
这件事,全球第一次。
一个无法证实的小道消息是,张小龙清楚地知道做个改变行业的事情必然很难,所以连被称为“低调到无以复加”的他都一反常态地高调宣布小程序。
“小程序还没有做就发布了,这不是微信的风格,因为我们从来不会发布一个还没有做的东西,之所以这样做,就是为了给内部一个压力,没有退路。”在昨天的演讲中张小龙第一次证实了这个说法。
是的,没有退路了。提前一年公布的面世时间,要来了。
小程序的一年之约
这埋下了小程序初期高开低走的必然,也埋下了为什么后期张小龙称小程序的美德是“沉得住气”。
盛衰一线
两瓶香槟,这是微信有史以来最“奢华”的庆祝了。
2017年1月9日,iPhone发布十周年的日子,所有小程序项目相关的人员,审核、行业、法务、财务等都在现场,在一个群里互相发红包庆祝,并且倒计时要打开小程序哪些开关,还极为难得地开了两瓶香槟,拍了合影:
小程序,正式上线了。
“我印象中,那是微信唯一一次(有仪式感的发布)”。陈浩回忆:“然后后面的48小时,劈头盖脸,各种事情都发生了,外面都在说小程序多牛逼。”
《你好,我是小程序》的文章刷爆朋友圈;网友狂欢“错过了公众号,别再错过了小程序”;“干掉APP”的话题成了行业常用谈资……微信的第一次奢侈庆功,也是中国互联网史上第一次有这么大规模的用户为一个功能狂欢。
盛衰有时只在一线间。
喧闹过后120小时,一大盆冷水来了。《小程序上线7天,罗胖带着1000万用户跑了》。作为第一批参与者,自媒体人罗振宇高调宣布关闭小程序,还神秘兮兮地发布了一句话:“我们决定不做了。我们知道小程序是什么了。哈哈,但是不能说。”
罗振宇退出小程序的朋友圈
虽然最新内部消息是,仅仅因为当时支付机制不利于内容付费产品而已。但当时的官方口径很文艺:“有人分手,你还不恋爱了不成。”
还真不幸言中了。大众和小程序的蜜月期迅速消失。
2017年2月,小程序的百度指数下降至高峰日的1/50,有报告称,35.5%的开发者感到失望。雪崩式下滑。
过完年回来上班的小程序员工,还被小领导们特地打气,虽然外面唱衰,但千万别丧失信心。
“小程序没有入口,小程序不能推送消息,小程序没有应用商店,小程序没有粉丝,小程序不能分享朋友圈,当龙哥在公开课说出这些小程序特性后,我们就预料到了肯定有负面消息。但没想到这么多。”腾讯公关告诉锌财经。
整个小程序技术团队一如既往地淡定。
据张小龙昨天的演讲中透露,团队对此早有心理准备,小程序发布前的那天晚上,团队成员甚至“讨论了小程序会有哪几种死法”。
作为小程序底层技术框架设计者,他们清楚小程序很可能一时半会儿起不来。
而在陈浩看来,最初开放的基础技术架构,想的是让用户有更好的服务体验,也不该引发套利者的兴趣。
内部流传的一句话是:
有用的产品谁都会做,有态度的产品不是谁都能做。
面对质疑他们看起来无动于衷——低头做自己的事,写代码,改bug。
一年不到的时间,现在耳熟能详的功能被一个一个开放出来:个人注册、第三方平台、葵花码、附近功能、聊天窗口列表等。平均1周半1次,共计32种不同能力。
由于每次半夜发布完,开发者们都会连夜阅读文档改代码,他们取了个又爱又恨的称呼,“没有性生活的小程序员”。“我们后来定了个规则,超过凌晨2点就不要发布了,否则容易引起开发者愤懑,‘你一发布我得连夜改’。”陈浩说。
这是幸福的烦恼,经历大起大落后,被纠正预期的小程序开始走上正轨。
这一年,互联网最大的变量是共享单车。而小程序开始出现在大众视野,和共享单车不无关系。
小程序牵手摩拜单车
摩拜单车车身二维码最早导流到APP,那是个很重的体验——用户为了骑车还得耗费流量下载庞大的应用程序。这让摩拜选择尝试小程序,成了最早的线下用小程序的商家。
一开始,摩拜高管害怕小程序抢夺APP用户,结果试点了以后,转化率提高,APP用户量也随之增长,“每周使用量达到100%的增长。”摩拜单车产品负责人杨毓杰告诉锌财经。小程序开发之后,新用户几乎都来自小程序。也正是微信和摩拜在小程序上的合作,让“用完即走”的理念有了实际的诠释。
线下跑通,还有线上。
新锐电商平台蘑菇街,前后派了100多人到微信总部,他们租了一层办公空间,只留一张沙发给自己老板,带着一个“Do It Right Now”的早期创业时横幅,和慰藉自己肚子的电饭煲,进入了密集加班状态。
蘑菇街团队搬到微信总部与小程序团队一起工作
蘑菇街胡轶苗解释他们的动机:“我们整个公司,从CEO一直到每个人,对于微信小程序的市场非常看好,觉得这是一个全新的能够为我们带来新市场增量的机会”。6月蘑菇街女装初步上线,7月社交立减金内测、直播上线、拼团玩法、矩阵形成,蘑菇街没赌错,他们在小程序端转化率甚至达到了APP端的2倍。
就连大泼冷水的罗振宇,也在6个月后,低调重启“得到”小程序。
一切就绪,只差爆发。
从惊艳到惊喜
小程序的程序员内部说,这是一款“特别简单的游戏。”不过是小人发力跳跃,乍看无聊至极,简单到爆。
它叫做跳一跳,一款真正意义上让小程序红起来的游戏。
2017年12月28日,微信开放了小游戏,同时重点推荐了小游戏“跳一跳”。公开数据显示,截至2018年1月,跳一跳已经积累了3.1亿玩家,有史以来单款游戏用户规模达到的最大水平。
跳一跳小游戏
没人说得清跳一跳为什么就火了。人人都在玩它。
它更像一个发力点:
当小程序覆盖面越来越广,微信下拉入口也有了,用户也开始养成习惯。这一切让跳一跳成为引爆点。
这款游戏里还有着程序员“闷骚”文化的体现:比如加分的方块,其实都有小游戏团队的名字;比如“徐记士多”,就是因为那位设计师姓徐。
张小龙的最高纪录,据说超过两万分。
“它简单到让你可以有一个面对自己,一个最个人的时刻。大家在微信上,你可能会有很多的消息要处理,朋友圈里有很多信息要你去点赞、评论,可能还有很多工作的信息也夹杂在里面。这个时候玩这样一个小游戏,反而是一个非常正经的事情。”
不过,张小龙认为,如果开发者只是把小游戏作为流量变现的一种手段,而不在意品质,流量很快会被耗尽的。
但是,跳一跳让更多人认识了小程序。
对很多普通用户来说,也许不需要了解什么是小程序,也不关心什么是小程序。立即触达,使用它,然后离开,就够了。
如果故事到此结束,小程序只是惊艳,不够惊喜。
惊喜的是,很多产业都开始探索小程序,并将小程序视为自己的必选项。中国中部地区一个知名连锁企业的改革派高管,在内部放言,要么让做小程序,要么自己滚蛋。
接触一线企业的微信小程序零售行业负责人于洪潇最早是和沃尔玛沟通的。一开始,作为外资企业的沃尔玛,根本不知道小程序是什么。双语沟通了3小时,对方还在考虑要不要把订阅号转成服务号。
扫码购小程序
首先打开智慧零售场景的是永辉超市。当时永辉超市在做业态的改造和升级,不仅有“超级物种”和社区店,还成立了科技公司叫永辉云创,同时推自己的APP。每当中午高峰来临,大楼周围的白领会去超级物种买便当、饮料。虽然用自助收银机,或是扫码结帐,似乎还差了一些东西。
“其实用户在门店排队是很焦虑的,赶着吃饭,根本没有人去下载APP,超市却还花很多钱去推广,效果很差。”于洪潇说。
第一是用户排队的问题,第二是用户数字化的问题。对于线下零售行业来说,这是两道不大不小的门槛:首先必须将线下的用户数字化,然后通过数据和移动互联网追踪用户的行为习惯。用企业自己的APP,不但要面对开发所需投入的资金和困难,还要长期与推广和后台数据记录作斗争。
永辉超市的小程序开发、上线,会员增速是以前的2倍,留存率是60%,数据比任何表达更有力量。
图片来自网络,永辉超市最先打开智慧零售场景
对传统企业来说,小程序代表的东西更多。
“小程序帮助他们加快了内部组织架构的优化,甚至包括利益分配,都通过这些项目加速了调整。”某跨国超市中国区的英国籍CEO,在一次沟通中和于洪潇分享了这个观点,比如电商曾经独立核算,哪怕用户在线上下单,到门店去取货也算电商的,那么门店就缺少了服务的动力,现在全由电商负责,但内部的利益分配做了调整,门店也会享受到。
在线上和线下产业不断融合的今天,小程序扮演了越来越重的角色。
“零售企业像割韭菜一样一茬一茬的被收割。”有赞创始人白鸦告诉锌财经,近十年来,这些店主曾以为,线上流量可以变出点什么,但最后他们才发现,自己曾经的所有客户,都变成了别人的客户。
以外卖为例,3年前,餐馆老板们,接受从20%到15%、10%,再到5%,到最后没有的外卖补贴,把超过80%的到店吃饭的人变成了外卖用户,培养出了全国巨大的餐饮外卖市场。而如今,他们却为了继续留在这个市场中,不得不付出10%、15%甚至20%的外卖提成,甚至顾客店内消费时,还要拿出手机来,打八折的同时再给团购网站分成10%。
小程序的出现恰恰弥补了这一“缺憾”,把线下企业的流量和生意还给线下企业。
沃尔玛、宜家、家乐福纷纷拥抱小程序
沃尔玛最终接受了小程序中的“扫码购”,每天30%的支付通过小程序;宜家的合作伙伴给总部连续写了1000封邮件后,终于在小程序临上线前一周得到关注,小程序会让传统的拍照与签字形式,优化成扫一扫;家乐福给法国总部汇报6月新增1000万用户时,曾被惊讶的询问“是不是多写了1个0”,而它最新访问量达到了2亿,这是APP时代不可能发生的事情。
甚至连不少互联网巨头,也纷纷开始布局小程序。2018年9月,支付宝宣布正式成立小程序事业部。
在BAT的另一端,百度也在2018年9月底宣布,在两个多月的邀请制公测期间,百度智能小程序月活过亿。
而在不久前,今日头条和抖音相继上线了小程序功能。
这个时代,小程序比APP更好做。
也许,人人都是小程序员
上线半年后,陈浩的妈妈终于知道了小程序是什么。
“是我发现我妈竟然往我家的微信群里转了很多小程序,她也不知道是什么,反正用得舒服就重复使用。过了半年后,她知道这个东西是我做的,我会很有成就感,我记得我妈第一个丢的是“小年糕”的视频,我妈还给我看了一个小程序的视频。”陈浩想起了自己第一次看到妈妈使用小程序时的场景。他感到默默的喜悦。
同样感触的还有胡仁杰。他表示,有一天他爸爸突然给他发了个小程序,说芦荟可以清热解毒,切出来可以煮了吃。他家里种了很多芦荟,以前耳朵不太好的他爸爸,要通过电话来费力得说清这件事。
“他读完之后发给我这个小程序,我看了很直观,知道他要说什么,那一刻我觉得这是最幸福的事情。”胡仁杰说,那一刻他可以告诉家人自己整体在忙什么了。
小程序潜移默化的改变着普通人的生活方式,甚至改变着它本身的内在。
“以前公众号时代,外面说我们高冷。”郑文晓说,那是因为公众号产品门槛低,不需要过多干预,到了生态多元的小程序时代,高冷的微信也主动了。
郑文晓他们开始主动每隔个把月跑城市,看到服务商做出了药店门口体重秤放小程序、美发店的小程序互动屏幕、专心给商家做补货用的小程序等,会主动关心需要提供什么的功能支持。也开始主动制作行业服务商教学视频,计划做服务商成长体系,去尝试提升服务商水准。
他们同时计划主动公布服务商的案例、权限、用户评价等信息,避免“微信之母”等借着小程序合作方会销、欺诈甚至直接骗钱等啼笑皆非的事件发生,透支小程序的信任度。
微信开放平台基础部助理总经理向我们形容小程序的整个诞生历程,是技术从下往上的创新推进,承载了从上往下产品思维,“产生了化学作用。”
小程序应用数量已经超过100万,覆盖200多个细分行业,日活用户达到2亿。未来更剧烈的化学作用,是每个用户、每个开发者、每个商家、每个服务商,共同激荡,打造出不受限的生态。
“小程序的数量很重要,这是丰富场景的基石,但小程序的好坏也同样重要。”在昨天的2019微信公开课PRO现场,小程序团队正式宣布将在2019年上线小程序用户评价体系及探索“优质小程序计划”,帮助用户更好的发现、使用优质的小程序。
小程序的开发者门槛一直在降低,开发者这个群体也得到了两年来的最大关注。昨天,腾讯云推出总价值超过10亿元的“小程序·云开发”资源扶持计划,对超过100万小程序开发者提供免费云开发资源扶持。
腾讯公司董事会主席兼首席执行官马化腾
2018年11月7日,在小程序获选“世界互联网领先科技成果”的日子,马化腾在乌镇发言:“在教育部的指导下,小程序还被选入部分高校的计算机教学课程,这让我们备受鼓舞。大家都在热情地学习和使用小程序,现在也诞生了很多专门的‘小程序员’。”已经有150万开发者加入其中。
小程序正在秘密筹备一件更酷的事情,他们希望未来连小学生都可以制作属于自己小程序。
在漫长的采访过程中,有位90后从业者对锌财经创始人潘越飞说过一句难以验证真伪、但是热血沸腾的话:
只有再过10年,人们才会意识到,小程序和VC、智能手机一起,彻底改变了21世纪的产业。
2019微信公开课PRO展区“未完城”
低调分很多种。不爱言辞只是其中最广为人知的一种。对小程序团队来说,低调的他们也许比所有人都更澎湃:
他们不曾压抑过自己的狂热欲望——用“小”来改变这个世界。
小程序没有故事,只有日子。
我们不用记得小程序面世已经2周年了,我们只要记得,在这场微信自上而下的战略和执行中,所有人都获得了收益:用户节省了时间;开发者得到了便利;合作伙伴获得了更多新价值。用马化腾的话说,这套腾讯自创的编程语言打破了受限的开发环境,为“跨系统开发”这个世界难题给出了中国的解决方案。
更愿意给予,而不是攫取。未来属于这样的人。
张小龙在2019年微信公开课PRO上关于小程序的部分演讲内容:
现在有很多其他公司都在做小程序了。我觉得这是好事情。可能有一些代码的接口跟我们一样,但是我并不担心这里面会跟我们构成很大的威胁。虽然是做同一种东西,除了平台和团队不同,其实更重要的一个差别在于,你的原动力是什么?
如果只是希望借由小程序这种载体,来做一个流量的生意,我一点都不看好。只让自己好不让别人好的事情,通常都不会太长久。
小程序的使命是,刚才提到的,让创造者体现价值和回报。我们的一切都是围绕着点展开。不能因为拥有流量,我们就要分发流量,要让小程序来体现这个流量价值,这跟我们自己的原动力是完全不一样的。
很多人看不懂为什么小程序要去中心化。如果不去中心化的话,腾讯自己垄断了头部几个小程序,那就没有外部的开发者什么事了。看起来腾讯可以短期获利,但这个生态就没有了。
哪怕是腾讯投资的公司,也应该一样的遵循平台的规则,否则也会破坏平台的公正性,我们更看重的是平台的健康。我知道过去大家都认为平台对于投资的公司似乎有倾斜。我只能说,可能是我们做得不够好,相信我们团队今后在这块会投入更多人力和资源,使得我们可以对所有的公司包括我们投资的公司是一视同仁的。
回顾一下小程序,从最早酝酿到现在三年了,其实看起来挺慢的。我觉得小程序是我们,或者说也是我个人职业生涯里面最大的一个挑战。因为我们从来没有试过还没做一个事情,就先宣布出来了。
之所以这样做,其实是为了给自己一个压力,给团队一个压力,这个事情我们非做不可,而且一定要做到。
我还记得很清楚,我在微信公开课里面说我们要推出小程序这样一个服务的时候,当天晚上,我跟我们的团队就坐在一起讨论,讨论一个主题,我们小程序会有哪几种死法会挂掉?我记得特别清楚,因为当天晚上我们不是讨论小程序有多么美好的未来,而是说它有多难。我们会遇到哪一些障碍是跨不过去的,我们并不是对它乐观去做的,而是我们觉得这个事情很难我们一定要做到而去公布这个事情。
为什么非要做这个事情?因为我认为这就是一个未来必然的趋势。因为APP还要下载安装,网页的体验又太糟糕。这点,在之前的公开课,我已经详细讲过了,就不重复了。
其实很多人可能不理解网页的体验为什么不好,就像不理解为什么公众号的体验比网页好一样。这里,微信其实用了一些限定性的办法,比如说排版,使得哪怕是一个业余团队,做的公众号或者小程序,在用户端看起来体验都还不错。
对于小程序,我们的决心非常大,但我们并不急着说一下子就要做成它。因为它毕竟是一个生态,不是一个To C功能,所以我们有足够的耐心,慢慢的培育它。并且经过了公众号的过程,我们也不希望一上来就有一批投机分子来当作一种流量红利来滥用它。
即使到今天小程序还不能说完全的成功,但我认为它是一个逐步完善的过程,对我们来说,只要看到小程序在跟我们当时的初衷越来越接近,就是很好的信号。
所以现在看到越来越多的线下行业,已经用小程序来作为它和顾客的一个连接器,并且提高了效率,这都是特别好的案例。
因为小程序还不是特别完善,在19年我们还有几个重要的事情要去做。
一个是,搜索的直达。
我们希望在线下,小程序是一种扫码的方式来触达,在线上,是可以通过社交传播和搜索触达。
其实搜索一直应该是小程序的一个主要流量来源,并且小程序和APP的一个很大不同,APP是一个个的信息孤岛,互相之间没法交换信息。但是小程序是可以被系统统一检索到,是可以直接搜索到小程序里面的内容的。
所以我们做过一些试点,比如说我要查一个航班号,是可以输入一个航班号就搜到小程序。但这只是一个试点,我们还没有做到对于所有的小程序都能够通过搜索来找到它的内容,直接把用户连接到小程序去。
这会是我们在未来一年的一个工作重点。
另外一个是,小程序需要一个完善的评价体系,使得用户可以作出选择。这也是我们正在做的很重要的一块。举个例子,当你要买一个家乡的土特产,你搜到那么多小程序,不知道哪个是可信的。但是如果你发现你的一个朋友在土特产小程序里买过并且有好的评价,那你就会很放心,这就是社交评价的作用。
第三个是,小程序的找回也是一个问题。比如很多人说小程序为什么不能发通知或推送?但是我们看到在手机上,每一个APP都会把消息推送使用到尽,最终的结果是,用户只好忽略了所有的推送,所以靠推送是不能解决问题。
即使我们提供了一种叫模板消息的能力,也会被滥用掉。所有的公司都有骚扰用户的动机,就不能指望所有的公司有自我克制的能力。对于小程序的找回,大家会看到有最近使用、星标,通过微信主界面的下拉,来迅速的找回。但是我觉得这里还是不太足够。
最近微信7.0版本有一个功能叫强提醒,大家都没有怎么用它,他们会觉得这是对大家一个朋友式的强提醒,它会喊你开会了,当你发一个消息的时候就会时振动起来了,其实不是这样的,我们做强提醒的目的更多的是覆盖到线下的场景,我希望的场景是我将来在一个地方排队,我不需要关注它的公众号也不需要扫它的一个小程序,只需要扫一个二维码就可以获得一个提醒,一个关于排队的提醒,我一旦扫了这个二维码授权给了他获得后续的一条或者是几条提醒的通知,这个是最轻量的,我只是为了一次性的提醒去扫一个码而已。所以强提醒的本意是希望它用在线下,甚至包括线上的一些你可以在小程序里面设一个强提醒,用户可以说当发生什么事情的时候你可以提醒我一下。
对小程序和用户之间的粘性,我们会继续想办法来强化这一块。但未必是大家想的这种很粗暴的消息推送的方式。
本文版权归“锌财经”所有
2023-08-25 / v3.1
2023-08-25 / v1.0.3
2023-08-25 / v1.0.1
2023-08-25 / v2.19.1
2023-08-25 / v1.2.0
2023-08-25 / v2.0.1
2023-08-25 / v1.5.1
2023-08-25 / v4.4.0
2023-08-25 / v1.0.03
2023-08-25 / v5.6.6
2023-08-25 / v1.2.20230810
2023-08-25 / v2.3.1.1