@meetmangukiya to answer your questions about my job and what software development is all about in the real world, I list here both your questions and my answers so every camper can benefit.
What is a real software engineer job like?
It largely depends on the following factors:
a. Size of your company
b. Culture of your company
c. Your boss and colleagues
d. Your particular job description
I can tell you exactly about my current situation. The size of my company is 20 people together including management. The company specialises in using Open Source technologies to build custom software for big corporates. We also have 2 legacy software that we license to customers. The culture is agile, we do daily SCRUM meeting, we implement new technology very fast. The team is small, up to 6 people max per team.
Furthermore, we always hangout after lunch, which is included everyday. We chill at the terrace for 15 min and get back to work. I have two monitors and a custom made Linux computer with keyboard and mouse. Everyday, my coworkers teach me a few extremely useful and yet hard to get skills. Like clicking the middle mouse button to paste directly into the command line (very few books out there would bother to mention this and yet I use it now every other minute).
I use Safari Online to read on multiple books for a single technology and try to master it while incrementally improving on the application or feature I am writing. Currently, I am writing infrastructure as code with Vagrant as a wrapper and SaltStack as provisioner for a Jenkins setup to automatically implement Continuous Integration. It is a bit like the “automation of automation of testing and deployment”. (I thought about the automation of writing codes too but that was a bit too far fetched at this point. I do have some concepts written down in my notebook on the “Principle of Code Self-Propagation as a Means to Achieve Artificial Intelligence”. I write another post on that and open source my example code).
What do you do most of your day? Maintain an existing code, look for bugs or just write new software?
Our team actually actively writes new software most of the time. I was a bit fortunate. It is a bit like: 20% maintaining what is there, 30% upgrading the old parts to new parts, and the rest is writing new code.
You always look for bugs, there is no way around it. The things you can do to improve the process of debugging is to try to write better code from the start and use CI to detect mistakes automatically and consistently with infrastructure as code.
In terms of how a typical day looks like, it is actually very uniform. First, I get to work at 08:30 am. I get a cup of coffee and a class of water. Then I work. Mostly it is reading books and Stack Overflow. I code about 30% of my time. The rest is learning and communicating with the team. We have daily SCRUM meeting. Everyday I get help from my boss and colleagues on matters I cannot resolve on my own. I write them down in my notebook as Question and Answers, so I don’t forget. I also keep on Google Drive extensive modular documentation for myself with an Index so I always can find what I have learned within a few seconds. No more re-learning of what you have forgotten. I have about 34 self-written documentation by now and would be happy to make them open source if there is a demand. I spend about 20% of my time reading and updating those docs.
At 12:00 pretty precisely, I have lunch which is cooked by a private cook in our kitchen. We all each together, both management, CEO, and colleagues. Everyone is on the same table and the same room. We make fun and talk about work sometimes.
Then we chill at the terrace for a while. This is my favourite time of the day since I can get to know my colleagues and boss. After that, we get back to work and finish whatever I can and commit often to git. I then push a few times a day to GitHub private repo all my work at the company. At the end of the work day, around 17:30 or a bit before, I update my timesheet on JIRA and write down everything that other team members need to know on GitHub Readme of the private repo and on Confluence.
One thing is clear, you are reading code much more often and for a longer time when you are working. You will update documentation of your own code, if you don’t have to do that in a company, I have serious doubt about the quality of the code and how you communicate amongst each other as developers. I forget my own code within about 5 days of not reading it. Not sure about others but it cannot last long since coding is not procedural but rather based on experience. It is like playing the piano. If you don’t practice, even for one single day, you will loose a part of your knowledge and skill. So it is better to practice everyday 15 minutes than to practice on one day in a week for 10 hours.
If you wish to know more specific information about how it feels like to work in the real world as a software developer, please let me know.