Software Development Demo
A one of many ways to implement your project
About Gift
Gift Nnko
Systems Developer, HISP Tanzania
Technologies: ReactJS, Node, Typescript, Parse
Platform, Git,
Github: nnkogift
About HISP Tanzania
HISP Tanzania is an organization established to empower
governments, organizations and communities to
improve the quality and efficiency of services through
appropriate use of ICT for inclusive, technological and
social-economic development in Africa.
LinkedIn: hisptanzania
Twitter: hisptanzania
Facebook: HISP Tanzania
Github: hisptz
Development Vs Programming
What is the difference 🤔
Here’s The Major Difference
Programming
Programming is all about conceiving a network of logical
patterns that defines the behaviour of your application.
Coding
Coding involves implementing the set of instructions in a
form that a machine understands and in a way that is
optimal.
According to this well written article here…
Development
Development is about delivering a proper product and
maintaining it. Development encompasses the processes
of creating a complete package to the pleasure and
satisfaction of end users.
Development
Delivering a usable product that satisfies user’s need
Development…
Product
A complete & usable software system with minimal issues
User’s satisfaction
It does what the user wanted it to do…
Development Steps
- What should the software do (Gather requirements)
- How should it work (Design Process, Modules)
- Planning(Project Planning)
- Development
- Testing
- Documentation
- Release/Deployment
- Maintenance/Feedback
Note: Steps outlined above are based on personal experience and may differ from other standard practices
What should the software do (Gather requirements)
- Figure out what the user needs from your system
- Break it into individual user stories
- Write different scenarios (Acceptance criteria) of the user stories
- Use simple user story format:
As {user} I want to {need} so that {purpose}
- Create acceptance criteria based on the user
story:
Given {user} when I do a {need} then {purpose
should be fulfilled}
As a new user, I want to
register by creating a
username and password
so that the system can
remember me and my
data
Given that I am a new user,
when I go to the sign up page
and enter an username and
password and click on sign up,
then I am successfully
registered and able to log in
with my chosen credentials.
Visit here for more on user stories
How should it work (Process, Modules)
- Figure out what resources your app needs
Databases, 3rd Party Integrations, Analytics tools, e.t.c
- Choose your tools
Languages, Frameworks
- Modularization
Dividing your app into modules, designing connections between them
Not necessary for most simple projects
- App Process
Design process flow for all app entities, Design database model
Use a process flow diagram for simplicity
- UI/UX Design
Choose a consistent theme(colors, fonts,icon, shapes)
Use design system(recommended)
Consider basic UI/UX design guidelines
Create a mockup with apps like figma (takes time but recommended)
Visit here for more on user stories
Modularization example
Database
API Server
Web Interface
Mobile
Application
APIs
APIs
SQL
3rd Party Services
(Payment, google
sign in)
IoT systems
APIs
APIs
Planning(Project Planning)
- Create a plan for everything you have to do
- Plan feature wise, starting with independent/important features first
- Feel free to adjust your plan to accommodate changes
- Use a good project planning software
Jira, Open project, Trello, Todoist, GitHub(Recommended)
Development
Ahhh… yes, the fun stuff
- Structure your code well, not necessarily at the beginning
- Use frameworks to enforce good structure
- Consider good practices you know
SOLID, DRY, Don’t reinvent the wheel
- Tools are your friends, learn to use them
Es-lint, formatters, code completion, other useful plugins, IDEs or text
editors
- Use a version control system
Git, Apache Subversion, e.t.c
Testing
- Write unit test for complicated/sensitive functionalities
- Write automated e2e tests based on acceptance criteria
- Always modify your tests as you modify your code
- Use available tools
Cypress(Recommended)
Documentation
- Write a user guide (if your have a complex system)
- Write a brief technical documentation
Technologies used, File/Folder structure, Running/Deployment
Instructions
Release/Deployment
- Know the basics of deployment
- Prepare a good documentation on how to deploy your system
- Choose a good deployment environment based on your app
design
Containers(Docker), Nginx,Apache, Play store,
Maintenance/Feedback
- Keep In constant communication with your users
- Have a standard way of registering, prioritizing and fixing issues
Use an issue tracker, Jira, Github issues
?

