Sunteți pe pagina 1din 29

 

 
Mastering Ruby In 90 Days (or Less)
 
FOR ENTREPRENEURIAL WEB DEVELOPERS

 
 

Raymond Cudjoe @ HookOps
AKA, Your Virtual Rails Client
347 794 2204 | ReProfit Lab 

   

 
 
 
 
 
BUILDING A SOLID FOUNDATION IN RUBY AND RAILS 5 
This guide is meant to help you acquire the fundamental skills you need to 
become a confident Ruby & Rails developer. Using books, video courses and 
practical projects, you'll arm yourself with the tools you need to build web 
products, including Ruby, HTML & CSS, CoffeeScript and Rails 5. 

Additionally, you will learn about best practices, design patterns and principles, 
and the fundamentals of visual design. Our goal is to build a solid foundation 
that you can expand on to become a professional software developer who uses 
Ruby and related tools to create value for yourself, employers and/or clients. 

HOW TO USE THIS GUIDE 
The best way to use this guide is to start from the Ruby section and proceed 
towards the CoffeeScript section. Each section has a ​Core Activity​ and an 
Assessment.  

The core activities are meant to teach you fundamental concepts, and the 
assessments are designed for you to use the concepts in a new, unfamiliar 
situation because you can’t master a new skill without applying what you’ve 
learned. 

It’s essential that you complete all of the core activities and assessments. 

There are additional readings for each section for the purposes of professional 
development. These readings can be done in-between study sessions or during 
your commute to work, but please don’t skip them. 

I encourage you to read the entire guide before you start doing anything. It’s 
almost, always a good idea to know where you’ll end up before you invest your 
precious time and a small fortune in acquiring a new skills. 

10 REQUIRED READING AND COURSES 
There isn’t a shortage of resources when it comes to learning Ruby and related 
tools for building SaaS and web products, so I’m only going to show you the 


 
 
 
 
exact books and courses I used to master the “hard skills” of software 
development. 

You’ll notice I’ve included other resources to help you learn what we’ll 
categorize as “soft skills” because the ability to produce working software isn’t 
enough to create a remarkable career in software development anymore. 

You also need the mindset, motivation and mental models that’ll make you 
produce software that makes an impact, so that you can stand out from your 
peers. And ensure you’re never undervalued and underpaid. 

Here are the books and courses you must have in your library if you’re really 
serious about breaking into the uber-profitable software development industry: 

1. The Passionate Programmer by Chad Fowler 
2. Ruby Programming Course by Pragmatic Studio 
3. HTML & CSS by Jon Duckett 
4. Smashing CoffeeScript by Alex Hudson 
5. Don’t Make Me Think by Steve Krug 
6. Instant Sinatra Starter by Joe Yates 
7. Everyday Rails Testing with RSpec by Aaron Sumner 
8. Ruby on Rails Level I Course by Pragmatic Studio 
9. Bootstrapping Design by Jarrod Drysdale 
10.Practical Object-Oriented Design in Ruby by Sandi Metz 

The first thing you probably noticed is that I didn’t list any of the popular free 
resources you’re already familiar with. There’s a simple reason for that. And no, 
it’s not because free resources aren’t of high quality and useless. 

I rarely recommend free educational material because I want you to invest a 
small fortune in your education. It’s a psychological hack that incentivizes you 
to follow through with your decision to acquire a difficult skill – you’ll take 
ownership of your education when you have skin in the game. 

   


 
 
 
 
HOW TO LEARN NEW SKILLS FASTER THAN YOUR PEERS 
In the summer of 2010, I wanted to learn Ruby on Rails while I was still a college 
student, but I failed miserably. Then in 2013, I stumbled on a little yellow book 
called ​The First 20 Hours: How To Learn Anything...Fast ​by Josh Kaufman, 
who’s also the international bestselling author of ​The Personal MBA​. 
 
In that book, Josh Kaufman describes his research into the field of ​Rapid Skill 
Acquisition (RSA) ​and shows us how he used the techniques to teach himself the 
basics of Ruby programming and web development with Sinatra and other skills. 

After failing to improve fast enough for my liking and almost gave up on 
learning web development, I applied the techniques when I decided to learn 
Ruby and Rails again. 

Needless to say, I improved significantly within a couple of weeks. 

Since then, I’ve built Ruby gems and released Rails apps I’m proud of. And I’ve 
applied the same techniques to learning various other skills, including 
copywriting, marketing automation and data visualization. 

Here’s a quick rundown of the 10 major principles of ​Rapid Skill Acquisition​ that’s 
mentioned in the book. You should note that I’ve added another principle that I 
believe makes the entire concept of ​RSA ​complete: 

1. choose a lovable project 
2. focus your energy on one skill at a time 
3. define your target performance level 
4. deconstruct the skill into subskills 
5. obtain critical tools 
6. eliminate barriers to practice 
7. make dedicated time for practice 
8. create fast feedback loops 
9. practice by the clock in short bursts 
10.emphasize quantity and speed 


 
 
 
 
11.teach everything you know 

I’ll show you how I applied these 11 simple principles to teach myself Ruby and 
Rails in record time. First, we’ll take a look at principle number one, ​choose a 
lovable project​, but it’s important to remember that these principles help you 
train to become an amateur faster​, so that you can enjoy the 10,000 hours of 
practice required to become an expert. 

1. CHOOSE A LOVABLE PROJECT 

I invite you to look back at your schooling days. In high school and college, you 
were required to complete several projects for grades. 

