一、首先初识语法的阶段,必须要学会怎么操作对象,操作if和for,操作list set
map,然后是线程、IO和jdbc什么的,其余的,若是一时不理解,可以后边需要时再学。
这阶段完了,你可以写些能在控制台打印出来的小程序,锻炼下逻辑思维。也就是号称JAVASE毕业了,其实不过是入门而已,如果要往WEB方向发展,这些倒是基本足够了。
二、接下来要学HTML JSP SERVLET 数据库 JAVASCRIPT
TOMCAT,目标,写出第一个动态网站,也许只是个登陆功能,只能展示下个人资料,但这是很重要的一步,你要弄清楚的是,一个用户的点击产生的请求,是从哪里发起,哪里接收,哪里处理,哪里返回,你得理解浏览器和服务器的关系和分工,cookie和session,request和response。这个是个WEB开发的学习初级阶段,这都是些JAVA诞生以来最原始的最官方的WEB开发技术,当然现在真正的项目很少直接采用这些技术了,为了不断提高技术的易用性、开发效率和可维护性、可扩展性,无数开源项目都是在这些原始技术的基础上封装、改进。所以这个阶段不要盲目乐观地跑去找工作或者对实习挑三拣四,你会被打击到的。
三、初始阶段完成,开始进入WEB开发的正题,首先是传说中的三大框架,struts hibernate
spring成为熟练的增删改查程序员是必须的,在这个阶段你还要理解为什么要用这仨而不是那些JSP SERVLET
JDBC,你要体会到写MVC、三层架构的好处。这个阶段不要轻易质疑三大框架的价值,也许刚开始你会觉得麻烦,觉得他们有时候是多此一举,一两年后回过头来你会觉得少了这些框架你已经很难干活了。这个阶段还要避免的心态是能熟练地增删改查了,就认为写程序不过如此,然后往简历上填个精通,这也是新手面试被批得体无完肤的原因之一。如果你学得好,这会应该能熟练地写个博客啊,小论坛啊之类的WEB项目了,也就是达到了就业的基本要求。
接下来就没有固定模式了,你的第一家企业对你的影响会很大,在这头一年里,定个标准吧,你应该能做到的有:
1、把一些常用的琐碎技术学会了,比如xml的作用和实际运用,如何操作文件,如何运用日志,如何简化封装常用的工具类,比如日期操作、编码处理、分页模块等等,这些小东西会占用你大量的时间去处理摸索。
2、把数据库用好。数据库不是会增删改查就可以了的,你要关注事务设置是否合理,是否有可能产生脏数据,是否要动用乐观锁悲观锁等等,重要数据出了错,无论是技术上还是业务上都是很麻烦的事。
3、懂得什么是集群,什么是分布式,懂得怎么向别的系统发请求,交换数据,webservice。
4、如果你也写页面,你要会用JAVASCRIPT,不一定要很深入,你可以用JQUERY代替,做到无刷新的页面操作以及AJAX请求。
第一年能达到这个程度,你绝对已经在平均水准之上了。
下一个阶段,你应该考虑你的代码质量了。
1、多线程和异步、并发的概念会忽然变得很重要,因为在一个对性能有要求的系统里,是不会允许你把各种琐事都排着队一件件去办的,你不能老写些a方法调b方法再调c方法再调d方法然后返回的代码。
2、你会发现数据库性能实在不行,出于不甘现状,或者赶时髦,你该去了解nosql了,memcached redis
mongodb,眼花缭乱,没关系,试着用用,能很好地缓解mysql之类关系数据库的压力。
3、出于公司某些业务需要,你可能会钻研一个特定技术领域,比如全文搜索技术,lucene\solr,比如工作流jbpm,比如权限系统,单点登陆之类的,又或者某些特定业务领域的算法研究,这些是你的加分项。
4、你开始发现你的代码很乱,久了以后自己都看不懂,重复的,难以重用的代码堆积如山,不想维护,BUG百出。于是你要开始重视设计模式,合理地改造下自己的代码习惯,不再被僵化的SSH,MVC三层架构束缚住。
5、Google和各种资料是你进步的动力,极少再遇到必须请教别人才能解决的问题,如果你这个阶段还老是问别人,你的技术生涯也就快到头了。
这个阶段,如果你的交际和自我推销能力不是太差,你的收入将是白领水平,至少接近了。
接下来又是个全新的阶段。
1、你要读读优秀开源项目的源码,你要搞懂一些当年不懂的基础知识,你开始理解thinking in
java的精髓,你能写一些底层的代码,有时还会觉得自己封装的比某些开源工具更好用更简单。
2、WEB的难点和重点永远都在于性能、负载能力上,而现在网络的发达造成了数据量和操作密度的大大上升,硬件却没有相应的进步,你得试着更好地运用更多的服务器来协同工作,从WEB端到服务端到数据库,全都需要集群,需要分布式,需要合理的控制数据的流向,掌握好网站上下,一大堆机器的平衡,找出性能的瓶颈,找出稳定性和安全性的瓶颈,硬件出现故障,第三方技术出现错误,将被当成家常便饭融入到你的系统和代码里仔细考虑。
3、开始觉得方案无比地重要,一将无能累死千军将不断应验,一个不好的设计,一个不好的方案,会让一群优秀的程序员工作成果大打折扣。你要关注架构知识,不能再满足于SSH三层架构到底。领域驱动设计,面向事件开发,敏捷开发等等一系列的思想在关键时刻能决定你项目的生死,这个阶段不再有标准范例让你照抄,你只知道思想和原理,实践却需要自己不断尝试和改进。
4、多关注各种杂七杂八的开源技术,有些你可能前面已经接触过了,和通信有关的,和集成开发环境有关的,和架构有关的,各个领域你都应该能信口说上几个主流技术,虽然你可能只是听说过,了解,但关键时刻你得知道如何去选择技术,并快速掌握它。你还会去考虑尝试下别的语言,这里不是说转向什么C++
C#之类的,那和JAVA程序员不相干,我说的是一些运行于JVM之上的语言,比如scala和groovy,初识他们时你会觉得java真的老了。但当你回到一个综合性的大型项目中,又会觉得java积累下来的整个体系技术是如此完善,就像一个工业化标准一样。
你能把这个阶段实践好,胜任项目经理,乃至中小公司的技术总监都是可以的。
‘贰’ 程序员如何渡过公司试用期
试用期是每一家公司都会有的,程序员在来到新公司之后,如何顺利度过试用期呢?我为你带来了“程序员怎样度过试用期”的相关知识,这其中也许就有你需要的。
程序员跳槽后,如何顺利度过试用期
1.要有耐心
不要指望能在一两个星期内就学会一个代码库。通常而言,大型的代码库和系统是需要几个月的时间才能够充分理解。所以,别着急,尽力学习的同时也不必给自己施加压力非要立即掌握所有。
2.要谦虚爱学习
对自己不熟悉的工具和 方法 要抱有谦虚的态度。新的工作就意味着学习新的东西。“知之为知之,不知为不知”,对自己不知道的东西要谦虚和诚实。并且要记住每一个团队都其独特的工作流程和做事方式。花时间去了解新团队对于工具的选择,以及他们工作流程,并尊重那些选择,即使你认为你有一个更好的解决方案。
3.提问
不要害怕问问题。大多数人会因为怕被别人看扁,而不愿意去问问题,任由问题堆积如山。事实上,最聪明和最高效的人往往是那些不怕丢脸不断问问题的人。你只需要问问别人就可以迅速解决你自己苦苦研究了半天也不得其法的问题,省事多了,何乐而不为呢!如果你觉得总是问一个人问得过于频繁了,那不妨换个人问,这样就不会让人厌烦了。
4.找导师
我依然记得我的第一份编程工作,我的导师真的帮了我很多很多。导师能给你建议,教你新的东西,帮助你渡过最困难的最初几周。通常大多数人都是善良和乐于助人的。所以不要害怕去寻求帮助。还有一点,如果你已经熟悉了自己的工作,那么也不要吝啬帮助那些新同事。
5.获取密码管理器
如果你还没有使用密码管理器,那么你现在真的可以用了。新工作通常会涉及到登录很多不同的在线服务器。这时密码管理器,如LastPass就大显身手了,它将为你保存密码,生成安全码,然后当你登录到网站时自动帮你填写好详细信息。
6.善于交际
要会交际,与你的新同事成为朋友是很重要的。刚开始如果你被邀请与同事共进午餐或喝酒,一定不要拒绝,哪怕你并不喜欢。这不但能让你感觉更自在,还能方便你问问题,有助于了解新公司的内幕信息。此外,第一印象也很重要。即使你被允许穿着短裤和拖鞋来上班,但是头几个星期注重着装总是不会错的。
7.记得添加书签
为了更好地适应新工作,你最好一开始就着手将有关工作的内容有规律地添加为书签。大多数公司都会使用大量的在线工具,如Jira、Confluence、Jenkins、Salesforce、Bitbucket、Github等等。如果你不为这些链接添加书签,那么你就可能会因为 不得不再次询问同事相关的登录信息而惹恼他们。如果你的浏览器书签工具不够用,也可以试试Kippt或Delicious。
8.现实点,你不是超人
刚开始新工作的头几个星期,可能会让人身心俱疲。所以,一定要现实点,明白自己的极限,并尝试削减健身房、舞蹈班、极端风筝冲浪等活动的时间。晚上早点睡,保持白天充沛的体力和饱满的精神,避免过量的社交活动。总之,身体是事业的本钱。
9.做笔记
好记性不如烂笔头——否则,一些重要的信息会从你脑中溜走。 Evernote是一款非常便利的在线工具,可用于保持跟踪并同步到所有设备。
10.投入大量的时间
如果你想在工作中脱颖而出,那么努力才是王道。编程是一个非常具有挑战性的事业,需要大量的时间和激情用于学习和研究。不要指望上班时间就能学习一切。你必须投入额外的时间来熟悉,你可能需要用到的新的工具、语言、框架和思路。编程也是一份艰苦的工作,也许你整个职业生涯都在学习新的东西。刚进入新工作,你最好能够早起早睡,将这些挤出来的时间用于了解熟悉新项目的详细情况。
综上所述…
开始新工作对于每个人都是一种挑战,对于程序员尤其如此。请记住,你之所以被录用,是因为有人对你的能力有信心,觉得你能胜任这份工作。一开始不需要给自己太大的压力,但是当你陷入困境之中时,也千万不要害怕去寻求帮助。
新员工如何度过最重要的90天
职场 新人一般都要经过90天(即三个月左右)的试用期。因为一份工作是否适合自己,或者一个员工是否能够胜任该岗位工作,都不是两三天就能看出来。不管对于职场新人还是公司,试用期的90天都很关键。那么,这最重要的90天应怎样度过呢?
1给用人单位一个好印象
总体而言,大部分用人单位对于新人都会比较耐心和包容,但要安然度过试用期还是得靠自己,其中最基本的,就是给用人单位留下一个好印象。
维持良好的人际关系
如果要想在试用期间评价一名员工是否合格,仅有专业知识或技能还不行,人际关系也是考察的重要方面。见到人要面带微笑,主动与别人打招呼,学会尊重别人。做好这些细节,有助于建立和维持良好的人际关系。
培养团队合作意识
有些新人到用人单位后,对于看似与自己关联不大的事,往往采取“视而不见”的态度。某外资企业的人力资源经理说:“这样的人,缺乏现代企业所必须具备的团队合作意识,即使再优秀,我们都不会留用。”多付出,多参与,既能学习和了解公司业务,更是与老同事沟通的良好途径。
从身边的点点滴滴小事做起
不少刚 毕业 的大学生容易犯眼高手低的毛病。作为职场新人,就不该好高骛远,而是踏踏实实地从身边的小事做起。一屋不扫,何以扫天下?
主动发挥自己的能动性
面对领导吩咐的事,有的人立即就执行,全力以赴。相反,有的人却非得领导一而再、再而三地催促才去完成。两相比较,领导当然喜欢前者成为自己的员工。这就需要毕业生们在试用期过程中能吃苦耐劳,主动发挥自己的能动性。
2注意观察用人单位
试用期是一个双向考察磨合的过程,作为新进的大学毕业生,如何考察用人单位呢?
听身边同事对公司的评价
听不同的同事对公司各方面的评价。他们的评价会体现公司的价值观,是非常有用的资讯参考。同时还可以从其他 渠道 了解,包括公司客户、竞争对手、关联单位等。一个有魅力有价值的企业是值得它的竞争对手尊敬的。
考虑用人单位是否符合自己的 职业规划
在试用期结束之前,还要多“ 总结 ”。考虑该单位是否符合自己的职业规划,自己是否真的适合在该单位工作。公司是否能提供公平的晋升空间,自己是否有充分的晋升机会。
3警惕“试用期陷阱”
在就业竞争异常激烈的今天,一些用人单位利用试用期来欺骗职场新人。常见的试用期骗局有如下几种,作为职场新人一定要擦亮自己的双眼。
白领变蓝领
本科毕业生苏某应聘到一家公司做对外贸易,第一天上班被派去当服务员。苏某以为头几天是这样,谁知在整个试用期内公司都没让她接触外贸方面的工作。苏某生气地问经理,经理告诉她,公司本来只是差一个服务生。苏某听后掉头便离去了。有一些单位虚设空位引诱应聘者上当受骗。还有一些工作岗位不需要高学历的人员,可用人单位却对应聘者要求非常苟刻,从而造成人才浪费。
空城计
只签订一份所谓的试用期合同,许诺等试用合格后再续订 劳动合同 ;或将试用期排除在劳动合同之外;或将劳动合同的签订之日作为合同的生效日,于是迟迟不签订劳动合同;或是将试用期结束之日作为劳动合同的生效日,到试用期即将结束时,找出种种理由辞退员工,又借口合同未生效而不承担任何义务。
连环计
大学毕业生任某应聘到一家报社做记者,说好试用期为一个月。谁知埋头苦干了一个月后,却被告知试用不合格,需延长两个月继续考查。此时任某才知道自己上当了。由于试用期工资较低,用人单位有时会找个冠冕堂皇的理由,要求与新人重新约定一个试用期,再进一步考察,以达到占有廉价劳动力的目的。第二个试用期当然不会超过法定最长试用期限,但是,前后两个试用期相加后,往往超出了法定试用期限。
鱼目混珠
由于人们经常将试用期、实习期(指学生在毕业之前的实习阶段)和见习期(指干部进入用人单位后的见习阶段)这三个概念相混淆,所以有些用人单位就故意用实习期或见习期来代替试用期,因为通常实习期和见习期长达半年到一年。
Tips
试用期VS实习期VS见习期
试用期是指包括在劳动合同期限内,劳动关系还处于非正式状态,用人单位对劳动者是否合格进行考核,劳动者对用人单位是否符合自己要求也进行考核的期限,这是一种双方双向选择的表现。试用期包含在劳动合同期限内。劳动合同仅约定试用期的,试用期不成立,该期限为劳动合同期限。
实习期是指在校学生充分结合自己的理论知识,参加 社会实践 工作,以充分提高自身综合素质和工作适应能力的一段时期。它有助于学生将来找到一份适合自己的职业;或是提前熟悉即将就职单位的基本情况,给本人和聘用单位相互熟悉、了解的机会。
‘叁’ 程序员如何走出职业瓶颈期
每个人都有可能会遇到自己的职业瓶颈期,作为程序员应该学会用学习新思路来解决新问题,而不是安于现状。
1.学习新技术
也许尝试一种新的语言或框架会让你感到受挫和沮丧,但探索的趣味也就在这里。至少,你应该看看同一种功能用其它语言是如何实现的。如何你只会用锤子,那你眼里所有的东西看起来都像钉子。
2.不惧怕老代码
如果你的公司里有老项目、老代码需要你去维护,研究一下!你会吃惊于从中学到那么多的编程知识以及公司的业务规则。还会发现一些当前正在研究的问题,其实几年以前就有人已经解决了。
3.了解你的敌人
程序员很容易对某种语言或框架产生宗教式的虔诚。如果你发现自己曾经痛恨或鄙视某种技术,也许你应该强迫自己去研究一下它们。
最不济,至少你能证明讨厌它们是有理由的。最好的情况是,你会从它们中学到很多东西。不要让你的偏见阻挡了你的探索道路。
4.不要太贪心
程序员很容易被各种层出不穷的新平台、新语言、新工具、新类库吓倒。
你很容易产生一种恐惧心理,感觉自己已经落后——那些程序员谈论的技术我怎么从来没有听说过?当你发现一种新技术看起来很有用或很有趣时,做个笔记,几周或几月后在回来看看它,如果人们还在谈论它,那么,你就应该进一步研究它。
事实上很多热门新技术都是昙花一现,你完全可以忽略它,不要让它们浪费了你的大脑。
5.学无止境
程序员都有着一种天生的好奇心,这种好奇心引导着我们的编程生涯。写几行代码,装载到计算机里,让它按照你的思路工作,这是非常有趣的事情。
但随着开发的东西越来越多,我们变的越来越忙,这种好奇心会慢慢的减退。我们应该时不时的用一些新思路挑战自己,让自己的思想保持锋锐和专注,提醒自己为什么当初选择码农这条道路
‘肆’ 零基础小白如何成为程序员需要学习哪些内容
自学编程没那么难。只要是理工科学生,逻辑思维好的朋友,都可以开始编程。这里有六种方法可以和你的朋友分享自学编程。这些方法足以帮助您入门和进阶:0.书籍+视频可能是学习编程最好的方式,对于初学者来说,可以通过视频+书籍来学习。这两种方式形成互补关系。编程教学视频可以帮助你快速掌握编程,但通常比较生动,简单,不系统。书是系统的,透彻的,枯燥的,所以最好的方法就是把书和视频结合起来。
5.反复练习。编程是一门手艺,需要反复练习。没有书和视频能独立实现吗?学习的最终状态无非就是:我没有他,但是我的手很熟悉。近年来,IT行业变化很快。我们可以大致感受到我们使用的手机和互联网产品的变化。我们从原来的非智能手机迁移到iPhone和安卓手机。我们从去网吧买电脑变成了6G内存2GHz的智能手机(已经超过了2010年的电脑配置)。
我们从大型PC游戏转到了手机游戏。我们的每部手机都有将近100个应用。我们用过很多微信官方账号,微店,mini 程序和mini游戏。我们从5元3000万变成了随时随地刷小视频,直播。我们很少用现金,因为我们不得不拿钱包取钱,有时我们想拿出10元钱,但我们真的没有……丰富的互联网产品(应用程序、H5、小程序、游戏等)背后。),IT其实是由日新月异的IT技术支撑的。
所以作为程序,你必须不断学习,学习公司需要的任何技术。工作几年,坚持学习也不算太累。毕竟经历了几年,很多东西都很熟悉。零基础如何自学编程?成为/kloc-0成员需要具备哪些技能?这些年来,我开发了各种东西,做了各种编程工作。服务器后端程序已经开发出来,需要几种编程语言:JAVA、PHP、Node.js、Python、SQL等。已经开发了PC网页和H5,需要Javascript,CSS3,HTML5等。开发了一个App,你需要用JAVA,SQL,HTML5。
我们开发了微信small 程序,需要CSS,Javascript,HTML等等。开发过计算机软件,需要用到C#、Javascript、C++等。为什么要学那么多技术?因为不同的编程语言有不同的长处。比如玩游戏,Unity很成熟很快,很多知名游戏都是用它开发的,所以开发游戏的时候几乎很多公司都在用它,程序会员一定要学。移动APP的开发主要使用JAVA、Swift、OC等编程语言,开发App必须学习这些编程语言。零基础如何自学编程?成为/kloc-0成员需要具备哪些技能?
没有接触过技术开发的人还是不知道为什么需要这么多编程语言。这么说吧:翻译跟英国人说话要说英语,跟西班牙人说话要说西班牙语,跟我们说话要说中文。IT技术的编程语言和我们说的语言类似,不同的领域需要不同的语言。说了这么多,大家都知道程序员工在工作中需要的技能,以及会发展什么。
我再简单总结一下::程序工作人员必须掌握自己岗位的编程语言。比如做安卓APP,一定要掌握JAVA。一般掌握编程语言是不够的。为了提高开发速度,还必须了解各种框架和库。程序员工将发展什么?会开发APP,网站,电脑软件,微信程序等等。不过应该说,行业是有特长的,并不是所有的程序工作人员都能开发应用、网站、小程序…有些人只能懂一门技术,但可以是专家,比如数据库专家。而且这些年我也只是个打杂的,但是各种发展都会...更多的杂工,仅此而已。
‘伍’ 新手程序员上班后,怎么度过成长初期
一般三到四个月就能适应了,首先交给你的任务按时完成,不懂的能想办法解决就自己解决,别遇事就问,这样并不好,你负责的东西你要多去学习和练习,程序员不仅仅只是懂得原理,编码是必须的,只有勤加练习才能手到擒来,多看公司相关项目流程以及一切能够帮助你的东西,我现在也是在这个阶段。
‘陆’ 程序员入门:如何自学编程
首要之首:不要急于选择一种语言 新手们有一个常见的错误就是犹豫于判断哪种编程语言是做好的、最该先学的。 我们有很多的选择,但你不能说那种语言“最好”。 我们应该理解:说到底,什么语言并不重要。 重要的是理解数据结构、控制逻辑和设计模式。 任何一种语言—甚至一种简单的脚本语言—都会具有所有编程语言都共有的各种特征,也就是说各种语言是贯通的。 我正在攻读我的计算机学学位,我编程使用Pascal,汇编,和C语言,事实上我从来没有把它当成职业以求获得回报。 我一直在自学编程,工作上用不到它,我使用现有的知识,参考各种文档和书本,学习它们的用法。 因此,不要急于选择何种编程语言。 找出你想要开发的东西,使用一种能够完成这项任务的语言,这就可以了。 根据各种开发平台的不同,有很多不同的软件开发形式可供你选择:从网站应用到桌面软件到智能手机软件到命令行脚本工具。 这篇文章里,我将重点介绍一些很受欢迎的入门教程和资源,它们能帮助你学会如何在各种主流的平台上编程开发。 我先假设你是一个悟性很强的读者,但对于新手,当我谈论程序代码时还是要按照入门级的水平。 因为即使是你自己看一篇编程入门手册,如果发现都能理解时,心情自然会很高兴,这样利于你进一步学习。 桌面脚本 想要动手在Windows里或苹果系统里编程,最简单的方法是从一种脚本语言或宏语言开始,例如AutoHotkey(Windows) 或Automator(苹果系统)。 如今一些硬件程序员冲着他们的屏幕大喊大叫,说AHK和AppleScript并不是“真正”的编程语言。 也许他们说的是对的—技术上,这些种类的语言只能做一些上层的编程。 但是对于那些只是想来脱盲、想在他们的电脑里实现一些能自动运行的程序的新手来说,这些语言会是一个绝妙的入门入口—而且你会吃惊于它们丰富的功能。 例如,大家都喜爱的Texter就是Adam使用AutoHotkey开发的能独立运行的Windows应用程序,所以说这种脚本语言远不是只能开发小规模脚本软件。 如果你想从AutoHotkey入手,可以参考Adam的指导:how to turn any action into a keyboard shortcut using AutoHotkey(然后,你可以下载Texter源代码看看这个功能齐全的使用AHK开发的Windows应用程序的内部结构)。 Web开发 HTML 和 CSS:开发网站,你第一件要知道的事情就是HTML(网页就是由它组成的)和CSS(一种让外观更好看的样式标记)。 HTML 和 CSS 并不是编程语言—它们只是页面的结构和样式信息。 然而,在开始开发web应用程序之前你必须要学会如何手工的编写简单的HTML和CSS,web页面是任何webapp的前端显示部分。 这个HTML 指导是你入手的好地方。 JavaScript:当你可以通过HTML和CSS构建一个静态页面后,事情就开始变得有趣了—因为到了该学JavaScript的时候了。 JavaScript是一种web浏览器上的编程语言,它的魔力就是能在页面里制造一些动态效果。 JavaScript可以做bookmarklets,Greasemonkey脚本, 和Ajax, 所以它是web上各种好东西的关于因素。学习JavaScript从这里开。 服务器端脚本:一旦你学会了网页里的知识,你就要开始对它添加一些动态服务器操作—为了实现这些,你需要把目光转移到服务器端脚本语言,例如PHP, Python, Perl, 或 Ruby。 举个例子,如果想要制作一个网页形式的联系方式表单,根据用户的输入发送邮件,你就需要使用服务器端脚本来实现。 像PHP这样的脚本语言可以让你跟web服务器上的数据库进行沟通,所以如果你想搭建一个用户可以登录注册的网站,这样的语言正是你需要的。Webmonkey是一个优秀的web开发资源网站,里面有大量的各种web编程语言的指导手册。 阅读一下他们的PHP 初学者指南。 当你感觉差不多了的时候,看看WebMonkey’s PHP and MySQL tutorial学习如何使用PHP跟数据库交互。 网上最好的要数PHP语言官方的在线文档和函数参考了。 每个知识点上 (例如strlen function这个)都在后面列出来用户的评论注释,这些对于文档的本身是非常有价值的。 (我很喜欢PHP,但还有很多其他种服务器端的脚本语言你们都可以选择。) Web框架:过去数年里,web开发人员在开发动态网站的过程中不得不一遍又一遍的针对重复遇到的问题写出重复的代码。 为了避免这种每次开发一些新网站都会重复劳动一次的问题,一些程序员动手搭建了一些框架,让框架替我们完成重复性的工作。 非常流行的Ruby on Rails框架,作为一个例子,它利用Ruby编程语言,为我们提供了一个专门面向web的架构,普通的web应用程序都能使用它来完成。 事实上,Adam使用Rails开发了他的第一个正式的(而且是叹为观止的!)web应用程序,MixTape.me。这就是他的如何在没有任何经验的情况下搭建一个网站。还有一些其他的web开发框架包括CakePHP(针对 PHP 编程者),Django(针对 Python 编程中), 以及jQuery(针对 JavaScript). Web APIs:API (应用层序编程接口)是指不同的软件之间相互交换的程序途径。 例如,如果你想在你的网站上放一个动态的地图,你可以使用Google Map,而不需要开发自己的地图。The Google Maps API可以轻松的让你通过JavaScript在程序中引入一个地图到你的页面上。 几乎所有的现代的你所知道的和喜爱的web服务都提供了API,通过这些API你可以获取到他们的数据和小工具,在你的应用程序里就可以使用这些交互过来的东西了,例如Twitter, Facebook, Google Docs, Google Maps, 这个列表远不止这些。 通过API把其他web应用集成到你的web应用里是现在富web开发的前沿地带。 每个优秀的主流的web服务API都附带有完整的文档和一些快速入手的指导(例如,这个就是Twitter的)。 疯狂吧。 命令行脚本 如果你想开发一个程序,让它读取文字或文件、输入输出一些有用的东西,那么,命令行脚本语言将是个不错的选择。 然而它并不像web应用程序和桌面应用程序那样有吸引力和好看的外观,但是作为快速开发的脚本语言,你却不能忽视它们。 很多的在linux平台上运行的web脚本同样能以命令行模式运行,例如Perl,Python和PHP,所以如果你学会了使用它们,你将能在两种环境中使用它们。 我的学习道路一直没离开Perl太远,我自学Python使用的是这本优秀的在线免费书Dive into Python。 如果成为一个Unix高手也是你学习的目标,那么你绝对要精通bash这个脚本语言。 Bash是Unix和Linux环境下的一种命令行脚本语言,它能够为你做所以的事情:从自动备份数据库脚本到功能齐全的用户交互程序。 起初我没有任何使用bash脚本的经验,但最终我用bash开发了一个全功能的个人代办任务管理器:Todo.txt CLI。 插件(Add-ons) 如今的web应用程序和浏览器都可以通过一些扩展软件来丰富自己的功能。 由于一些现有的软件,例如Firefox、WordPress越来越受到开发人员的关注,插件的开发也日益流行,人们都在说“But if only it could do THIS…” 只要你掌握了HTML,JavaScript和CSS,你就可以在任何的浏览器里开发你想要的很多东西。 Bookmarklets,Greasemonkeyuser scripts, 和Stylishuser styles这些软件都是用的更普通页面一样的语言写成的, 这几个东西都值得你去研究一些。 更高级的浏览器扩展程序,例如Firefox的扩展,它们可以帮助你很多。 开发Firefox的扩展,举个例子,需要你精通JavaScript和XML(一种标记语言,类似HTML,但具有更严格的格式)。 早在2007年我就写下来how to build a Firefox extension, 这是我在笨手笨脚的研究网上的一些学习资料后获得的成果。 很多免费的、受欢迎的web应用程序都提供了扩展框架,例如WordPress 和 MediaWiki。 这些应用程序都是用PHP写成的,所以只有对PHP熟悉你才能做这些事情。 这个就是如何编写WordPress插件。 而想驾驭Google Wave前沿技术的开发人员可以从使用HTML, JavaScript, Java, 和 Python 写小组件和小工具开始。 我写的第一个Wave bot是跟着这个一个下午时间的快速入门指导开始的。 开发桌面上的Web应用程序 学习编程最好的结果是你在一个环境下学的东西可以应用到另外的环境中。 先学习开发web应用程序的好处就是我们有一些方法可以让web应用程序直接在桌面上运行。 例如,Adobe AIR是一个跨平台的即时运行平台,它能让你编写的程序运行在任何装有AIR的操作系统的桌面上。 AIR应用程序都是由HTML, Flash, 或 Flex 写成的,所以它能让你的web程序在桌面环境中运行。 AIR是开发部署桌面应用程序的一个优秀的选择,就像我们提到过的10个让你值得去安装AIR的应用程序。 移动应用开发 能在iPhone或者Android智能手机上运行的手机应用程序的开发如今正呈现井喷之势,所以你也可以梦想一下如何在iTunes应用商店里通过你的天才程序大赚一笔。 但是,作为一个编码新手,直接奔向移动开发所经历的学习曲线可能会很陡,因为它需要你熟悉高级的编程语言,例如Java和Objective C。 然而,你当然应该看看iPhone 和 Android 编程究竟是什么样子的。 阅读这个简单的iPhone应用开发例子可以初步认识一下iPhone程序的开发过程。 Android 程序都是由Java写成的,这有一个简单的视频教程教你如何开发第一个”Hello Android“程序(注:可能需要代理才能看这个视频)。 耐心,刻苦,尝试,失败 好的程序员都有一个不达目的誓不罢休的品质,他们会惊喜于通过长期推敲和失败换来的一点成绩。 学会编程会有很好的回报的,但是学习的过程可能会是饱受挫折和孤独的。 如果有可能,最好找个伴一起陪你做这件事。 想精通编程,这和其他事情一样,需要坚持,反复尝试,获得更多的经验。
‘柒’ 程序员是怎样突破瓶颈成为大神的
程序员界的大牛,概括来说分两种:一种是天生有天赋,对程序的思维想法,就是比一般人精准敏锐;一种是没有天赋,但十分努力刻苦,日复一日年复一年,最终成为对技术非常娴熟的人。第一种就不用说了,先天资本。那对于第二种情况,天通苑计算机学校介绍要怎样少走弯路,成为一名“受人敬仰”的大神呢?
很多刚踏入程序世界的新人都会有这种困惑:“每天的工作就是在框架的基础上把需求转换为代码,一没有学到业务誉亮,二没有学到技术!那是非常的抑郁!”这很普遍,毕竟公司是要得到最大的效益,而不是专门给你机会观摩学习。一般的公司都会将分工细化,做到缺少了谁都可以。做到提高开发效率,降低开发成本。可是作为程序员来讲,这样对个人的成长非常的不利。
但刚接触的新人,又怎样去提升自己,最后走上晋升大神的的路呢?当然,前提是,你已经是名程序员了。
1、带着自己的脑子写代码
书写代码的过程中,必然会涉及到很多的老代码的维护。很多人可能就在原有的基庆者宽础上,修修剪剪。却不去考虑改变其包结构,抽象公用方法。或者重构代码。就像一个盆景,长出了杂乱无章的枝丫,你只想着修剪掉不属于它的那部分,却不想自己动手去修改,长成自己想要的模样。思考是必须的,只有在思考的过程中人才会成长起来。想办法去奉献智慧,人才可能慢慢的成长!
不思考,就跟猴子掰玉米一样,掰一个扔一个,没有积累,体验是过程给予的,而经验是需要思考才能得出的。在简单的事情中总结出一些规律和方法,最后形成自己的方法论。多思考,慢慢你的思维和看事情的方式都会变了,看问题也不会只停留在表面,经验也就长在了你的身体里面。
2、拓宽知识层
这种扩宽可以从两方面进行。一种是从书籍中汲取。看些自己现有知识以外的书籍,从中获取灵感。也可以看看最新行业动态,语言软件又发生了哪些变化。另一种是学习别人的成果。嫌脊在平时工作中,不同的框架,花上一天的时间看看架构图并且理解其中关键环节的配置调用就可以了。但是如果想提高自己的架构水平,还是不断的看别人的源代码,吸取别人思想的精华部分,然后自己在工作中去发挥智慧。
3、有没有和高手过招
其实网上很多技术blog写的都很好,尤其那些持续更新的架构和技术的程序员们更是值得学习。找到他们,和他们讨论一个方面的技术。真正的高手都是谦虚的,讨教一些他们知道的东西。这几乎是最快的进阶方法。就像老司机听声音就能知道车哪里出毛病一样,新手得费半天劲还花冤枉钱。找一个行业内的人带着学习,等于是站着巨人的肩膀上,获得经验的效率自然提高了。自己一个人摸爬滚打,很容易撞的头破血流,想想如果有人能在旁边指点一下,会不会成长的更快?找个有经验的人来带你,未必要多有名气,但是要经验丰富,愿意分享。
‘捌’ 如何渡过小白期,不再当菜鸟程序员
相信习惯的力量
菜鸟和大牛的区别除了写代码、debug的核心能力差距之外,另外一个很大的差别就是在习惯上。大牛经过摸爬滚打练出了一系列优良的习惯,而菜鸟好习惯还没养成,坏习惯有了一堆。所以身为菜鸟的时候一定要有规范和习惯意识,养成好习惯,去掉坏习惯让自己越来越习惯写出优质的代码。
关于习惯仁者见仁,每个人也都有自己的习惯。
一个函数只做一件事
如果有一天你接手了另外一个同事的代码,发现他有一个函数里面装了三千行代码,你会是什么感受?
有一些人会不知不觉地停止学习,因为他已经足够应付工作了。在工作当中他会有一种在这个领域我当下会的技能已经足够了的错觉,有些人甚至会因此觉得其他资历更深的同事也不过如此,似乎并没有比自己多会多少东西。
我当初就是这样,因为我发现我工作当中用到的东西玩的非常溜,用起来得心应手。我一度有些膨胀,觉得自己已经算是一个经验丰富的程序员了。直到后来有一次面试,被问到了一个常用的工具的技术细节,我张口结舌一句话也说不上来,我才发现,自己知道的只是皮毛而已,甚至连皮毛都算不上。
当然我们工作当中对很多技术的要求都只是会用,你会用就够了,这并没有问题。我也并不觉得每一门我们用到的技术都需要去刨根究底,但我们需要对我们的实力有清醒的认识,哪些是勉强会用的?哪些是真正了解掌握的?哪些是需要掌握但是只是勉强会用的?
能够想明白这些问题可以让我们保持一个清醒的头脑,对自己的当下的处境以及长远的发展目标都会有一个清楚的认识。
积累知识而不仅是经验
新手或者是小白有一个特点就是往往更加依赖经验而不是知识,举个例子吧。比如新手后端经常遇到的问题之一就是maven package失败,很多人解冲突的办法就是mvn clean & mvn install。也就是清空重新建立,因为大部分情况下这个命令可以解决问题。所以很多新手就记住了这个命令,每次遇到maven失败就这么来一次。
如果这个命令解决不了呢?这些人可能会换个命令试试。如果常用的解决问题的命令都试过了还是不行呢?这些人可能就僵住了,觉得这个问题解决不了了,得请大牛来看了。
这里的核心问题是新手积累的是经验而不是知识,他们只是简单机械地把出现的问题和解决方法做映射而已,并不是从原理和核心层面理解问题出现以及解决方案生效的原因。那么带来的结果就是,积累到的只是经验,下次能解决问题不是因为学会了问题的解决方法,也不是理解了这一块技术内容,只是单纯地记住了而已。这显然也是一种伪成长。
其实我之前也遇到过这样的问题,虽然我每次都有意识遇到问题记录下解决的办法,这样下次就可以不用请教别人了。然而虽然我记录的问题越来越多,但是每次遇到新的问题还是解决不了,需要请教别人。直到有一天,被我问的大牛露出了不耐烦的神情,才让我下定决心自己学会解决问题。
于是我不再是头痛医头脚痛医脚地解决问题,而是去学习了一下问题背后的原理和机制,再从报错日志上分析错误产生的原因,思考解决方案,最终彻底学会了解决这一类问题的方法。之后不但能够自己独立解决问题,而且还可以去帮助别人了。我后来回过头来想想,如果我第一次遇到问题的时候就自己尝试去学习其中的机制,而不只是记住解决方法,应该可以做得更好。
少说废话,多些代码
着名的Linux之父Linus有一句名言:talk is cheap show me the code。翻译过来就是废话少说,代码拿来。我觉得这句话非常符合这一行的精髓,我们不是靠嘴皮子吃饭的,而是靠实实在在的产出,这个产出最终是要落实到代码上的。作为一个新人,可能我们会有这样的问题,那样的困惑。然而这许多的问题和困惑我们光想是没用的,只能用硬实力来解决。
着名的C语言作者谭浩强也有一句名言:新手学编程最应该做的事情就是写满一万行可以运行的代码,之后你就自然入门了。道理其实也是一样的,少说废话,多做实事。多做多练,实力自然不会差。空想吹逼是成不了大牛的。所以如果你犹豫想要学习一门新的领域,但是不知道从何做起的时候,不妨想想这句话,别管它三七二十一,先搞起来写起代码来再说。搞着搞着,你自然就明白后面应该怎么做了。
以上就是我自己积累的一些思考和想法,如果你是一个小白的话,希望它能够帮助你顺利度过新手期,向着大牛的目标进发。
‘玖’ 每个程序员都会遇到瓶颈期,你知道哪些度过瓶颈期的好办法
我在工作中也遇到过瓶颈期,根据我的经历给你说说,我是怎么度过的!工作中的瓶颈期和减肥中的瓶颈期有一个共性就是,压力导致大心情不好。
心情的好坏对一个人的状态影响非常大,心情好的时候加班都是轻松愉快的,心情不好的时候简直是度秒如年。一般心情不好都是家庭琐事,人际关系,自我施压等导致的。这就需要我们解决问题,释放压力。我来说说释放压力的方法。
1、运动
运动是最有效最直接的方法,有时间和条件就去健身房,没时间就去小区公园或者学校的操场跑跑步。流汗的过程中,压力就随着汗水一并排出。就好比运动前你是一个装满沙子的木桶,沙子就是压力,运动完之后沙子都流走了,身心都会放轻松。
4、亲友
与亲友分享自己的近况,让他们开导自己,当你看到这里的时候,不妨找找自己的好朋友,家人倾诉一下工作中的不顺,众人拾柴火焰高,朋友家人给出的意见比你自己苦苦烦恼要好的多。或是约着他们下班以后散散步,偶尔找到两三天空闲时间出去旅旅游,要给自己放松的机会。