From front end to back end, engineer to developer to architect, the geek hierarchy can be difficult to decipher. Understanding the requirements and responsibilities of various roles within the geek world as well as the connotations of different terms can make a difference when it comes to career advancement.
Software Developer vs Software Engineer
This is one of the most frequently disputed and argued distinctions in geekdom, and there are other terms that get thrown into the mix to confuse things even more. What’s a software developer and how is that different from an engineer, programmer or coder? While there’s no official consensus, there are some common opinions on what these terms mean and how they’re used.
Generally speaking, the terms “developer,” “programmer” and “coder” can be used interchangeably. Occasionally a company will use these terms to differentiate positions, but for the most part, they mean the same thing.
JAXenter explains the perception and connotation surrounding the terms in this way. Coders get the job done. Their work product is functional and effective, but rarely pretty or elegant. Developers are “the best generalists,” with a familiarity for multiple different languages and a breadth of experience. Programmers, meanwhile, “write awesome code. Making it clean, well-factored and error free are very important concerns, but not at the expense of getting the job done,” JAXenter says.
JAXenter also draws a distinction between these three terms and the title of “software engineer,” which implies a knowledge of best practices and a methodical approach to programming similar to how a structural engineer would approach designing the supports for a bridge.
While employers may often use these terms interchangeably, it’s important to know how they are perceived among those in the geek hierarchy. Using the right title in your resume and cover letter or during an interview demonstrates that you understand the tech workforce.
The terms “front end” and “back end” get thrown around in programming and development quite a bit. For someone just starting in the field, those terms may be a bit mystifying. What differentiates front-end programming from back-end programming?
Simple Programmer draws a very clear distinction. If you’re working on logic or design elements that the user will see and interact with, you’re working in the front end. In contrast, you’re working the back end if you’re designing business logic, database interaction and other components that are necessary to the functioning of a website or application but that are mostly invisible to the user.
Both types of development are necessary to application or website creation, and they’re highly interdependent. Your decision to focus on front end or back end depends on preference and aptitude; if you enjoy working with visual elements, front-end development is for you. If you prefer working with databases, try back-end development.
A quick query on your favorite job search engine will reveal that there are many different job titles to sift through for someone interested in a career in programming. Here are a few common titles and explanations of where they fall in the geek hierarchy, what their responsibilities might be and so forth. Information comes from Indeed.com, Monster.com and the Bureau of Labor Statistics, unless otherwise specified.
Many just starting in programming will begin here. Junior software developers write and document code, debug, provide support, monitor applications, execute test cases and maintain code. They often work on teams, and they must be able to both collaborate and work individually. While junior developers may not have responsibility for designing an application’s overall function, they often design and code specific pieces of an application.
Junior developers must ensure that their code meets user requirements and that it’s readable by other programmers on their team.
Junior software developers typically need a bachelor’s degree in computer science or a related field or an applicable certification from a coding bootcamp. They must demonstrate the ability to work well on a team and to manage their own time, and they must exhibit a willingness to improve and accept criticism of their work.
Senior software developers are more experienced coders than junior software developers, but that’s not the only difference between the two. Senior developers must be capable not only of managing their own workflow and writing their own code but also of overseeing teams of programmers. Leadership skills are important, as are project management and time management skills. Senior developers must have a good understanding of the software development cycle and must be able to manage it from beginning to end.
A knowledge of object-oriented programming concepts is important for senior developers, as well as the ability to translate business requirements into programming tasks. A solid grasp of coding best practices is helpful.
Senior software developers must typically have the same qualifications as junior software developers, as well as two to three years of experience. Many pursue a master’s degree or other graduate education.
Software architects are the strategists behind a given software project. Not only must architects be able to translate business requirements to coding requirements and help write that code, they must be able to select technology appropriately and tease out non-functional requirements that are often overlooked in the software development life cycle, like requirements for speed or stability. They must be able to measure these in an objective way and evaluate the software to ensure adherence to requirements. Software architects must know how a piece of software might interact with other pieces of software to ensure interoperability.
For software architects, leadership skills, business acumen and strategic thinking abilities are necessary. Good architects exhibit analytical thinking and must be willing to take ownership of the big picture and leave the details to junior and senior developers. Software architects often take on the responsibility for coaching and mentoring developers, and they maintain strong relationships with quality testers as well.
The right training is important for software architects. Most job openings require a bachelor’s degree or certification from a bootcamp, and many also require knowledge of multiple programming languages. Most software architects have at least five years of programming experience.
Chief technology officers (CTOs) take an even broader view of the software development life cycle. Whereas software architects manage an entire system or application from beginning to end, CTOs are responsible for evaluating new technology to make the best choices for their organizations. CTOs must be able to analyze their organization’s needs and make determinations based on them, so high-level strategic thinking is necessary as well as a good understanding of current technological solutions. Constant education about new and emerging technologies is necessary to ensure the CTO’s organization is always using the most effective solution for its needs.
CTOs manage entire departments. They must be skilled leaders who are capable of dealing with staffing issues, training, hiring and firing and other managerial responsibilities. They’re typically in charge of maintaining an organization’s electronic security as well, so knowledge of information technology principles, security software and cyberthreats is also vital. Finally, CTOs must be skilled negotiators, as working with vendors to get the best price for a technology solution is part of the job.
CTOs are often highly educated and senior members within their organizations; some organizations require 15 years of experience or more before considering an employee for a CTO position. A bachelor’s degree is required, and a graduate degree such as a Master of Information Technology or an MBA may be necessary.
If you want to climb the geek hierarchy, a coding bootcamp can be the place to start. At The Software Guild’s coding bootcamp, you can choose to learn Java or C#/.NET. The Guild offers a 12-week full-time program or a 10-month online program as a part-time option, so you can learn your first programming language with the help of master instructors at a pace that works for your life. Upon completion, you’ll be prepared for junior developer positions. Apply to the coding bootcamp today.