If I were a betting man, I’d bet $1 you completed most of the projects, $5 you 
hated the idea of working on yet another project whenever a new one was 
assigned, $10 you waited until the last possible minute to complete them. 

And finally, I’d bet $100 you never touched the project again once it was 
submitted and graded; it just took up disk space or collected dust. 

What you’ve just read is a characteristic of non-lovable projects. 

They don’t make you excited enough to give them your full attention and effort.  

Despite the obvious fact that you didn’t choose the project, most school projects 
do not encourage skill acquisition because they focus on mindless repetition of 
what you already know, have no immediate benefit to you, and it’s impossible to 
be passionate about them, even if your future livelihood depended on them. 

Projects that encourage skill acquisition are the exact opposite of school work. A 
lovable project is something you care about and produces a short term value for 
you. You are more likely to learn the skills required to complete a project if you 
care about the project enough to develop a temporary obsession over it. 

I started learning to use Rails because I wanted to develop prototypes for app 
ideas I had for startups. Although none of those Rails apps became profitable 
products, I was able to practice because I was temporary motivated to launch 


 
 
 
 
them quickly. To learn Ruby and related tools fast, you need a practical project 
you can work on too. 

Josh Kaufman learned Ruby and Sinatra because he needed to rebuild his 
personal website to support more concurrent users.  

I believe DHH wouldn’t have learned Ruby (or created Rails) if he wasn’t 
motivated to build Basecamp with Ruby. 

And more recently, I wouldn’t have learned how to build Rubygems if I didn’t 
need custom command-line apps for work and wouldn’t have learned to 
consume APIs in Ruby if I wasn’t motivated to connect with SaaS founders and 
their team. 

To come up with project ideas that you can use for practice, choose a SaaS app 
you currently pay for or interested in selling, then build a basic version just for 
yourself. Most SaaS apps have lots of features to appeal to the various user 
groups they serve.  

Eliminate the features you’ve never used and build a version that includes just 
the features you use often. You don’t have to replicate the UI exactly, unless 
you’re already a designer; just rebuild the core functionality / features in it’s 
simplest form. 

2. FOCUS YOUR ENERGY ON ONE NEW SKILL AT A TIME 
In order to practice and complete your project, you need to focus your energy on 
one new skill at a time because dividing your attention between many new skills 
is a recipe for disaster; a recipe for extremely low skill acquisition. 

It’s completely understandable that you want to learn many new skills, but if you 
spread your limited time and energy across many skills, it will take longer to 
notice a significant improvement in any one of them. 

If you only have few hours to devote to learning, you are better off focusing on 
one skill until you are proficient before moving on to the next one. Context 
switching drains your cognitive energy and hinders your ability to learn, so it’s 


 
 
 
 
important to focus on one skill at a time. 
 
It’s hard to resist the temptation of working on multiple skills at a time, 
especially if you are a curious person or the kind who just likes learning new 
things. 

The way to deal with this is to establish a “someday/maybe” list, where you list 
things you want to explore when you get a chance. This buys you time and 
allows you to focus on your current skill without feeling you have given up on a 
chance to learn new things. 

In the words of Josh Kaufman, “pick one, and only one, new skill you wish to 
acquire. Put all of your spare focus and energy into acquiring that skill, and place 
other skills on temporary hold.” 
 
Focusing on one new skill at a time that will put you on the path to mastering 
your Ruby and Rails skills in the shortest possible time, and become the software 
developer you’ve always wanted to be. 

3. DEFINE YOUR TARGET PERFORMANCE LEVEL 
Rapid Skill Acquisition​ is all about knowing your desired target performance 
level and finding the shortest, fastest path to get there. Your target performance 
level for software development depends on your reason for acquiring the skill in 
the first place, but keep in mind that the more specific it is, the better. 

What is it that you want to achieve and what will you be able to do when you are 
done acquiring the skill? What level of performance is “good enough” for what 
you’re trying to accomplish with your software development skills? 

How do you know you’re done for now? 

Your target performance level should be relaxed as well, making it easier to get 
there. 

When I started learning web development after reading ​The First 20 Hours​, my 
target performance level statement was very specific. I wanted to be able to 


 
 
 
 
develop and deploy a Rails application I had envisioned without any 
hand-holding. 

The only personal advice I’d add is that, don’t put a time pressure or any other 
constraint on yourself like I did. The more relaxed your target performance level, 
the more confident you’ll feel that it’s possible to achieve, which makes it more 
likely that you’ll do what’s required to get there. 

You can acquire the related skills for web development faster without getting 
frustrated if you shoot for capacity and sufficiency at maximum speed, instead of 
perfection.  

Keep in mind that the most important part of learning any new skill is breaking 
through your frustration barrier, which takes 20 hours of deliberate, focused 
practice. Getting to your target performance level should be your next focus. 
And from there you can decide whether you want to keep going, perhaps to 
world class mastery. 

4. DECONSTRUCT THE SKILLS INTO SUBSKILLS 
We’ve already covered choosing a lovable skill, focusing one’s energy on one 
new skill at a time, and defining a desired target performance level when 
acquiring a new skill like web development with Ruby and friends. Now you’ll 
see why it’s important to deconstruct a skill into its sub-skills before you start. 

Let’s take writing for example. 

First you need to know all the alphabets, then learn how to put them together to 
make words, followed by constructing meaningful sentences. Then you learn to 
write proper paragraphs, and eventually essays. 

