程序员如何提高自己的逻辑思维和技术水平
2019独角兽企业重金招聘Python工程师标准>>>
版权声明:本文为北京尚学堂原创文章,未经允许不得转载。
菜鸟程序员如何提高自己的逻辑思维和技术水平
1、 学习一门脚本语言
学习一门脚本语言
可以让你摆脱对底层语言的恐惧感,脚本语言可以让你很快开发出能用得上的小程序。实践项目:
处理文本文件,或者csv (关键词 python csv, python open, python sys) 读一个本地文件,逐行处理(例如 word count,或者处理log)
遍历本地文件系统 (sys, os, path),例如写一个程序统计一个目录下所有文件大小并按各种条件排序并保存结果
跟数据库打交道 (python sqlite),写一个小脚本统计数据库里条目数量
学会用各种print之类简单粗暴的方式进行调试
学会用Google (phrase, domain, use reader to follow tech blogs)
为什么要学脚本语言,因为他们实在是太方便了,很多时候我们需要写点小工具或是脚本来帮我们解决问题,你就会发现正规的编程语言太难用了。
2、 用熟一种程序员的编辑器(不是IDE) 和一些基本工具
Vim / Emacs / Notepad++,学会如何配置代码补全,外观,外部命令等。
Source Insight (或 ctag)
使用这些东西不是为了Cool,而是这些编辑器在查看、修改代码/配置文章/日志会更快更有效率。
3、 熟悉Unix/Linux Shell和常见的命令行
如果你用windows,至少学会用虚拟机里的linux, vmware player是免费的,装个Ubuntu吧
一定要少用少用图形界面。
学会使用man来查看帮助
文件系统结构和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
学会使用一些文本操作命令 sed/awk/grep/tail/less/more …
学会使用一些管理命令 ps/top/lsof/netstat/kill/tcpdump/iptables/dd…<</p>
了解/etc目录下的各种配置文章,学会查看/var/log下的系统日志,以及/proc下的系统运行信息
了解正则表达式,使用正则表达式来查找文件。
对于程序员来说Unix/Linux比Windows简单多了,学会使用Unix/Linux你会发现图形界面在某些时候实在是太难用了,相当地相当地降低工作效率。
4、 学习Web基础(HTML/CSS/JS) + 服务器端技术 (LAMP)
学习Web基础+ 服务器端技术
未来必然是Web的世界,学习WEB基础的最佳网站是W3School。
学习HTML基本语法
学习CSS如何选中HTML元素并应用一些基本样式(关键词:box model)
学会用 Firefox + Firebug 或 chrome 查看你觉得很炫的网页结构,并动态修改。
学习使用Javascript操纵HTML元件。理解DOM和动态网页,网上有免费的章节,足够用了。或参看 DOM 。
学会用 Firefox + Firebug 或 chrome 调试<</p>
在一台机器上配置Apache 或 Nginx
学习PHP,让后台PHP和前台HTML进行数据交互,对服务器相应浏览器请求形成初步认识。实现一个表单提交和反显的功能。
把PHP连接本地或者远程数据库 MySQL(MySQL 和 SQL现学现用够了)
跟完一个名校的网络编程课程,不要觉得需要多于一学期时间,大学生是全职一学期选3-5门课,你业余时间一定可以跟上
学习一个+ Ajax (异步读入一个服务器端图片或者数据库内容)+JSON数据格式。
HTTP: The Definitive Guide 读完前4章你就明白你每天上网用浏览器的时候发生的事情了(proxy, gateway, browsers)
做个小网站(例如:一个小的留言板,支持用户登录,Cookie/Session,增、删、改、查,上传图片附件,分页显示)
买个域名,租个空间,做个自己的网站。
【进阶加深】
1、 C语言和操作系统调用
C语言和操作系统调用
重新学C语言,理解指针和内存模型,用C语言实现一下各种经典的算法和数据结构。推荐《计算机程序设计艺术》、《算法导论》和《编程珠玑》。
学习计算机科学和编程导论
学习C语言内存管理
学习Unix/Linux系统调用(Unix高级环境编程),了解系统层面的东西。
用这些系统知识操作一下文件系统,用户(实现一个可以拷贝目录树的小程序)
用fork/wait/waitpid写一个多进程的程序,用pthread写一个多线程带同步或互斥的程序。多进程多进程购票的程序。
用signal/kill/raise/alarm/pause/sigprocmask实现一个多进程间的信号量通信的程序。
学会使用gcc和gdb来编程和调试程序
学会使用makefile来编译程序。
IPC和Socket的东西可以放到高级中来实践。
学习Windows SDK编程(Windows 程序设计 ,MFC程序设计)
写一个窗口,了解WinMain/WinProcedure,以及Windows的消息机制。
写一些程序来操作Windows SDK中的资源文件或是各种图形控件,以及作图的编程。
学习如何使用MSDN查看相关的SDK函数,各种WM_消息以及一些例程。
这本书中有很多例程,在实践中请不要照抄,试着自己写一个自己的例程。
不用太多于精通这些东西,因为GUI正在被Web取代,主要是了解一下Windows 图形界面的编程。@virushuo 说:“ 我觉得GUI确实不那么热门了,但充分理解GUI工作原理是很重要的。包括移动设备开发,如果没有基础知识仍然很吃力。或者说移动设备开发必须理解GUI工作,或者在win那边学,或者在mac/iOS上学”。
2、学习Java
学习Java
Java 的学习主要是看经典的Core Java 《Java 核心技术编程》和《
学习JDK,学会查阅Java API Doc http://download.oracle.com/javase/6/docs/api/
了解一下Java这种虚拟机语言和C和Python语言在编译和执行上的差别。从C、Java、Python思考一下“跨平台”这种技术。
学会使用IDE Eclipse,使用Eclipse 编译,调试和开发Java程序。
建一个Tomcat的网站,尝试一下JSP/Servlet/JDBC/MySQL的Web开发。把前面所说的那个PHP的小项目试着用JSP和Servlet实现一下。
3、Web的安全与架构
Web的安全与架构
学习HTML5,网上有很多很多教程,以前酷壳也介绍过很多,我在这里就不罗列了。
学习Web开发的安全问题
学习HTTP Server的rewrite机制,Nginx的反向代理机制,fast-cgi(如:PHP-FPM)
学习Web的静态页面缓存技术。
学习Web的异步工作流处理,数据Cache,数据分区,负载均衡,水平扩展的构架。
实践任务:
使用HTML5的canvas 制作一些Web动画。
尝试在前面开发过的那个Web应用中进行SQL注入,JS注入,以及XSS攻击。
把前面开发过的那个Web应用改成构造在Nginx + PHP-FPM + 静态页面缓存的网站
4、学习关系型数据库
学习关系型数据库
你可以安装MSSQLServer或MySQL来学习数据库。
学习教科书里数据库设计的那几个范式,1NF,2NF,3NF,……
学习数据库的存过,触发器,视图,建索引,游标等。
学习SQL语句,明白表连接的各种概念(参看《SQL Join的图示》)
学习如何优化数据库查询(参看《MySQL的优化》)
实践任务:设计一个论坛的数据库,至少满足3NF,使用SQL语句查询本周,本月的最新文章,评论最多的文章,最活跃用户。
5、一些开发工具
一些开发工具
学会使用SVN或Git来管理程序版本。
学会使用JUnit来对Java进行单元测试。
学习C语言和Java语言的coding standard 或 coding guideline。(我N年前写过一篇关C语言非常简单的文章——《编程修养》,这样的东西你可以上网查一下,一大堆)。
推荐阅读《代码大全》《重构》《代码整洁之道》
最后,如果你想了解更多最新Java资讯,希望从事IT技术相关的岗位和领取Java学习资料,欢迎关注“北京尚学堂”微信公众号。
更多猛料!欢迎扫描上方二维码关注北京尚学堂官方微信公众号 ( 资料领取验证消息:156)
转载于:https://my.oschina.net/u/2947706/blog/778104
程序员如何提高自己的逻辑思维和技术水平相关推荐
- Java程序员月薪达到两万,需要技术水平达到什么程度?
最近跟朋友在一起聚会的时候,提了一个问题,说Java程序员如何能月薪达到二万,技术水平需要达到什么程度?人回答说这只能是大企业或者互联网企业工程师才能拿到.也许是的,小公司或者非互联网企业拿二万的不太 ...
- Java程序员月薪达到三万,需要技术水平达到什么程度?(转)
Java程序员如何能月薪达到三万,技术水平需要达到什么程度?人回答说这只能是大企业或者互联网企业工程师才能拿到.也许是的,小公司或者非互联网企业拿二万的不太可能是码农了,应该已经转管理.还有区域问题, ...
- Java程序员月薪达到三万,需要技术水平达到什么程度?(文末送书)
最近跟朋友在一起聚会的时候,提了一个问题,说Java程序员如何能月薪达到三万,技术水平需要达到什么程度?人回答说这只能是大企业或者互联网企业工程师才能拿到.也许是的,小公司或者非互联网企业拿二万的不太 ...
- 程序员自我提高的几点建议 很实诚
一.背景 中国程序员的成长是与其学习环境相关,据统计,现时做计算机软件开发的人员65%是大专及本科学历,15%是来自于其他的培训机构.可见一个开发人员大致的学习经历和初步经验来自于大学. 而在印度,韩 ...
- 2016年程序员如何提高自己的方法有哪些?
作为软件开发行业,新技术在不断的更新,如何在新的时代实现自己的人生价值,唯一的办法就是为自己树立一个更高的目标,一个人有了目标后就会有了努力的方向,那么在2016年程序员如何提高自己的方法有哪些?新霸 ...
- 程序员如何提高编程时打字速度的5个Tips
文章目录 程序员如何提高编程时打字速度 前言 打字速度等级 测试编程时打字速度 提高编程时打字速度的5个Tips Tips1: 选用合适的键盘 Tips2: 保持正确的坐姿和打字姿势 Tips3: 选 ...
- (转)软件开发人员如何提高自己的软件专业技术方面的具体建议
哲学就是用简单的说话来体现出隐含深层意义的道理,让人们去思考和体会.哲学本身就是用来完善自己的精神修养和帮助他人完善思想的. 哲学的特征在于追问本质,不断反思.内容上,哲学的反思对象无所不包:深度上, ...
- 美团大咖:程序员35岁前应做好的技术积累
刘丁 读完需要 26 分钟 速读仅需 9 分钟 引言 古人云:"活到老,学到老."互联网算是最辛苦的行业之一,"加班"对工程师来说已是"家常便饭&qu ...
- python新手程序员工资-程序员吐槽新同事:连我实习水平都不到,工资是我的1.7倍...
原标题:程序员吐槽新同事:连我实习水平都不到,工资是我的1.7倍 一位程序员网友郁闷地分享了自己最近和新同事一起工作的经历,并吐槽一心搞技术不如口才好,引来众网友热议. 这位网友的新同事是一位4年工作 ...
最新文章
- 电脑如何格式化_分别手把手教你在Windows和mac上格式化磁盘
- python3.6安装教程-Ubuntu16.04安装python3.6详细教程
- 如何check out Visual Studio 之外修改的文件。
- 数据结构32:树存储结构
- python 随机生成汉字的三种方法
- Python内置函数——eval、exec、compile
- java 防止拷贝_[改善Java代码]避免对象的浅拷贝
- OS10.11安装Cocoapods并集成ReactiveCocoa
- html assign无效,Object.assign的一些用法
- docker 拉取oracle_Docker 拉取 oracle 11g镜像配置-Go语言中文社区
- 递归和尾递归的区别和原理
- 视频软件会声会影支持哪些视频格式?
- 【起航计划 027】2015 起航计划 Android APIDemo的魔鬼步伐 26 App-Preferences-Preferences from XML 偏好设置界面...
- 图像条纹检测 python_光源在外观缺陷检测中的应用
- 手游自动挂机脚本开发历程
- eleme饿了么vue项目随笔,随时更新,想到哪里写到哪里比较凌乱一直更新
- gwt 同步和异步_使用GWT和RESTful Web服务构建动态的组织树
- 关于Redmi显示器(1A 23.8英寸)的亮度如何调节
- MySQL InnoDB聚簇索引和普通索引浅析
- R语言 NetCoMi包 Co-occurrence网络图 微生物16S 网络比较 核心物种