How to become a software developer

From DevSummit
Jump to: navigation, search

facilitated by Rabble and Lena

Intro

  • There's a computer science test in the UK to figure out who should be a developer through a series of mathematical questions.
  • People are told the need to score well, but there's no way to get it right.
  • Strategies from programmers - can you create a sufficient mental image to move forward?
    • Random guessing
    • Invent a fantasy world where each symbol has a meaning
    • Try to figure them out one by one

Education

  • People in ten-week developer programs:
    • Have curiosity
    • Experiment
    • Find resources
  • Computer science degrees teach computation, not useful
  • Rabble hires CS-degreed people and self-taught people - considers them equal
  • However, design practices and engineering patterns (recursion) are difficult to teach yourself

Bootcamps

  • DevBootCamp
  • HackReactor
  • Hackbright
  • BootCampIO (reviews and pricing)
  • Bootcamps are fast. Self teaching is important.

What hiring managers are looking for

  • Rabble rarely hires people who started programming after puberty.
  • You don't have to be a genius developer
  • The best programmers are better because they see the code better, write more elegant solutions.
  • You need people with different backgrounds.
  • "Become a programmer! (You just won't be great.)" -Rabble

Other Notes for New Programmers

  • The problems nonprofit developers solve don't need to be complicated, innovative, or new. Fit the needs of the org.
  • "We haven't even started our need for programmers. Software is eating the world. We really need more programmers."
  • Learning to code can mean being able to have an intelligent conversation.
  • "Disproportionate power of a programmer - programmers can drive and everyone else is walking."
  • When you build something, if you build it well, you don't have to build it again.

Learning to Program?

  1. Learn fundamentals (not bugs!)
  2. If you get a job, try a consultancy, you'll get lots of types of projects.
  3. Learn in open source programs/languages (more transferable! bigger community!)

Where to Get Fundamentals?

  • CodeAcademy for JS & Python
  • Learn Python the hard way
  • Coursera for data science
  • Hadebright's curriculum in GitHub
  • Learning a programming language isn't as hard as learning a human language.
    • More like learning a dialect of a language you already know.
    • Programming concepts are pretty universal.
    • Doesn't matter which language you start with.
  • Javascript is the universal language for the web
  • For those doing self-teaching, are tehre common pitfalls or things to look out for?
    • No, there are a lot of good tutorials.
  • Python is a good teaching language.
  • Start learning database MySQL
  • SQL is a useful language to learn - traditional databases use SQL.
  • Valuable to learn, there is a lot to learn.
  • At Twitter, everyone should have some working knowledge.
  • Get a mentor to check in with who can help you see your progress
  • Programming is like "yak-shaving" - you are trying to do something basic, but you get lost and start fixing other things and then forget what you initially wanted to do.
  • Pair programming - two keyboards, two monitors, and two mice. You work with a senior programmer to teach and share knowledge, save time, with two heads being better than one.
  • Programming is mostly de-bugging
  • Time is very important - so is flow.
    • You get into a state, sot to interrupt a programmer is breaking that.
    • This is why tech companies provide food service and laundry - you don't want to interrupt flow

Final Thoughts

  • Learn programming to better yourself!
  • Male developers play the alpha geek game which is uninclusive which is unfortunate
  • In sociology they tell you you can't fix anything; social change takes forever, unlike coding and software.
    • You can have immediate impact and fix the world!
  • Developers can't estimate how long it is going to take.
  • Best software is buildt up from small pieces.