You can imagine what would happen if you skipped the first two steps and 
jumped  into constructing sentences – years of frustration and incompetence. 

Same goes for other new skills; you can’t learn without knowing the 
fundamentals.  


 
 
 
 
That’s why it’s important to deconstruct a skill into its sub-skills; doing so will 
let you know which ones are critical for beginners and which ones are better left 
until you are know enough to handle them. 

Here is a brief history of my journey into web development with Ruby and 
related tools. 

In 2010 (​The Social Network​ is released), I made several attempts to learn web 
development because I thought I had a brilliant idea for a web app (if you 
guessed a social networking app, you’re right). 

I bought every book that showed you how to build an application (in retrospect, 
they all showed you how to clone Facebook or Twitter). I muddled through them, 
but at the end, I could only repeat what was covered in these books and could 
not bring my idea to fruition. 

What’s the reason? 

If you said that it’s because I didn’t have the fundamentals and that I didn’t 
actually understand what was going on, you’re right. I was so frustrated, I 
wanted to apply to a web development bootcamp. All my concerns about tuition 
didn’t matter anymore. 

As I researched and visited their websites, I noticed an interesting pattern. 

Their beautifully designed websites didn’t just say they’ll teach you web 
development.  

Every single program said you will learn web development using HTML & CSS, 
JavaScript, Ruby and Rails. They broke web development down into its 
sub-skills. 

No wonder all the books claiming to teach beginners web development from 
scratch never work. These books are usually written for those who have 
experience with other programming languages or frameworks and need a crash 
course in using another one. 


 
 
 
 
So it made sense to focus on the core framework being taught (Rails, for 
example) and pay little attention to everything else. Beginners need a solid 
foundation upon which to build their skills. 

That means, to learn Rails, you need to know Ruby. And to actually change the 
default styles in Rails, you need to know HTML & CSS. To do cool animations 
like slideshows and pop-ups, you must know how to use jQuery to manipulate 
the DOM. 

Understanding how to effectively combine all these technologies puts you on the 
path of becoming a professional Ruby developer. You’ve already solved half the 
problem of learning web development by knowing which sub-skills to learn first, 
and which ones to ignore until it’s absolutely required. 

5. OBTAIN CRITICAL TOOLS 
Assuming you want to learn how to play tennis (think Rafael Nadal, Maria 
Sharapova and Serena Williams), you can’t really learn if you don’t have a good 
racket and tennis shoes, can you? 

Most of us already have the critical tools needed to learn web development, a 
computer with a decent internet connection. But, we also need additional 
resources to help us with our practice. 

People who’ve been programming in their mother’s womb can easily look at 
documentations and understand what’s going on. For the rest of us, we need 
books, video tutorials, in person classes, problem statements, and/or test cases. 

Obtaining these resources beforehand will make it easier to practice and acquire 
the skills we want faster. We also need to get the best resources and tools we can 
afford to buy or borrow. You don’t want a situation where the tools get in your 
way and prevent you from learning, right? 

It’s difficult to know which resources teach to your learning style given the 
plethora of resources out there, the background of the person who created the 
training program, and the outcomes that you expects. Also, some people learn 


 
 
 
 
better from books, others from videos tutorials or in-person instructions. Still, 
others do better with multi-media. 

From experience, it’s better to mix things up. 

Take the multi-media approach. Use books, videos courses or in-person 
instructions, when appropriate. And if you feel adventurous, use 
documentations for each of the technologies you want to learn. 

6. ELIMINATE BARRIERS TO PRACTICE 
Once you have your tools, you need to remove all obstacles that will prevent you 
from achieving your goal. There are barriers that can get in the way of practice 
when learning a new skill, thus increasing the time it would take to become 
proficient. It’s important you identify these barriers early on and eliminate them 
before they affect your efforts. 
 
Barriers to practice include significant pre-practice activities such as misplacing 
your tools and resources, not having the correct tool before practice and 
skipping setup requirements. Having limited access to resources hinders your 
ability to practice too. 

Other barriers include environmental distractions such as television, ringing 
phones, and emails. Emotional blocks such as fear, doubt, and embarrassment 
can also get in the way of learning. Each of these barriers make it harder to 
practice and increase the time it takes to acquire a new skill. 

You can’t rely on willpower each time to overcome them, so it’s better to invest 
some time in eliminating them before you start learning. It takes a lot of 
willpower not to check email and Facebook frequently. 

I was lucky that I had developed a habit of using only my mobile phone to access 
both email and Facebook. All I needed to do was toss my phone somewhere that 
wasn’t an arm’s length away, somewhere I couldn’t reach without getting up 
from my desk. 

10 
 
 
 
 
7. MAKE DEDICATED TIME FOR PRACTICE 
Often, when we want to acquire new skills, we also want to keep doing most of 
the other things we love doing, so we end up not having the time we need. Thus, 
we tell ourselves, we will get around to acquiring the new skill when we “find 
time.” 
 
However, no one ever finds time. There are limited set of hours in a day and we 
can’t magically find extra time if we don’t actively make it. 

You can make time for practice by eliminating low-value use of your time. 

Cutting the amount of time you spend watching TV, reading gossip magazines, 
playing video games and engaging in other low-value activities can help you find 
time for deliberate, focused practice. 

By keeping a simple log of your daily activities for a week, you will know which 
ones are not necessary, and can be safely eliminated from your daily routine. At 
least for the duration of your learning. 

