65.9K
CodeProject 正在变化。 阅读更多。
Home

给软件开发初学者的建议

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.88/5 (13投票s)

2014年3月19日

CPOL

6分钟阅读

viewsIcon

29900

CodeProject 我的一个朋友给我发了一封电子邮件,问了我一个问题。我认为值得分享。你好吗?希望你一切都好。我写信是想请教一些建议或意见。我开始学习编程课程了。

我有一个朋友给我发了一封电子邮件,问了我一个问题。我认为值得分享。你好吗?希望你一切都好。我写信是想请教一些建议或意见。我开始学习编程课程了。我想知道我是否应该重点学习某些语言,或者你有什么推荐的阅读材料吗?好的,我开始说了……

经验法则

这取决于你想做什么。但是,当你刚开始的时候,最关键的事情是要记住**深入**而不是**广泛**。我的意思是,要精通一门(或者更有可能的是两门)编程语言,它的概念可以迁移到其他语言。刚开始的时候,最好是精通一门语言,而不是对很多不同的编程语言都只懂一点点。在你对一门语言的核心基础、它对某些架构决策的倾向、设计模式、数据结构以及代码重用的通用方法等有了相当扎实的理解之后……简而言之,你就能很好地用这门语言“思考”了。

聊聊关系……数据库关系。

此外,在你职业生涯的早期,你很可能需要了解一些关于关系型数据库管理系统的知识。这些东西是用来存储你将要处理的数据的,除非你正在为其他开发人员构建工具(即使是这样),否则你将不得不了解相当多的关于如何使用一种特殊类型的编程语言执行创建、读取、更新和删除查询的知识。更有可能的是,这将是SQL(结构化查询语言)的一种方言。至于哪种 SQL,有一些争论,但我认为 MySQL 或 Microsoft SQL 在开始时会很有用,因为这是我在实际工作中看到的最常见的(而且是免费提供的)。(这可能因地区而异,所以如果你对某个特定地区有想法,我建议你通过查看招聘网站并搜索 sql 或 database 来做一些研究,看看有什么结果)。无论如何,你应该对关系型数据库有所了解。

主要专业领域

谎言网络

在某些情况下,仅仅深入学习一门语言是不切实际的。这对于 Web 开发尤其如此。需要注意的是, IMO,你接触的额外 Web 语言与学习其他编程语言相比,并不那么难。笼统地说,并且可能做一些泛化,我想说的是,如果你想成为一名 Web 开发人员(即使是刚开始),我希望你了解以下内容。




HTML

  • 你应该能够搭建一个基本的 HTML 页面,包含一个标题、正文、表单、几个输入元素
  • 搭建一个表格
  • div 的用法
  • span 的用法
  • anchor 标签的用法

CSS

你应该能够使用 class、id 和元素选择器。只用样式表和很少或根本不使用内联 CSS 或 HTML 元素属性来创建页面的基本布局。

Javascript

  • 你应该知道 DOM 是什么,并且能够通过 id 和名称访问 DOM 元素,
  • 一些 jQuery,因为它很普遍
  • JSON,它是什么以及如何使用
  • Ajax,它是什么以及如何使用。

Javascript - 加分项

  • 对象扩展
  • 在谈论比较时,“==”和“===”的区别,
  • 闭包是什么以及它们的用途
  • 原型继承
  • 一般的 OOP 概念和设计模式以及如何在 Javascript 中应用它们。例如,如何使一个方法或属性成为私有的。
  • Underscore.js 是什么
  • Javascript 中的常见陷阱
  • 对 SPA(单页应用程序)的一些基本了解。它们是什么,何时使用它们,以及一些现有的库。
  • 通用的代码组织,可能使用像 require.js 这样的工具
如果你还不熟悉这些技能,有很多地方可以学习。此外,你还需要很好地掌握一门服务器端语言,如 PHP、Java、C#、Ruby、Python,甚至 Node.js(特殊情况)。

其他应用程序开发领域

通常,桌面应用程序是用 C#、VB6、VB.NET、Java、C++ 等语言编写的,并且有一个 SQL 数据库后端。与 90 年代末相比,由于 Web 的日益普及,这类应用的数量有所减少,但仍然存在。Tiobe 指数是衡量编程语言流行度的一种指标(不一定反映整个行业,但学习列表中的一种或两种语言不会有太大问题)。

移动开发

移动开发主要使用 Java(用于 Android)或 Objective-C(用于 iPhone),但也可以在一定程度上利用 Web 知识进行开发,并在两者上运行(http://phonegap.com/)。








从易到难

根据我的经验,我将一些语言按从易到难的顺序排列,这纯粹是推测,**仅为我个人观点。**

  1. HTML CSS(相辅相成)
  2. SQL
  3. PHP Python Ruby(难度差不多)
  4. C# Java (差不多)
  5. Vb.NET
  6. C
  7. C++
第 3-5 项是可以争论的。第 2 项很容易学习基础知识,但有相当多的深度。

研究

无论你决定什么,我都推荐一些地方

常见问题

在线学习

大量免费书籍

  • http://programming-mother******.com/become.html
  • https://github.com/vhf/free-programming-books/blob/master/free-programming-books.md










  • 在线提问

    对于实际提问,你最好的选择可能是聊天室,如 IRC。我不建议在 Stack Overflow 这样地方开始提问,因为它们对新手并不太友好*,而且很难找到友好的地方。也许 Facebook 或 Google Plus 上的用户群会更好,但那些也参差不齐……*注意* Stack Overflow 是一个很棒的资源,只是不是开始提问的最佳场所。尽管如此,如果你要在 SO 上提问,我建议你看看 Stack Overflow 上的这个以及 Jon Skeet(拥有 SO 积分记录保持者)的这篇文章


    牢记,牢记……


    好的,这有很多需要消化……但应该是一个好的开始。再次要记住的最重要的事情是选择一门语言和一个领域,坚持下去,直到它变得容易……这需要相当长的时间。此外,不要只是阅读有关该领域或语言的内容,而是要实际动手制作东西,不是大的东西,而是小的简单东西……非常小的简单东西,并完成这些小的简单东西,并分享它们,以便其他人可以批评。祝你在编程领域好运……这很难,但无论是经济上还是精神上,有时甚至是精神上,都很有回报。

    © . All rights reserved.