Women Who Code Atlanta

September 9, 2014


  • Connect JS WIT Scholarship
  • Atlanta Javascript Meetup: Js Fundamentals
  • Atlanta Code Camp
  • Rails Girls Athens Fall Workshop
  • Women's iOS Developer's Group:  Intro to iOS Development with Swift

Connect JS WIT Scholarship

JS Fundamentals:  

Scope and Closures

  • beginner friendly talk and QA session
  • hosted by the Atlanta JavaScript Meetup on 9/15/2014
  • presented by Chris Aquino
    • will be helping with our upcoming JavaScript Study Group

Atlanta Code Camp

Rails Girls Athens

Fall Workshop

  • Will be held October 10 - 11, 2014 
  • Bring Laptop; No prior experience required
  • Register here

Intro to iOS Development with Swift

  • hosted by the Women's iOS Developer Group
  • October 21, 2014
  • RSVP here

Other Announcements?

How to Think Like a Programmer

Being a Programmer




Being a Programmer is


Nebulous Destination.

More than one right way.

Not About Knowing Everything



Code explains something 


In such detail, a machine can do it

(And other humans can understand it)


Requires creativity, syntax, and strategy


Separated into pieces to enable reuse & maintenance









An operation, or small set of operations


Actions like...


Declare a new variable

Read a variable

Write a variable

Apply an operand between variables

Call a function



A reusable set of instructions



Block modifier that may cause a block to be skipped



Block modifier that may cause a block to repeat


Programming can be hard, but also rewarding

  • Jobs Aplenty
    • By 2020, there will be 1,000,000 more jobs in the computer science field than students to fill them
  • Flexibility
    • Work hours, Telecommuting, Generous Vacation
  • Fame & (Relative) Fortune
  • The challenge is its own reward.

Elements of a Developer Mindset

  • Be patient with yourself and the process.
  • Always keep in mind why you're doing what you're doing.
  • Remind yourself that everyone needs help.  Reach out!
  • Sharing is caring.
  • Growth mindset vs Fixed Mindset

Solving Problems => Creatively



  • Technologies, Artifacts
  • Devices
  • Programs
  • Languages/ Environments
  • Products


Useful, but too specific, Dates quickly


  • Ideas
  • Principles
  • Laws
  • Techniques
  • Methods


Broadly applicable, Dates Slowly




How Students Are Taught

  • Given lots of information about a languages syntax and what different instructions do
  • Shown lots of sample code
  • Shown how to read programs
  • Told to go program

Syntax-first Approach

What's wrong with the

Syntax-first Approach?

  • Students "get" code, but don't "get" how to code
  • The "Blank Screen" Problem
  • Driving in Circles
    • Programming by trial and error, with no real strategy

Problem Solving is the missing link

A problem solving approach to learning programming

  • Learn syntax elements slowly
  • Learn to combine a small number of elements before learning a large number of elements


Learning language elements more slowly, means you can develop your problem solving skills more quickly.


The Problem Solving Approach

Programming Knowledge

Programming Knowledge

Ability to Apply

Ability to Apply



Learning to Combine Language Elements

  • Helps you with programs that use those particular language elements
  • Builds a "cook book" of programs for later use
  • Helps you with all programs, because you develop problem solving strategies

Benefits of Making Up Your Own Problems

  • Learn the utility of each construct through exploration
  • Keep Asking "What can I do with this?"
  • Try to develop guidelines about when you prefer one approach over another
    • For loop vs While loop
  • Always have a plan
  • Restate the problem
  • Divide the problem
  • Start with what you know

Basic Techniques for Solving Problems

  • Reduce the problem
  • Look for Similarities
  • Experiment
  • Don't Get Frustrated

Next Steps for Solving Problems

  • Data Structures
    • Present strategies for organizing information in programs
  • Algorithms
    • an input, a defined set of steps, an output
  • Design Patterns
    • Reusable concept for structuring code
      • A writing "cliche" for code

Language Agnostic

Books for Further Reading

Other Resources

Presentation Sources

  • https://www.youtube.com/user/vantonspraul
  • http://brikis98.blogspot.com/2014/05/dont-learn-to-code-learn-to-think.html
  • http://slides.com/erikralston/how-to-think-programmer-introduction/#/
  • http://happybearsoftware.com/how-learning-data-structures-and-algorithms-makes-you-a-better-developer.html
  • http://skillcrush.com/2014/06/26/the-developer-mindset/
  • http://blog.andrewshell.org/developers-and-the-growth-mindset/

WWC September Meetup: Think Like a Programmer

By Erica Stanley

WWC September Meetup: Think Like a Programmer

Have you been teaching yourself to code and aren't sure where to go next? This session is intended to provide an introduction to the things they don't teach you on CodeAcademy, including: problem solving, ways to structure your code and how to use algorithms, data structures, and design patterns to build applications, plus the soft skills you'll need to succeed as a developer.

  • 3,999