A Software Developer is not necessarily a Software Engineer, the reverse is different. • Software Engineers are trained to apply engineering principles in building or crafting out software. • Programmers basically just code or write test for solutions. They may not be very concerned about the analysis or deployment phases of Software development.
Collection of Specs or Ideas • Architecture • Quantity Survey • Collection of Tools and Labour • Laying Of Foundation • Building the House according to Plan • Roofing • Painting • Applying Finishes • Wiring • Plumbing • Dedication/Move in
stages • There are different people involved with different level of specialisation • The output of one stage is the input into the next • The project starts with a final picture in view • The actual building is just one of the stages of entire process
• There’s nothing to code if the problem is not first solved. • Coding is not solving of a problem, it is simply scaling of a solution • Example, coding the almighty formulae is not the solution. It is putting the solution in a form that can be repeatedly implemented - given input, we can always get results at the speed of light. • It is important then to separate the solution from the coding. • Software Engineer is concerned about the overall Problem Solving process.
is where coding happens Tools - IDEs/ Integrated Development Environment - Emulations/Virtual Environment People - Programmers/Coders Knowledge - Design Patterns - Algorithms - A Programming Language
IDEs/ Integrated Development Environment - Emulations/Virtual Environment People - Testers, Programmers Knowledge - A Programming Language - A Testing Framework
packaging and distros Tools - Development Servers - Virtual Environment/Containerization People - DevOps Knowledge - A Programming Language - Containerization, Virtualization, Servers (Windows, Linux)
Iterative in nature • SDLC is repeated in units or blocks of time called “sprint” • Shipment happens early and quickly • Customers are part of the process • Have its flavours or varieties - Scrum, Kanban etc. • Is based on certain Principles found in the Agile manifesto
all over the world. More coders are needed more than ever. There are jobs everywhere. Competents hands are needed to fill the jobs • Easy to set up your own ideas • There are other side opportunities around Software Engineering (Tech bloggers, Storytellers, Facilitators and Teachers, Salesmen, Social network marketers, SEO, Project Managers etc.)
process • This is where implementation takes place • Many idea owners get stalked here. • Requires patience for beginners, support, fellowships and encouragement • Pick just one language for a start • Start coding quickly, don’t go around reading too much • Teach someone what you know quickly, your baby, sibling or spouse, pastor, anyone who cares to listen to you\ • Take up coding challenges ◦ Solve problems on Stackoverflow ◦ Join Hackerrank, Codewars • Don’t get discouraged along the way • NEVER EVER copy and paste code, except it’s yours (Better to retype everything line by line, DO NOT COPY code)
from the scratch • The fundamentals of all programming languages ◦ Learn one language and you already 10 others if you have these principles • Creation of sub groups of 5 for everyone to begin their software engineering processes