Confused in the IT industry, Need little explanation

Hi

I am a fresher in the IT industry. My interest is in Web Development but I am open and interested to learn other tech stacks as well, I carry skills like Java, HTML, CSS, PHP etc.

Now, I am confused how an organization works on the technology part in real time. I don’t know if my level of knowledge can meet the real world expectations. Also as I am open to learning all technologies, whenever I read about the architectures etc, I don’t understand what exactly it means( e.g. Very basic and silly seeming question I have: The web servers, application servers, database servers and various other servers…what are they exactly? Are they same? Only the programs installed on them are different?).

I know if I want to gain exposure to real time projects, I can contribute on GITHUB in open sources. But when I checked there, I was not able to understand from where to start.

Can someone guide me through what I am supposed to do? Sorry If this sounds dumb.

Thank you

I’ll answer a few explicit questions you bring up.

  1. What is a “server”?
  • There are really two types of “servers” you should care about.
    One is the physical server, that is in a room somewhere that is more or less a powerful computer that is accessed via the network (internet, local network, wifi, whatever). These are less common these days due to the emergency of the cloud (managed servers owned, ran, maintained and hosted by a company like Amazon, or Microsoft)
    The other is more or less a program that runs in the background of a computer, these are also called daemons. For example, if you install a database onto your computer, and start it nothing “pops up” on your screen, since its running in the background. Now if you start a GUI that access the database, or try to connect to the database from code, it will go thru and get connected.
    Now a database server, web server, or other type of daemon can be ran on multiple machines, or on a single machine, it doesn’t matter to you in the end, as where it is being ran is abstracted away from the physical machine.
  1. Contributing to github projects
    Generally most open source projects have a CONTRIBUTING.md file that you can read that will get you started. I’d also recommend reading about the “flow” of contributing: https://guides.github.com/introduction/flow/

  2. Understanding general architecture is good to know, you might not be incharge of building anything complex, but knowing all the terms, and how the “things” talk to each other, will help you understand where code is being executed and what is going on at a deeper level.
    https://stackify.com/web-application-architecture/

Finally, if your not sure “if your ready” I recommend trying to go thru everything yourself and digging your way thru all the things you don’t know. You don’t know how to build a full-stack app? Google it, start trying to build one. Don’t know know what nodejs is? Install it, run it, read the docs, try to build something.
There’s lots to know, but knowing what you should know is hard without going out and trying to do what you want to do.

Goodluck :smiley:

2 Likes

My recommendation would be to build and deploy a small app or site.

This will give you the knowledge and comfort you’re seeking around the actual practical question of how projects are put together and deployed in the real world.

If you don’t have a portfolio, that would be a good idea for a site you can build. Then deploy it to a small server e.g. a DigitalOcean droplet. Try to set up the DNS, https certificates, etc. It will be very confusing and you’ll have to read some tutorials but it will help you understand what a server is and what it does much better than simply reading about it.

Another advantage of this is that you will make mistakes and do some stuff in a difficult or bad way. That means when you learn the easy/right way or use some new tech that helps you, you can appreciate and understand its value.

Contributing on open source is hard. You can always look for the CONTRIBUTING.MD file as mentioned, and open issues on the issue page of a repo. However, in my experience, there’s very little left undone that beginners can tackle. It’s nice to contribute to open source, but problems seem to fall under either ‘big intimidating difficult technical problems’ or ‘simple time-consuming non-technical problems’. I don’t feel either of those are helpful for those of us who are learning, but it can be interesting to look around the issues and discussions on big projects and see the team’s process for identifying, discussing and fixing issues.

That’s why I think the best approach is to make your own project. Make something simple, but bigger than what you normally tackle. Then get it on its own domain and server and make it available to the public. Right now I am doing this by making a portfolio site using Gatsby/React and pulling in blog posts and projects using the Contentful API and GraphQL. It’s been a great experience so far and I’ve learned a ton. I’m really looking forward to getting it live.

1 Like

Thank you so much. I found this really helpful!

Thanks for the details. I have already started to make my portfolio! Do share yours when it’s live…