When we talk about a software development, it contains the events that start from idea to model designing to first user registration and further improvements. In this article we are gonna talk about the tools that you will need at different stage of software development.
This is one of the most awesome tool that product designers can use to increase their productivity. This tool has everything that you need for designing. You can simply use templates tweak them and make them according to your needs. Trust me if you have idea of what you have to design you can easily use it by just dragging dropping elements from different templates and modifying them.
Erviz is tool that you will need when you move to the relationship models of your software product. Erviz provides you the diagram of all the relationships just by using some text in the input. It is really handy if you want to design fast. In this you can manage constraints and keys very easily.
Now lets say you are about to start coding, now you must realize how important it is for you to maintain code that others can collaborate to. For this you just have to learn about git and use it. When it comes to versioning control and collaboration in codes there is nothing better than git in the industry. You will need a website which host git repos, few are github, bitbucket, gitlab.
You can learn about git here
This is something which seems very less value but has great impact on productivity. With good IDEs you can develop really fast and thus reaching to the first MVP which is prime target, can be achieved early. IDE helps you by making you type less, linting the code, managing the indentation, some IDEs maintain the versioning control, IDEs are also use to run the code directly.So it is important to choose right IDE.
With Stack, I mean the technologies that you are going to use to build the software in. This is one of the trickiest part and should be decided very carefully. If you are unable to choose the right Stack it may cost you a lot of time and money in future. Some of the common stacks are MEAN stack, LAMP stack, ROR etc. Stack contains server, database, and application technologies.
Ticket or say task management:
Now that you have started to build the product and want to keep the track of what others are doing. This can be somewhat accomplished in github which will provide you git repo, but it is better to keep it in different place. You can use trello, asana, JIRA, excel for this purpose. JIRA is most powerful among these but is not free. Go for trello or asana.
Communication or chat channel:
There is no other alternative but slack. Yes this tool is built so good and is so impressing that for me it is the first recommendation. It provides options like channels, private chat, channels, sharing files , code snippet, calls. One of the most powerful feature is slack bots which can be integrated with any app and then can be a great collaborative tool.
Staging environment is something which is like production environment. Since we cannot always keep our local environments consistent to production. For this purpose staging is required. So that if there is any problem related to environment it can be caught at the staging only and don’t propagate to the production.
So for a convention you should never touch production. In fact you should not have access to production servers instead of database. If you want to make some changes, it is done on latest which is exactly like production and then the latest is made the production and for next time new latest is spawn.
This is what we talked about in the previous heading. It is something that the whole world interacts to.
Now comes the part where to host your servers. Now a days cloud is best choice for starters as they provide more than 99% of uptime. Few good options to choose from are AWS and digital ocean. AWS is huge and provides many functionality. Digital ocean has just started and doesn’t have functionalities that AWS can provide. But it is cheaper for starting businesses.
If you don’t normal human errors to propagate to the production you can implement travis hook on each commit in git. As soon as a Pull Request is made in git. It triggers the travis hook which run scripts. These scripts test for the tests and error and allow merging only if all the tests passed.
Yup, this is website you will have to visit again and again to get the best results for your problems. Whenever you are stuck just type the problem plus stack overflow and in most of the cases you will get your answer in first or second link.
Yes, your app may want to send push notification. You can use one signal for free for this purpose and now your app can notify users anytime about any change.
This is important as you want to track what is the analytics related to user. What is your target audience, who are visiting, from where they are visiting. Google analytics provide everything you need for analysis.
If you want to track error and call stack of particular stacks you can use sentry for this purpose. Sentry logs the errors and call stack corresponding to each log so that you can debug it easily.
You want free smtp server. Go for Yandex mail. There once you provide the verification of domain name you will get mailbox with that domain name.
So these are quick list of tools that may come handy when you start developing your next software. If you think anything is missing. Please drop a line a comment I will add it to the list.