Skip to content

Added new domains with description and small improvements #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
139 changes: 119 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,67 +1,166 @@
# Software Domains and Technologies
This document is made and maintained for helping software developers and students on [Software Development Pakistan](https://www.facebook.com/groups/softdevpk/) choosing a domain to work in and technologies to learn for it.

We have always seen students, fresh graduates and software developers
looking for guidance and information to choose a particular domain based
on their interests and scope / industry trends. So we have decided to create
a guide with listing of all software related domains with short overview
and all that with an aim to help and guide others.

We got the idea from group discussion in [Software Development Pakistan](https://www.facebook.com/groups/softdevpk/).
Also aim to help the relevant students of [Students Counselling Pakistan](https://www.facebook.com/groups/counsellingpakistan/) group.


## Table of Content
- [Introduction](#introduction)
- [Domains](#domains)
- [Frontend web development](#frontend)
- [Backend web development](#backend)
- [Full Stack Web development](#fullstack)
- [DevOps Engineer](#devops)
- [Frontend Web Development / UI-UX Development](#frontend)
- [Backend Web Development](#backend)
- [Full Stack Web Development](#fullstack)
- [DevOps Engineering](#devops)
- [Native Mobile Development](#nativemobile)
- [Cross-platform mobile applications development](#cross-platform-mobile)
- [Data Engineer](#dataengineer)
- [Cross-Platform Mobile Apps Development](#cross-platform-mobile)
- [Data Engineering](#dataengineer)
- [Data Scientist/ AI/ ML](#datascientist)
- [UI-UX Designing / Web Designing](#web-designing)
- [Game Development](#game-development)
- [Quality Assurance / QA](#qa)
- [Information Security](#infosec)
- [Contributions And Changelog](#contribution)

<a name="introduction" /></a>

# Introduction
Software students and the recent graduates in Pakistan often realize it too late that in order to land a job in Software industry, they have to focus on at least one of the software domain. The reader of this document is expected to do more research on each domain on their own before settling for something. The criteria for interest should be personal interest and following the global trend. In case of doubt, please ask on the group.
Software students and the recent graduates in Pakistan often realize it
too late that in order to land a job in Software industry, they have to
focus on at least one of the software domain. The reader of this document
is expected to do more research on each domain on their own before
settling for something. The criteria for interest should be personal
interest and following the global trend. In case of doubt, please ask
on the group.

Lets make this a complete comprehensive list of all the possible domains, PR's are more the welcome.
Lets make this a complete comprehensive list of all the possible domains,
PR's are more the welcome.

<a name="domains" /></a>
# Domains
These domains are listed in No particular order.

<a name="frontend" /></a>
## Frontend web development
Somewhat an emerging field in Pakistan but has a lot of potential for the future. You'll be working with rendering, designing, and engineering content on the web browsers. You'll be expected to know HTML, CSS, JavaScript and frontend frameworks like angular, react etc to begin with.
## Frontend Web development (UI/UX Development)
Somewhat an emerging field in Pakistan but has a lot of potential for
the future. You'll be working with rendering, designing, and engineering
content on the web browsers. You'll be expected to know HTML, CSS,
JavaScript and frontend frameworks like angular, react etc to begin with.

UI/UX; abbreviation of User Interface/User Experience, is also considered
to be another name for the same domain but UX is more about research,
observation, identification and implementation based on human behaviour.


<a name="backend" />
## Backend web development
Everything related to building, maintaining, processing and monitoring web applications on the web server. You'll be expected to know some backend languages (NodeJs, PHP, Python, Java etc), databases (Relational/NoSQL), a bit of servers (reverse proxy, shell scripting etc).
Everything related to building, maintaining, processing and monitoring
web applications on the web server. You'll be expected to know some
backend languages (NodeJs, PHP, Python, Java etc),
databases (Relational/NoSQL), a bit of servers (reverse proxy, shell
scripting etc).

<a name="fullstack" /></a>
## Full Stack Web development
A combination of both of the above, however as the gap between frontend and backend are widening up, It is better to focus on one of the above, at least in the beginning.
A combination of both of the above, however as the gap between frontend
and backend are widening up, It is better to focus on one of the above,
at least in the beginning.


<a name="devops" /></a>
## DevOps Engineer
Combines the software development and operations practices. In practice it means you'll be working on making things easier for software developers. You are expected to know cloud platforms ( Azure/ GoogleCloud/ AWS), build pipelines, docker containers, and a bit about microservices architecture, and web servers etc.
Combines the software development and operations practices. In practice
it means you'll be working on making things easier for software developers.
You are expected to know cloud platforms ( Azure/ GoogleCloud/ AWS),
build pipelines, docker containers, and a bit about microservices
architecture, and web servers etc.

<a name="nativemobile" /></a>
## Native Mobile Development
Android (Java/Kotlin), iPhone(swift/Xcode) and windows phone (C#) development. Great if you want to build apps but not as much in demand as web development.
Android (Java/Kotlin), iPhone(swift/Xcode) and windows phone (C#)
development. Great if you want to build apps but not as much in demand
as web development.


<a name="cross-platform-mobile" /></a>
## Cross-platform mobile applications development
The idea is to build the mobile application once which can be used in across devices/platform. Not as performant as native app development but works just fine for most use-cases. You are expected to know React Native/ Ionic / Xamarin etc for this. Easier to get into if you already know frontend web development (at least for React Native/ Ionic).
The idea is to build the mobile application once which can be used in
across devices/platform. Not as performant as native app development
but works just fine for most use-cases. You are expected to know React
Native/ Ionic / Xamarin etc for this. Easier to get into if you already
know frontend web development (at least for React Native/ Ionic).


<a name="dataengineer" /></a>
## Data Engineer
You are expected to know how to store, process, and aggregate massive amount of data in a scalable fashion. Some tools you should know are Spark/MapReduce, Kafka, Hive, NoSQL, distributed databases etc.
## Data Engineering
You are expected to know how to store, process, and aggregate massive
amount of data in a scalable fashion. Some tools you should know are
Spark/MapReduce, Kafka, Hive, NoSQL, distributed databases etc.


<a name="datascientist" /></a>
## Data Scientist/ AI/ ML
Data analysis tools, Machine learning algorithms, Deep learning. Good understanding of maths/stats. Quite an emerging field globally, without a strict definition of what is expected of you. Most startups go for a combination of data engineering + data science role with a good understanding of businesses.

Data analysis tools, Machine learning algorithms, Deep learning. Good
understanding of maths/stats. Quite an emerging field globally, without
a strict definition of what is expected of you. Most startups go for a
combination of data engineering + data science role with a good
understanding of businesses.

<a name="web-designing" /></a>
## UI-UX Designing / Web Designing
This domain doesn't heavily depend on programming so all you need is good
web experience especially about web layouts and aesthetics and good
designing sense/skills. This may include designing prototypes or wireframes
for different websites based on client requirements. Web Designing is closely
linked to Graphics Designing but with more focus to websites.

<a name="game-development" /></a>
## Game Development
An exciting but very challenging and focused domain of software industry
is game development. Our local industry is lacking behind in this domain
than rest of the world especially in comparison to the contribution we're
doing in web/mobile apps development which also mean that there're lesser
job opportunities for game development. But on the other hand, there're
lot of companies working on this domain and are always looking for good
talent. Like Web, this domain usually consist of a designing and a
programming end but even if you opt for programming end, it would be better
to have good designing skills or at least good designing sense.
Photoshop, Illustrator, Maya, Unity, Unreal Engine, C#, C++, java are
some of popular tools & languages used for game development.


<a name="qa" /></a>
## Quality Assurance / QA
This is another domain that is usually considered to be a non-programming
field but in fact it's great to have programming concepts for a QA Engineer.
This usually is focused on testing the modules, functionalities and
complete apps to make sure the developed softwares are bug free, secure
and support different environments including browsers, OSs, screen sizes,
etc.

<a name="infosec" /></a>
## Information Security (Ethical Hacking / InfoSec / IS)
This is about finding out security vulnerabilities in the software systems
and preventing unauthorised access. You must need to understand the basic
model of how internet, websites, apps or all these softwares actually work
and communicate. This domain of computer science demands heavy research,
patience, hard work and strong concepts to find out such vulnerabilities.

Obviously jobs for InfoSec are much lesser than rest of many CS domains
but that doesn't really mean InfoSec has lesser scope. All bigger companies
are now realising the importance of having good InfoSec engineer in their
team and salaries for InfoSec engineers are often much higher than an
average developer. Also if you have interest in this domain, then there're
lot of opportunities looking forward to your services.

<a name="contribution" /></a>
# Contributions And Maintainers
- Azeem Akhter: Made the first version of the document. (8th July, 2018).
- [M Adil Mazhar](http://adilmazhar.xyz/)
- Feel free to contribute if you're interested. Create an issue if you have
any questions or concerns before/regarding contributing to this repo.