In addition to making time for practice, pre-committing 20 hours to practicing 
your new skill will help you overcome the obstacles and frustration you are 
bound to face when you start learning. 

By pre-committing 20 hours and not stopping until you’ve practiced for 20 hours 
or reached your target performance level, you ensure that little issues in the 
beginning will not stop you. 

Finally, the more hours you devote to daily practice, the faster you will acquire 
the skill. Practicing for 90 minutes or more a day is ideal for ​Rapid Skill 
Acquisition​. 

When I started learning, I had a summer job that required that I left home at 
noon and I couldn’t do much at night because I was usually tired by the end of 
the day. The only way I was able to get 90 minutes or more of practice per day 
was to wake up early, usually at 5AM. 

11 
 
 
 
 
Around that time, there was no body awake to interrupt me.  

I can’t confidently give advice as to what you can do to make time for practice 
because we all have different habits and responsibilities. But I’m sure there are 
certain habits and activities that aren’t good use of your time.  

Keep a log of all your activities for a week to find out which activities you can 
safely eliminate and you will have enough time to practice. Obvious ones to 
eliminate are long hours of late night TV and Netflix reruns. 

8. CREATE FAST FEEDBACK LOOP 
Getting fast feedback is likely the most important principle of​ ​Rapid Skill 
Acquisition​.​ Creating fast feedback loops mean getting accurate information 
about your performance as quickly as possible. 

The longer it takes to get feedback, the longer it will take to acquire a skill 
because you can’t associate your success or failure to a particular activity and 
correct your mistakes. 

Depending on the skill you are acquiring, you can incorporate feedback from a 
number of sources. These sources include coaches, video cameras, computer 
programs and training aides that alert you of your mistakes. 
 
You should note that the more sources of feedback you can incorporate into your 
practice, the faster you can acquire the skill. One of the reasons learning to 
program is easy, fast and mildly addictive is the near instantaneous feedback it 
provides. 

You write a line of code and you can tell within a few seconds whether it behaves 
as expected. If it doesn’t behave as expected, you delete and try again. Feedback 
of that sought is bound to make you a better, faster learner. 

9. PRACTICE BY THE CLOCK IN SHORT BURSTS 

12 
 
 
 
 
Another technique you can use to make your skill acquisition faster is to practice 
by the clock in short bursts. You need to practice by the clock in short bursts 
because human brains aren’t built to estimate how long an individual has been 
doing something. 
 
When you aren’t good at something, you overestimate how long you’ve been 
practicing and usually get frustrated when you don’t experience enough progress 
that matches the time you think you’ve spent. 
 
Practicing by the clock combats this behavior. Similar to pre-committing at least 
20 hours to acquire a skill, you must also pre-commit at least two sessions of 
practice per day when learning a new skill. 
 
Set a clock for about 45 minutes per session, and once you start, you can’t stop 
until time runs out. The more sustained periods of practice sessions you have, 
the faster you’ll acquire your new skills. 

10. EMPHASIZE QUANTITY AND SPEED 
As a beginner it’s tempting to focus on perfection when learning web 
development, which sets you up for frustration. It is more important to focus on 
quantity and speed while maintaining a good enough form than focusing on 
perfection. 
 
Josh Kaufman tells a story about a pottery class that was split into two. One class 
will be judged on quantity of pots made, the other the quality of pots. At the end 
of the class, not only did the quantity group have the most pots, they also had 
the best pots. Why, you ask? 

The quantity group improved on each pot they made, while the quality group 
fixated on perfecting the one pot they worked on. By making more pots and 
learning from the experience, the quantity group learned what would make the 
next pot better than the previous one. 

13 
 
 
 
 
Quantity and speed is important in web development as well. The best 
developers, musicians, and writers aren’t so because they are geniuses. Instead, 
they get better over time, with each new piece they work on.  

The more deliberate practice you put in, the faster you can acquire your skills, 
the better you get overtime and reach world-class status if that’s your goal. 

11. TEACH EVERYTHING YOU KNOW 
I added this principle to Josh Kaufman’s ​Rapid Skill Acquisition​ ​techniques 
because I believe teaching is the fastest route to mastery and expertise in every 
field. To practice this principle, simply maintain a blog, newsletter or answer 
questions on forums to share some of things you’ve learned because it solidifies 
your understanding of topics. 

It’s likely you’re reading this because you visited my blog; this very guide started 
it’s life as a blog post back in 2013. If you’ve found value from it, then I 
encourage you to teach everything you know too. 

It doesn’t matter if this is your first hour of learning web development, there’s 
someone out there who knows less than you and will appreciate your 
perspective. You don’t have to wait until you’re a “professional developer” to 
start being helpful to others. 

SETTING UP YOUR DEVELOPMENT ENVIRONMENT 
To setup your development environment for Mac OS, ​follow these instructions. 

To setup your development environment for Linux, ​follow these instructions. 

And to setup your development environment for Windows, I’d encourage you to 
do a ​parallel installation of Linux​; then setup a Linux development environment. 

You can use a text editor you’re already familiar with, but Atom and Sublime 
Text 3 are highly recommended. Pick one text editor and master the interface 
and shortcuts. 

14 
 
 
 
 
You’ll also need a GitHub, GitLab or BitBucket account to host your code, 
manage projects and build software alongside other developers; ​I prefer GitHub 
because it’s more popular among Ruby / Rails developers, and has integrations 
with advance software delivery tools that you’ll discover later in your career. 

