Skip to content

Amarjit-ph/software-engineering

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation

Software Engineering

This repository is my personal documentation of my journey of learning, best practices and conventions

Started from a small town called Imphal in the North-Eastern part of India, Where getting a public job is the only goal & safest way to live a life, Defying everything to pursue my passion and Choosing a Social Misfit career as a Computer Science Engineer To become a Software Engineer & A first-generation entrepreneur. I completed high school in my city and moved to Chandigarh to pursue my passion and degree As a computer science engineer.

Currently working as a software engineer in Banglore, India In a start-up that manages business Operations and Human resources globally.

“When you discover your mission, you will feel its demand. It will fill you with enthusiasm and a burning desire to get to work on it.” — W. Clement Stone

How I Navigate in this Journey ? 🏃‍♀️

Software Development lifecycle

This is my personal software development process that i followed in most of the project that i work with.

Naming Convention

  • Pascal Case (PascalCase) - FILE NAME
  • Camel Case (camelCase) - REPOSITORY NAME/FILE NAME
  • Snake Case (snake_case) - VARIABLE NAME
  • Dash Case (dash-case) - CLASS NAME

Repositories ❤️

LEARN

Extensions

LOOK & FEEL

  • Tinacious Design Theme
  • Bracket Pair Colorizer
  • Better Comments
  • Emoji
  • Material Icon Theme

UTILITY

  • Psioniq File Header
  • Code Spell Checker
  • Error Lens
  • GitLens
  • Jira And Bitbucket
  • Todo Tree
  • Version Lens

TOOL

  • Simple React Snippets
  • Dart
  • Flutter snippets
  • Flutter
  • Docker

Developer Youtube Channels 🎬

Developer Blogs

Software Development 🏗️

  • Agile Software Development - Agile is an iterative approach to project management and software development that helps teams deliver value to their customers faster and with fewer headaches. Instead of betting everything on a "big bang" launch, an agile team delivers work in small, but consumable, increments.

DOCUMENTATION

My Own curated way of Documenting a software product

  1. INFORMATION GATHERING
  2. REQUIREMENT ANALYSIS
  3. WORKFLOW
  4. LIFE CYCLE
  5. ARCHITECTURE
  6. DATA MODELS
  7. UI FLOW
  8. API
  9. STATES

Version Control 🚀

  • Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows. - https://git-scm.com/
git config --global user.name "Your Name"
git config --global user.email "youremail@yourdomain.com"

Once done, you can confirm that the information is set by running:
git config --list

Resources 🦜

GRADIENTS FINDER

ICONS

ILLUSTRATION

TEMPLATES

DESIGN RESOURCES

FAQ 🙋‍♀️

1. What is API (Applicaton Programming Interface) ?

An application programming interface is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build or use such a connection or interface is called an API specification.

2. What is SDK (Software Development Kit) ?

An SDK is just a pre-packaged set of code (for a specific language) that you don’t have to write yourself.Sometimes free and sometimes you have to, purchase them.There are all sorts of other SDKs out there including things like an SDK to simplify building a User Interface.

The downside of the SDK is its size. It has many functionalities that one app might not use, also as SDK should be consistent over time, it should have the older versions which make them even larger over time.

Also, as they run on our thread, they could have security issues, as well as malware. It is better to make a good document for API vs an SDK. But big companies like to create SDK to obscure data from developers. So never use an SDK unless it is open source.

3. What is Framework ?

A framework is a skeleton where the application defines the "meat" of the operation by filling out the skeleton. The skeleton still has code to link up the parts but the most important work is done by the application.

A framework inverts the control of the program. It tells the developer what they need.

Examples of frameworks: Web application system, Plug-in manager, GUI system. The framework defines the concept but the application defines the fundamental functionality that end-users care about.

4. What is Library ?

A library performs specific, well-defined operations.

Examples of libraries: Network protocols, compression, image manipulation, string utilities, regular expression evaluation, math. Operations are self-contained.

5. Difference between Relational & Non-Relational Databases

1. Relational Database : RDBMS stands for Relational Database Management Systems. It is most popular database. In it, data is store in the form of row that is in the form of tuple. It contain numbers of table and data can be easily accessed because data is store in the table. This Model was proposed by E.F. Codd.

2. Non Relational (NoSQL) : NoSQL Database stands for a non-SQL database. NoSQL database doesn’t use table to store the data like relational database. It is used for storing and fetching the data in database and generally used to store the large amount of data. It supports query language and provides better performance.

