Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Making of A Software Engineer

Avatar for mattadesanya mattadesanya
December 27, 2017

The Making of A Software Engineer

A presentation for participants of the MO3Africa version 1.0 for Software Engineers!

Avatar for mattadesanya

mattadesanya

December 27, 2017
Tweet

More Decks by mattadesanya

Other Decks in Technology

Transcript

  1. A Developer, Programmer or An Engineer, same or different? •

    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.
  2. What, then is Engineering? Dictionary definition: the branch of science

    and technology concerned with the design, building, and use of engines, machines, and structures. Key Point - Design, Building, Use of Tools
  3. Software Engineering? Is the art and science of designing and

    building software/apps applying basic engineering principles/concepts
  4. What comes to mind easily when building a house? •

    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
  5. What do we notice? • There’s a process with different

    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
  6. Thinking Through: Problem Solving • Problem Solving transcends beyond coding

    • 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.
  7. Software Development Life Cycle • Planning • Analysis • Design

    • Implementation • Testing & Integration • Deployment/Maintenance
  8. 1. Planning • Gathering of Requirement • Interviews • Questionnaires/Survey

    • Observation • Seating with the Users • Learning/Reading • Studying existing apps • Going for a Course • Taking up a job
  9. 2. Analysis • Organising gathered facts • Business Analysts •

    Analysis Tools • Gantt Chart/PERT Chart • Analysis Patterns People • Business Analysts • Product Managers • Product Developers
  10. 3. Design • Database Design/Schemas • Architecture Design/Flows • User

    Interface Mockups or Wireframes • Application Flow Diagrams • Use Case Diagrams Tools - Pencil/Paper - Balsamiq - invisionapp - Sketch - Fireworks/Photoshop - Coredraw - MySQL Workbench - draw.io
  11. 4. Implementation • The actual building starts here • This

    is where coding happens Tools - IDEs/ Integrated Development Environment - Emulations/Virtual Environment People - Programmers/Coders Knowledge - Design Patterns - Algorithms - A Programming Language
  12. 5. Testing/Integration • Automated Testing • Manual Testing Tools -

    IDEs/ Integrated Development Environment - Emulations/Virtual Environment People - Testers, Programmers Knowledge - A Programming Language - A Testing Framework
  13. 6. Deployment/Maintenance • Deployment to Remote servers • Installer production,

    packaging and distros Tools - Development Servers - Virtual Environment/Containerization People - DevOps Knowledge - A Programming Language - Containerization, Virtualization, Servers (Windows, Linux)
  14. SDLC Methodologies • There are quite a bunch, some in

    use, others obsolete • We’ll consider 2 here: ◦ Waterfall ◦ Agile
  15. WaterFall Model • Better for small or short-term personal projects

    • Not cool for large or long-term projects
  16. Agile Model • Better for large or long-term projects •

    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
  17. Attitude • Love solving problems. Don’t beat down the problem

    • Communicate well and on time • Over communicate, Ask Questions • Start applying knowledge earlier
  18. Prospect • Software Engineer is highly lucrative, it’s on demand

    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.)
  19. On Coding... • It’s a pivotal part of the Engineering

    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)
  20. Coming up next on MentorOf3Africa • How to build apps

    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