TEACH YOURSELF RUBY PROGRAMMING 
Ruby is a dynamic, object-oriented programming language that emphasizes 
simplicity and programmer productivity. Ruby’s simple syntax and English-like 
readability makes it easier to learn compared to other programming languages.  

Yukihiro “Matz” Matsumoto from Japan developed Ruby in 1995, but it wasn’t 
popular until Ruby on Rails web framework was released in 2005. Ruby is among 
the top ten programming languages on GitHub 

Learning Ruby will give you the foundation you need to develop Ruby, Sinatra, 
and Rails applications, including other rack-based application. 

LEARNING OBJECTIVES – You should be able to: 

★ Understand and use ​Ruby Language Constructs 
★ Write ​Object-Oriented ​programs 
★ Understand and apply ​Object-Oriented Design Principles​ such as 
Polymorphism 
★ Use ​Blocks and Iterators​ effectively in your Ruby programs 
★ Organize your Ruby code for ​reuse, unit testing and distribution 
★ Provide​ Input/Output​ support for your applications 
★ Write and run ​Unit Tests​ with RSpec 
★ Package and distribute​ your code as gems 
★ Use proper ​Ruby Programming Idioms​ throughout Ruby programs 

CORE ACTIVITIES, ASSESSMENT AND RETROSPECTION #1 

1. Enroll and start ​this Ruby Programming course​ by Pragmatic Studio 

15 
 
 
 
 
Please make sure you complete the exercises for each module because 
they are essential to your learning. Don’t just download or copy & paste 
the solutions. 

Also, don’t rush through the course; spend about 45 minutes per session 
to avoid information overload and to allow your brain enough time to 
process the everything you’ve learned. You can ignore the Bonus Round, 
“CrowdFunding” application because it’s superfluous for our purpose of 
building a strong a strong foundation in software development with Ruby 
in 90 days or less. 

2. Start reading ​The Passionate Programmer​ by Chad Fowler. Write down or 
highlight which tips are relevant to you, considering where you are in your 
software development career and what you’re trying to achieve with your 
new skills. 
3. As you know, software developers learn about new business domains 
before they’re able to write software that has the correct business logic. 
For your first assessment, go to Khan Academy and ​watch the first 4 
videos on banking​.​ Then write a Ruby app that makes record keeping 
easier for a bank in a remote location without an internet connection. 
Assume the Ruby app will be used by one “trusted leader” to record every 
transaction, instead of pen and paper.  
4. Answer the questions below to write your first retrospection, which also 
doubles as teaching everything you know about software development 
with Ruby so far. 
a. Were there any unexpected difficulties and how did you handle 
them? 
b. How would you evaluate your programming ability? 
c. Which areas do you need to work on? 
d. If you knew another language already, what’s your impression of 
Ruby? 
e. Which tips from ​The Passionate Programmer​ resonate with you? And 
how do you plan to use them to create a remarkable career too? 

16 
 
 
 
  f. Set up a Jekyll site​, deploy to GitHub pages & publish your 
retrospection. 

TEACH YOURSELF HTML / CSS 
HTML is an abbreviation for Hypertext Markup Language. Web developers use 
HTML to tell web browsers whether a piece of text on a web page is, for example, 
a list, header, link, table or  an image, and web browsers use this information to 
structure and display the page as described. 

CSS is an abbreviation for Cascading Style Sheets and it’s used to make web 
pages more attractive. Web developers use CSS rules to change, for example, the 
color, size, font, and typeface of text on pages. 

LEARNING OBJECTIVES – You should be able to: 
 
★ Use ​HTML TAGS ​semantically to structure web pages 
★ Name ​Classes​ ​and ​IDS​ ​semantically 
★ Understand how the ​Box Model​ ​works 
★ Understand ​Floating​ ​and ​Positioning 
★ Style text on web pages using CSS 
★ Build full layouts for websites 
★ Use a grid system or framework 
★ Use ​View Source​ ​feature of the browser 
 
CORE ACTIVITIES, ASSESSMENT AND RETROSPECTION #2 
 
1. Skim the Table of Contents, plus the HTML section of​ HTML & CSS: 
Design and Build Websites​ by Jon Duckett. It’s tedious and boring to code 
along, especially if you dabbled with web development before, so it’s 
better to use this book as a reference. 
 
2. Write an HTML layout based on your favorite website, or one of these 
GitHub Pages themes​ (there’s a preview link in the README for each 
theme). Please don’t do yourself a disservice by using the “View Source” 
feature of the browser until you’ve exhausted all options. 
 

17 
 
 
 
 
3. Now, skim the CSS section of ​HTML & CSS: Design and Build Websites, 
then style the HTML page layout you wrote earlier; it doesn’t have to look 
exactly the same as the page it’s based on. 
 
4. Start reading ​Don’t Make Me Think ​by Steve Krug. 
 
5. Use Skeleton CSS Boilerplate to build a personal webpage. Be sure to 
highlight recent accomplishments, skills, activities/hobbies you enjoy, 
favorite quotes, as well as images and videos. 
 
6. For your second retrospection, to be publish to your blog, answer these:  
a. What advice would you give a person new to designing and building 
sites? 
b.  What are some essential processes, and tips from ​Don’t Make Me 
Think. 
 
TEACH YOURSELF SINATRA AND PADRINO 
Sinatra is a minimalist web framework that handles mundane tasks involved in 
the functioning of websites. You might know about Rails and its capabilities, but 
it’s not always the right tool for the job. 

