This article will introduce you to the world of web development, explain different roles and tools used for developing websites and give you some tips on how to start journey with a web development yourself. We will also discuss if freelancing is a reasonable option and if you can start programming even if you do not have a Computer Science university degree, and where to look for educational materials.
When entering a site address in a browser, users request data from servers. Those can form web pages or web applications. Those terms are not strictly defined, but when you are thinking about web pages you refer mostly to static informational sites (just like the one you are browsing now) and web applications are pages that can perform some advanced logic. A web interface for an email account makes a good example of a web application. Both get implemented by web developers.
Web development usually refers to activities related to website functionalities development. Web developers ensure that when users interact with a website, it reacts in a certain manner. In order to achieve this, code must be written both on server and client side and communicate well with a database.
Client-side development refers usually to user interface development. In web development’s case it’s the browser that’s running the code displaying a webpage. The big challenge in this case is to make sure that a website behaves in the same way on all browsers.
Server-side development is a technique used in Web Development that refers to creating code that it’s being run “on the other side” and which is responsible for dynamic site code generation and database handling.
Databases are special programs designed and optimized for an efficient data storage. They are crucial for any system that needs to persist any kind of data.
These two totally different roles are often misunderstood. Web developers implement website functionalities when designers focus only on aesthetics and usability. Designer’s work results in a non usable aesthetically appealing project while developer’s work results in a functioning rough-looking site.
When developing web pages, some certain project roles with different responsibilities can be distinguished:
Web Designers are responsible for aesthetics and usability of a web pages and web apps. Their scope of responsibilities do not involve development of actual functionalities. They might use Adobe Photoshop or Adobe Illustrator for creating their designs, when more advanced designers can even build HTML static web pages’ prototypes.
Web Designers are often freelancers that take advantage of scheduling flexibility and remote work. On the other hand, they do not really implement their own ideas, but rather take other people’s ideas and transform them into reality. Their salaries are also smaller in comparison to developers’ because their scope of responsibilities is not that wide. They also get mocked by other developers, because users tend to notice only visual aspects of applications.
Frontend Developers are the glue between Web Designers and Backend Developers. They deal with client-side programming and apply designs received from Web Designers.
Backend Developers are developers that work “behind the scenes”. They develop server-side logic, manage database connection, design APIs(Application Programming Interface), handle security and authorization.
Backend developers need to deal with databases too. Some of the most popular databases are:
The biggest advantage of being a web developer is being responsible for core functionalities development. Without backend developers web pages would remain static and unusable. The biggest disadvantage is that backend developers rarely get credited for their job since users often tend to focus on the frontend side which is only a tip on an iceberg.
Full Stack Developer is a one-man army specialist that can both client and server side, and sometimes even a design. Mastery over different layers is in high demand, understanding problems of different project roles makes them a good fit for a potential team leader position. The biggest disadvantage is the necessity of staying up to dates with multiple technology stacks.
As you already know, Web Developers are responsible for building and maintaining web pages/ web apps in general. You might think that web developers spend whole days working on their code, but it’s not necessarily true. While development is the biggest part of a developer’s job, there are other crucial tasks that need to be done. But what activities does this involve? Let’s answer it now:
Analysis is a constant part of Web Developer’s job. This involves talking with a client, gathering functional and nonfunctional requirements. This allows to look at a project from bird’s eye view and then plan architecture properly.
Before new code gets added to a main codebase, it usually undergoes a Code Review process. This is a small ceremony where other developers go through your code and review it, often suggesting some small fixes. In order to perform a Code Review well, you need to spend some time on understanding other people’s code.
After you reach certain level, you are often expected to share your knowledge with other people and train junior developers.This is often accomplished by Pair Programming, which is an activity where two developers sit in front of one computer and try to solve problems together.
Except for working on new tasks, developers often need to take care about legacy projects. This usually involves solving random bugs and implementing small changes for an already working project.
Developers spend a lot of time meeting and talking not only when discussing new features with clients. Developers often organize daily status meetings, where they discuss what did they manage to accomplish on a previous day and what are they going to do on that day. Planning, Retrospectives and Refinement meeting are also very popular. Planning meetings are organized on the beginning of some time period and all developers go through a backlog( a place with all tasks to be implemented) and plan their job for an upcoming period. Retrospectives are special meeting where team discusses what did they manage to accomplish and what could have been done better. Refinements are meetings where developers meet their clients and go through a backlog and make final decisions which task will be implemented.
Studying Computer Science molds you as a general specialist who has an understanding of all technological layers involved. This is a perfect base to build upon and this is something which is extremely difficult to achieve when trying to learn everything on your own.
People, who learn programming on their own, often do not even realize the existence of some issues that are obvious for CS graduates. On the other hand, university degree is not necessary for becoming a developer, but it’s also not enough to be a good one. Most companies do not care about your education, but they do care about you knowing how to do your job properly. Bill Gates and lots of IT startups never got their degree, so being successful without a degree is surely possible
Knowing syntaxes of programming languages is definitely not enough to start working. In Web Development, there is often no reason to lose time on reinventing a wheel, because in most cases out of the box working solutions are provided by different frameworks. If you browse job offers, you will notice that employers are often more interested in framework knowledge than in a language knowledge itself!
Writing clean code means writing code that is predictable and easy to read and understand by others. Developers often need to read other people’s code. This is why it’s so important to write code in such a way that everyone can understand it as quickly as possible.
Integrated Development Environments are crucial for being productive with writing code. IDEs allow easy code navigation and often support code completion.
Version Control Systems are programs that allow easy code change management. You do not want to store different versions of your code in separate folders or on pendrives. Being proficient with some VCS gives you freedom because at any given time you can easily rewind changes that you made in your code base. The most popular VCS nowadays is Git.
Learning how to use a command prompt is crucial for example for achieving proficiency with Git VCS. You simply can’t access all options from a graphical user interface.
This is one the most important abilities. Having your code test-covered gives you multiple advantages. Firstly, you are not afraid of making changes to your code base, because if you mess up something, your tests will immediately inform you about this. Secondly, if you implement your tests before writing main code(Test Driven Development) , they are a great indication whether you nailed all functionalities properly and that you finally stop coding.
As stated earlier, developer’s job consist not only of writing code, but also of interacting with many people. This is why it’s so important to learn how to be communicative and assertive.
Both approaches have their advantages and disadvantages. Let’s explore them:
As mentioned earlier, being a freelancer essentially means being an independent contractor that works with multiple clients and usually only on specific tasks and projects without having any long-term commitments. This can be compared to being a one-man company. When freelancing you usually don’t have fixed working hours and you can sculpt your working time according to your specific needs. Additionally, you become your own boss, so you can finally breathe some freedom when noone is micromanaging you. There are also no managers that tell you how to do your job.
Freelancing gives you a lot of freedom and flexibility, but has also disadvantages. For many people the main disadvantage is the lack of stabilization. You have no guarantee that after your job is done, there will be another one. Forget about paid leave or sick days too. You get paid only for the days you actually worked. You need to prepare for a lot of additional legwork too. It’s now your responsibility to reach out and search for a new clients and projects. Some freelancers complain that the border between working time and personal time disappears. You never stop working or at least thinking about expanding your freelancing business.
The main advantage of having a “day job” is having a steady and predictable income. You sign a contract where you commit to working certain amount of time and you get stable and predictable salary. Since your employer is now responsible for finding tasks for you, you can stop thinking about your job when you leave the office at 5pm. You can also enjoy multiple benefits like: paid vacation time, paid sick days, health insurance, free gym subscriptions and so on. Employers usually do not offer such things to independent contractors. Those benefits you receive in exchange for having to work in certain time and space under a supervision and for a lower salary in comparison to what independent contractors receive.
Besides being simply good at your craft, there are few qualities that make a good web developer:
Modern software developers almost never do work alone. You need to collaborate with other specialists from your team and with multiple people from your client’s side in order to make sure that all their goals are being met.
Software developers never stop learning. New technologies, languages and paradigms are emerging on a daily basis and it’s your job to stay up to date. If you do not love the necessity of learning new things on a daily basis, you might face a burn out.
When doing web development or any other kind of software development, you need to be prepared for encountering multiple technical problems in the most unexpected places. Sometimes a lack of a single semicolon can break the most complex systems.
It’s absolutely crucial for developers to have this extreme attention to details. As stated earlier, even the simplest mistake can break the most complex website. On the other hand, you need to focus on delivering business value for your clients, so you can’t spend months on constant refactoring of you code and not focusing on new tasks.
There are multiple resources online that can help you learn software development. Some of the most popular ones are:
Coursera is an education MOOC platform that partners with top universities and organizations worldwide in order to offer online courses for anyone to take. MOOCs are Massive Online Open Courses. Those are often university courses that are open to everyone. Nowadays, more and more employers start recognizing MOOC certification.
EdX is, just like Coursera, is a massive open online course provider. It hosts online university-level courses in a wide range of disciplines to a worldwide student body, including some courses at no charge.
Stack Overflow is a Q&A site for professional and enthusiast programmers. People are posting questions and solving other people’s problems. If you post a good question or an answer, you get reputation points so people often compete with each other and try to provide best answers as quickly as possible.
Youtube can be an endless source of video tutorials on every possible topic.
GItHub is a public Git repositories hosting service with additional tools for making open-source contributing easier. This is a place where you can browse code of most popular projects and learn from it. If you wish, you can even start contributing yourself!
Lynda is an educational company that offers professional trainings on many different subjects. If you are afraid of spending a lot of money, you can always take advantage of the free trial period.
Udemy is a marketplace for online learning. This is a place where multiple experts offer their courses on many different subjects for reasonable fees.
The availability of learning resources is so overwhelming that it’s not possible to mention them all, but there one you can always count on – Google. This is where you can find a solution to every possible encountered problem.
In conclusion, working as a Web Developer gives you a lot of possibilities (and money) to choose from. If you think you can handle spending your days writing code and talking to people, you should give it a try even if you do not have a Computer Science university degree, because there are multiple pages available that can help you learn this craft.