IT Professions in a Nutshell

 

Maybe you are wondering about your future IT profession. Or maybe you are just trying to make sense of all of those varieties of titles in IT. I cannot promise that I can cover all of them, but hopefully this article will help to build the basic understanding of the bread & butter of different roles in IT.

This article is a bit of a mix of a simple language and technical jargon -- so that those of us who just start looking into the field can get through it, while noting what buzz words are used where. So if you are an old IT-wolf -- please don't stone me for rounding corners now and then :)

Typical IT product

Probably the easiest way to think about the stereotypical IT product is to imagine some web-store operating on multiple continents, bank applications or anything else most of the cyber people use on a daily basis.
Such an application always includes a User Interface (the part we see in the browser/on phone). As an end-user we interact with this application -- the interaction itself being the 'information' we pass to it. This information on its turn goes deeper into the system, to either retrieve what we request (what we wrote in the search bar, the button we pressed) or to remember what we asked it to do (adding product to the basket), or to relay it elsewhere (those 'login with Google/Facebook/Microsoft' buttons), or more.
The above steps naturally correspond to parts of the system: frontend (what we see on the screen), backend (what happens on corporate servers). With the latter being further divided into the computational and storage parts. And no surprise here -- we just described the respective domains of Frontend and Backend developers.
Further away from the end user are the data roles: data analyst and data scientist. On our web store/bank examples, the one can see the need for the role helping the company to 'learn' from the user interactions. After all, people tend to buy more scarves in autumn than during the summer -- and banks are better prepared for the cash withdrawal spikes on Black Friday. Data Analysis is the answer to the problem -- the role helping to make sense from the mass of information aggregated, providing value through seeing trends and patterns. Data Science role takes it one step further -- provides ML (machine learning) models making decisions without the need for manual per-case assessment (think of this web-store's personal recommendation list).
It would be unfair to Data Science to limit it to only this scope, as in many industries this new role enables previously unfeasible projects (think natural language processing with ChatGPT, voice assistants, robotic vision applications -- and there are many more).
Platform (DevOps) engineering enables all of the above. As all of the programs need to run on some computers, and those programs obviously need to be regularly updated -- platform engineering focuses on servers, operational systems, cloud providers, hosting and deployment of software.
Although not present on the diagram, there are two more important roles for the successful product: Quality Assurance (QA) and Agile coach. The former drives the testing mindset of the team and tests the product before it reaches users. The latter drives psycho-sociological synchronicity of the team, making sure that the team delivers with high velocity.
Feels right to mention Firmware and Video Game/PC (personal computer) development roles, although those are not a part of a typical IT product as we know them on the market. Firmware development is pretty much writing the very base code running on the hardware -- typical applications include automotive (cars), robotics, home appliances, sensor grids. Firmware developers usually work closely with their Electronics and Mechanical engineering counterparts. Video Game development is somewhat like firmware -- as it requires a good understanding of the hardware the game is going to run on, but it has a lot of its specifics and is not as low-level in the end.
Last but not least -- Mobile Applications Developers. While theoretically Android and iOS are operational systems and building applications for them shouldn't be much different from writing an application for PC -- due to the Alphabet and Apple duopoly on the market things are different in practice. This role sits somewhere in between, as it requires understanding of tools to write programs for a given platform (just like the PC development) but it often has a lot to do with the user interface and experience (just like the frontend development).

 

Frontend Developer
Responsible for the User Interface (UI) and User Experience (UX) in user-facing applications. Typically this is understood as the design and implementation of the web-page accessed by the user, but there is the whole field of mobile applications (Android, iOS) which have their own specifics.
Modern skill set expected from the role includes:

  • HTML (general knowledge)
  • CSS (styles)
  • HTTP/HTTPs (how web page opened on client machine accesses APIs and basics of how the internet works)
  • JavaScript + React (code from which the actual HTML is generated)
  • NginX or Apache Tomcat setup (the server side of UI from which clients get code to their laptops when opening the page)
  • Web security basics (certificate authorities, cookies, tokens)


Backend Developer

Responsible for the actual more abstract part of what the IT-product is solving. Typically involves cost and performance efficient software to store and transform data from users, 3rd party APIs interactions (like accessing payment systems, BigTech tracking cookies etc). Depending on a company and its scale, role’s seniority level –  the definition can vary from basic OOP language and DB knowledge to Big Data technologies. Therefore skills ordered from the first three being the bare minimum:

  • Backend language & related enterprise-grade frameworks (Java/Kotlin/C# for bigger companies, Node.js typically for startups)
  • Database (SQL dialect, Postgres/MySQL working knowledge)
  • REST API (Http protocol, API best practices, security)
  • Event-driven applications (Distributed queues, one of Kafka/PubSub/SQS/SNS ..)
  • Datastores (Mongo, DocumentDB vs Relational)
  • Architectures (Monolith, microservices, event-driven ..)
  • Map-Reduce-like technologies (Spark, Dataflow, AWS Glue etc)
  • Data lakes/warehouses (blob storage, OLTP vs OLAP, BigQuery/Athena/RedShift/Oracle)
  • Wide-column databases (HBase, Cassandra, BigTable)


Platform Developer (DevOps)
Responsible for the infrastructure the code securely and cost-efficiently runs on. Involves good server operating system (OS) knowledge, containerisation, infrastructure-as-a-code, cloud provider, monitoring/alerting systems and of course related security. While the line is blurry, historically the role is also associated with the setup of CI/CD pipelines, and knowledge of best practices for those.

  • Linux or Windows Server (secure OS updates, ports; command line commands and principles behind them)
  • Docker
  • AWS/GCP/Azure in the West (with Terraform / Cloud Formation or similar)
  • Gitlab/CircleCI or similar
  • Kubernetes
  • Prometheus/Thanos/Grafana; ElasticSearch (logs and metrics monitoring)


Data Analyst

Responsible for providing business stakeholders/clients with analytical models based on the historical data aggregated by the system. In other words, while the roles described above focus on building the system and making the data flow happen – data analyst looks into the data in its base with the aim of finding patterns assisting the business efficiency.
The role is often expected to communicate with higher-level management or clients, so presentation/explanation/listening skills are typically expected.

  • Statistics (analysis of significance of findings etc)
  • Excel/spreadsheet knowledge (often used for initial analysis prototypes)
  • SQL, Python (excellent skills to build data aggregations)
  • Business Intelligence dashboards (Power BI, Looker, Quicksight etc)


Data Scientist

Responsible for development of Machine Learning (ML) models and AI. Due to the variety and mathematical specificity of fields of application – commonly one/two areas specialist (like NLP, computer vision, audio or others).  Most of the knowledge is in the skill to translate business problems into the one of the ML-problems – with the choice of model frameworks and their later tuning to the actual application. Because of those reasons it is hard to map the role in general terms, but the common skills include:

  • Python with a corresponding set of frameworks (like Pandas, Anaconda etc)
  • Jupyter notebooks for model prototyping
  • AutoML at Cloud Provider (for simple/standard use-cases)
  • Data Version Control (DVC), model registry (MLflow/Neptune/Weights Biases or other)
  • Model Decay and what needs to be monitored


Firmware Engineer
Responsible for the software running directly on the hardware. Typically works closely with non-IT engineers to map the physical world of the device to the program. Depending on the device, it can range from the software-per-model of the device, to internet-of-things – with the latter streaming the data through the internet to backend systems for further use. This is not a role of the stereotypical “IT team”, but it felt incomplete to leave it behind for this overview.

  • Electronics knowledge (translate documentation to code requirements)
  • Assembler, C languages
  • AVR, AMD and other hardware architectures
  • Low-level buses and protocols (CAN, MQTT, I2C etc)

 

Agile coach / Scrum master
Responsible for the soft side of ways of working of the team, application of agile practices in daily life of the team. It is the most common non-tech role in IT I have encountered so far. On the surface side of things, the role is to make sure that the team is delivering with high efficiency. On the deeper side of things – the role revolves around psychological and sociological problems of the team and its environment. The list of skills includes:

  • Deep knowledge of Agile methodologies and why they work
  • Excellent listening/communication skills
  • Jira management (from adaptation of story states to charts and metrics)
  • Understanding of team efficiency metrics (like DORA)

 

Quality Assurance specialist / tester
Responsible for the quality of the final product. Usually performs manual quality checks on aspects of the product which couldn't be automatically tested 'just yet' for technical reasons. More importantly -- drives the high quality culture of the team across different roles, coaches on layers of testing and depth/width of testing. Has a good overall knowledge of risks associated with the product delivery and can communicate them well.

  • Postman (API testing application)
  • Software development lifecycle
  • Coding skills, test frameworks for programming languages
  • Understanding of security risks



Comments

Popular Posts