How to Go From Hobbyist to Professional Developer

Article by kenrogers

Afew years ago, I was bouncing back and forth between landscaping jobs and restaurant jobs. I had just left college, and didn’t know what I was going to do with my life.

I had a lot of ideas, but no direction. During that time, I started teaching myself programming. At first it was a hobby. I thought it was cool to be able to build things using nothing but my brain and some code.

But then I started thinking about where my life was going, and saw this as a potential living.

At first, I put the idea out of my head. I couldn’t afford real education. I already dropped out of college once because of money, and if I went in for computer science, I’d have to start over.

I’d leave with 6 years of school and well over $50,000 in debt if I took that route. So that wasn’t an option.

Then I started thinking that I could teach myself web development well enough to get an internship.

My initial plan was to introduce myself to a few companies in my town, and ask if they would want to meet with me. I wanted to discuss the potential of me working with them while I was in school. That way I could pay for school and get some experience at the same time.

So I got serious about web development.

Instead of tinkering I started to build a real portfolio and document my skills.

I started becoming active on places like Stack Overflow.

I built a few practical applications and put them on GitHub. They were nothing fancy, but they demonstrated that I knew how to code.

One company didn’t offer me a part time job. They didn’t say to come back after I had my degree. They offered me a full-time job on a 6 month trial basis as their new Junior Developer.

I was over the moon. It turns out that once I got serious and started developing with a purpose, I taught myself quite a bit.

I was able to answer their questions. I was able to walk them through the modest applications I had built. And I was able to explain how my projects worked.

I stayed at that company for two and a half years, and then took a job as a web developer for the city I live in.

View yourself as a lifelong apprentice

An important part of my transition into a professional developer role was viewing the time I spent with my previous company as an apprenticeship. I learned as much as I could.

The real-world knowledge gained from working at a company is invaluable. Knowing how to work with clients, coworkers, and within constraints is essential. This is something you can only learn in the field.

While I may know more now than I did when I first started that job, I’ll never stop viewing myself as an apprentice. One of the requirements for being a great developer is the desire to continue learning. The minute we see ourselves as having mastered a skill is the minute we stop growing.

Hemingway said it best:

We are all apprentices in a craft where no one ever becomes a master.

He was talking about writing, but it applies to development as well.

The combination of teaching myself and working for a company has allowed me to learn so much (I’m even writing a book). I understand the technical practice of web development, and also how to go from a hobbyist to a professional. It’s a path that anyone can take, regardless of your time or abilities.

To give you some perspective, I was working two jobs at once — one of which involved getting up at 4 a.m. to drive a forklift around.

Learning to code as a busy adult takes determination, drive, and a stubborn persistence.

Making the transition from Hobbyist to Professional

Here’s a process that you can follow. The exact journey will be different for everyone, but there are steps you can take to get you on the right path.

1. Realize that you can do this

Anyone can teach themselves to be a developer. There’s this idea that being self-taught is something only a certain type of person can do. They’re right in a sense. You need to be self-driven and motivated by something other than immediate payment. But anyone can become this type of person.

There’s this idea present in our society that some people are born with certain traits and others aren’t. It’s detrimental to growth, and one of the reasons why so many people feel unfulfilled in life.

If you always felt that you either “had it” or you didn’t, it would be very easy to get discouraged.

I want to put that myth to bed right now. Anyone can learn to be self-motivated and teach themselves programming. Or start a successful business. Or achieve a long-term goal.

It’s not about catching a big break, or being born with the right traits. It’s about perseverance.

If you can put your head down, push through the hard times, and commit, you can do anything you want to.

That last part is super important, but I want to provide a warning before moving on.

People are often too quick to embrace their own successes and the successes of others. It’s known as survivorship bias.

There is an element of luck in everything. Sometimes things just work out. For example, I contacted a web development agency and was lucky enough that they happened to be looking for someone at that moment, and I happened to fit what they were looking for.

But what is luck?

Sure, I was lucky to get that job, but I never would have been lucky if I hadn’t made the decision to teach myself development. And then made the decision to apply to that job.

Luck does play a factor, but the myth is that it is all up to luck. You can increase your odds of getting lucky, you just have to be willing to put yourself out there.

But luck will never find you if you don’t commit to being great at something.

2. Commit to being incredible at your craft

One of my biggest weaknesses is that I get bored and distracted. I want to jump into the next project. This tendency will kill your success.

