如何成为一名业余程序员

为何有这篇文字

  • 从毕业到现在已6年有余,从事软件相关行业也差不多这个数了,算是个入了门的程序员
  • 最近,做电源开发的大学室友找我要学软件开发
  • 他有很强的专业水准,但软件方面只接触过一些基础的C,对操作系统、数据库、软件工程的概念几乎为零
  • 我和他进行了一周的面对面的沟通,但因为没有系统性的准备,只是零散的堆些概念,因此并未达到我的预期
  • 所以想写一篇Guide给像他一样想做一名业余程序员的同学

事先准备

天时

  • 挤出连续的整块时间进行系统性学习和开发,如晚上8点-12点
  • 碎片时间进行知识点回顾或做计划,如等电梯、排队时

地利

  • 找一个清静的场地,如书房或阳台,并告诉你的家人或朋友尽可能少的打扰你
  • 手机静音并远离10米以上,或干脆关机

人和

  • 如果有一个可以带你入门的朋友最好,可以少走很多弯路
  • 遇到问题时,应首选Google或百度,解决不了的时候才选择论坛或邮件
  • 如果你选择了一个犄角旮旯的方向,光顾论坛或订阅邮件列表是优选

工欲善其事,必先利其器

  • 思维图,帮助整理思路。xmind
  • 编辑器,文本是王道。EditPlus,UltraEdit(可编辑查看二进制),顺路学习下markdown语法,然后尝试下MarkdownPad2,(摒弃又大又慢的Word吧,这篇文字就是Markdown语法写的)
  • 浏览器,上网必备。Chrome,Firefox,等等
  • 云笔记,可以在各个设备上编辑查看你的笔记。为知笔记,有道云笔记等,放弃国外的吧,眼红可以,但同步实在太慢了
  • 项目/个人管理,推荐teambitiontoday,两者的数据库是相通的,这点很赞

理清概念

  • 编程语言
    • 程序都是用编程语言编写的,如同书是由文字书写一样
    • 同一个程序可能由不同语言编写,如同一本书里可能包含了中文和英文
    • 常见的语言:C、Java、Objective-C、C++、C#、PHP等
  • 操作系统
  • 网站
    • 一个网站是需要服务器的
    • 你访问的某个网址,可以__近似__的认为标识了某地某个机房内的一台服务器的名称
    • 你现在所看的网页是由部署在服务器上的程序‘生产’出来,并通过网线‘传输’到你的浏览器上的
    • 传输的内容是一大堆有格式的字符,需要你的浏览器进行‘解释’,于是你可以看到文字、图片、视频
  • app
    • Application的缩写,是指智能手机或平板上运行的应用程序
    • 这些应用运行在操作系统上(多数是Android和iOS),类似windows电脑上的浏览器和视频播放器
  • 数据库
    • 可视为电子化的文件柜
    • 常见的数据库:MySQL、Oracle、SQLite、Microsoft SQL Server等
    • 数据库里存放的都是数据(废话),对数据的操作主要有增删查改
    • 对数据库操作同样使用语言,常用的数据库语言为SQL,增删查改操作对应着insert、delete、select、update
    • 数据库并不可怕,可怕的是里面的数据
  • IP | 域名 | 网址
    • IP是一台计算机在网络上的身份证号,域名是为了方便人们称呼这台计算机而给它起的名字,一个域名可能对应多个网址
    • 220.181.111.86是百度的IP,baidu.com是域名,mp3.baidu.com和www.baidu.com都是百度的网址
    • DNS服务器可以将网址翻译成IP地址
    • 直观的,windows下打开命令提示行,输入 ping baidu.com即可
  • 嵌入式
    • 包含硬件和软件两部分,两者兼并无较明确的界线
    • 从硬到软涉及到的知识部分依次为 硬件(各类设备/总线)→ 驱动 → 操作系统 → 文件系统 → 应用程序
    • 涉及到的语言,除应用程序外其他基本为C和汇编,应用程序则五花八门

选中方向

  • 这点很重要
  • 0和1的世界太大了,四处放炮是不行滴
  • 列几个方向
    1. 只是好奇。你可以离开了,平时多关注下业界新闻和博客过过瘾就好,比如36KrOSChina酷壳阮一峰的博客月光博客
    2. 做一个可以放在手机或pad上运行的app
    3. 做一个网站
    4. 做一个有硬件载体的嵌入式设备,比如智能电子秤、防丢器等
    5. 做一个电脑上运行的程序,比如windows版的QQ
    6. 其他

开始一个项目

  • 实践是学习的最佳途径
  • 找一个感兴趣的点子,用思维图把它构想出来
  • 找个行内的人帮你看下,列一下需要哪些知识点
  • 最好可以和行内的人一起合作
  • 如果自己单干,推荐一种方式:网上找一篇类似《从零开始做xxxx》的文章,当然,xxx和你要做的项目差不多,跟着做
  • 开始前先阅读相应的知识点,简单的看,看两天,了解大概其即可,在项目中不懂了再回去翻

做笔记——积累你的素材

  • 在云笔记上建几个文件夹,将你需要学习的内容分门别类
  • 记录你的灵感、思路、感想、经验
  • 记录你遇到的好文章和好项目,记住一定要看,没有看过的东西最终都将与你无关

写博客——积累你的经验

  • 坚持

模块化——积累你的代码

  • 将代码尽可能的模块化,在做多个项目的时候可以很方便的拿来用,避免重复造轮子
  • 别人的代码能用的就拿过来,经历一遍别人经历过的痛苦是没必要的,当然注意保留别人的名字,攒人品也是很重要的
  • 用版本控制工具管理你的代码,并上传到云端,githubbitbucket都是不错的选择,国内的也有类似的OSC

分享

  • 你的博客你的程序你的产品都可以分享给他人
  • 当别人通过你的分享而解决了问题
  • 当别人给你的分享带来反馈
  • 当别人分享你的分享
  • 分享的快乐和成就感是杠杠杠杠的

继续另一个项目

转载于:https://my.oschina.net/bbdlg/blog/318548

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值