Sinatra does not impose any of the conventions that Rails imposes on developers 
and it gives developers greater freedom to structure applications as they see fit. 
It’s also a great way to introduce beginners to web development. If you only 
want to serve a few web pages, you should consider using Sinatra, the classy web 
framework. 

LEARNING OBJECTIVES – You should be able to: 

★ Differentiate between ​Modular​ and ​Classic ​Sinatra apps 
★ Create and deploy classic style applications 
★ Create and deploy modular applications 
★ Use a relational database in modular apps 
★ Explain ​HTTP Verbs​, ​Handlers​ and ​CRUD 
★ Use ERB templates to display dynamic content 
★ Test applications with RSpec and Capybara 

18 
 
 
 
 
CORE ACTIVITIES, ASSESSMENT AND RETROSPECTION #3 

1. Skim ​Instant Sinatra Starter​ by Joe Yates and complete this short tutorial, 
Designing With Class: Sinatra + PostgreSQL + Heroku​. Now, deploy the 
website you coded for your assessment in the HTML & CSS section to 
Heroku. 

2. Go to Rubycon​, play around with an objective of figuring out how it works 
so that you can develop the same application. You don’t need to use the 
same tech stack, but try to duplicate the functionality. 

You should note that the tech stack for Rubycon includes, ActiveRecord 
for ORM, PostgreSQL for database, RSpec + Capybara for integration 
testing, and Skeleton framework for design. 

3. Skim the Table of Contents of ​Everyday Rails Testing with RSpec ​by 
Aaron Sumner, so that you can find chapters that are relevant to testing 
your Sinatra application. You’ll also use what you learn here when you 
work on Rails apps. 

4. Here are a few questions to brainstorm topics for your next retrospection. 
a. Write about a difficult problem you faced and how you solved it. 
b. Explain a new concept that reflects your understand. 
c. If you’ve used Rails before, what are some similarities and 
difference? 

TEACH YOURSELF RUBY ON RAILS 5 
Ruby on Rails, often shortened to Rails, is an open source web application 
development framework created by David Heinemeier Hansson in 2005. Rails is 
powered by Ruby; hence, the name “Ruby on Rails”. Rails is designed to help 
web developers create dynamic websites with minimal configuration.  
 
Today, Rails is used by many companies including Yellow Pages, Hulu and 
Groupon to power web applications that are used by thousands of people 

19 
 
 
 
 
worldwide. Rails is also popular amongst SaaS startups and there are many 
consultancies that specialize in developing Ruby on Rails applications. 

LEARNING OBJECTIVES – You should be able to: 

★ Create ​Models, Views & Controllers​, with and without ​Built-In 
Generators 
★ Create a ​Forms​ that saves records into a database 
★ Query the database 
★ Validate ​ActiveRecord​ objects 
★ Create ​One-to-One a​nd​ One-To-Many​ ActiveRecord associations 
★ Whitelist​ Attributes In ActiveRecord 
★ Implement ​User Authentication​ and ​Authorization 
★ Add ​Pagination​ when displaying data in your applications 
★ Deploy the application to cloud servers 
★ Evaluate and choose a Rails starter templates 

CORE ACTIVITIES, ASSESSMENT AND RETROSPECTION #4 

1. Enroll and start this ​Rails 5 programming course​ ​by Pragmatic Studio. 
Again, don’t forget to complete the exercises for each module, and avoid 
copying and pasting the solutions so that you’re engaged throughout the 
course. 

2. Continue reading ​Everyday Rails Testing with RSpec; ​and/or move on to 
Object-Oriented Design In Ruby. ​Remember to take notes while reading. 

3. Create a Rails version for Rubycon​, but this time add user authentication 
and authorization, where only administrators can perform CRUD actions. 

Ideally, everyone can read/click on links. Signed in users can upvote a link 
to bring so that the most popular links is always at the top. As always, use 
test-driven development when building your app. 

4. For your fourth retrospection, use these questions to brainstorm a topic. 
a. What problems did you face, and how did you solve it? 
b. What’s your solution to a difficult problem you faces? 

20 
 
 
 
  c. Explain a new concept you learned, including when you’ll apply it? 

TEACH YOURSELF COFFEESCRIPT / JQUERY 
JavaScript lets web developers add animations, interactivity and visual effects to 
websites. However, due to browser inconsistencies, writing pure JavaScript code 
is not always practical. JQuery is a JavaScript library that makes it easier to add 
interactive features to websites and in some ways, makes it easier to learn 
JavaScript. 
 
CoffeeScript is “a little language that compiles into JavaScript.” CoffeeScript was 
developed to expose the better parts of JavaScript and it compiles one-to-one 
into the equivalent JavaScript. The goal of CoffeeScript is to help developers 
write more concise and readily understandable code. 

LEARNING OBJECTIVES – You should be able to: 

★ Use CoffeeScript to ​Manipulate the DOM 
★ Understand and use ​Click Handlers 
★ Understand and use ​Event Handlers 
★ Know how CoffeeScript is used with forms 
★ Understand and implement ​AJAX requests 

CORE ACTIVITIES, ASSESSMENT AND RETROSPECTION #5 

1. Skim ​Smashing CoffeeScript​ by Alex Hudson, read ​ ​Understanding 
Progressive Enhancement​, ​Progressive Enhancement with CSS​, and 
Progressive Enhancement with JavaScript. 

