Professional Development Plan - Archetypes
Introduction
In this lesson, we hope to provide you with certain "Archetypes" that we believe are examples of noteworthy combinations of the skills listed in the previous lesson.
These Archetypes are not binding, nor are they all-encompassing of skills that might otherwise be left out.
However, once you get to crafting your Professional Development Plan itself, you are welcome to refer back to these Archetypes as inspiration for crafting your plan.
Archetypes
There are a few Archetypes that are immediately recognizable within the world of Web Development, and several of the skills in the previous lesson can easily fall within any given category. But, before we assign skills to Archetypes, let's define each Archetype.
Front-End Developer
A front-end developer is responsible for implementing visual elements that users see and interact with in a web application or website. They work with HTML, CSS, and JavaScript to create responsive, user-friendly interfaces that facilitate smooth navigation and optimal user experience.
Here are some skills that a Front-End Developer might want to harness, and how you might see them appear in development:
Accessible Design
You might ensure that ARIA principles are utilized in a page, or that your site passes the WCAG standard.
Wireframing
You may need to present a Wireframe of a design to display user stories before beginning development. You may also be given a Wireframe from a design team to work off of when crafting the visuals of a page.
Screen readers/aria labels
Like in Accessible Design, you might ensure that ARIA principles are utilized in a page.
Responsive design/media queries
Responsive design involves making your application work and perform well on various devices, as well as screen sizes. Most likely by using media queries.
Mobile-focused design
Also known as "Mobile-First" design, which means you start your design process with the smallest screen first, then work upwards.
UI/UX
Following best practice for UI and UX is a large component of front-end development.
Canvas rendering vs elements
Canvas is the best practice approach to rendering complicated or numerous elements that are specifically designed for display. Instead of using hundreds of <div>
elements to create visual elements.
Modern staples (Next.js, typescript)
Some tools are now becoming the "hot new item" in the development world. Next.js is a React framework that improves upon the vanilla React product, and Typescript is a strongly typed language that otherwise is very similar to JavaScript.
Additional JS or C# frameworks
Always explore other frameworks that might benefit you. What packages could be beneficial for a project? What frameworks - like Next.js - might solve a problem or create a better experience for you?
Open source projects and/or hackathons
All developer Archetypes will benefit from participating in public events, meetups, hackathons, and contributing to open source projects. As a reminder, the Epicodus Curriculum is an open source project!
Cross-platform software
Software that can work on multiple platforms, such as Web, Mobile, smart watches, or other smart devices is something a front-end developer might consider while designing an application.
Back-End Developer
A back-end developer focuses on the server-side of web development, dealing with the logic, databases, server, and application. They are responsible for creating the underlying functionality and infrastructure of a web application or website. Back-end developers work with server-side languages like Python, Ruby, PHP, or Node.js, and databases such as MySQL, MongoDB, or PostgreSQL.
Here are some skills that a Back-End Developer might want to harness, and how you might see them appear in development:
Data analysis
Data analysis involves inspecting, cleaning, transforming, and modeling data to derive useful insights and make informed decisions. It's a crucial aspect of many fields, including business, science, healthcare, and more.
User data storage & database security
User data storage security focuses on protecting sensitive user information stored in databases from unauthorized access, data breaches, and cyberattacks. This includes encryption, access controls, and security best practices; Firewalls for network security, Authorization Authentication and Access Control (like Identity!) for Acess management, and more!
SaaS (such as AWS)
Software as a Service (SaaS) is a cloud computing model in which software applications are hosted and provided to customers over the internet. As a developer, it's likely that you'll encounter using these services. For example, Epicodus uses AWS S3 buckets to store our images.
Cloud Computing (AWS/Azure/Etc.)
Cloud computing involves delivering computing services over the internet, such as servers, storage, databases, networking, and software. Examples include AWS (Amazon Web Services) and Microsoft Azure.
Containers (Docker/Kubernetes/Etc.)
Containers are lightweight, portable, and self-sufficient packages that contain everything needed to run a piece of software.
- Stack Overflow: Docker, what is it and what is the purpose
- Docker docs - Getting Started
- WHAT ARE CONTAINERS?
Operating Systems (both desktop and mobile)
Operating systems are software platforms that manage computer hardware resources and provide services to applications.
- University of Wisconsin - Lecture Notes for CS 537 (Operating Systems)
- Operating Systems: Three Easy Pieces
Computer Networks/Networking fundamentals
Networking fundamentals cover topics such as protocols, IP addressing, routing, and network security.
- Microsoft Learn: Fundamentals of Computer Networking
- CCNA Routing and Switching Study Guide (paid book)
Scripting
Scripting involves writing scripts or programs to automate tasks and perform repetitive operations.
Epicodus uses Bash programs to automate a small portion of our grading process.
Cloud Security
Cloud security focuses on protecting data, applications, and infrastructure in cloud computing environments from cyber threats and unauthorized access.
- Intro to Cloud Security
- Medium: Intro to Cloud Security TryHackMe
- SEC388: Introduction to Cloud Computing and Security
DevOps
A DevOps engineer is a developer or infrastructure administrator who also has subject matter expertise in working with people, processes, and products to enable continuous delivery of value in organizations. The DevOps engineers assists in designing and implementing strategies for collaboration, code, infrastructure, source control, security, compliance, continuous integration, testing, delivery, monitoring, and feedback.
IT Automation
IT automation involves using software tools and scripts to automate repetitive tasks and streamline IT operations. Examples include configuration management tools like Ansible and infrastructure-as-code frameworks like Terraform.
Python
Python is a versatile and popular programming language known for its simplicity, readability, and extensive libraries.
Source Control Management
Source code management (SCM) is used to track modifications to a source code repository. SCM tracks a running history of changes to a code base and helps resolve conflicts when merging updates from multiple contributors. SCM is also synonymous with Version control.
We've been using Git with GitHub as our source control management system.
Cryptography
The art and science of concealing the messages to introduce secrecy in information security is recognized as cryptography. A message is plaintext (sometimes called cleartext). The process of disguising a message in such a way as to hide its substance is encryption. An encrypted message is ciphertext.
Go
Go (or Golang) is a statically typed, compiled programming language developed by Google. It is known for its simplicity, efficiency, and concurrency support, making it suitable for building scalable and high-performance applications.
Blockchain development
Blockchain development involves building decentralized applications (DApps) and smart contracts using blockchain technology. It includes understanding concepts like distributed ledgers, consensus mechanisms, and cryptographic security.
- Microsoft Learn: Get started with blockchain development
- simplilearn: How to Become a Blockchain Developer
Full-Stack/General Developer
A full-stack developer is proficient in both front-end and back-end development, allowing them to work on all aspects of web application development. They have the skills to handle server-side programming, client-side coding, and database management. Full-stack developers are versatile and can work on all layers of the development stack, from user interface design to server-side logic and database management.
Full-Stack development can also be seen as controversial, as companies have moved over to relying on one role for the responsibilities of two. However, being a "Jack of all trades" isn't a bad thing, especially if you are interested in both avenues of development.
In addition to the skills that are listed above for both Front-End and Back-End developers, here are some skills that a Full-Stack Developer might want to harness, and how you might see them appear in development:
Content Management Systems
Content Management Systems (CMS) are software platforms that allow users to create, manage, and publish digital content, such as websites and blogs, without requiring advanced technical skills. Examples include WordPress, Drupal, and Joomla.
Kotlin (for Android development)
Kotlin is a statically typed programming language that runs on the Java Virtual Machine (JVM) and is officially supported for Android app development. It offers modern language features and seamless interoperability with Java code.
Swift (Especially for iOS. Very similar to C# syntax)
Swift is a programming language developed by Apple for building iOS, macOS, watchOS, and tvOS applications. It is known for its safety features, modern syntax, and performance.
Publishing/Hosting apps
Whether you've created an API in C#, or a portfolio using React, hosting a project is a good step to get your projects in the hands of others, and show you can complete a project from top to bottom.
- Netlify for hosting front-end
- Azure hosting free tier
- AWS Amplify
- Build and Deploy a Microsoft .NET Core Web API application to AWS App Runner using CloudFormation
Data structures/Algorithms
As much as these concepts may not appear in Front-end only development, many interview questions will benefit from this knowledge.
- Free 8-Hour course from a Google Engineer
- freeCodeCamp - Data structures and algorithms
- Google Tech Dev Guide
Freelance rates/pricing
Familiarizing yourself with the common practices of freelance development, as well as knowing how to charge interested parties, is something all developers can explore.
Adjacent Roles
In this section, you'll find a continuation of the Archetypes that are outlined above. However, the roles listed below may not be directly applicable to Web Development skills that we've been learning. Instead, transferable skills - such as general programming knowledge, test driven development, or skills and experience you may have from before Epicodus - can be harnessed to pursue these roles.
Adjacent Development Roles
- Cybersecurity developer: A cybersecurity developer specializes in creating and implementing security measures to protect computer systems, networks, and data from cyber threats. They develop software solutions, algorithms, and protocols to safeguard against unauthorized access, data breaches, malware, and other cyber attacks. Cybersecurity developers often work with encryption, authentication mechanisms, intrusion detection systems, and security protocols to ensure the confidentiality, integrity, and availability of digital assets.
- Quality assurance developer: A quality assurance (QA) developer is responsible for testing software applications to ensure they meet quality standards, functional requirements, and user expectations. They design and implement testing strategies, develop automated testing scripts, and conduct manual and automated tests to identify and report defects or bugs. QA developers work closely with software developers and stakeholders to improve software quality, performance, and reliability throughout the development lifecycle.
Adjacent Non-Development Roles
These are roles in the tech industry that are closely related to development but do not involve coding or programming as the primary focus. Examples include:
- Project Manager: Oversees the planning, execution, and delivery of projects, ensuring they are completed on time, within budget, and meet quality standards.
- Product Manager: Defines the vision, strategy, and roadmap for a product, working closely with cross-functional teams to bring the product to market and drive its success.
- Database Administrator: Manages and maintains databases, ensuring they are secure, efficient, and reliable for storing and retrieving data.
- Business Analyst: Analyzes business requirements, processes, and systems to identify opportunities for improvement and recommend technology solutions.
- Technical Writer: Creates documentation, guides, and tutorials for software products, helping users understand and use the software effectively.
- UX/UI Designer: Designs user interfaces and experiences for digital products, focusing on usability, accessibility, and visual appeal.
- System Administrator: Manages and maintains computer systems, networks, and servers, ensuring they are secure, reliable, and performant.
Skills For Adjacent Roles
Some skills that also fit within this category that are currently marketable include the following:
- Project Management
- Product Management
- SEO
- Database Administration
- Business Intelligence
- Quality Assurance