Skip to content

Serradas

Training Fundamentals

learn, training3 min read

I want to improve my software shipping skill. For that I'll follow a training regime for writing SaaS web applications.

The process can be summed up like this:

Write and finish as much software as you can.

There you go. You can stop reading now.

You're still here? I'll list the most common advices that we give as software engineers. The one I got when I was starting out as a developer.

I'll explain why it doesn't work as many people would expect it to do. The Pots' story from the book Art & Fear illustrates this point pretty well.

Finally, I'll note the number of things you need to know to do a SaaS.

Common advices in our industries to improve as a software engineer are passive.

  • Read Books
  • Get your code reviewed by senior developers
  • Read the source code of popular projects.
  • Attend conferences.
  • Find a mentor.

Most of my career when other developer asked me for advice I'd have said something similar.

I followed every single recommendation. My skills improved theoretically. I'd know where to look for documentation and how to reason about problems. But that's a different skill set than the one we're training.

The only way to improve a skill is to do it consistently.

You can read all the books you want about swimming but if you never get into the pool you'll never know if you can swim or not.

The pots' story from Art and Fear and also written by Eric Scott in his blog illustrates well this point (just copying here):

A pottery teacher split her class into two halves.

To the first half she said, “You will spend the semester studying pottery, planning, designing, and creating your perfect pot. At the end of the semester, there will be a competition to see whose pot is the best”.

To the other half she said, “You will spend your semester making lots of pots. Your grade will be based on the number of completed pots you finish. At the end of the semester, you’ll also have the opportunity to enter your best pot into a competition.”

The first half of the class threw themselves into their research, planning, and design. Then they set about creating their one, perfect pot for the competition.

The second half of the class immediately grabbed fistfulls of clay and started churning out pots. They made big ones, small ones, simple ones, and intricate ones. Their muscles ached for weeks as they gained the strength needed to throw so many pots.

At the end of class, both halves were invited to enter their most perfect pot into the competition. Once the votes were counted, all the best pots came from the students that were tasked with quantity. The practice they gained made them significantly better potters than the planners on a quest for a single, perfect pot.

Developers tend to get stuck in the researching, planning and designing loop. Trying to make everything perfect. Finding the best practices and the best frameworks. This is useless for reaching the end goal: writing something useful.

Having said that we still need to have a small plan to improve certain skills

If you want to build Software as a Service applications. You'll need to focus on the following areas:

  • Basics of a web application.
  • CSS.
  • Pricing Page and Subscription.
  • User Management.
  • Deployment.

Let's go through each of them.

Basic of a Web Application

There is a never-ending way of building web applications. I choose Ruby and Rails.

An Elegant Weapon for a more civilized age.

I learned Ruby + JavaScript a long time ago. Basically by reading all the books I could find. Here are some old and new articles for learning it:

CSS

CSS is my weakness. I'll write another article about this. But for now I'll use:

Pricing and Subscription

User Management

Deployment

So there you go. I believe that the only way of improving a skill is to consistently do it. Common practices to improve are normally passive and they don't work as expected. My plan is to go through the basics of a web application, CSS, pricing, user management and finally deployment.

References: