Pro Yearly is on sale from $80 to $50! »

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

1932c0ac21b6792f2572d8e56f84a1c2?s=128

Nathan L. Walls

July 08, 2014
Tweet

Transcript

  1. A Gem/application method of building experience + confidence Establishing Yourself

    Nathan L. Walls
 July 8, 2014
  2. 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?
  3. Q: What’s an effective way of demonstrating dev skills?

  4. A: Build a code portfolio

  5. 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
  6. Whys of a portfolio

  7. 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
  8. 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
  9. What’s in a portfolio?

  10. 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…
  11. 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!
  12. 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
  13. 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!
  14. Get going with a gem

  15. 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
  16. 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
  17. 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
  18. Gem Components ❖ README.(md,markdown,txt)! ❖ super_gem.gemspec! ❖ Gemfile + Gemfile.lock!

    ❖ lib/super_gem/version.rb! ❖ Code!
  19. Code layout ❖ …/! ❖ bin/! ❖ lib/! ❖ super_gem.rb!

    ❖ super_gem/! ❖ (test|spec)/
  20. Practices ❖ Test Driven Development! ❖ Red, Green, Refactor!! ❖

    Source control practices! ❖ Writing good, sign-post commit messages! ❖ Branching, tagging! ❖ Documentation! ❖ YARD or RDoc! ❖ Project README
  21. 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
  22. Potential gotchas ❖ Gemfile + Gemfile.lock vs. super_gem.gemspec! ❖ Non-POSIX

    installation! ❖ Data storage + available dependencies
  23. Example of a gem in progress

  24. Making it work

  25. 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
  26. Guidance, continued ❖ Seek feedback! ❖ Trade code reviews and

    portfolio reviews with a friend! ❖ Iterate on your project! ❖ Review and edit your portfolio
  27. 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
  28. Further materials ❖ Portfolios for software engineers! ❖ http://wallscorp.us/content/2013/09/07/ portfolios/!

    ❖ Make your own gem! ❖ http://guides.rubygems.org/make-your-own-gem/
  29. Contact Me ❖ Personal site: http://wallscorp.us/! ❖ Slides to be

    available at:
 http://wallscorp.us/presentations! ❖ Twitter: @base10
  30. Thank you and good luck!