As a coding rookie diving into a four-month immersive whirlwind of an experience, also commonly known as a “coding bootcamp,” it was easy to feel like an imposter. During that time, I had to learn a programming language and everything in between in order to build fully functional applications, and be ready for a competitive job market. That task already felt like a stretch. What made my brain scream “IMPOSTER!” even louder was the jargon being thrown around, as if the words were something I was meant to be familiar with before I began exploring software development.
I hope this little guide gets you started on the right track with your own development journey. Let’s begin with the basics.
“Do you want to be a front-end developer, or back-end?”
This was the most common question I got when talking to others about my intention of learning to code. To me, any person who wrote code was a back-end developer, because they wrote code on the back-end, and then we saw their efforts on the front-end. Easy peasy! I was deeply mistaken, y’all.
A front-end developer is responsible for the User Experience (UX), and User Interface (UI) of the application. They design the look and feel of the program, and are focused on how the user will be interacting with the application. Front-end engineers will work with frameworks like React, Angular, or VueJs.
A back-end developer, on the other hand, is more focused on how the application is sending or receiving information, how and where data are stored, and how data is organized. Back-end engineers design efficient communication strategies among servers, databases, as well as the front-end. Common back-end frameworks include Express.js and Ruby on Rails, and popular database management systems are PostgreSQL and MongoDB.
My favorite kind of developer, a full-stack developer, is one who is responsible for the entire application as a whole. They are able to design a seamless user experience, as well as implement their design through well-structured API routes. They are able to deploy their application and maintain all aspects of their codebase.
Application Programming Interface (API) routes are simply a way for servers to exchange information. Whenever you type a valid URL into your browser (which is a client), say, myspace.com, it’ll send a request to Myspace’s server (which is an API). The API will then parse your request, grab the required data, and send it back over to the browser — all within milliseconds, so you can hang with Myspace Tom as soon as you hit “Go”, or “Enter”, or whatever it is that you do on your browser.
What is the “stack” in full-stack, you ask? A stack is a list of technologies that a developer chooses to work with for a particular project. Not all technologies are created equal, and some are better suited for particular projects than others. When selecting a stack for your project, think of yourself as a leader, assembling a team of the most qualified candidates for the job. If you are building a simple portfolio website, do you really need a database, or will you be managing state? Probably not, so you may want to exclude any database management systems I mentioned earlier, or state management libraries like Redux from your stack. Really think about your needs, and choose your stack wisely.
A computer language can be considered a technology. Each language needs a set of tools to be able to perform certain functions and solve specific problems — those tools can be referred to as frameworks. Frameworks define the architecture of a program. A framework consists of a collection of libraries. A library is a collection of packages, and a package is a collection of modules.
TECHNOLOGY >> FRAMEWORK >> LIBRARY >> PACKAGE >> MODULE
Now, for the big question. What is the difference between a software engineer and a software developer? The short answer is not much. The two terms are used interchangeably for the most part. However, some argue that the difference is in their design philosophy. Engineers are akin to the architects of the application. They design from a big-picture perspective and focus on the structure and system as a whole. A developer, on the other hand, would be more like a fine artist. They work out the small details and solve immediate problems at hand. If there is truly a difference in the two roles, then why not assume both? There is great value in being able to architect an application with a big picture perspective, and then also dive into the nitty-gritty details, and develop the whole thing, solving large and small problems as they arise.
Now that you’re armed with all this knowledge, go out there and build something cool, fellow engineer! You belong.