“I do not have the technical skill to become a software development project manager.” I hear this all the time.
However, here is a catch.
No one expects you, as a project manager, to write code or set up servers.
You do need to know the software development process, what goes into creating software applications.
So, in fact, you don’t need to have skills. You need technical awareness.
OK, I get it.
All those terms and technology alone are too much. Coding by itself looks so complicated and out of touch.
However, only for a short period of time.
Once you are surrounded by software engineers, QA, BAs, and so on, you start to learn everything like a sponge.
In a month or two ordinary people would not understand you. You will use so much slang…
But you do need some initial set of terms to learn.
So here we go.
The glossary of a Software Development Project Manager
Note: this article is for project managers by a project manager. If you have an engineering background, it may hurt reading this. I warned you!
Hardware vs. Software
These two are simple:
Hardware means all kinds of computers and mobile devices where your software will be used at. It is your Mac or PC, printer or server, iPhone, your car, refrigerator, or smartwatch.
Software is actually all the software applications and programs on the hardware you use. It includes apps that you use on your Mac, PC, smartphone.
But it is also a firmware on your microwave, drivers in your printer, photo camera, etc.
Software Engineers are people who write code (or source code) and do all the mental work to develop a software application.
You can also use term developer interchangeably.
Don’t use “coder” as many software engineers despise it.
Quality Assurance Engineer (QA) is a person who ensures that the application your developers created is of the required quality.
Tester or Testing Engineers are people who actually test the application or service.
Often these roles are used interchangeably. However, as you may know, there is a difference.
QA Engineers should focus on developing proper processes to assure quality.
Testers focus on controlling quality. It means they test and state the defects they found.
Their goal is to verify the quality level of the application.
Business Analyst work with customers and other stakeholders to understand the business requirements of a project.
Sometimes he needs to identify them by researching a market and demand. Sometimes he just needs to communicate with stakeholders.
After that, he needs to translate business requirements into specification or user stories.
User Interface (UI) Designers/User Experience (UX) Designers are people of art. They work with the team to understand the requirements.
Then, they draw the design of the application or service.
If you open any standard application on your Mac, you will see an example of hard work of a team of UI/UX designers.
So here is how it works:
A Software Engineer writes code.
She uses a Programming Language.
A programming language is a set of formal instructions to a computer or a mobile device. Every programming language has its syntax, semantic, and core programming principles.
Here is the list of ten major programming languages you need to google about:
- Objective C
- C# (C Sharp)
A bit deeper knowledge
The code that software developers write is human readable too some extent. These are instructions
It is not something that a computer can understand.
That is why this code is compiled and transformed into the machine-code that hardware can understand. It is called lower-level code.
Core Libraries, Frameworks, and Kits
Also, you need to understand that programming language is only a set of standard functions to implement and group logic, store and represent different types of data.
It is engineer’s work to find a way to use available means to implement an application.
However, it would be very time consuming if each time each engineer should implement some basic algorithms and functions.
Also, it would be hard to write code that will work directly with the hardware you use. It is a lower level of programming.
For example, to use a camera or speaker on your phone, different sensors, motors, etc.
That is why many programming languages come with Core Libraries or Frameworks.
In this libraries, you can find standard and frequently used functions.
They can be developed by enthusiasts to make life easier. Alternatively, they can be created for commercial use and sold to software engineers.
Also, companies that produce hardware usually supply such libraries to help developers to use their devices.
For example, Apple provides numerous libraries that make it easy to use all the built-in features of iPhone or Mac.
So, developers do not need to implement everything from scratch.
Integrated Development Environment (IDE)
The code can be written on a napkin, in a notepad, or in MS Word.
But it is not convenient.
You have to memorize all the functions, libraries, and structures by heart. To say nothing of possible mistakes.
That is why developers use Integrated Development Environment or IDE.
IDE is a separate application developed specifically for software engineers to work in. In essence, it is a code-centric text editor.
It makes code easier to read visually by highlighting, coloring and structuring the text.
It also contains documentation on the programming languages and core libraries. Moreover, it makes it easy to add more of the core libraries if needed.
There are also tools for debugging. There is a build-in compiler. And much more.
There are many IDEs. Some are free. Some are paid.
Each IDE can work with several programming languages.
Source Version Control
In essence, code is just text.
This text is stored in files.
Files are organized in folders (source tree).
There might be hundreds and thousands of files.
Some code is written once and never changed in years. Some files are altered on a daily basis by many developers.
The code is interdependent. Code from one file can use code from other files.
Keeping a record of all changes to the code is essential. Moreover, it helps a lot when you can revert to an older version of the code.
That is why developers use Source Version Control.
The proper use of Version Control is the cornerstone of quality assurance in software development. You do want to learn more about it.
So, a developer writes a piece of code or updates existing one. He has to ensure it works as expected and doesn’t break the rest of application.
After that, he makes a Commit of his code into Source Version Control.
Layers of Application
In Web development, you will also hear a lot about front end and back end parts of an application.
Front End is the part of the application that you see on the screen of your device. So, the design, layout, buttons, and text right on this page is the front end.
(HTML, CSS, JavaScrip are the programming languages of the Front End)
Back End refers to the server side, database, and logic of the web application. So this very article is stored in a database on a server. This site uses MySQL as database management system.
(PHP, Ruby, Python are the Back End languages)
So, what are the end results of a software project?
First of all, it is the source code. All the code created during the project is transferred to the client.
Sometimes you store the code in client’s Version Control system from the start. So you just need to commit all the code there.
Sometimes the code should be archived and sent to the client. You do it just like you would do with any folder with files.
However, more often software development projects include the work required to deliver the application to the end users.
So, in case of iPhone, Mac or Windows applications you will compile the code and create an application (installation) file. It is a build in functionality of every IDE.
You may also need to submit this application to one of the main markets – App Store, Windows Market, Google Play.
Nowadays it is relatively a user-friendly process. No harder than uploading a photo to Facebook. Though with more steps.
In case of a Website (web application), you need to deploy the application to a server. If the application is complex, it can be a task in itself.
For sure, it is not a comprehensive list of all technologies you will face. Also, you will need to get a bit deeper in every term I used here.
Here is what I suggest you to do:
- Start googling this terms from the perspective of “for dummies“.
- Keep to one topic/term at a time.
- List other new terms that you will encounter.
- Google new terms until you have a bigger picture.
- Find a friend or a colleague (developer, experienced IT PM, etc.) and ask them to explain everything in more details.
- Develop a curiosity habit. Look around at all the tech around you and ask yourself, “Do I know how it works?” If no – google it.
If you want to become a project manager in software development industry, do get a copy of the How to Become a Software Project Manager guide.