2. Start skimming ​Bootstrapping Design ​by Jarrod Drysdale. 
3. Enhance some features in your Rails app with CoffeeScript.  
4. For your final retrospect, write about something you found intriguing, 
challenging or reflects your understanding of the steps it takes to release a 
production quality web app that’s robust and secure, easy to use and 
uber-profitable with Ruby and related tools. 

21 
 
 
 
 
10 ADDITIONAL READING FOR ELITE RUBY & RAILS DEVELOPERS 

1. Pragmatic Thinking and Learning by Andy Hunt 
2. Ruby Science by Thoughtbot 
3. The Rails 4 Way by Obie Fernandez et al. 
4. Multi-tenancy with Rails by Ryan Bigg 
5. The Official Rails Guides 
6. Metaprogramming Ruby by Paolo Perrotta 
7. Confident Ruby by Avdi Grimm 
8. Modern Payments Processing by Pete Keen 
9. Your Customer Creation Equation by Brian Massey 
10. Modular Rails by Thibault Denizet 

25 MUST-READ BOOKS FOR PRODUCT CREATORS & MARKETERS 

1. Cracking the PM Interview: How to Land a Product Manager Job In 
Tech 

More than a primer on which interview questions to prep or how to write a killer 
resume (although this book cover both), McDowell and Bavaro get to the core of 
what the position of a product manager really is. Examine the role from all sides 
to learn not only how to land a job, but master your daily responsibilities and 
advance your career as well. 
 
2. The Product Manager’s Survival Guide: Everything You Need to Know 

Follow this book’s blueprint for graduating from novice to confident product 
manager. Start by understanding the keys to success, then learn how to become 
a product expert and customer advocate, effectively manage your teams and 
increase productivity, and further your career. 
 
3. The Product Manager’s Desk Reference (2nd Edition)  

A companion resource to The Product Manager’s Survival Guide, keep this 
all-in-one reference on your desk to quickly look up product management 

22 
 
 
 
 
strategies, processes, tools, and templates. Haines doesn’t stop at logistics — he 
also covers the soft skills you’ll need to lead your team to success, collaborate 
with other departments and teams, and communicate with stakeholders. 

4. Product Management for Dummies 

This comprehensive reference offers easy-to-understand explanations of the 
essentials of product management, from defining the product life cycle and 
creating a winning product strategy, to gathering customer feedback. This 5-star 
reviewed book is an essential addition to your product management toolkit – 
whether you’re a novice or experienced veteran.  

5. Intercom on Product Management 

Available as a free download, this book offers expert guidance on customer 
relationships, evaluating your product, deciding which features to improve, and 
(just as important) which features to ignore. Authors Des Traynor and John 
Collins have compiled a must-read that will set you up to face the tough 
decisions you’ll make on the way to building great products. 

6. Hooked: How to Build Habit-Forming Products 

Use behavioral psychology to hook customers and keep them coming back — 
without resorting to expensive and aggressive advertising. Learn how to create 
“viral loops” so users instinctively reach for your product, build customer 
engagement, and develop products people love. 

7. Inspired: How To Create Products Customers Love 

Unless your product is valuable, usable, and feasible, it’s not worth building. So 
says Marty Cagan, whose book takes you through how you should decide which 
products and designs to pursue, how to prove your proposed product will be 
successful, defining a minimum viable product, and juggling the conflicting 
needs of execs, customers, sales, engineering, and design. 

23 
 
 
 
 
 

8. The Design of Everyday Things: Revised and Expanded 

Ever pushed a door handle instead of pulled? Or examined a new device from 
every angle, baffled by how to turn the thing on? Cognitive scientist Donald 
Norman argues that design isn’t just looks meant to catch a customer’s 
attention; it’s the key to why some products satisfy customers and earn their 
loyalty while others flop. He’ll remind you not to get caught up in slick 
technology and forget that your main job is to solve human problems. 

9. 100 Things Every Designer Needs to Know About People 

Design isn’t just pretty, it’s purposeful. You want people to respond to your 
website in a certain way, or take a specific next action, so learn why people act 
the way they do: what grabs their attention? Is peripheral or central vision more 
important? What’s the best length for a line of text? What fuels people’s 
actions? Dr. Weinschenk uses her 30+ years as a behavioral psychologist to offer 
strategies for improving your site’s user experience and boosting conversion. 
 
10. Don’t Make Me Think, Revisited: A Common Sense Approach to Web 
& Mobile Usability, 3rd Edition 

First published in 2000, this bestseller is considered required reading for web 
designers and developers. The updated third edition includes fresh examples and 
a new section on mobile usability, plus tips to make navigation intuitive, user 
testing efficient (so you can do it more often), and your user experience seamless 
across all devices. 

11. Innovation Games: Creating Breakthrough Products Through 
Collaborative Play 

Research all you want, but when it comes time to roll up your sleeves and 
develop a product, predicting what your customers want, need, and will actually 
pay for can turn into a guessing game. Drawing on years of consulting 

24 
 
 
 
 
experience, Hohmann created 12 games development and design teams can play 
to get real insights into their end users’ underlying needs and desires. 

12. The Lean Startup: How Today’s Entrepreneurs Use Continuous 
Innovation to Create Radically Successful Businesses 

You’ve heard all about Lean, cutting waste, and process efficiency. All of that 
sounds great, but how do you apply those ideas and actually reap those benefits? 
Eric Ries shows how you can leverage Lean principles in a practical way to 
shorten development cycles, measure actual progress, and create a team that can 
adapt and adjust to changes and opportunities instantly. 
 
