Over the last several months, I’ve had conversations with more than two dozen aspiring Ruby and Rails developers, both online and in person.
And when I ask them what they’d like to accomplish after they improve their web development skills, the responses are almost always a combination of these three goals…
- Start freelance-consulting while looking for a full-time Ruby and Rails position
- Getting a full-time Ruby and Rails developer position, either remotely or locally
- Building micro SaaS apps that could generate additional income in the long term
They go on to tell me that it’s taking them more than 90 days to accomplish any one of these goals. They find themselves reading books, taking courses, attending bootcamps…
…and completing countless tutorials, but they aren’t able to make significant progress towards their career goals as professional Ruby and Rails developers.
They feel as though they’ve cloned the same ecommerce and social network app a 1000 times, yet there’s no indication their technical skills are growing and they keep running around in a never-ending circle.
At first, I thought they weren’t aware of all the tried and tested systems for accomplishing all of their career goals faster, one after the other, systematically.
So I’d immediately jump into showing them how they could also use The Briefcase Technique and The Stairstep Approach to produce measurable results with their work, stand out from their peers and be the helpful programmer to their team, freelance-consulting clients and/or employer.
But something strange happens at the end of every single conversation.
Once I finish explaining how they could also provide killer solutions to one or two clients and then leverage that experience into a full-time position or more lucrative projects, they’d immediately reply with statements along the lines of:
“That makes perfect sense, but I don’t feel ready to start working on client projects. I’d like to keep practicing and building new portfolio pieces before I start looking for work.”
What I hear is that they don’t have the confidence they desperately need sell themselves to potential clients and/or employers. They don’t believe in their own capabilities to ship web products that make an impact using only their current Ruby and Rails skills.
They don’t have clarity about how they can break into the software industry in no time.
That’s why this guide is designed to help you acquire the foundational skills you need to become a confident Ruby and Rails developer, in 90 days.
Using books, video courses and practical projects…
Our goal is to build a solid foundation that you can expand on to become a professional software developer who uses Ruby, Rails and related tools to create value for yourself, employers and freelance-consulting clients.
Becoming a Confident Programmer In 90 Days
It’s essential that you complete all of the core activities and assessments.
The core activities are meant to teach you fundamental concepts, and the assessments are designed for you practice the concepts in a new, unfamiliar situation because you can’t master a new skill without applying what you’ve learned almost immediately.
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 also encourage you to read the entire guide before you start doing anything.
It’s important to always know where you’ll end up before you invest your precious time and a small fortune in acquiring new and exciting skills.
Let get started, shall we…
JUMP AHEAD and use your browser’s back button to get back here…
There isn’t a shortage of resources when it comes to learning Ruby, Rails and related tools for building SaaS and digital products, so I’m only going to show you the exact books and courses I used to master the “hard skills” of software development.
These are the same resources I recommend to all new team members at Enza Academy, where I’m a product development coach, so that we are all better prepared to perform our duties and serve our students.
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 even get your foot in the door these days, especially if you’re a recent graduate.
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. It’ll also ensure you’re never undervalued and underpaid for your skills and knowledge again.
Here are the bare minimum books and courses you must have in your library if you’re really serious about breaking into the uber-profitable web development industry too.
|The Passionate Programmer
by Chad Fowler
|Ruby Programming Course
by Pragmatic Studio
|Don’t Make Me Think by Steve Krug||Instant Sinatra Starter by Joe Yates|
|Everyday Rails Testing with RSpec by Aaron Sumner||Ruby on Rails Level I Course
by Pragmatic Studio
|TheorySprints by Jarrod Drysdale||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 these 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 simple 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.
As one of my coaches always says, those who pay…pay attention.
Those who don’t give up too easily, blame every resource at their finguretips and never hold themselves accountable for their lack of progress.
In the summer of 2010, I wanted to learn Ruby on Rails while I was still a college student, but I couldn’t accomplish any of my actual goals.
You could say I failed miserably and everything I did was a complete waste of time.
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 principles to teach himself the basics of Ruby programming and web development with Sinatra and other creative skills.
After failing to improve fast enough for my liking and almost gave up on learning web development, I suspended my disbelief and applied the principles when I decided to take another stab at learning Ruby, Rails and related technologies.
Since then, I’ve built Ruby gems and released Rails apps I’m proud of.
And I’ve applied the same principles to learning various other skills, including Copywriting, Marketing Automation and Data Analysis.
Here’s a quick rundown of the 10 major principles of Rapid Skill Acquisition that’s mentioned in the book, plus another principle that I believe makes the entire concept of RSA complete.
I’ll show you how I applied these 11 simple principles to teach myself Ruby and Rails and related tools in record time. Before we start looking at each of these principles…
…it’s important to remember that RSA principles help you train to become an amateur faster so that you can enjoy the proverbial 10,000 hours of practice required to become an world class expert in any field.
RSA Principle #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 digital 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 original Rails apps became profitable products…
…because I lacked the marketing skills then, I was still able to practice because I was temporary motivated to launch them quickly.
To learn Ruby, Rails and related tools fast, you need a practical project you can work on.
Josh Kaufman learned Ruby and Sinatra because he needed to rebuild his business website to support more concurrent users so that he could sell more books.
I believe DHH wouldn’t have learned Ruby (or even created Rails) if he wasn’t motivated to build Basecamp with Ruby, working only 10 hours per week.
And more recently, I wouldn’t have learned how to build Rubygems if I didn’t need custom command-line apps for work and I wouldn’t have learned to consume APIs in Ruby if I wasn’t motivated to connect with SaaS founders and their teams.
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 its simplest form.
RSA Principle #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 imagined you could be.
RSA Principle #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 know 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 one 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.
RSA Principle #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, Rails 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 know enough to handle them.
Here is a brief history of my journey into web development with Ruby, Rails and related tools. In 2010 (The Social Network movie 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 life.
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.
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.
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.
RSA Principle #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, tennis shoes and the right tennis balls, 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, coaching, 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 and take the multi-media approach.
Use books, videos courses or in-person instructions, when appropriate. And if you feel adventurous, use docs for each of the technologies you’d like to become productive in.
RSA Principle #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 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.
RSA Principle #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.
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 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. For busy people, practicing for 90 minutes or more a day is ideal for using Rapid Skill Acquisition principles gain the foundational skills of web development.
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. 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 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.
RSA Principle #8 – Create Fast Feedback Loops
Getting fast feedback is likely the most important principle of Rapid Skill Acquisition; creating fast feedback loops means 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.
From a personal experience, 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 works 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.
RSA Principle #9 – Practice By The Clock In Short Bursts
Another principle 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.
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.
RSA Principle #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.
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.
RSA Principle #11 – Teach Everything You Know
I added this principle to Josh Kaufman’s Rapid Skill Acquisition principles because I believe teaching is the fastest route to mastery and expertise in every field.
To practice this principle, simply maintain a blog, a YouTube channel, an email newsletter or answer questions on forums to share some of things you’re learning as your practice because it solidifies your understanding of topics.
You’re reading this on “ReProfit Lab” right now; this very guide started its life as a series of blog posts all the way back in 2013. If you’ve learned one or two lessons from it, I encourage you to teach everything you know too.
It doesn’t matter if this is your first hour of learning web development with Ruby, Rails and related tools. There’s someone out there who knows less than you right now and will appreciate your perspective.
You don’t have to wait until you’re a “professional developer” to start being helpful.
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 are highly recommended. Pick one text editor and master the interface and shortcuts.
You’ll also need a GitHub, GitLab or BitBucket account to host your source code, manage projects and build software alongside other developers.
I prefer GitHub because it’s more popular amongst Ruby and Rails developers, and has several integrations with advance software delivery tools that you’ll discover later.
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 and learning Ruby will give you the foundation you need to develop Ruby, Sinatra / Padrino and Rails applications, including other rack-based application.
Learning Objectives – You should be able to…
- Understand and use Ruby Language Constructs
- Write Object-Oriented Ruby programs
- Understand and apply Object-Oriented Design Principles
- 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
Core Activities, Assessments and Retrospection #1
Enroll and start this Ruby Programming course by Pragmatic Studio.
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 foundation in software development with Ruby in 90 days.
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.
As you know, software developers learn about new business domains before they’re able to write software that has the correct business logic.
Assume the Ruby app will be used by one “trusted leader” to record every transaction to a digital file, instead of pen and paper.
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.What’s your impression of Ruby vs another language you alresdy know?
e. Which tips from The Passionate Programmer resonate with you?
And how do you plan to use them to create a remarkable career too?
f. Set up a Jekyll blog, deploy to GitHub pages & publish your first retrospection.
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
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’ve dabbled with web development before, so it’s better to use this book as a reference.
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.
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.
Start reading Don’t Make Me Think by Steve Krug.
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.
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.
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
Core Activities, Assessment and Retrospection #3
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.
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.
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 your Rails app.
Here are a few questions to brainstorm a topic 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 completed at least one Rails tutorial, what are some similarities and difference between Rails and Sinatra?
Ruby on Rails, often shortened to Rails, is an open source web application development framework created by David Heinemeier Hansson (DHH) 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 worldwide.
Rails is also popular amongst SaaS startups and there are many consultants that specialize in developing Ruby on Rails applications.
Learning Objectives – You should be able to…
- Create Models, Views and Controllers, with Generators
- Create Models, Views and Controllers without Generators
- Create a Forms that saves records into a database
- Query the database for Records
- Validate ActiveRecord objects
- Create One-to-One ActiveRecord associations
- Create 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
Enroll and start this Rails 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.
Continue reading Everyday Rails Testing with RSpec; and/or move on to Practical Object-Oriented Design In Ruby. Remember to take notes while reading.
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.
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?
c. Explain a new concept you learned, including when you’ll apply it?
Learning Objectives – You should be able to…
- Understand and use Click Handlers
- Understand and use Event Handlers
- Understand and implement AJAX requests
Core Activities, Assessment and Retrospect #5
Enroll in TheorySprints by Jarrod Drysdale.
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.
Since you have built a strong foundation in Ruby and Rails, you now have the prerequisite knowledge to skim any advance technical book for Rubyists.
You’ll now be able to take any resource, find and use exactly what you need to complete the task at hand, and ignore everything else that’s not relevant at the moment.
Here’s a handful of resources I’d recommend you add to your reading list if you’re really serious about accelerating your progress towards world class mastery, so that yo can charge more.
- Ruby Science by Thoughtbot
- Multitenancy with Rails by Ryan Bigg
- Confident Ruby by Avdi Grimm
- Take My Money by Noel Rappin
- Modular Rails by Thibault Denizet
- Your Customer Creation Equation by Brian Massey
- The Automatic Customer by John Warrillow
- Intercom on Product Management
- Hooked: How to Build Habit-Forming Products by Nir Eyal and Ryan Hoover
- Well-Designed: How To Create Products People Love by Jon Kolko
You’re now ready to model what works right now, solve business problems with software for your freelance-consulting clients (or full-time employer)…
…and ship useful Ruby and Rails products that sell anytime you want.