Must know for a Non-Tech Manager entering a Tech Company.
One Challenge which product and project managers from non technical background have is to understand developers’ language.
Following are the common questions that popup in Managers’ mind which I want to address.
1. Are they asking for a reasonable timeline or they are fooling around?
2. How do you know if there is actually a technical challenge with something or it can be implemented easily?
3. How do you know, if you have software frameworks to do things and need to be developed from the scratch?
4. How do you know if a developer is good at using frameworks or developing from the scratch?
5. How much time a developer will take to learn a new technology?
I am sure, in this article, I will be explaining about the technologies used in the life-cycle of a Software.
It takes 10,000 Hours of practice to become an expert in any domain according to Malcolm Gladwell in his book, Outliers. But here, I am not going to help with mastering a skill but explaining the basics of various technologies so that you understand what is what.
Firstly, Life cycle of an application: For any application, there are only three stages in the life cycle.
- Front End: which is something your user see and interact with the user, this could be usually in HTML, CSS, Javascript sometimes .NET. This includes mobile apps also.
- Back End: This is generally the database where all the data is stored and the technologies are mostly SQL and NoSQL (Mysql, Oracle SQL, MongoDB, etc)
- Middleware: It is the interface between the Front and Back end. This is vast subject, but in short, the technologies which are commonly used is JAVA for the servers, Nodejs, Python, etc.
How to start about it? Well, it is very simple.
Frond End:
A web application is built with HTML, CSS and Javascript. HTML is for basic website development, for any style from background to complex animation, CSS is used. Whatever the logic we have in the website, it is all Javascript. There is an advanced version of Javascript which reduces lot of pain is called JQUERY.
For Mobile and Tablet Apps, there are three ways to do it. Native development, which means you develop android app separately and ios app separately. Second is way, hybrid app with Ionic technology, this means, the code will be same for android and ios, only the place you deploy will be different. For Mobile Notifications, Firebase by Google is used predominantly.
Other commonly used, front end interface is Desktop App, which is nothing but any application installed on your Windows or Apple computers. For Windows it is developed with Microsoft .NET technology called WPF. for Mac, it is developed with technologies called Objective C and Swift.
Sometimes, front end include complex data presentations like Charts, Tree Structure, Real time tables or any animation as such. All these things are not developed from the scratch, but coders use existing third party libraries like Highcharts (Licensed), D3 Charts (Open Source), Neo JS(Open Source), Telerik (For Windows App Charts, Licensed).
Back End or Database:
Traditionally, SQL is used to store and retrieve data, but now in the last 5 years No-SQL and BigData has changed the game. Elastic Search is helpful in retrieving information quicker.
Most of the Database, like Mysql is free to use, in No-SQL, MongoDB is something which is very easy to deploy. BigData is used when we are dealing with millions of records.
MiddleWare:
This is a vast and complex subject, since there are already lot of Technological terms, I will explain in short.
Most of the large scale applications are developed with JAVA and for a middleware java application to run, we need a mediator between our OS and Application called WebServer, sometimes it is understood as AppServers also.
The most common WebServers used are, WebSphere, Weblogic, TomCat, JBOSS.
Other technologies like python, perl, nodejs are also used as Middleware, where nodejs does not require a WebServer as it runs itself.
Conclusion: Most of the applications are developed with technologies only. I think it is a good start to just to know the technology names and its purpose in the application life-cycle.