13. Lean Analytics: Use Data to Build a Better Startup Faster (Lean Series) 

What good is it to build a groundbreaking product if nobody wants it? Your 
business will fall flat if there’s no market for what you’re offering. By knowing 
what to measure and how to analyze the data you gather, you’ll be able to 
pinpoint your target customers, confirm whether the problem you’re solving is 
real (and profitable), and determine the best version of the product to build. 
 
14. Rocket Surgery Made Easy: The Do-It-Yourself Guide to Finding and 
Fixing Usability Problems 

Typical user testing is time-consuming and expensive. Learn how to do regular 
user testing with a few people who are representative of your end users and get it 
done in a single morning. How to text your design to find the most important 
problems and target your resources to fix them efficiently using the “least you 
can do” approach. By catching problems early, it’s easier to fix them. 
 
15. Dealing with Darwin: How Great Companies Innovate at Every Phase 
of Their Evolution 

Innovation isn’t just breakthrough technology or a revolutionary new product 
that disrupts the entire market. Innovation occurs at all stages of the product, in 
both emerging and mature markets. Use his lessons to keep your product and 

25 
 
 
 
 
company moving forward, no matter how big you are or how long you’ve been 
around. 

16. Lean UX: Applying Lean Principles to Improve User Experience 

Inspired by Lean and Agile principles, this book will teach you how to develop a 
minimum viable product, quickly experiment with different ideas, test them with 
real users, and perfect your chosen design. Find stories, guidelines, and 
templates to help you collaborate more efficiently with both your development 
team and end users, and set up a quick design process that gives users what they 
really want. 

17. Crossing the Chasm: Marketing and Selling Disruptive Products to 
Mainstream Customers (3rd Edition) 

Spur adoption not just among early users, but across every customer segment. 
Moore defines four stages of how a product spreads among its customer base: 
early adopters, the early majority, late majority, and laggards. The trick is 
crossing the gap between early adopters and the early majority, a chasm that 
many products and companies fail to bridge. Find out how you can spur adoption 
not just among your early users, but your entire customer base by capturing the 
attention of each vital user segment. 
 
18. Inside the Tornado: Strategies for Developing, Leveraging, and 
Surviving Hypergrowth Markets 

Once your product launches, you have a very small window of opportunity to 
convince mainstream customers to embrace it. This whirlwind is what Moore 
calls “the tornado,” and he presents marketers with strategies for reaching 
customers quickly so their products don’t take a nosedive after launch. In this 
follow-up to Crossing the Chasm, you’ll find strategies for moving between 
niche markets and winning as many customers as possible, as quickly as 
possible. 

19. The Four Steps to the Epiphany 

26 
 
 
 
 
Stop focusing on methodologies and start focusing on customers. Too often 
development teams build a product and when customers don’t bite, they scrap it 
and try again. Instead, Steve Blank focuses on Customer Development — a 
concept that’s since become one of the three pillars of the Lean startup. Learn 
how to pinpoint the right product for your specific market, using techniques 
Blank now teaches at UC Berkeley, Stanford, and the Columbia/Berkeley Joint 
Executive MBA program. 
 
20. The Sales Acceleration Formula: Using Data, Technology, and 
Inbound Selling to Go from $0 to $100 Million 

As an MIT alum with an engineering background, Mark Roberge challenges 
conventional sales methods with a metrics-driven, process-oriented approach. 
Applying his formula as SVP of Worldwide Sales and Services at HubSpot, 
Roberge helped the company grow from a three-person startup to an IPO with 
15,000+ customers and a billion-dollar valuation. Learn Roberge’s techniques for 
applying data to accelerate sales and generate demand for your product.  
 
21. Priceless: The Hidden Psychology of Value 

Product marketers play a key role in getting products off the shelves, and pricing 
is a huge part of that equation. In this book, author William Poundstone explains 
how behavioral decision theory changes the way business price products, along 
with proven strategies you can use to persuade customers to purchase. 

22. Marketing of High-Technology Products and Innovations (3rd Edition) 

This comprehensive introduction to the world of tech marketing explains all the 
variables you’ll need to consider when launching a product, as well as the 
logistics for managing the process. From migration paths and types of 
innovations to managing customer relationships, you’ll find a good balance of 
theory and real-world examples to get the knowledge you need on the world of 
tech marketing.  

27 
 
 
 
 
 

23. In Search of Stupidity: Twenty Years of High Tech Marketing Disasters 

Some products never take off, and others flop spectacularly. Learn from their 
mistakes to make sure the same thing doesn’t happen to you! Chapman points 
out all-too-common missteps so you can watch out for them in your own work. 
It turns out you don’t always have to have the best or most innovative product — 
you just have to make smart decisions. 

24. Positioning: The Battle for Your Mind 

Your customers have a zillion people talking to them, and they’ve learned to 
tune out the noise. How do you get through to them and grab their attention in a 
positive way? Learn how to choose the best name for your product, build a 
strategy for making the most of your current market position, use the right 
metrics to improve your campaigns, and pinpoint your competition’s 
weaknesses. 

25. To Sell is Human: The Surprising Truth About Moving Others 

Whether you’re pitching a colleague on a new idea, convincing your manager to 
support a passion project, or trying to sway a customer to switch from freemium 
to paid, we all spend our days trying to move others to act. Bestselling author 
Daniel Pink teaches you how to truly understand another person’s perspective, 
and craft clear, persuasive marketing messaging. 

28 

S-ar putea să vă placă și