
At Manifest, we often talk about bridging the gap between the skills of computer-science professionals and the needs of organizations.
One way to do this is by establishing what we call “good” software engineering principles—as opposed to bad principles!
With our Agility Boot Camp, we focus not only on writing code but also on the disciplines and skills a developer needs to be successful. It’s more than a language or a tool; it’s a way of thinking. It’s how you deliver the software to production.
Here are the fundamentals:
1. Automation Testing
Automation testing is focused on unit testing and behavior-driven development testing, which utilizes descriptions of software user requirements that are readable by humans.
Having executable tests (documentation) enables us to validate the software does what it is supposed to do.
2. Full-Stack Web Development
This involves using frameworks like Spring and Angular.
In typical college settings, there is not much web development. Yet, almost all of the development we are doing in the industry is web-based. It’s not uncommon for Java Swing calculator to be the largest application handled by someone coming into the Boot Camp. Java Swing is rarely used because the industry has transitioned from desktop applications to the web. So, having those skills is crucial.
3. Data Storage
Data storage involves using SQL databases and NoSQL Databases.
The feedback we used to get from clients was that employees should have SQL skills. To make sure we’re providing those skills, we found the largest creative commons database we could find: a database of all the world’s music.
4. DevOps
DevOps is a set of practices combining software development and IT operations. It is meant to shorten the systems development life cycle and provide continuous delivery of applications and services to production.
Applying DevOps enables us to provide a predictable and frictionless way to deliver features to customers faster.
5. Integration
Integration involves the connection of systems across the organization to be more efficient, allowing larger teams to work together.
Enterprises have lots of systems, whether through acquisition or development of separate concerns. Integrating existing systems saves time and reduces the risks of building a larger, fully encompassing system.
6. Agile Practices.
Agile is a collaborative and iterative approach to project management.
It focuses on identifying the most important work, completing it, and putting it in front of the customer as soon as possible.
Tying It Together
As discussed in Parts I and II of our Bridging the Gap series, there is a disconnect between what new computer-science professionals know and what organizations need (and four things are causing that disconnect).
Strong software engineering principles are key to bridging the gap.
A computer-science degree basically covers the theory of writing software, whereas these software and engineering principles are the hands-on principles. Think of it like theoretical versus applied mathematics.
Manifest can provide this real-world information because we don’t just talk to organizations; we go into the field and work on projects. What we see there is what we take back to the Agility Boot Camp.
Interested in joining us? Apply to the Agility Boot Camp today.
Thank you for reading the third installment of our Bridging the Gap Series: Good Software Engineering Principles. Join us again soon for Bridging the Gap Part IV.
Part I: Connecting Talent and Tech
Part II: Why the Tech Talent Gap Persists
Part III: Good Software Engineering Principles
Part IV: How We Develop—and Share—Tech Talent