It feels like freedom. Being able to bounce between whatever project happens to suit your mood that day, but…

It’s a trap! If you take away nothing else from this article, let it be this:

The number one key to succeeding in becoming a professional developer is to commit. Commit and never stop until you make it happen.

This applies to everything.

People stress out about which framework to use. But what matters is picking one and sticking with it. You can transfer and learn new languages and frameworks later.

What matters is the problem solving skills you will gain when developing. The ability to think like a developer.

I taught myself programming using Laravel, but the company that hired me used CakePHP. It didn’t matter. They knew I could pick up the technical skills required to switch frameworks.

Pick a direction and see it through, no matter what. You have to remove the possibility of getting distracted by something else.

Few feelings can compare to the relentless pursuit of mastery of a craft.

It isn’t easy. Once you learn to ignore distractions, you will notice an increase in enjoyment of your work.

Mike Rowe is fond of saying that people shouldn’t start with finding their passion.

People are so unhappy because they look for the perfect career. They look for the one that they are passionate about.

But passion comes from an unstoppable desire to be incredible at your craft. Once you adopt that mindset, your abilities as a developer will take on a new life.

3. Start building things immediately

Aspiring developers can get stuck in the trap of reading too much without taking action.

Tutorials and books are great for learning the basics. The problem is that they instill a false sense of confidence in the developer.

Have you ever finished a programming book and gone to build something on your own only to realize you had no idea how to go about doing it? Then you know what I’m talking about.

The solution to this is simple, but not easy.

Start building.

Make something. Make an app that solves a problem you have in your own life, or that addresses an issue for someone close to you.

Make something for fun.

Make something and put it out there. Make it open source and put in on GitHub. You aren’t doing it for anyone else, it’s for you, so don’t worry about other people’s opinion of it.

Your code will be ugly at first. I look back at some of the code I wrote even a few months ago and want to vomit. But you can’t learn development without building stuff. Books are fantastic, and I am obsessed with reading as many as possible. Then you must apply that knowledge.

You’re going to run into issues and you’re going to struggle. That’s good. Those are the times we learn the most.

Start off by building things that solve problems, I’ll talk more about that in step 6 below.

4. Set up an online presence

As soon as you start building things, you’ll want to set up an online presence. Your GitHub account will be a great start.

This is where you’ll be able to house the projects you are working on and share them with the world.

But you want to go further than this. I recommend setting up your own portfolio site.

This site will do a few things:

  1. It will serve as a public place to tell potential employers about yourself
  2. It will be another place where you can showcase your work
  3. It will serve as your platform

That last one is huge. Once you start building things, you should immediately start writing about them. Start a simple blog where you share what you are working on and teach everything you know.

This is one of the best ways to give potential employers a taste of who you are and what you can do. It’s a way to get your name out there and start building a platform for yourself.

This can lead to job opportunities and the possibility to make more income on the side by writing books or freelancing.

Your site should serve a very specific purpose.

Most people create an online resume, but you should do more. What is your specific goal? Your website should be designed and created around that goal.

If you want to get a job working on a certain kind of project or with a certain framework, put that in your site.

I recommend having 4 core areas for your site:

  1. Home page

Your home page is the entry point to your site. It should provide a very brief overview about who you are and what you do. And should direct people to go where is most relevant for them.

For example, you could have two main buttons. One leading people to your writing section to learn more about web development, and one leading to a hire me page if someone is interested in hiring you.

2. Writing

This is where your blog and your tutorials will live. Write as much as you can here, and don’t be afraid to share it.

3. About

A simple about section that goes into more detail about who you are and what you do. Don’t make this a life story. Again, target this section to be relevant towards what you want to do.

Rather than talk about your personal life, talk about what led you to web development, your journey so far, and where you want to go. Mention some of your favorite projects and link to them.

4. Hire Me

An essential part of your site, this is where people will go if they are interested in hiring you as a developer.

Make sure to find the right balance between selling yourself and being honest. There may be some overlap between this page and your about page, but this page will be more specific about your skills and what you bring to the table.

This page should also have a contact form so people can get in touch.

In addition to your own site, start offering to write for other major publications. Then you can provide a link back to your site in the bio section.

5. Start teaching everything you know

Nathan Barry is a big fan of teaching everything you know. He tells the story of Chris Coyier, founder of CSS Tricks.

That site started out as Chris publicly writing about what he was learning so others could follow along. Now it’s one of the biggest web development sites out there.

