So you want to be a developer?

Anyone can be a developer. But not everyone chooses to stick it out.

You don’t have to be a math wizard. But you do need discipline, pattern matching, critical thinking, and logic.

We require pilots to undergo years of intense training before giving them the yoke of an airplane. We require military personnel to go to incredible lengths to build the experience necessary to function under high stress and uncertain circumstances. We require many months of police and fire academies for emergency personnel, followed by ongoing intensive training. We require years and years of schooling for any medical field, followed by residencies and fellowships. We require pastors and counselors to undergo many years of formal training and theology degrees before sending them out to serve. We require driver’s licenses, food handler permits, construction licenses, hairstylist licenses, real estate licenses, even licenses to paint nails!

Software Systems have no such licenses, degrees, requirements, or credentials. The only barrier of entry is what you’re willing to learn, and can you solve problems. Yet it requires all the same level of perseverance, determination, experience, problem-solving, and grit. When complex systems are coupled with people’s lives, we require trained experts to oversee their operations.

This mentorship program is more like a college education in terms of your hours spent and expected level of investment, but more like an internship in terms of types of projects you will work on. Think of it like a year of college, but working on real-world applications. Completing the program will not only prepare you for the next step of many tech-specific jobs, but the skills you learn will increase your value at just about any other job as well. After all, nearly all jobs nowadays involve tech, software, devices, and the internet.

Let’s see if it’s a good fit for you by starting with a project below.

Stage 1: Intro Project; Free (2 weeks)

Write a project proposal and complete project

  1. Write project proposal: Find a hobby or interest that also has a problem needing to be solved, i.e. recipe book, calculator, family Christmas gift exchange assignment, shopping list, expense tracker, house projects, church administration tools like directories, mailing and notification lists, donations, signups, registrations, family administration tools like warranties logging, password vaults, oil changes, donation trackers, budgeting, Christmas card addresses, thank you letters, announcements, event organization, etc.
    1. Describe a feature of your project that you’ll use that you already know exists(i.e. links,  images),
    2. Describe a feature that you don’t know yet but need to learn in order to finish (i.e. CSS layouts, redirects, templates),
    3. Describe a feature that is a nice-to-have, but not a must-have, that you’ll include if your time permits
  2. Set up local server (i.e. Xampp, WSL, terminal)
  3. Build approved project/site in HTML/CSS/JS only
  4. Minimum 5 distinct web pages; include links, images, embeds, header/footer templates
  5. Serve up page on localhost
  6. Page must use strict HTML/CSS syntax and no JS console errors
  7. Extra Credit: include jQuery, keyboard shortcuts, animations, interactivity

Stage 2: Advanced project; Paid (2 weeks)

This stage will take what you previous built, but add the next set of layers of the stack and tools of the trade. You will be making your private project publicly-accessible on the open internet. It is critical to know which code gets executed where and how, and is also required to know every piece it takes to set up the pipeline from local to remote. Seeing each of the layers involved makes debugging possible, even fun! If completed, I will compensate you for your time. You are doing the heavy-lifting here, and your time is valuable too.

  1. Add previous project in local Git repo, commit to remote (i.e. Github, GitLab, BitBucket)
  2. Purchase any desired domain name (i.e. via Namecheap)
  3. Rent VPS, bare metal, no ISO images (i.e. Vultr, DigitalOcean)
  4. Configure SSH key pairs; no username/password access
  5. Set up Linux (i.e. Ubuntu), add user, permissions, sudo
  6. Configure a server (i.e. Apache or Nginx)
  7. Configure valid SSL cert (i.e. Let’sEncrypt)
  8. You will receive $1000 upon a full review of the project once completed

Stage 3a: Call it a day!

If you’ve had enough or you’re not interested anymore, keep the $1000 and move on to greener, less-frustrating pastures. Software development isn’t for everyone, and that’s OK. This process is to get your feet wet enough to know whether this is a good fit for you, without you or I wasting too much money or time before you can know which it is.

Stage 3b: Continue down the rabbit-hole:

So you still like what you’re working on, and haven’t banged your head against the wall too hard? Let’s dive in and master the lifecycle of a technical system, and along the way, we’ll learn the underlying attributes and principles that make any healthy system functional and sustainable.

  1. Optionally use the $1000 towards the 1st month of teaching.
  2. Each successive month is $1000; includes 10 hours of one-on-one dedicated mentoring time. In person or virtual.
  3. Minimum expected workload ratio of 1/6: 1 hour of my assistance to your 6-8 hours on your own. I’m here to focus and guide your learning, more so than to purely teach, lecture, or explain. 
  4. We will progress at whichever speed you can handle. Tech takes years to master, so you won’t outpace me. There will always be something harder to learn around the corner, so I will stay a few steps ahead of you and keep it challenging, but relevant.
  5. Each month will add a new and harder layer to your toolbelt.
  6. A rough estimate of total time is 18 months, as scheduled below. But it will go as fast or as slow as you choose.
  7. Completion time can be expedited to match pre-existing experience or quick learning trajectory. Also, this is never really “completed”. It transitions from an interest, to a hobby, to an internship, to a job, to a career.
  8. When projects become time-neutral, finances become neutral as well; i.e. the $1000/month cost stops when you’re standing on your own two feet, I’m investing little to no time and you’re still completing projects/tasks.
  9. The end goal is learning to manage the entire lifecycle of a production system, and be able to debug any issue, build any feature, serve any client with whatever need they have, critically think through logical problems, and understand a client’s needs better than them without them even having to explain by breaking down complex systems and building them back up, better.
  10. The successive, non-exhaustive, stages are:
  • Month 1: HTTP Stack
  • Month 2: Command Line
  • Month 3: Debugging, Visibility
  • Month 4: File Structures and Management
  • Month 5: Backend or Server-Side, PHP, C#
  • Month 6: Advanced git and Github
  • Month 7: Databases, MySQL, PostgreSQL
  • Month 8: Code Maintenance, Trade-offs, Priorities
  • Month 9: Staging Servers, Dev Environments, Nginx
  • Month 10: Advanced HTML and CSS
  • Month 11: Advanced JS and databases
  • Month 12: Frameworks and WordPress
  • Month 13: Networking, Routing, CDNs
  • Month 14: AJAX, Asynchronous, Recursion
  • Month 15: APIs, Webhooks, and Plugins
  • Month 16: Web Apps, Front-ends, Themes
  • Month 17: Docker, Containers, VMs
  • Month 18: Systems Architecture, Scaling

Stage 4: Expand your horizons with a career in software

Where you go after here is up to you. We can discuss long-term internship opportunities, full-time employment, or you can pursue other options in a very wide technology field.