Keeper of the Internet, Terrible with words

It was late September 2014 when I officially ventured into the technology landscape. What happened? Well I started my degree in Information Systems at University. My path into this field was not a straight line, and although I started back in 2014 - I have only really taken time to really get into programming over the last 6 months.

TRUTH: Programming has never come naturally to me, my friend Josh at university was incredibly intelligent and was like a duck in water with programming concepts. See I'm a very logical person in real life, and always struggle with the implementation of syntax even when it's explained to me. It's something that I still struggle with to this day, but every day I am working on improving my knowledge. Personally I've always learnt best when I'm helping others, so that's the focus of this blog and my other project CoderStory.

The landscape can change very quickly and can be daunting when you're starting your journey. Because of this, I built and run CoderStory, a platform to discover exclusive interviews from developers and creators to learn about their experiences, their journeys into programming and what they advice the next generation of developers in this fast-paced landscape.

Heads up - this will be a brain dump probably become a series - so stick with me. Get comfortable, grab a drink and let's get started.

Before we dive in, here's some important things you need to know

Are you planning to start a career in development? Maybe you're just learning in order to build your own product. Regardless of the route you take, there are some key components that every developer should know.

Version Control System (VCS) - Whether you are working with a team or on your own, version control is important in order to help you manage your code. The key benefit of version control is that it allows you track changes in your files, and simplifies working on shared files and projects within teams. Git is the most popular choice with Github being utilised as a web based Git Repository. I highly recommend an article that I have read explaining the importance of version control and why you should get started with it from day one, you can find it here.

Start with the basics: create repositories, clone repositories, commit your work, create feature branches and merge your code. I personally made the mistake of starting to utilise it recently and I can honestly say that it's cleaned up my workflow 10 fold. Github have a good resource that can help you learn the fundamentals, you can find it here:

Integrated Development Environment (IDE) - This will be your best friend so choose wisely. This will become a key part of your workflow - I recommend learning all the shortcuts and plugins available to you. It will help make your experience and code as clean as possible. Don't just write code, learn how the debugging tools work - this will come in handy when you're in a rabbit hole of a bug. My personal preference is Visual Studio Code as it's super intuitive and quick to your head around.

Programming Concepts - This will be a work in progress, but its key to understand the cross-language basics including variables, data types, arrays, objects etc. Understanding these will help you when approaching a language and will give you a basic foundation to work from.

Key Resources

There are a ton of resources available to you, this article is just another one! If you don't have time to read this article then here's a few resources to look at that will help you when you are learning the basics.

FreeCodeCamp

FreeCodeCamp offers a clear pathway to learning to code. It has a well defined structured overview that progresses you at a gradual pace by challenging you with bite-sized exercise to test your knowledge and help you put concepts into practice. Once you've learnt a new section, you'll have to build 5 projects to get a certification. The certification isn't what it's about but it is a good way to test your progress and consolidate your knowledge. Plus, it's in the name - it's free.

Treehouse

If you've been thinking about learning to code, there is no way you would have missed Treehouse on your Google Search. Treehouse is an online platform that provides beginner to advanced courses on Web Design, Web Development, App Development and more! It's a paid resources, but one of the best known and from utilising it myself and hearing feedback from others - one of the best.  

YouTube

Sometimes you cannot just google your specific request and find a resource that answers your question. Outside of the forums like StackOverflow, YouTube can be a great place to find content that will help you solve a problem or have a complete guide on how to build your first website from scratch. It takes a bit of trial and error, but it's a fantastic free resource that I have been utilising ever since I first learned to write any code back in 2014.

Choosing your Stack

You've probably googled this a bazillion times because choosing your stack can be daunting and 75% of articles trash other stacks or contradict each other. In this next part, I'll give an overview into the various programming languages available to you and discuss the foundations that I believe will help you become a better developer.

** Disclaimer: I am not a developer by trade, it is something that I hope to make a trade eventually, but this advice is based on my own experience when building out websites and applications. The focus is to help you not make the same mistakes that I did - I learned the hard way.

