If you are wondering why you should take a software engineering test, the answer is simple: skills matter. By taking the test, you will:
- know where you stand in the community of AI and software practitioners
- review your performance to learn about your strengths and weaknesses
- access personalized study plan to prepare for interviews
- fast track to job opportunities within our network
- get a certificate
And, it’s free. Your results are only ever shared with your permission to refer you to a company. Let’s go over the software engineering test.
I What is the software engineering test
The software engineering test is one of six standardized tests that were developed by a team of AI and assessment experts at Workera to evaluate the skills of people working as a Machine Learning Engineer (MLE), Deep Learning Engineer (DLE), Software Engineer-Machine Learning (SE-ML), Software Engineer-Deep Learning (SE-DL), and Software Engineer (SE). It is comprised of multiple choice questions selected from a large database, so that different test takers get different questions, and takes 15 minutes to complete.
You can learn more about these roles in our AI Career Pathways report and about the other tests in The Skills Boost.
II What to expect in the software engineering test
Before taking a test, it is important to understand what it evaluates and how it is graded. The grading rubric for the software engineering test includes five categories:
- Applying management methodologies to develop software, which encompasses version control (e.g., Git), frameworks such as Scrum and Agile, and processes to review and test code (e.g., unit testing).
- Designing software systems and architectures, which spans software design and architecture methods including types of architectures (e.g. monolithic and microservices) as well as principles and patterns such as domain driven design and object-oriented design.
- Understanding computer networking, which encompasses computer security (e.g., TCP-IP, basic encryption, etc.), internet protocols (e.g., HTTP, Domain Name Server, Cookies, IPv4 and IPv8), and load balancing.
- Working with databases, which covers relational database management systems and SQL.
- Understanding computing, which evaluates concepts relating to cloud and distributed computing including performance measures like latency and throughput as well as computational decisions related to concurrency, parallelism, or race conditions.
You will be evaluated and assigned to a skill level in each category: beginning, developing, or accomplished, depending on your mastery of the skill at hand. Your skill level in software engineering will be determined using a combination of your scores across all five categories.
You can learn about the categories and performance levels in the table below.
Category | Beginning | Developing | Accomplished |
---|---|---|---|
Applying management methodologies to develop software | Demonstrates limited understanding of management methodologies for software development. | Demonstrates ability to apply management methodologies for software development with some effectiveness. This includes version control, agile development, and code reviews. | Demonstrates ability to apply management methodologies for software development and identify use cases and shortcomings. |
Designing software systems and architectures | Demonstrates limited understanding of methods to design and architect software. | Demonstrates ability to understand concepts that inform software design and architecture decisions. This includes understanding different types of software architectures, principles, and patterns. | Demonstrates ability to make informed decisions related to software design and architecture. |
Understanding computer networking | Demonstrates limited understanding of ubiquitous computer networking concepts such as internet protocols. | Demonstrates ability to understand computer networking concepts such as internet protocols and security with some effectiveness. | Demonstrates ability to understand and apply computer networking concepts effectively. This includes internet protocols, basic computer security, and load balancing. |
Working with databases | Demonstrates limited understanding of databases and query languages. | Demonstrates ability to interact with databases and query data with some effectiveness. | Demonstrates ability to manage databases and write complex SQL queries. |
Understanding computing | Demonstrates limited understanding of computing technologies. | Demonstrates ability to use computing technologies such as cloud technologies or distributed systems with some effectiveness. | Demonstrates ability to use computing technologies such as cloud technologies or distributed systems effectively. This includes understanding performance measures and the implications of choosing a computing technology over another. |
At the end of the test, you’ll see your overall skill category in software engineering.
You will also receive feedback for every skills evaluated (e.g., Understanding race conditions or Understanding the role of the Hostname in a request).
III Software engineering practice questions
Nothing beats practice! Here are examples of questions you might encounter in the software engineering test. Think carefully before selecting your answer. Then, click submit to see the answer and get feedback.
Question 1: Static code analysis
Question 2: Git cloning
Question 3: Unit vs. functional tests
Question 4: Single-responsibility principle
IV Tips for the software engineering test
Now that you know what to expect in our software engineering test, it’s time to take it! You can take the test up to three times in a 90-day period (unless the test is being administered to you by a company for a job) and your results are only ever shared with your permission. The first test is simply meant to act as a baseline to show you where to start studying. So why wait? Sign up here to take the software engineering test.
Which of the following propositions is true about static code analysis?
It is similar to a code review task, but an automated tool is used to find issues in the code without having to run it.
It is a task performed at runtime in order to find critical bugs.
It is a task performed along with performance testing to analyze the bottlenecks in your application.
It is the task of verifying that all static variables (i.e. constants) within your application follow a convention.
Which of the following does git clone
do?
It downloads an existing Git repository to a local computer.
It requests access from the original author to their Git repository.
It initializes a Git repository, both on Github and a local machine.
It duplicates a code file or repository on Github.
What is an important goal when writing functional tests?
To test an isolated function of the application.
To test how parts of the system work together.
To test the internal program structure.
To test how the application will work from the user's point of view.
The single-responsibility principle is violated in a class that
has more than one method.
has more than one variable.
has more than one reason to change.
has more than one constructor.