Software Development Demo:GDSC&UISS .pptx

  • 1.
    Software Development Demo Aone of many ways to implement your project
  • 2.
    About Gift Gift Nnko SystemsDeveloper, HISP Tanzania Technologies: ReactJS, Node, Typescript, Parse Platform, Git, Github: nnkogift
  • 3.
    About HISP Tanzania HISPTanzania is an organization established to empower governments, organizations and communities to improve the quality and efficiency of services through appropriate use of ICT for inclusive, technological and social-economic development in Africa. LinkedIn: hisptanzania Twitter: hisptanzania Facebook: HISP Tanzania Github: hisptz
  • 4.
    Development Vs Programming Whatis the difference 🤔
  • 5.
    Here’s The MajorDifference Programming Programming is all about conceiving a network of logical patterns that defines the behaviour of your application. Coding Coding involves implementing the set of instructions in a form that a machine understands and in a way that is optimal. According to this well written article here… Development Development is about delivering a proper product and maintaining it. Development encompasses the processes of creating a complete package to the pleasure and satisfaction of end users.
  • 6.
    Development Delivering a usableproduct that satisfies user’s need
  • 7.
    Development… Product A complete &usable software system with minimal issues User’s satisfaction It does what the user wanted it to do…
  • 8.
    Development Steps - Whatshould the software do (Gather requirements) - How should it work (Design Process, Modules) - Planning(Project Planning) - Development - Testing - Documentation - Release/Deployment - Maintenance/Feedback Note: Steps outlined above are based on personal experience and may differ from other standard practices
  • 9.
    What should thesoftware do (Gather requirements) - Figure out what the user needs from your system - Break it into individual user stories - Write different scenarios (Acceptance criteria) of the user stories - Use simple user story format: As {user} I want to {need} so that {purpose} - Create acceptance criteria based on the user story: Given {user} when I do a {need} then {purpose should be fulfilled} As a new user, I want to register by creating a username and password so that the system can remember me and my data Given that I am a new user, when I go to the sign up page and enter an username and password and click on sign up, then I am successfully registered and able to log in with my chosen credentials. Visit here for more on user stories
  • 10.
    How should itwork (Process, Modules) - Figure out what resources your app needs Databases, 3rd Party Integrations, Analytics tools, e.t.c - Choose your tools Languages, Frameworks - Modularization Dividing your app into modules, designing connections between them Not necessary for most simple projects - App Process Design process flow for all app entities, Design database model Use a process flow diagram for simplicity - UI/UX Design Choose a consistent theme(colors, fonts,icon, shapes) Use design system(recommended) Consider basic UI/UX design guidelines Create a mockup with apps like figma (takes time but recommended) Visit here for more on user stories
  • 11.
    Modularization example Database API Server WebInterface Mobile Application APIs APIs SQL 3rd Party Services (Payment, google sign in) IoT systems APIs APIs
  • 12.
    Planning(Project Planning) - Createa plan for everything you have to do - Plan feature wise, starting with independent/important features first - Feel free to adjust your plan to accommodate changes - Use a good project planning software Jira, Open project, Trello, Todoist, GitHub(Recommended)
  • 13.
    Development Ahhh… yes, thefun stuff - Structure your code well, not necessarily at the beginning - Use frameworks to enforce good structure - Consider good practices you know SOLID, DRY, Don’t reinvent the wheel - Tools are your friends, learn to use them Es-lint, formatters, code completion, other useful plugins, IDEs or text editors - Use a version control system Git, Apache Subversion, e.t.c
  • 14.
    Testing - Write unittest for complicated/sensitive functionalities - Write automated e2e tests based on acceptance criteria - Always modify your tests as you modify your code - Use available tools Cypress(Recommended)
  • 15.
    Documentation - Write auser guide (if your have a complex system) - Write a brief technical documentation Technologies used, File/Folder structure, Running/Deployment Instructions
  • 16.
    Release/Deployment - Know thebasics of deployment - Prepare a good documentation on how to deploy your system - Choose a good deployment environment based on your app design Containers(Docker), Nginx,Apache, Play store,
  • 17.
    Maintenance/Feedback - Keep Inconstant communication with your users - Have a standard way of registering, prioritizing and fixing issues Use an issue tracker, Jira, Github issues
  • 18.

Editor's Notes

  • #3 Intro I’m Gift Nnko, a systems developer currently working with HISP Tanzania, I graduated from CoICT in the year 2020 where I was pursuing BSc. Computer Engineering and IT Developer for almost 5 years Languages I started with: C, Java, Python, Javascript Languages I use: Javascript(Typescript)
  • #4 HISP Tanzania Designing and developing solutions that empower govt, organisations and communities through ICT Work primarily with health information and related systems We use DHIS2 for most of our operations
  • #5 Ask by a show of zoom hands How many attendants are programmers How many attendants are developers How many are both What is a coder between these 2 What is the difference
  • #6 Know the difference between these terms Know which one you are Learn to do what is necessary based on what you think you are
  • #8 Outputs of development A usable product that accomplishes a certain goal Available, usable, and has minimal technical issues It should align with the user’s intention of requiring it
  • #9 These steps are derived from personal experience and are not standard They can be modified depending on the implementation
  • #10 Actively figure out what the system should do Document your requirements in user story mode If a user story is complex, break it down to more user stories for better planning Use scenarios to create acceptance criterias for better testing
  • #11 Figure out resources you need and why you need them Choose your tools based on experience and requirements Figure out if your app needs different modules, figure out how to connect them Design a process flow diagram for your app Design UI/UX
  • #12 An example of modules in a system Not all components apply for all systems