The lesson here is that you don’t have to be the world’s greatest expert to start writing about something and teaching it.

In the online business world, there is this idea of the relative expert. It’s the idea that everyone is an expert in something relative to someone else.

I have my issues with this, especially when it is used by someone to justify selling something that maybe they shouldn’t be selling. But it is a useful comparison to make.

What bothers me is the use of the word expert. I don’t think there is anything wrong with teaching what you know, and even potentially selling that information if it is valuable to someone else.

But calling yourself an expert may be taking it too far. So when you write your content, approach it honestly.

I prefer the term learning in public.

There are many people who got their start by simply being a public learner. They were learning a craft and documenting what they were learning along the way.

This is the perfect way to approach teaching everything you know. As you learn more and more, you build up your content, and become a better writer in the process. Over time, others in your industry will start to see you as an authority in your space.

This will be invaluable both when it comes to finding a job and if you ever want to strike out on your own.

6. Build to solve problems

One of the most important aspects of becoming a professional developer is doing everything with a specific intention.

It’s one thing to build random apps for fun, it’s another to build apps and sites that solve specific problems.

Web development shops aren’t really in the business of coding, they are in the business of solving problems. The coding is just their preferred tool to make that happen.

Read any marketing or copywriting book and they will tell you to sell the benefits of your product, not the features.

Web developers should market their apps to show how they effectively solve a customer’s problems. And then back up their claims with specific metrics. Customers are generally more responsive to this approach than if the developers talk about the bleeding edge technologies they use.

You will be a very attractive prospect for employers if you can demonstrate your programming skills as well as your ability to code with the specific intention of solving problems and making meaningful applications.

Think about benefits vs features when you are communicating with potential employers or clients, and when writing the content for your site.

Of course, you should also mention your coding proficiency, but most people spend all their time on this. Mention it briefly so potential employers know what you do. If you have a portfolio of effective applications, your coding skills will mostly speak for themselves.

7. Take on an apprentice mindset

The day you think you have mastered something is the day you stop learning.

Adopt the mindset of a lifelong apprentice. There is always more to learn and always more to improve on.

This is especially important in the early stages of your career. If you get a part time job or internship or land a role as a junior developer, you need to immediately get in the mindset of learning and growing as much as possible.

You should really be doing this right away, even before you have an actual ‘mentor’.

In his book, The Art of Work, Jeff Goins talks about the 21st century version of the apprentice-master relationship.

Back in medieval times, the relationship was very formal. A master would take on an apprentice for years, and they would slowly start to master their craft until they reached the title of master, at which point they would take on an apprentice.

The relationship has changed, but it is still very important to consider yourself an apprentice. The main difference is that now you have to keep an eye out for potential mentors and learning opportunities, and there will be many throughout your journey.

In the world of web development, we are constantly on the internet, so this can come in various forms.

Books, tutorials, courses, forums, and other forms of learning are all valuable. I think, however, the most valuable form of apprenticeship comes from learning from someone who is currently in the position you want to be in.

This is why it is so important to be eager and willing to learn. Getting your first development job is not the end of the journey, it’s the beginning.

That is when you will really start learning and exponentially growing your knowledge.

8. Learn to collaborate

One of the biggest differences between coding as a hobby and coding for a living is learning to collaborate with people.

You’ll need to interact and work with peers, bosses, colleagues, clients, partner companies, and all kinds of personalities throughout your career.

Learning how to effectively work with other people is important.

In the field of web development, communication is key. When a company comes in and tells you what they want, and you aren’t clear about exactly what that looks like, it can cause a lot of problems and headaches in the future.

Likewise, if you can’t communicate with the people you work with, your work will suffer and you won’t be able to do your job as well.

While you’re still learning, there are a few great ways to do this.

Part of this will come when you start teaching everything you know. People will interact with you, sometimes negatively, and you’ll learn how to deal with those situations.

I also highly recommend contributing to open source projects. This gives you a taste of what it is like to collaborate on a project where different people may have different ideas on the best way to do things.

Contributing to open source projects can be intimidating, but it will do wonders for your development career.

Check out this site to get started.

Get out there and make a living

Being a web developer is hard. It means a life of non-stop learning and adapting to new technologies. It’s one of those careers where you need to be well-versed in not only technology, but business and communication as well.

It’s an extremely rewarding path. You get to make things that solve people’s problems and make their lives easier, while making a fantastic living at the same time.

There are countless resources to help you learn to code, many of them completely free, but there seems to be a lack of resources helping people make that transition into professional developer.

I hope this short guide provided a good road map for you to get started becoming a professional developer.

Remember, nothing will happen unless you take action. Build a simple portfolio website, email a few potential employers, write some posts on Medium. Just start doing something.

The more you put yourself out there, and the more you do, the sooner you’ll make the shift from amateur to professional.


What is the future of web development in 2018?

Answer by Polina Polukhina

2017 is almost over and web development trends are changing rapidly. So I’ll tell you the future web development trend in 2018:

Progressive Web Applications

The world first heard about progressive web apps in 2015. The next year we met the pioneers of this technology, and in 2017 progressive Web Applications seem to have become the major competitor of native mobile apps.

Progressive web apps (or PWAs) are websites that feel like native mobile apps. Thanks to service workers, they can work offline, delivering an extraordinary user experience.

Online customer support

2016 was the year of chatbots. 2018 will be the year of helpful chatbots. Since there are thousands of bots out now, the quality of their services will be the next web development trend.

The prediction is that 85% of all customer interactions will proceed without human assistance till 2020.

A customer service chatbot becomes a must on almost every website. Whether you are selling electronics, crocheted toys or software development services, you should have a chatbot.

Static websites

You definitely remember the concept of a static website from the early years of the World Wide Web. All the first websites on the Internet were static.

But then the era of dynamic websites began.Websites became more functional and easier to update even for people with no technical background. At the same time, the development process became more complicated, as the extended functionality required communication with the server, so backend development got involved. Modern CMSs are the actual dynamic websites

Nowadays, the web is returning to its roots. Static websites are becoming the web development trend of 2018 again.

Single-page websites

Another web development trend for simplicity is single-page websites. This solution allows putting all the content onto one long scrollable page, removing any clutter.

One-page websites have a bunch of advantages. They don’t challenge the visitor with complex navigation, multi-level menu, and tons of text. The essential information is all on one page. The user only has to scroll to it.

Of course, the use-cases of single-pagers are limited. This type of website will not suit e-commerce projects and blogs. At the same time, businesses can significantly benefit, presenting their services in a simplified and more engaging manner.

Push notifications for websites

Mobile apps notifications turned out to be a highly efficient means of user re-engagement. And recently this idea has been implemented for websites and is becoming new web development trend.

The workflow looks quite simple: the user visits a website and is offered to enable push notifications. The user will then be notified of any changes on the website (like a new blog post or a private message), even after he has closed the tab with that website.

The major benefit of such a technology is obvious – you can keep the user engaged without big efforts.

Flash to HTML

In 2010 Steve Jobs published his thoughts on Flash and its future. It became clear that this technology won’t last long. Jobs’ statement about the death of Flash is quite popular for around two years now when YouTube defaulted to HTML5 players.

The major weakness of this technology is the incompatibility with mobile devices. An enormous amount of traffic is lost just because of the outdated technology.

Motion UI

Simplicity is the trend in recent years. This is also true for web design. Users are already tired of crazy GIFs and flashing ads, that’s why websites with moderate design get more appreciation.

At the same time, sophisticated motion UI is becoming more popular. Animations allow to add more style and enable you to distinguish your website from the thousands of others with the static UI.

There are several ways to add some life to your minimalistic website. Consider page header transitions, nice hovers, animated charts, background animations and modular scrolling. These and many other elements may make your web presence much more enjoyable for users. The true artwork!

JavaScript – Angular 2 and Angular 4

JavaScript is the number one programming language for web applications. With dozens of JS-related technologies already existing and still in development, it will even strengthen its positions. The highly anticipated release of the last years Angular 2 becomes highly appreciated in modern web development.

We met Angular 2 in 2016. It is a complete rewrite of the AngularJS framework. The main advantages are improved modularity, app architecture scalability, improved dependencies injections, etc.

PHP 7.x – Laravel 5.x

PHP remains the popular choice for website backend development. This programming language has improved its positions even further after the release of version 7.x. The latest update of the PHP framework Laravel 5.x is a recognized web development trend in 2018.

Laravel is the most popular open-source PHP web framework. All the benefits of it can be fully experienced on dynamic websites with complicated backend.

Laravel offers ready solutions for complex tasks. The variety of existing packages makes the development process faster and more reliable. Regular updates ensure that the framework complies with the current needs of the website owners and the requirements of the time.

