Skip to content

Instantly share code, notes, and snippets.

@stevo
Last active July 27, 2022 09:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save stevo/4a4fbba3b0bb45313dd341b191e84955 to your computer and use it in GitHub Desktop.
Save stevo/4a4fbba3b0bb45313dd341b191e84955 to your computer and use it in GitHub Desktop.
Ruby On Rails approval requirements.md

Ruby (on Rails) backend developer

🚧 This document is being continuously fine-tuned, and thus may change upon consecutive verifications 🚧

Each verification is performed with Tech Lead unless instructed otherwise. Curated list of basic learning resources can be found here

Requirements

Independent developer

To get a pass, you need to make a fork out of each Gist listed below, fill it in and...

  1. Pass basic GIT skills verification
  2. Pass basic HTML/CSS skills verification (not applicable for now)
  3. Get enough points for and pass ruby skills verification (including short pair-programming session)
  4. Get enough points for and pass RoR skills verification
  5. Get required points for and pass OOP skills verification
  • 🔹 indicates skills/knowledge required for independent developer

MID

  • requirements as for independent developer +
  • may require additional pair programming session
  • 🔸 indicates skills/knowledge required for mid developer
  1. You need to be prepared to discuss topics related to OOP and architecture

Senior

  • requirements as for mid developer +
  • may require additional pair programming session
  • 🔺 indicates skills/knowledge required by senior developer

FAQ

What if I do not pass for whatever reason?

You can get another attempts in 2, 4, 8 weeks and then every 8 weeks until you pass. Please be advised that requirements/tasks may evolve during that time and you will need to face the updated ones.

How often will I be re-evaluated?

Re-evaluation happens yearly and should be much quicker than initial evaluation, especially for people working with given technology on daily basis. Some new requirements might be added though (because of framework evolution or changes in Selleo's preffered way-of-doing-things)

What if I do not pass re-evaluation?

This is very unlikely to happen as far as I am concerned. It might happen if you just stop working with given technology for good. In hypothetical situation I believe your approved skill level for given technology can drop from Mid to Independent or from Senior to Mid. In my opinion it cannot drop from Senior to Independent or from Independent to Junior due to accumulation of experience, but being on the edge requires effort so to keep your seniority level, just monitor and adhere to changes in requirements and you should stay on the safe side with little effort.

# !! Work in progress !!
# gem install rb-readline
# gem install vine
# Usage:
# ruby summarizer.rb https://gist.github.com/stevo/e8c913639a06ad952c9d4d71d08898f2
require 'open-uri'
require 'active_support'
require 'rb-readline'
require 'pry'
require 'vine'
RAW_URL = "https://gist.githubusercontent.com/{username}/{uid}/raw"
url_match_data = ARGV[0].match(/gist\.github\.com\/(?<username>\w*)\/(?<uid>\w*)/)
open(RAW_URL.sub('{username}', url_match_data[:username]).sub('{uid}', url_match_data[:uid])) do |report|
labels = []
a = report.to_enum(:each_line).inject({}) do |result, line|
if line.start_with?('##')
nesting_level = line.count('#') - 1
if nesting_level == 1
labels = []
elsif nesting_level <= labels.count
labels = labels[0..nesting_level-2]
end
labels << line.gsub(/\(http[^\)]*\)/,'').gsub(/[^\w\s]/,'').strip
end
if line =~ /^\s*.*\[[\sx]\]/
current_stats = result.dig(*labels.map(&:to_sym)) || {
total: 0,
checked: 0
}
line_checked = !!(line =~ /^\s*.*\[x\]/)
classification = line.match(/:(\w*):/)
current_stats[:total] += 1
current_stats[:checked] += 1 if line_checked
if classification
current_stats["#{classification[1]}_total".to_sym] ||= 0
current_stats["#{classification[1]}_total".to_sym] += 1
if line_checked
current_stats["#{classification[1]}_checked".to_sym] ||= 0
current_stats["#{classification[1]}_checked".to_sym] += 1
end
end
result.set(labels.join('.'), current_stats)
end
result
end
pp a.inspect
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment