Learning on the Job

In a world where technology is changing day by day, it is often difficult for a software team to stay abreast of the latest developments in technology while still delivering to business. Yet, it is an absolute must to ride the wave of technology evolution to actually succeed in the business world. Software development by nature is a constantly moving target, and what you know today becomes old news tomorrow.

That's why Soft Buzz bakes the long-term goal of learning and staying up-to-date with technology into daily work activities, by encouraging developers to learn and present the latest topics in technology on a weekly basis, blog about new technologies, do a lot of pair-programming, attend and present at meetups, participate in book clubs, and work on open source and side projects.

To take it further, Soft Buzz is looking to apprentice developers either new to the field or with a computer programming background, walking them step by step through the practical aspects of software development as per the curriculum below.

Curriculum

The goal of the curriculum is provide a programmer solid grounding in actual business software development practices and technologies over a 6 month period. A scaled down 3 month program is available for college student internships as well.

This program was inspired by the apprenticeship program I helped with at Obtiva when I consulted there for over 5 years.

Topics Covered

  1. Programming (currently offered language is Ruby)
  2. Web Development (currently offered web technology is Rails)
  3. Agile practices (iterative planning, team estimation, pair-programming, and test-driven development)
  4. Databases and SQL
  5. Practical object oriented design, domain driven design, and design patterns
  6. Basic website hosting and configuration (currently offered platforms are Heroku and Amazon EC2+Moonshine)
  7. Requirements engineering, business analysis, and use-case/XP story writing
  8. Software architecture skills in system component design and balancing of non-functional requirements such as performance, security, and maintainability.
  9. Basic performance tuning
  10. Basic security guidance
  11. Introduction to usability engineering and paper prototyping

Additionally, an apprentice is expected to blog regularly, present internally at least once a month, participate in a book club, and do reading/personal project work on the side.

Milestones

There will be 3 milestones to keep the apprentice in line with apprenticeship goals:

  1. End of week 2: come up with an interesting and useful idea for building a personal web application for the sake of learning. Get it approved.
  2. End of month 2: Demonstrate proficiency in basic Agile planning skills, requirements engineering skills, and web development skills. Demo a useful personal web application
  3. End of month 4: Demonstrate proficiency in database/sql skills, object oriented design skills, and website hosting skills. Demo a useful personal web application further progress.
  4. End of month 6: Demonstrate proficiency in software architecture skills and attention to usability. Demo a useful personal web application finished progress.

Please apply via Twitter ( @SoftBuzzInc ).