Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Establishing Yourself

Establishing Yourself

… A Ruby Gem method of building experience and confidence. Get yourself ready now to apply for that promotion or dream job.

Presented to Triangle Ruby Brigade, July 8, 2014

Nathan L. Walls

July 08, 2014
Tweet

More Decks by Nathan L. Walls

Other Decks in Programming

Transcript

  1. Why are we here tonight? ❖ A lot of us

    want to grow by seeking out new challenges at work! ❖ Promotions or a new gig likely require you to demonstrate development skills! ❖ Q: What’s an effective way of demonstrating those skills?
  2. My background ❖ Software engineer here at WebAssign! ❖ Prior

    experience as a hiring manager! ❖ Two perspectives on the importance of building and demonstrating experience through a code portfolio
  3. Job or Promotion Seeking ❖ Build your own confidence applying

    for a new position! ❖ Keep skills fresh in areas you may not cover in your day-to-day work! ❖ Build new skills that you don’t have opportunity for in your day-to-day! ❖ Portability + safety of code
  4. Hiring managers ❖ Increased confidence a candidate possesses essential job

    skills! ❖ Presents an opportunity to ask specific questions to a candidate about decisions made on a project! ❖ Offers team a view of a candidate’s sample work and builds confidence in a hiring decision
  5. Writing samples! ❖ Writing is good exercise to clarify your

    thinking! ❖ Blogging is a great practice and helps you build community awareness! ❖ It’s not something many people do! ❖ Include at least two substantial posts in your portfolio! ❖ Proofreed. Better, find yourself an accommodating editor! ❖ But, this is about writing code…
  6. Code! ❖ Toy + learning code! ❖ FizzBuzz! ❖ Code

    kata! ❖ Project code! ❖ But, your employer may take serious exception to bundling much, if any, work-for-hire code! ❖ See safety + portability concern earlier! ❖ Personal code! ❖ More on this shortly!
  7. How much code? ❖ Any code that you’re happy to

    stand behind is better than no code! ❖ Many applicants provide no code samples at all(!)! ❖ But, not everything! ❖ One or two complete or near complete projects representing recent work are likely sufficient! ❖ Direct attention to files or methods you want to highlight
  8. When to write all this ❖ A portfolio is the

    “go bag” for your career! ❖ Start now, iterate and refine before you need it! ❖ Key promotion opportunity! ❖ End-of-year reviews! ❖ Job opportunity at a dream company! ❖ Treat it as a personal kanban project! ❖ Start tonight!
  9. Why a gem? ❖ Defined distribution target and installation mechanism!

    ❖ More opportunity to work on pure-Ruby, challenging your understanding of the language vs. a framework! ❖ You’re learning and expressing your own opinions! ❖ Gems can be published to RubyGems or just to a repository and then installed locally! ❖ You can ship a CLI application as a gem
  10. Is a gem enough? ❖ Maybe. Your situation is your

    own! ❖ A gem can easily be one of the two or three code components in the code portion of your portfolio
  11. Should I publish to RubyGems? ❖ If you’re building code

    you genuinely believe would be useful to others, publish to RubyGems! ❖ If you’re just building “practice” code in gem format, I recommend keeping the gem in a Git repository and sharing the repository link or a tarball
  12. Practices ❖ Test Driven Development! ❖ Red, Green, Refactor!! ❖

    Source control practices! ❖ Writing good, sign-post commit messages! ❖ Branching, tagging! ❖ Documentation! ❖ YARD or RDoc! ❖ Project README
  13. Practices – Patterns ❖ Gang of Four design patterns! ❖

    See Russ Olsen’s Design Patterns in Ruby! ❖ Small methods, well-organized classes! ❖ See Sandi Metz’s Practical Object Oriented Design in Ruby! ❖ Confident initialization, type coercion, smart error handling! ❖ See Avdi Grimm’s Confident Ruby
  14. Potential gotchas ❖ Gemfile + Gemfile.lock vs. super_gem.gemspec! ❖ Non-POSIX

    installation! ❖ Data storage + available dependencies
  15. Guidance ❖ Solve a small problem! ❖ Solve a problem

    you understand in full or most of! ❖ Host it where others can see it! ❖ GitHub! ❖ BitBucket! ❖ DIY GitLab! ❖ For the portfolio itself, up to you, but static sites with Jekyll or MiddleMan are nice! ❖ GitHub pages
  16. Guidance, continued ❖ Seek feedback! ❖ Trade code reviews and

    portfolio reviews with a friend! ❖ Iterate on your project! ❖ Review and edit your portfolio
  17. How much time will this be? ❖ It is under

    your control, but keep it sustainable against other interests and commitments! ❖ Aim for two, two-hour sessions per week! ❖ Build a habit! ❖ Aim to complete an initial iteration in six to eight weeks (24 to 32 hours)! ❖ Take a break, iterate again
  18. Contact Me ❖ Personal site: http://wallscorp.us/! ❖ Slides to be

    available at:
 http://wallscorp.us/presentations! ❖ Twitter: @base10