Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 58 additions & 1 deletion faq/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,61 @@ nav_order: 6
---

# Frequently Asked Questions
This page serves as a resource to answer frequently asked questions regarding Software For Love.

This page serves as a resource to answer frequently asked questions regarding Software For Love.

## General
### **What are my general responsibilities and expectations as a volunteer?**
Please refer to [the following page.](https://software-for-love.github.io/documentation/code-of-conduct/SFL_Volunteer_Responsibilities.html) It contains information regarding general resposibilities for volunteers, as well as role-specific responsibilities.

### **What is a brief description of the roles at Software For Love?**

To be answered by execs.

### **What is data science, and how does it differ from software development?**

Software development is a set of activities that are done to create, implement, and maintain software solution. At Software For Love, Software developmers work on analyzing the needs of a client and working towards developing and implementing a software solution that works best for them.

*See: What is a tech stack?*

Data science, on the other hand, specifically focuses on the study of data. They usually work with large sums of data, and create algorithms to collect, preprocess, and analyze it. The end goal would be to try to understand and extract useful insights from the data. Data scientists tend to specifically use more database, data analysis, and data visualization tools.

There are some similarities and overlap between the qualifications of a data scientist and a software developer. For example, both of them do write code; a data scientist may want to write some code to help them understand their data. However, there are large differences as well. The primary goal of a data scientist would be to understand and make sense of data, whereas for a software developer, to create a software solution to solve a problem. The skillset needed to be a good data scientist generally relies on a stronger foundation in mathematics and statistics. However, the skillset needed to be a good software developer is a strong understanding of the technologies, code frameworks, and libraries needed to develop a solution, as well as knowledge on how to write clean, sustainable, and maintainable code.

### **What's a tech stack?**

Software solutions usually use a *tech stack*. A tech stack is just a set of technologies that are decided upon by a team to use to create a software solution. For simplicity, they are usually clumped into 2 distinct parts; a *front-end* (what the end user interacts with), and a *back-end* (what handles all of the logic behind the scenes). Working with the front-end and the back-end usually requires a different set of skills, and some software developers specialize in working with those technologies. Those developers may call themselves a *front-end developer* or a *back-end developer* respectively. A person who is generally proficient in both is known as a *full-stack developer*. When we say "software developer" here at SFL, we are usually looking for someone who could call themselves (or is looking to be) one of the three listed above.

### **What the heck is Netlify?**

Netlify is a cloud computing company, and we use their services for quite a few projects at Software For Love. It allows us to easily build web applications and websites while doing extremely minimal *back-end* work. It also allows us to test our work, and deploy it very easily. This cuts down a lot of time for development and testing when we write code for our projects. It's free and fairly easy to use!

*More details:*
Netlify is able to simply connect to your code repository on Github, and host your site. There are a bunch of other features that Netlify offers, such as serverless functions, automatic form handling, split testing, continuous deployment, and more. Furthermore, Netlify allows you to use these services for free with a very generous cap on bandwidth use and build time compared to other competitors. This also makes them a very budget-friendly option for us as well.

### **Does SFL only do websites?**
Software For Love is open to develop any type of software solution! However, we tend to find that most non-profits and charities are looking for web-based software solutions (web applications or websites). We also do consultations, to provide insight and guidance to how non-profits and charities can improve their existing software solutions so that they're able to maximize their impact.

### **What technologies and tools do you use?**

When developing web applications, we usually use a MERN stack in JavaScript.

MERN stands for the following:
* MongoDB. This is a *NoSQL* database program.
* Express.js. This is a *back-end* web application framework for *Node.js*.
* React. This is a JavaScript library that can be used for developing clean and modern *front-end* user interfaces with ease.
* Node.js. This is the *runtime environment*. This is the environment that takes your code (just a bunch of text) and executes it.

See: *What is a tech stack?*

For a lot of our website, we also like to use GatsbyJS. Gatsby is a *React*-based framework.

### **How often do we get projects?**

We constantly receive project requests throughout the year. However, we typically begin new projects at the beginning of a term (early January, May, or September).

### **What does the process for starting a project look like?**

When a project request is received by Software For Love, executives set up a meeting with the prospective client and associated stakeholders to gain an understand of their organization, as well as their high-level software needs. An assessment is made to determine if our organization should take on this project. A large factor in this process is the legal status of this organization (whether they are a not-for-profit or charity), the social impact that this project would have, as well as whether we believe it would be a feasible project that we can take on.

If executives at Software For Love decide to take on a project, then we will inform the prospective client and begin searching for a project manager. This project manager is then tasked with eliciting specific requirements for the project, crafting an appropriate timeline, and also interviewing candidates for their team. The project manager is expected to lead the project to completion. More information regarding the role of a project manager during a project [can be found here.](https://software-for-love.github.io/documentation/best_practises/pm.html)