Relational Database NoSQL
It is used to handle data coming in low velocity. It is used to handle data coming in high velocity.
It gives only read scalability. It gives both read and write scalability.
It manages structured data. It manages all type of data.
Data arrives from one or few locations. Data arrives from many locations.
It supports complex transactions. It supports simple transactions.
It has single point of failure. No single point of failure.
It handles data in less volume. It handles data in high volume.
Transactions written in one location. Transactions written in many locations.
Deployed in vertical fashion. Deployed in Horizontal fashion.

6. What are microservices?

Microservices - also known as the microservice architecture - is an architectural style that structures an application as a collection of services that are

  • Highly maintainable and testable. Loosely coupled. Independently deployable. Organized around business capabilities. Owned by a small team. The microservice architecture enables the rapid, frequent and reliable delivery of large, complex applications. It also enables an organization to evolve its technology stack.

7. What is Entity-Attribute-Value (EAV) model ?

The Entity-Attribute-Value (EAV) model is a data modeling approach used to represent complex and dynamic data structures. In this model, data is organized into three components: entities, attributes, and values.

  • Entities: These are objects or concepts that are being described in the model. Examples of entities could be customers, products, orders, or any other object of interest.
  • Attributes: These are characteristics or properties of the entities being described. Examples of attributes for a customer entity could be name, address, or email address.
  • Values: These are the specific values associated with each attribute for each entity. For example, for the customer entity, the name attribute may have the value "John Smith," while the address attribute may have the value "123 Main Street." The EAV model is useful in situations where there is a need for flexibility in data modeling, such as when dealing with data that has many optional attributes, or when the attributes of an entity can change frequently. However, it can also lead to complex queries and difficulty in maintaining data integrity. Therefore, it should be used judiciously and with careful consideration of the trade-offs involved.

Here's an example of how an EAV model could be represented in a table format.

Let's say we have a simple online store that sells books, and we want to store information about each book in our database. In a traditional database design, we would create a table with columns for each attribute of the book, such as title, author, publisher, ISBN, etc. However, in an EAV model, we would create three tables: one for entities, one for attributes, and one for values.

Here are the tables we would create:

Entity Table:

entity_id entity_type
1 Book
2 Book

Attribute Table :

attribute_id attribute_name
1 Title
2 Author
3 Publisher
4 ISBN

Enitity Table:

entity_id attribute_id value
1 1 Harry Potter and the Philosopher's Stone
1 2 J.K. Rowling
1 3 Bloomsbury Publishing
1 4 0747532699
2 1 The Catcher in the Rye
2 2 J.D. Salinger
2 3 Little, Brown and Company
2 4 0316769487

In this example, the Entity Table contains two rows representing two different books, each with a unique entity_id. The Attribute Table lists the different attributes we want to store for each book, such as title, author, publisher, and ISBN, each with a unique attribute_id. The Value Table contains rows for each combination of entity_id and attribute_id, along with the value associated with that combination.

For instance, the first row in the Value Table tells us that for the book with entity_id 1, the title attribute has the value "Harry Potter and the Philosopher's Stone", the author attribute has the value "J.K. Rowling", the publisher attribute has the value "Bloomsbury Publishing", and the ISBN attribute has the value "0747532699". Similarly, the second row in the Value Table tells us that for the book with entity_id 2, the title attribute has the value "The Catcher in the Rye", the author attribute has the value "J.D. Salinger", the publisher attribute has the value "Little, Brown and Company", and the ISBN attribute has the value "0316769487".

COUNTER 23 M

  • 1 Day
  • 2 Day
  • 3 Day
  • 4 Day
  • 5 Day
  • 6 Day
  • 8 Day
  • 9 Day
  • 10 Day - 1
  • 11 Day - 2
  • 12 Day - 3
  • 13 Day - 4
  • 14 Day - 5
  • 15 Day - 6
  • 16 Day - 7
  • 17 Day - 8
  • 18 Day - 9
  • 19 Day - 10
  • 20 Day - 11
  • 21 Day - 12
  • 22 Day - 13
  • 23 Day - 14
  • 26 Day - 17
  • 27 Day - 18
  • 28 Day - 19
  • 29 Day - 20
  • 30 Day - 21
  • 31 Day - 22

About

Documentation of my software engineering journey

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published