The Complete Software Developer’s Career Guide

Everything in this book could still be classified as soft skills since I’ll be talking more about what you need to know and do theoretically rather than how to do it.

Getting Started as a Software Developer

If you have a dream, you can spend a lifetime studying, planning and

getting ready for it. What you should be doing is getting started. — Drew Houston

How to Get Started

  • You have to know how to manually do something before you can automate it.
  • The process of software development always begins by first understanding the problem to be solved.
  • Software development is more than writing code
    • Design
    • Writing code is a discipline in itself.
    • Testing
    • Deployment
    • Debugging
  • Books recommendation
    • Code Complete
    • Clean Code
  • Make a plan
    • Working backwards from the goal

The Technical Skills You Need to Have

  • The skills that pay the bills (soft ones)
  • One programming language
    • Which one is not that important.
    • Eventually you will know several, but don’t do that upfront.
    • Go deep and focus on learning the ins and outs of a single programming language.
  • How to structure code
    • Checkout Code Complete
    • Really the art part of SDE.
  • Object oriented design
  • Algorithms and data structures
    • Checkout Cracking the Coding Interview by McDowell
  • A development platform and related technologies
    • Platform = A specific environment that you develop for, which has its own ecosystem and particularities.
    • Don’t just pick a language; pick a platform as well.
  • Framework or stack
    • Framework = a set of libraries
    • Stack = a set of technologies, usually including a framework, that are used together to create a full application
  • Basic database knowledge
    • Most developers are expected to be able to write code that can interact with a database
  • Source control
  • Build and development (DevOps)
  • Testing
  • Debugging
  • Methodologies

How to Develop Technical Skills

  1. Get a good idea of what you are learning and what the scope of it is.
  2. You need a goal.
  3. Gather some resources for learning. (Not just books)
  4. Create an actual plan for learning.
  5. Dive in.
    • For each module, learn enough to get started, play around
    • Learn by doing.
    • Do not learn too much up front, utilize natural curiosity to drive your learning.
    • Take what you learned and teach it to someone else.

Learn by Doing If you don't have an immediate need for the skill,

you might even question whether you need to learn it at all.

  • Teaching framework

    • The big picture: what can you do with the technology?
      • Eliminate all unknown unknowns.
      • “I know X can do it. I’m not sure how, but I can figure that out later.”
    • How to get started.
    • The 20% you need to know to be the most effective.
      • Pareto principle: 20% of something produces 80% of the results.
      • Learn by doing lets you figure out what the 20% is.
  • Read the experts’ writing.

What Programming Language Should I Learn?

What language you learn doesn't actually matter nearly as much as you

might think it does.

Programming today involves utilizing libraries and frameworks much more than language features.

  • Job prospects and future.
  • Technology that you are interested in.
  • Difficulty level.
  • Resources available to you.
  • Adaptability.

Learning Your First Programming Language

  • Start by looking at a working application.

  • Find a few good resources or books and scan through them.

  • Learn how to create Hello World

  • Learn basic constructs and test them out with real problems.

  • Know the difference between language features and libraries.

  • Reviewing existing code and and work through understanding each line. (Don’t care about the why)

  • Build something… Lots of somethings.

  • Books recommendation

    • Cracking the Coding Interview
    • Programming Pearls

Going to College

  • Pros

    • Many companies still hire developers with degrees
    • Good base knowledge of computer
    • Structure
    • Science concepts
    • Internships and other opportunities
  • Cons

    • Time
    • Cost
    • Outdated or non-real world education
    • Distractions
  • Strategy

    • Start with a community college
    • Avoid debt
      • Take a year off, get a job, and save money
      • Get scholarships
      • Get a part-time job while going to school
    • Make learning your responsibility
    • Do side projects
    • Intern
    • Get your degree while you are working

Coding Boot Camps

  • Pros

    • Short learning time
    • High placement rate
    • Low price
    • Focused study
    • Real work-like setting
    • Work with other highly motivated people
  • Cons

    • Huge time commitment
    • Can be extremely difficult
    • Still somewhat expensive
    • Plenty of scammy code camps
    • No degree to fall back on
    • May be lacking in some areas of computer science knowledge
  • Strategy

    • Research to make sure you aren’t being scammed
    • Save up to pay in full
    • Clear your schedule completely
    • Stay after and network as much as possible
    • Make sure you are the top of the class
    • Learn the basics ahead of time

Teaching Yourself

  • Pros

    • Cost is low or nothing
    • Self-education is one of the most valuable skills you can learn
    • You can learn at your own pace
    • You can work around your schedule
    • You can go deep on subjects you are interested in
  • Cons

    • You have to figure out what to do and what to learn
    • No help with finding a job
    • It’s easy to lose motivation
    • Social isolation
    • Likely to have gaps in knowledge
  • Strategy

    • Come up with a plan
    • Set a schedule
    • Network while you are learning
    • Find a mentor
    • Build at least one side-project
    • Subscribe to a site like Pluralsight

Getting a Job

Internships

  • What is internship?
    • Some are like real jobs
    • Some are literal competitions
    • Some are basically “errand boy/girl”
  • Payment doesn’t matter
  • How to get an internship?
    • Internship programs in colleges and universities.
    • Apply for internships.
    • Make your own internship opportunity.
  • Interview for an internship
    • I’m eager and hungry to learn and contribute as much as I can.
    • I’m the hardest worker you’ll ever find in your life.
    • I don’t have to be managed. Set me on a project, and you can consider it done.

Focus on demonstrating a basic level of competency in the job and the

traits above.

  • Your job is simple: Save your boss as much time as possible

Getting a Job without Experience

The biggest risk for companies hiring a developer is hiring someone

who doesn’t actually know how to code.

  • A blog, or twitter or something similar
  • Portfolio, GitHub
  • Create your own company
  • Prepare for interview
  • Build your networks
  • Offer to work for free
  • Offer to work on a small project
  • Work in the mailroom
  • Get certifications
  • Be persistent. The squeaky wheel always gets the grease.

What You Need to Know about Software Development

Working as a Developer

Advancing Your Career