A big part of moving towards any goal is properly understanding what you are trying to accomplish and where you are trying to go, your destination. Without this understanding, many are destined to find the path to becoming a developer or a programmer, to be frustrating and unclear. Without a clear goal, we are bound to run around in circles. Pursuing a career in development without a proper understanding of the required skills, an understanding of the areas of development, or a grasp of the common pathways to becoming a developer, we set ourselves up for failure. By investing a little bit of time to better understand the world of computer programmers, I hope to bring to light what exactly a computer programmer is, the neccessary skills, and perhaps a clearer picture as to what they do.
What is a Dev(developer)?
I believe for many entering into the world of software development, understanding the terms and phrases of the industry is one of the more daunting tasks. Going forward in this article, I may refer to dev(developer) by using terms such as programmer, coder, engieer. Know that by using any of these terms I am refering to a computer programmer. According to Wikipedia, "Computer programmers write, test, debug, and maintain the detailed instructions, called computer programs, that computers must follow to perform their functions." This definition will serve as a guidline or framework for future discussion. It is by no means all-encompassing, but it gives us a great place to start.
Different Areas of Development
As an aspiring programmer, it is important to have a proper understanding of the different areas of software development. Those already in the industry will consider this knowledge as a given, but for those entering into life as a developer these are largely unknown. There are numerous areas of software development and I will not pretend to cover all of them. What I hope to do is to cover some of the more common areas. Often when trying to understand something foreign, it is helpful to use an example of something you already are familiar with.
If we consider a service such as Twitter, we can separate the areas of development into the items which make up the service we know and love. There’s what many refer to as the frontend, which typically includes the web client and/or website. There’s the backend or API (Application Programming Interface) which serves the frontend and the mobile/native clients such as iOS, Mac OS, Windows 10, and Android. There is code which runs on the servers, but is not seen from the web or native clients. Other areas include Database Administration(DBA), Software Testing, Software Testing Automation, Quality Assurance(QA), DevOps (software development and information technology operations), DataOps, Site-reliability Engineering(SRE), and System Admininstration(SysAdmin). These certainly do not encompass all parts, but they help to provide a tangible example most of us are familiar with.
Common Paths to become a Developer
Three of the most common paths to becoming a developer include self-taught, university or bootcamp. A self-taught developer often learns by exploring online tutorials through channels such as YouTube or paid courses on sites like Udemy or Treehouse. This route is largely unpaved and it differs greatly based on the individual. A more traditional route includes attending a university seeking a degree in studies such as Computer Science or Management Information Systems (MIS). This typically occurs over the course of two to four years or more depending on the program and the a student's schedule. The avenue which blends a bit of the first two is through attending what many call a bootcamp. A bootcamp takes more of a hands-on approach and can range in length from a few weeks up to six weeks or more. Sometimes it involves a combination of in person training and work from home assignments. Bootcamps compress a lot of training in a short period of time making them rather appealing to a wide variety of students.
My hope is that by starting the discussion, it will raise awareness to the different aspects involved in Software Development. And while I realize that this is not something which can be properly addressed in the span of one article, I hope it has helped in shedding light on the industry for aspiring developers and veterans alike. If you see anything which is inaccurate or incomplete or if you would just like to shed light on something I might have missed, you can find me on twitter @_zerotodev.