Throughout the journey of becoming a software engineer, one has to work on multiple different applications, coding languages, and IDE’s in their relevance for the courses and interests one explores. Wouldn’t it be great to have very detailed and specific information of the tech stack for everything a software engineer may encounter in their journey? TechStackPro is a comprehensive software solution tailored for engineering university students, designed to streamline the process of building essential applications, various IDE’s, system requirements, and resume templates across various specialties within software engineering. With the ever-expanding array of software systems, coding languages, and specialised tools, navigating the technological landscape can be daunting. TechStackPro aims to simplify this process by providing a centralised platform where students can access relevant resources, templates, and guidance specific to their chosen fields. Beyond providing exhaustive information, TechStackPro also incorporates user interaction to provide user specific feedback on key features, fostering an engaging and collaborative environment within the system.
Name: Arsh Upadhyaya
Student number: 47539934
The MVP for this project must have the following key features/requirements:
A key attribute of TechStackPro must be making the application scalable. As the number of users increase, full CRUD functionality should also be implemented for these users in a scalable manner. There must be load balancing for all user interaction features. Further, more common software engineering topics will have higher user interaction, so scalability should happen accordingly. Horizontal scaling is the architectural choice that should be taken, as the user-based traffic is the main scalability consideration, and application not too computationally heavy through its features.
A fundamental aspect of TeckStackPro is to have detailed knowledge for various topics within software engineering. It should be evident that this can be extremely detailed for very specific topics and technologies within. As such, as the application development process progresses, new information must be added in an organised manner. Hence database and responsiveness must be organised and must be built to easily be added to. Additionally, extra features within the interface might be added at later stages, so interface should be built to support addition of new features as well.
Since there is a qualitative data gathering process in this project, some level of reliability would be in accordance to the correctness of data collected, in terms of tech stack, system requirements, and resume templates. Furthermore, the actual system itself should also be reliable from a software perspective, there must be data consistency (all users have same view of data), as well as reliable user interactions (e.g. one user may not be able to upvote something more than once). Servers should also not crash, and have minimal downtime.
Using load testing tools like BlazeMeter/NeoLoad, load testing (concurrent requests also) over various endpoints will be carried out (reviews may require different load testing than simpler feature upvotes). Additionally, we may not need to carry out load testing over all datapoints (engineering topics), the most popular ones can be sufficient (e.g front end devlopment). The response metrics such as throughput, response times can be used to test effectiveness in different conditions. We can set success criteria, as having ability to handle 1000 users, and less than 5 seconds for all requests.
The MVP will be minimal in itself. If we consider this a starting point, the architecture can still be designed to be extensible later. The interface design can be kept very basic, and new features can be added after qualitative considerations. The database design(both user request, and tech stack), in its initial phases itself can be made in MongoDB, so it can handle unstructured data, and we can easily expand upon it.