Job Requirements

  1. Has deep technical knowledge
  2. Has years of practical experience
  3. Knows three or more types of programming languages and their pros/cons (ex: scripting, strongly typed, functional)
  4. Understands the full software development life cycle and how to implement it
  5. Can be trusted with the ‘big picture’ of a software project
  6. Works full-stack and could build an entire web application alone
  7. Communicates in a mature way and works effectively with a team
  8. Is a capable leader of a high performing technical team
  9. Capably coordinates development resources for one or more projects
  10. Can be trusted to manage and troubleshoot a live production environment
  11. Can integrate business and technical needs
  12. Is viewed as an expert with sought-after knowledge
  13. Creates valuable reusable software assets for the organization
  14. Builds tools for the rest of the team

Learning Roadmap

  1. Learn more and varied programming languages, suggestions:
    1. Scripting: Ruby, Python, PHP, NodeJS
    2. Enterprise: Java, C#, .NET
    3. Functional: Clojure, Haskell, Erlang, F#, Elixir
    4. Cutting-edge: Rust, Go
    5. Historically Significant: Lisp, Assembly, C
  2. Domain-Driven Design
  3. Learn how to effectively elicit and document requirements
    1. Interviewing
    2. Brainstorming
    3. Workshopping
    4. Prototyping
  4. Manage the technical side of a project from start-to-finish
    1. Assist sales in defining the scope of work for a prospective project