<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">
	<channel>
		<title>Author at Infinum</title>
		<atom:link href="https://infinum.com/blog/author/josip/feed/" rel="self" type="application/rss+xml" />
		<link></link>
		<description>Building digital products</description>
		<lastBuildDate>Fri, 24 Apr 2026 14:02:14 +0000</lastBuildDate>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>

					<item>
				<image>
					<url>8045https://infinum.com/uploads/2014/02/becoming-a-ruby-on-rails-developer-0.webp</url>
				</image>
				<title>Becoming a Ruby on Rails Developer</title>
				<link>https://infinum.com/blog/becoming-a-ruby-on-rails-developer/</link>
				<pubDate>Wed, 19 Feb 2014 14:50:00 +0000</pubDate>
				<dc:creator>Josip Bišćan</dc:creator>
				<guid isPermaLink="false">https://infinum.com/the-capsized-eight/becoming-a-ruby-on-rails-developer/</guid>
				<description>
					<![CDATA[<p>How did you learn {programming language}? I&#8217;ve been asked this question many times and, to be honest, never knew how to properly answer. </p>
<p>The post <a href="https://infinum.com/blog/becoming-a-ruby-on-rails-developer/">Becoming a Ruby on Rails Developer</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</description>
				<content:encoded>
					<![CDATA[<div
	class="wrapper"
	data-id="es-162"
	 data-animation-target='inner-items'>
		
			<div class="wrapper__inner">
			<div class="block-blog-content js-block-blog-content">
	
<div class="block-blog-content-sidebar" data-id="es-92">
	</div>

<div class="block-blog-content-main">
	
<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-95"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-93">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-94'
	>
	How did you learn {programming language}? I’ve been asked this question many times and, to be honest, never knew how to properly answer. I’ve always tried to reminisce back to the point when I first started working with it, but that point has always been vague and blurry.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-98"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-96">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-97'
	>
	I remember the point when it was necessary to learn a new language, and after that comes the point when I’m already using it at a more-than-a-beginner level. However, I vaguely remember the process of learning it.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-101"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-99">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-100'
	>
	You need a process</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-104"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-102">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-103'
	>
	When Tomislav, Matej, Nikola and I first started doing some serious work at Infinum, we were our own project managers, software architects and developers. We helped each other with knowledge and advice, and whenever it was necessary to learn something new – we just did it.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-107"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-105">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-106'
	>
	Now that Infinum is a 40+ people company with an expanding web development team I’m in charge of, the situation is not that simple. To stay efficient, we need to coach people by channeling their learning with a specific goal in mind and specific technology. This time around, the technology in question is <strong><a href="https://infinum.com/ruby-on-rails-development-services/">Ruby on Rails</a></strong>.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-110"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-108"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-109">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2014/02/becoming-a-ruby-on-rails-developer-1.webp"
					class="image__img block-media__image-img"
					alt=""
										height="420"
															width="693"
										loading="lazy"
					 />
					</picture>

			<figcaption class="image__figcaption block-media__image-figcaption">
			Mentoring at Rails Girls Zagreb		</figcaption>
	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-113"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-111">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-112'
	>
	Ruby on Rails is an amazing web application framework, simple enough for anyone to start using it and robust enough to overcome even the biggest obstacles. Being a <a href="http://railsgirls.com">Rails Girls</a> mentor helped me see it from a non-programmer perspective and realize what are the three key challenges in learning Rails:</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-116"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-114">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-115'
	>
	<li><strong>Understanding Ruby</strong> – as much as Ruby is a fantastic language itself, Rails adds another layer of complexity. It can be tough for a beginner to tell the language and the framework apart.</li><li><strong>Understanding the MVC pattern</strong> – it might seem obvious which code goes where to an experienced programmer, but a beginner could end up with fat (or better say, obese) controllers or overly complex views.</li><li><strong>Understanding the object-oriented model</strong> – to use Ruby <em>in a smart way</em> with Rails, you need to understand the OO model properly.</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-119"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-117">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-118'
	>
	So, how to start learning Ruby?</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-122"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-120">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-121'
	>
	If you know how to write a simple sentence in English, it will probably be fairly easy for you to write your first couple of lines of Ruby code. Being a <strong>dynamic and object-oriented language</strong>, Ruby brings a lot of syntax sugar that really makes you think you’re reading a sentence. Of course, eating too much sugar can be dangerous. The same goes for not understanding what you’re doing in Ruby.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-125"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-123">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-124'
	>
	<li>For a total beginner, a good first step is trying Ruby inside a browser – for example <a href="http://www.codecademy.com/">Codecademy</a> or <a href="http://www.tryruby.org/">TryRuby.org</a></li><li>Have you fallen in love with Ruby already? That’s great. The next step is installing Ruby on your machine so you can use it locally. Try <a href="http://rubyinstaller.org/">RubyInstaller</a> (if you’re using Windows) or go ahead with a Ruby version manager like <a href="https://github.com/sstephenson/rbenv#installation">rbenv</a> and <a href="https://github.com/sstephenson/ruby-build#readme">ruby-build</a> (if you’re on a Mac or Linux).</li><li>Online tutorials are great, but reading a book about the chosen subject is much better. One of the best books about Ruby is strangely called <a href="http://pragprog.com/book/ruby3/programming-ruby-1-9">Programming Ruby</a>. Go read it!</li><li>Screencasts are popular both in Ruby and Rails communities, and you can find great screencasts on <a href="http://www.rubytapas.com/">Ruby Tapas</a>.</li><li>While <strong>Test Driven Development</strong> isn’t really a part of learning a programming language, it goes hand in hand with Ruby and Rails. There is an excellent course that will teach you TDD while introducing Ruby to you. Visit <a href="http://rubykoans.com/">rubykoans.com</a> and give it a go!</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-128"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-126">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-127'
	>
	OK, now you’ve mastered Ruby. What about Rails?</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-131"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-129">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-130'
	>
	<li>Your first stop should be the <a href="http://guides.rubyonrails.org/">Rails Guides</a>. Here you can find everything about Rails and also a tutorial for adding Rails to your existing Ruby installation.</li><li>There’s no way around books if you want to become a good developer. I would recommend reading <a href="http://pragprog.com/book/rails4/agile-web-development-with-rails-4">Agile Web Development With Rails</a> from the creator of Rails, David Heinemeier Hansson.</li><li>Try to familiarize yourself with <a href="http://git-scm.com/">Git</a> and <a href="https://github.com/">GitHub</a> as it will help you deploy your applications, track changes you’ve made and allow others to collaborate. The entire Ruby on Rails community revolves around GitHub, so familiarity here will be useful.</li><li>You’ll want to try out your creations and deploy them to a real server. I suggest going with <a href="https://www.heroku.com/">Heroku</a>, a cloud <a href="http://en.wikipedia.org/wiki/Platform_as_a_service">Platform as a Service</a> provider that’s super easy to use.</li><li>There are a lot of excellent screencasts available on <a href="http://railscasts.com/">RailsCasts</a>. Also, Richard Schneeman, one of the Rails contributors, has great materials from a <a href="http://www.schneems.com/ut-rails/">course he gave</a> at the University of Texas.</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-134"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-132">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-133'
	>
	Last but not least, if you are feeling especially eager, I would suggest you try and read the Rails source code. You’ll learn a great deal about the underlying architecture, but also new and interesting ways to solve problems in Ruby. Start by going through the <a href="http://api.rubyonrails.org/">documentation</a> and then explore it further.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-137"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-135">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-136'
	>
	This is how we (try to) do it</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-140"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-138">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-139'
	>
	Since <em>every man for himself</em> isn’t really the best option for an organized development team, having a standard learning process in place is useful. We have several ways to teach and learn Rails (and other programming languages):</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-143"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-141">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-142'
	>
	<li><strong>Mentoring</strong> – we assign mentors to new developers. The mentor guides a developer on a <a href="https://infinum.com/news/extra-give-praise-where-praise-is-due/">starter project</a>, teaching them all the essential parts of the architecture. In the next phase, the developer starts working on a real-life project.</li><li><strong>Code review</strong> – a great way to share knowledge, where people comment on other people’s code; <a href="http://oss-watch.ac.uk/resources/pullrequest">pull requests</a> are an excellent feature that help experienced developers share their knowledge with juniors and, at the same time, make sure that the production code remains high quality. The only downside is that a junior is “blocked” (can’t continue working on a feature) until someone finishes reviewing the code.</li><li><strong>Pair programming</strong> – Even the best developer finds another pair of eyes checking their code useful; when two people work together on a feature, this helps them both improve their skills. The obvious downside is that you’re spending twice the manpower for the same amount of work.</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-146"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-144">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-145'
	>
	Being practical, we use these methods depending on the needs of a specific situation. We don’t use pull requests, pair programming or mentoring all the time on all our projects… Just when we feel these methods outweigh conventional systems.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-149"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-147">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-148'
	>
	And it all comes down to…</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-154"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="blockquote block-blockquote__blockquote" data-id="es-150">
	
	<div class="blockquote__content">
		<i
	class="icon blockquote__icon icon--size-16 icon--scale-100"
	 aria-hidden='true' data-name='blockquote-24' data-id='es-151'>
	<svg fill='none' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path clip-rule='evenodd' d='m12 24c6.6274 0 12-5.3726 12-12 0-2.79685-.9568-5.37021-2.561-7.41062-.581.22951-1.0832.60583-1.5069 1.12898-.5132.60844-.7698 1.41969-.7698 2.43375v.07605h2.5789v5.59004h-5.6197v-5.01962c0-1.11547.154-2.06616.4619-2.85205.3336-.81125.757-1.48307 1.2702-2.01545.528-.52161 1.1175-.92155 1.7687-1.1998-2.0728-1.70651-4.7279-2.73128-7.6223-2.73128-6.62742 0-12 5.37258-12 12 0 6.6274 5.37258 12 12 12zm-3.53811-18.05347c-.30793.78589-.46189 1.73658-.46189 2.85205v5.01962h5.6197v-5.59004h-2.5789v-.07605c0-1.01406.2566-1.82531.7698-2.43375.5389-.63379 1.1804-1.05209 1.9245-1.2549v-2.28164c-.7441.07605-1.4626.25351-2.1555.53238-.6928.27887-1.3086.68449-1.84752 1.21688-.51321.53238-.9366 1.2042-1.27019 2.01545z' fill='currentColor' fill-rule='evenodd'/></svg></i><p	class='typography typography--size-36-text js-typography blockquote__quote'
	data-id='es-152'
	>
	Experience is what you get when you didn’t get what you wanted.</p>
		<div class="blockquote__caption-wrap">
			<div	class='typography typography--size-12-text-roman js-typography blockquote__caption'
	data-id='es-153'
	>
	Randy Pausch, The Last Lecture</div>		</div>
	</div>
</div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-157"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-155">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-156'
	>
	In the end, the best way to learn anything is to try it and learn from experience. Having a great community or a team can be of great help, but your personal effort and dedication is what matters most.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-160"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-158">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-159'
	>
	Learn the basics and give yourself a goal to finish a small project. If you persist and do it despite the setbacks (and trust me, there will be many), you will be equipped with the knowledge and experience to make something bigger and better. This is precisely how every good developer and, in general, every good professional starts their career.</p></div>	</div>
</div>
</div>		</div>
	</div><p>The post <a href="https://infinum.com/blog/becoming-a-ruby-on-rails-developer/">Becoming a Ruby on Rails Developer</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</content:encoded>
			</item>
		
	</channel>
</rss>