Lets begin with my stack - I use Laravel. Laravel is a PHP Framework for Web Artisans (that's their wording, not mine!). I landed on Laravel by complete accident in my final year of University. As part of our dissertation we had to choose between three types of projects - research, design or development. I opted to work on a design project as it meant that I wasn't marked purely on my development skills. I was marked on end-to-end project management and implementation. This involved requirements gathering, user interface and user experience and coding a MVP. I chose this option as I wasn't confident in my programming skills and did not want to graduate with a bad mark just to try and prove something to myself.

How did I land on it by accident? The original plan was to build the application with Ruby on Rails - I'd even built a command line version of the application to get a rough idea on what I'd like to achieve. At one point through the start of the MVP, I had problems that I just could not get past - no matter how much I googled, I could not solve the problem. I had a couple of days of panic before decided that it might be best just to move on and try something else. Because I'd used PHP for a previous year project, I opted to go with that and ended up with Laravel thanks to YouTube & Laracasts. The project ended up being successful and aided towards graduating with a First Class Honours. My approach to building this application was from watching a tutorial on how to build a blog and then pivoting it to adapt to my needs.

I personally love Laravel as it's super simple to get started and great for rapid prototyping MVP's when you want to test an idea out. I'm still relatively junior and have not attempted to build out large-scale complex applications but I'd like to get to that point eventually. Laravel has a strong community behind it and it's even easier to use if you are familiar with PHP.

Finally, the reason I mention my stack is I want you to understand the process on how I ended up on mine but it doesn't mean it has to be yours. You choose what works best for you and helps you achieve your goals.

The Front-End

This will be most people's entry into development - for anyone born 2000s, you're familiar with MySpace and Geocities. You may have even tinkered with HTML & CSS to get your website looking a certain way.

HTML & CSS is a good place to start - and is a fundamental part of the modern web and front-end web development. HTML is the skeleton of a website where the CSS is the skin. Together they make up the structure and design of a web page.

The best place to start is understanding how to structure content and create the basic components of a web page using HTML. You can then use CSS to style elements to display in a way in which you think you or users would like to see. Once you understand the basics, you can then look at advanced methods such as CSS Grids, Flexbox, Pre-processors, Frameworks and Responsive Design.

We'll dive into key components on learning these in a future article, but here's some great resources to get you started:

The Back-End

So we've touched on the basics that you need to start with when designing a website, but we all know there's a lot more to a website than how it looks. The back-end of a website is where the data from the front-end gets stored.

An example - when you fill out a form, this gets sent through to a server and it saves the details inside of a database.

The back-end deals with finding, saving, changing and deleting data from the database. A back-end developer often has multiple responsibilities that they might perform, such as:

  • Create APIs for the front-end to access and return dynamic data to the users
  • Write business logic into the systems
  • Integrate with various applications usually through an API.

There's no shortage of programming languages - options include Java, C#, Ruby, .Net, PHP, Python and Node.

Where these languages have become very popular, frameworks have been developed to help scaffold the build of server-side applications. These include (but are not limited to):

  • Laravel (PHP)
  • Symfony (PHP)
  • Spring (Java)
  • Ruby on Rails (Ruby)
  • Django (Python)

JavaScript

You may have noticed when talking about the front-end that I missed out JavaScript. Why? Well JavaScript is the language of the web. It's a multi-dimensional language that can be used both client-side and server-side. With JavaScript there are several frameworks available, but just like we discussed above - it's important to understand the core elements of the language.

Some key concepts you should understand:

  • Objects
  • Functions
  • Conditionals, Loops & Operators
  • Retrieving data from an API
  • Manipulating the DOM
  • Event Handling

Once you have mastered the basics, then you can look at the sea of frameworks that are available. I'll dive deeper in a future post, but these area few that you've probably heard of:

We'll dive into key components on learning these in a future article, but here's some great resources to get you started:

In future posts, I'll provider deeper guide into individual languages as I personally explore more the world of code further and continue to improve my own skillset.

Thank you for reading! Happy coding 👩🏽‍💻