Don't discourage someone simply because you had a bad experience. Marriage works, school is important, hustling pays off. Every single thing works in it's unique way. Your experience is not someone else's. Let people go to those spaces and be the best.
God has done great things for you and me. Before we continue asking for more, it's important that we take time to count our blessings and thank Him for what He has already done.
God mornin' Family 🙂
Software Engineering 101:
I shared a tweet yesterday as regards how Software engineering isn't Frontend and Backend.
I was surprised at how some people were surprised or saw the tweet as a hot take instead of taking it for the fact that it is.
I later realised that it was just a "curse of knowledge" that made me assume everyone knew this already.
I feel like a lot of boot camps aren't doing enough justice because this is meant to be foundational knowledge and not something you find out after years of being in the tech space!
I spent 1hr trying to come up with the best way to explain this and the best approach is using an analogy to break down what Software Engineering really is and what Frontend and Backend are.
One of the ways I learn to understand and explain anything tech is by using analogies, which is my way of making concepts clearer when related to the real world.
Consider Object-Oriented Programming (OOP), where terms like 'inheritance' can be better understood through real-world analogies. In OOP, inheritance allows an object to acquire properties from another, similar to a child inheriting properties or traits from their parents.
An analogy allows you to simplify tech's gibberish by relating to everyday life.
Let's explore a software system by comparing it to a construction site.
A typical site has various specialists: carpenters, plumbers, bricklayers, painters, labourers, and supervisors. Each has a unique role.
However, a construction project doesn't start spontaneously.
It begins with a client's vision, which is then shaped into a feasible plan by engineers.
This planning stage is crucial, ensuring the project's viability and avoiding future complications.
In software development, a similar process occurs. A project starts with an idea, which software engineers develop into a practical plan. They choose appropriate technologies and tools, similar to selecting materials in construction.
In both fields, some individuals execute these plans.
Bricklayers and carpenters in construction, or front-end and back-end developers in tech, use their tools to create something tangible.
They may not grasp the entire engineering concept but can effectively build based on patterns or instructions.
However, using tools doesn't equate to understanding underlying principles.
A bricklayer might construct a house based on experience without deep engineering knowledge. The house might stand, but its future stability is uncertain.
Similarly, a software developer can build applications using tools and existing code but might lack insight into the broader implications of their work.
In contrast, engineers, whether in construction or software, plan and build with a comprehensive understanding. They consider the broader impact of their decisions, ensuring sustainability and effectiveness.
This distinction is evident in tech roles. Software engineers understand the principles and implications of their work, while developers might focus more on tool usage.
WordPress developers, for instance, use templates and tools to build websites, similar to how a bricklayer uses skills to construct a building.
Project managers and site engineers in construction ensure adherence to plans and quality standards. In software development, similar roles oversee the development process, ensuring best practices and project requirements are met.
With these few points of mine here are my takes:
1. Software Developers are not Software Engineers as to how Bricklayers and Carpenters can't call themselves civil or Architectural Engineers.
2. Frontend and Backend Engineers are Software Engineers who know how to use a Frontend or Backend tool alongside applying Software Engineering Principles to them. The "Engineer" keyword makes the difference.
3. You don't have to be a Frontend Developer or Backend Developer to become a Software Engineer. You don't have to be a Software Engineer to become a Software Developer.
4. Ever wondered why the tools you use for building like node js call the document developers' documentation and your senior engineer at your company gives you guidelines in the form of engineering documentation. It is because you are a developer at that company and not an engineer!
5. Engineers are tool agnostic, meaning they're comfortable with using a variety of tools and also apply engineering principles to them.
6. it's really not a bad thing to be just a software developer, as far as there is an engineering guideline you are following.
7. I also saw someone mention that software engineer and developer can be used interchangeably. My answer is: No they can't.
In the shortest way possible, software engineering principles are guidelines that ensure the development of reliable, efficient, and maintainable software. Key principles include:
1. Modularity: Breaking the system into smaller, independent parts.
2. Abstraction: Focusing on high-level functionality, hiding details.
3. Encapsulation: Bundling data with methods that operate on it.
4. DRY (Don't Repeat Yourself): Avoiding code duplication.
5. KISS (Keep It Simple, Stupid): Simplicity over complexity.
6. YAGNI (You Aren't Gonna Need It): Not adding unnecessary features.
7. SOLID: Five design principles for object-oriented programming.
8. Separation of Concerns: Dividing a program into distinct sections, each with a specific responsibility.
9. Scalability: Designing software to efficiently handle growth.
10. Maintainability: Writing code that is easy to understand and modify.
Thanks for reading, please do well to share by retweeting, so that other people can understand this foundational knowledge.
I will try to answer your questions in the comments 🤌
The problem is not tech. Tech is just like every other normal industry.
The problem is these bootcamps and online schools brandishing tech as a smooth walk in the park. They raise their expectations so high, promising them that they would land jobs and internships as if it’s right there waiting for grabs.
It’s high time we start saying the truth. If you’re not ready to work your ass off, stay away from tech as a profession.