How to become a software developer

From DevSummit
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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.