The Story Of How I Got Into Web Development
Tags: webdev, beginners, rails
Published: 2019-06-08 10:07:08

*I'm not sure if there are people interested in this, but here we go anyways.*

# Web development in college
I studied my Bachelor and Master's degree in Information Services / Embedded Systems in a [small university of applied sciences in the Austrian region of Vorarlberg](https://www.fhv.at). During the studies, we were mostly trained for C/C++/Java/Assembler development. Which was great, because I learned loads of stuff that would benefit me later. But we only kinda scratched the surface of web development with Java-based tools (JSP, JSF, etc.).

However, I was always interested in distributed systems and wanted to create things that people would be able to use with ease (just accessing a web site). Stupidly enough, I didn't put in the extra effort to learn web techniques on my own.

# An offer I couldn't refuse
In 2011, a few weeks after I graduated, I got an interesting offer through connections I had - "Hey Marc, why don't you come to work in Mexico in this university? We're planning to build a system for managing students in this university. We need someone trained who can do this".

I took a couple of days to consider the offer. I'd have hand over what technologies to use. "I **should** be well-prepared for this, after all, I'm holding this Master's degree.", I thought.

As I didn't have any other plans back in Luxembourg I accepted the offer and started my immigration paperwork with Mexican authorities.

After three months of working as a temporary mobile developer to save some cash and wait until my work visa was approved, I headed to the town of Coatzacoalcos in the south-eastern state of Veracruz.

# The adventure in Mexico
Ah yes, Mexico. Hot sun, great food, really nice people.
**Everything** in Mexico is different than it is as I knew it from Europe. The way people treat each other, the way things are done, the way people talk. Heck, even toilets work differently.

So the first few months, I "acclimatized" to my new environment. Turned out the two Spanish courses I took in college were not enough to talk at  professional level, so I learned Spanish "in the streets", got familiarized with the university's infrastructure, stakeholders, future users. Got a hold of Mexican customs and how to "blend in" (difficult for a European to do in the south-east of Mexico).

I also tried to wrap my head around the new task, which at the moment seamed close to impossible for me.

# The first web application

The requirements for the software system were the following:

> We want to inscribe our students digitally in their corresponding semesters. The professors then would enter the students' grades and the students would evaluate their teachers. Our payment department should be able to register each student's payments, and they should receive some sort of notification if some payment is overdue. It should also be connected to the bank's system so that it registers payments automatically.

From there on, it was crystal clear to me: We need to build a distributed application. **We're going to build a web application!**

So I began to explore how web development was done, and back then it seemed that Ruby on Rails and Django were very popular. I found a Rails tutorial that helped me build a Twitter application. Boy, it was fascinating.

Everything just "kinda worked" and I didn't know why. The magic behind Rails. It took me two weeks to program it, of course with the help of the tutorial. Turned out, it got me confident enough to start tackling the task at hand - building the university's software.

# The monolith
I don't exactly remember the order in which I programmed things, but I was pretty sure I started out with the user management system using [Devise](https://github.com/plataformatec/devise). Then, I wrote student registration.

My Spanish started to get better, so I got to hire people to help me develop the software. They were mostly sponsored students that needed to help in some department of the university to "pay" for their scholarship.

Within a couple of months, the whole thing got so complex that I couldn't believe that only little time before, I was battling with book, just typing whatever the book said. I understood the deeper workings of Rails, by just programming stuff.

> **And I think there's an interesting take-away here for beginners** - Get some basics, and then just start coding. You don't need to know everything in order to get started.

# Rolling it to production

After the first usable version was ready (running locally), we rolled it to an AWS server. Which is way easier said than done.

We set up an Ubuntu server and installed all the necessary stuff to run our application. I don't quite remember what the exact problems were, but we had quite some trouble to get it to work nice in the prod environment. But I do remember that it was a huge problem we only used SQLite in development.

> **Maybe another take-away here** - Go in production as soon as possible. Because I guarantee you, the longer you wait, the more problems will arise.

When it was finally running smooth in production, turned out that the university's internet was too slow to work good with the platform. So we had to tweak it and use more AJAX and less full site reloads. That was one of the big biggest architectural redesigns we had.

# Summary
I could go on about this, but it would probably be uninteresting. In short: I went from zero to building fully blown, productive (used by 1000+ users) web application together with a team by just starting to write code.

Maybe this is not something to be proud of, but it is what was necessary at the time and it got me really fired about web development.

> **What is important though** when you just learn as you go, you need to continuously refactor your code to reflect best practices you learn along the way.

Now tell me - What's your story? How did you get into web development, or what is keeping you from doing it? I'll happily answer all questions on Twitter ([@_marcba](https://www.twitter.com/_marcba)).