And of course you should remember that nowadays having a website is more important for the company than having an office. You can read this article and find out more about web development trends in 2018

Is front end web development a good career today?

Answer by @geoffreybans

Front end development is a great career in 2017, but don’t get hit by the bus.

There is all the hype around as to which is the latest cool front end technology to learn as a beginner.

You assign yourself a task to learn front end development only to realize that the task is to find the particular framework to learn.

Let me give you a few tips that will help you be a better front end developer.

1. Learn JavaScript

It’s great that you have already mentioned that you know some jQuery.

That is great, though you should know that jQuery is not JavaScript. In fact, front end developer is another name for a JavaScript developer.

JavaScript is the programming language that you will use throughout your front end development. Forget about CoffeeScript for now.

2. Build some Boostrap themes

It is quite easy to take a responsive Bootstrap template, paste it on a server and viola! you have a responsive website.

Nah! If you want to be a great front end developer, try and recreate the whole template ground up because in most cases you will be required to build a user interface from a Photoshop mock up, not from another bootstrap template.

Check out my other post on 7 Silly Mistakes Developers Make That Will Ruin Your Career in 2017

Take for example a WordPress theme that is full of features and create a Bootstrap template that looks similar ground up.

This will help you get a good eye for design, how to layout the page, pixelation and matching color codes among other front end stuff.

3. Build a jQuery plugin

I thought I knew a lot of JavaScript! Not until I set to build a jQuery AutoSuggest plugin here.

I had to learn JavaScript itself in order to understand document object manipulation better.

The concept of nodes, childnodes, document nodes – it’s all really interesting in native JavaScript. jQuery abstracts much of this such that you never get to know what’s going on under the hood.

You can do some front end for my open source jQuery plugin, I will be willing to help you with some JavaScript tips.

4. Consider taking a UI/UX course

If you are very very serious about front end software developer then you want to consider one of these courses that will help you understand user interaction with interfaces.

In order to design great interfaces that yield greater users experiences you need to have a better understanding of the UI/UX design and these courses go a bit into more depth about that.

I am not a front end dev so I might not say much about them.

5. Go get a job

You asked what employers like – employers like a developer who has a job!

You could task yourself reading all this content and trying to build some demo projects but without that job experience, employers will still consider you a risky investment.

Learning all these skills is only interesting if you are actually doing something useful with the skills learnt, or you will even forget what you learnt.

Because getting a front end developer job might be hard when you don’t have the experience, I suggest you build a project by yourself that you can then show off as part of your portfolio to help you get a job.

You might need to team up with a back end developer if you project will need some back end work.

Have you considered contributing to open source projects on GitHub?

If you are still stuck on how to get started with front end development then please message me if you want to work with me on some of my open source projects as you sharpen your front end skills.


Link to the post on Quora –

What should a front-end web developer know in 2017?

What should a front-end web developer know in 2017? by Tracy Chou

Answer by Tracy Chou:

The most basic building blocks for frontend development are HTML (for page structure), CSS (for styling), and JavaScript (for interactivity), so it’s always good to have a baseline understanding of these fundamentals first.

As of the last few years, React, a JavaScript library, is becoming the standard framework for frontend dev — and it’s even more appealing for devs that need to work cross-platform, with the advent of React Native — as:

  1. it has an easy and intuitive philosophy around defining views and state, making it clean, understandable, and debuggable, and
  2. it’s smart and efficient about rendering and only re-rendering components as necessary, dependent on state changes.

Very roughly speaking, React ties together HTML and JavaScript.

On the CSS front, no one codes straight CSS anymore, so familiarity with a CSS pre-processor like {Sass or Less} is also table stakes for a frontend developer in 2017.

Given the ubiquity of multiple form factors like mobile, tablet, and desktop, I’d also recommend familiarity with building responsive web views. There are nice JavaScript and CSS libraries that help with this, many building on Google’s Material Design guidelines.

There are many adjacent topics worth knowing as well, e.g. Webpack for module bundling (though the Webpack experience is pretty terrible[1], and the community’s choice of bundler seems to change every 1–2 years); JSON Web Tokens for authentication (displacing cookies, which was previously standard); Relay/GraphQL or {Redux or Flux}, depending on how deep you want to get into data flows and data fetching; not to mention general software engineering skills like googling for code to copy/paste from Stack Overflow [2], debugging, performance optimization, testing, project management, working with non-devs…



What should a front-end web developer know in 2017?