What is Programming?

Programming is a creative process to instruct a computer on how to do a task.  Writing code takes a clear understanding of the objective, an ability to clearly layout how to achieve that objective, the ability to pay attention to an excruciating level of detail while keeping the big picture in mind, patience, a logical mind and of course knowing how to code!

Here are some of the things that programmers(nerds/geeks/techies)do:

Application Programming

Create programs for the end user - anything from a spreadsheet on a laptop to an app on a smartphone.

  • Uses high-level languages like C#, Java, Python, and Ruby on Rails
  • Requires ability to communicate with techies, business people and the everyday user.

System Programmers

Write low level utilities (think software that allows devices to communicate) and operating systems.

  • Code in low-level languages that are closer to binary/machine language
  • Must be tech-savvy but don't have to very good at communicating with normal people

Game Programmers

Write computer games like FortNite and Madden - this is the fun stuff.

  • You can start off writing simple programs in JavaScript but most real games are written in C, C++, C#, Java and Python.
  • Need to write code that drives the graphics and runs fast so there is a higher degree of technical proficiency.

Web Programming

Design and build websites and the applications that live on them.

  • Need to learn basic tools like HTML/CSS, add some interactivity with JavaScript and it's various tools.
  • Experience with graphic design and usability.
  • The Internet is much less secure than a computer so web developers must understand security and work to keep their sites from being hacked.

Database Gurus

Databases underlay almost all information for programs and for websites.  Knowing how to store, query and analyze data is critical part of developing programs.

  • Knowledge of database design techniques and the ability to manipulate a database via SQL (Structure Query Language) is the starting point.  This includes adding, deleting and editing data.
  • Ability write stored procedures to access and analyze the data.  Data Mining!

Security

The more and more reliant we become on the internet and the cloud - the more important security will be.

  • Become a hacker so you can help companies or the government learn how to protect against hackers.
  • Learn how to keep software and hardware safe against attacks.
  • Help create programs to develop better passwords and security.

How Do You Know if You Would Like Programming?

  1. Do you like puzzles?  Crosswords?  Figuring out a word problem? Coders generally are trying to solve a problem and figure out how things logically work together.
  2. Do you really like working on computers?  Try making a small web page and if it becomes what you want to work on when you have a free minute - you might be hooked.
  3. Do you like to work on your own?  Can you figure things out independently?  You might be a little young yet to know this but programmers have to be able to go find the answers they need by searching the internet or reading technical books.
  4. Are you stubborn?  Sometimes you need to be so that you can hang in there and solve that really really really hard problem.
  5. Are you creative?  Doesn't have to be with art/music - but can you see new solutions for problems - not afraid to think of things in a different way.

How to Start Learning to Program?

Lots of ways - look here for detailed summary - but this is how I teach my kids:

  1. For younger elementary school kids, you can start with by teaching them basic code concepts through easy drag and drop programming like Code.org, Hopscotch or Scratch.
  2. Every programmer should know how to create a website - learn HTML for the content and CSS for the formatting.
  3. Then add in a little interactivity to your web site by learning the basics of JavaScript and/or PHP.
  4. Finally,  learn a real programming language - I recommend Python.  But, Ruby is another good one for kids to start with.

But how?  All sorts of resources.  Here are my favorite sites for kids that are either free or pretty close to it:

  1. Khan Academy: HTML, CSS, JavaScript and a little SQL for free!
  2. CodeAvengers:  Not free but my kids favorites and affordable.  Covers HTML, CSS, JavaScript, JQuery, Pyhon and design.
  3. CodeAcademy: Free and good for kids - goes from HTML/CSS to JavaScript/Jquery to Python and Ruby with much more in between