6 answers
Updated
839 views
Software Developer
#software #technology #software-engineer #computer-software
What does a typical work day looks like and what is recommended for me to prepare for this profession
Login to comment
6 answers
Updated
Mihir’s Answer
Hey Micheal, glad to see your interest in the Software Engineer profession.
I'll break your question down into 2 parts:
1. Software developers in their day-to-day life work on some requirement that might come from their client (if it's typically a services-based organization) or they work on product of their own organization (if it's typically a product-based organization). There is a third type of developers who work on Open Source software & are funded by their organizations.
In all of these developers are usually working on some step of SDLC (Software Development Life Cycle) phases. It might be planning, designing, developing, testing, fixing bugs, or reviewing. But that's not all, some people mentor juniors. Or some just find a day to chill out.
2. You can start by acquiring the fundamentals of computer science. For that, you can opt for a degree or do some courses or even learn from youtube/udemy/coursera, etc. Then you can join some boot camps to put those fundamentals at work or even join some internships.
That's basically all but I would love to add that try to do some open source contributions into software & that's the best way to meet & interact with fellow developers who develop for everyone & not just 1 company.
Would advise you to check out Software Development Life Cycle phases
You can opt for an internship & get to work with fellow developers & observe their work
Or you can connect with people on LinkedIn & ask about their experiences (every one is very welcoming there)
Contribute in open source.
I'll break your question down into 2 parts:
1. Software developers in their day-to-day life work on some requirement that might come from their client (if it's typically a services-based organization) or they work on product of their own organization (if it's typically a product-based organization). There is a third type of developers who work on Open Source software & are funded by their organizations.
In all of these developers are usually working on some step of SDLC (Software Development Life Cycle) phases. It might be planning, designing, developing, testing, fixing bugs, or reviewing. But that's not all, some people mentor juniors. Or some just find a day to chill out.
2. You can start by acquiring the fundamentals of computer science. For that, you can opt for a degree or do some courses or even learn from youtube/udemy/coursera, etc. Then you can join some boot camps to put those fundamentals at work or even join some internships.
That's basically all but I would love to add that try to do some open source contributions into software & that's the best way to meet & interact with fellow developers who develop for everyone & not just 1 company.
Mihir recommends the following next steps:
Updated
Mickael’s Answer
this was asked in another post so here was my answer:
t really depends the company your are working on and your position.
I am working for Dell as a Principal Software Engineer (meaning I've been working for a while) and as a developer (not manager), my day to day looks like this:
- See if support engineers need my expertise to help solving customers' hot issues.
- Work on the task I am assigned to. This task can be:
-- Analyze (or review someone else's analysis) a defect to find the cause and make sure all information are filled up properly for the next person to work on. Usually that includes identifying root cause of the problem, find when the problem has been introduced, and all we need for bug tracking and continuous improvement.
-- Fix a defect that was found by testers or customers (could be the follow up of the previous task)
-- Continue working on a new feature
-- Update documentation
-- Write tests
- Answer questions from management and/or support about the product. These can be meetings or simply e-mails.
- Mentor younger/less experimented coworkers to help them do their job
- Review colleagues' work
- Collaborate with my extended team
- [Sometimes] Follow some training either mandatory by Dell or simply to improve or refresh a skill that I need for a coming project.
When you are less experienced, you mostly focus on these parts:
- Work on the defect or feature you are assigned on
- Review colleagues' work
- Attend your mandatory trainings
There is also a ton of discussions with team members because multiple brains are better than one. If you are working on some problems and the solution is not obvious, or there are multiple solutions, it is always good to discuss them with other team members and get their feedback. You could consider this part of "Review Colleagues' work" though the work is not really there yet.
Of course, if you work on your own, all of this goes away and your day to day will look like:
- check feedback from customers
- assign priorities to defect / features
- work on top priority one
One of the main thing is multitasking. While unexperienced software developers tend to be left alone to do their work, more experienced people have hard time staying focused for long time. Simply because they need to interact with others.
t really depends the company your are working on and your position.
I am working for Dell as a Principal Software Engineer (meaning I've been working for a while) and as a developer (not manager), my day to day looks like this:
- See if support engineers need my expertise to help solving customers' hot issues.
- Work on the task I am assigned to. This task can be:
-- Analyze (or review someone else's analysis) a defect to find the cause and make sure all information are filled up properly for the next person to work on. Usually that includes identifying root cause of the problem, find when the problem has been introduced, and all we need for bug tracking and continuous improvement.
-- Fix a defect that was found by testers or customers (could be the follow up of the previous task)
-- Continue working on a new feature
-- Update documentation
-- Write tests
- Answer questions from management and/or support about the product. These can be meetings or simply e-mails.
- Mentor younger/less experimented coworkers to help them do their job
- Review colleagues' work
- Collaborate with my extended team
- [Sometimes] Follow some training either mandatory by Dell or simply to improve or refresh a skill that I need for a coming project.
When you are less experienced, you mostly focus on these parts:
- Work on the defect or feature you are assigned on
- Review colleagues' work
- Attend your mandatory trainings
There is also a ton of discussions with team members because multiple brains are better than one. If you are working on some problems and the solution is not obvious, or there are multiple solutions, it is always good to discuss them with other team members and get their feedback. You could consider this part of "Review Colleagues' work" though the work is not really there yet.
Of course, if you work on your own, all of this goes away and your day to day will look like:
- check feedback from customers
- assign priorities to defect / features
- work on top priority one
One of the main thing is multitasking. While unexperienced software developers tend to be left alone to do their work, more experienced people have hard time staying focused for long time. Simply because they need to interact with others.
Updated
Adhiragni’s Answer
Here's a comprehensive one:
Researching, designing, implementing, and managing software programs
Testing and evaluating new programs
Identifying areas for modification in existing programs and subsequently developing these modifications
Writing and implementing efficient code
Determining operational practicality
Developing quality assurance procedures
Deploying software tools, processes, and metrics
Maintaining and upgrading existing systems
Training users
Working closely with other developers, UX designers, business and systems analysts
Researching, designing, implementing, and managing software programs
Testing and evaluating new programs
Identifying areas for modification in existing programs and subsequently developing these modifications
Writing and implementing efficient code
Determining operational practicality
Developing quality assurance procedures
Deploying software tools, processes, and metrics
Maintaining and upgrading existing systems
Training users
Working closely with other developers, UX designers, business and systems analysts
Updated
Chiranjib’s Answer
Hi Pius
There are two questions. I'll try to answer one by one.
1. What does a typical workday look like?
Well, software developers develop working solutions for clients which typically consist of some kind of logical code running at the back-end. There are variations - some software developers are responsible for developing the front-end, others are responsible for developing the back-end, but at the end of the day, no matter where they work, they contribute towards creating a working product for the client. There are several things that a software developer may need to do, so in my humble opinion, I cannot say there is a typical workday for him. Some day, he might spend time understanding the business requirement, someday he may spend time understanding the solution architecture, someday he may spend time clarifying questions from business users, someday he may spend time programming the business logic, someday he may spend time validating that the created solution really works and so on and so forth. Software development typically follows the Software Development Life Cycle (SDLC). Depending on where the project is, the kind of responsibility for the developer would vary. Then SDLC also has several types and that also has a huge impact on how the work would be approached by the developer.
2. What is recommended to prepare for this profession?
Software engineers typically have an educational background comprising software development and programming. There are several full-time degrees that would provide the necessary training. For example - A degree in software engineering or computer science or software systems development. If a full-time degree is not possible, there are lots of short-term interactive courses that can help you in training yourself, like EdX, Coursera, etc. One very important thing to remember is - this is an ever-evolving field. So, be prepared for continuous upskilling, cross-skilling, and re-skilling, even after you land a job. People who do not commit to continuous learning usually find their skills getting obsolete very fast.
There are two questions. I'll try to answer one by one.
1. What does a typical workday look like?
Well, software developers develop working solutions for clients which typically consist of some kind of logical code running at the back-end. There are variations - some software developers are responsible for developing the front-end, others are responsible for developing the back-end, but at the end of the day, no matter where they work, they contribute towards creating a working product for the client. There are several things that a software developer may need to do, so in my humble opinion, I cannot say there is a typical workday for him. Some day, he might spend time understanding the business requirement, someday he may spend time understanding the solution architecture, someday he may spend time clarifying questions from business users, someday he may spend time programming the business logic, someday he may spend time validating that the created solution really works and so on and so forth. Software development typically follows the Software Development Life Cycle (SDLC). Depending on where the project is, the kind of responsibility for the developer would vary. Then SDLC also has several types and that also has a huge impact on how the work would be approached by the developer.
2. What is recommended to prepare for this profession?
Software engineers typically have an educational background comprising software development and programming. There are several full-time degrees that would provide the necessary training. For example - A degree in software engineering or computer science or software systems development. If a full-time degree is not possible, there are lots of short-term interactive courses that can help you in training yourself, like EdX, Coursera, etc. One very important thing to remember is - this is an ever-evolving field. So, be prepared for continuous upskilling, cross-skilling, and re-skilling, even after you land a job. People who do not commit to continuous learning usually find their skills getting obsolete very fast.
Thank you very much for your time to answer my question! Very sorry for asking two at once.
Pius
You're very welcome!
Chiranjib Mazumdar
Updated
Ram’s Answer
Hi, me being an software developer, I am glad to hear that you would like to be the same.
Challenges:
Time management and sticking to the deadlines provided is a challenging task even for an experienced software engineer, when they are packed with a lot of work.
People working continuously at the desk sometimes get back pain, eye strain, or carpal tunnel syndrome. One must take proper break in between & take a walk or do stretching exercises regularly to avoid these problems.
Rapid advancement of technology may put a lot of pressure on the individual on how to sort out things.
Complexity of a system adds on to the challenging side.
Pay Package:
The average salary for a fresh software engineer is $80000 per annum with additional bonus, commission, and profit sharing. The salary increases with experience & can go as high as $200k per annum for talented software engineers.
A lot of software engineers nowadays are taking up the entrepreneurship path. This path offers a no bar salary ( sky’s the limit!), but has to be compensated with very long & stressful working hours.
Timing of work:
A software engineer has to work 5-6 days per week, usually 40-50 hours a week.
In times of ongoing project submissions or instability in the software they have to work longer hours and on Saturdays as well to meet strict deadlines.
Source: https://aim2excel.in
Challenges:
Time management and sticking to the deadlines provided is a challenging task even for an experienced software engineer, when they are packed with a lot of work.
People working continuously at the desk sometimes get back pain, eye strain, or carpal tunnel syndrome. One must take proper break in between & take a walk or do stretching exercises regularly to avoid these problems.
Rapid advancement of technology may put a lot of pressure on the individual on how to sort out things.
Complexity of a system adds on to the challenging side.
Pay Package:
The average salary for a fresh software engineer is $80000 per annum with additional bonus, commission, and profit sharing. The salary increases with experience & can go as high as $200k per annum for talented software engineers.
A lot of software engineers nowadays are taking up the entrepreneurship path. This path offers a no bar salary ( sky’s the limit!), but has to be compensated with very long & stressful working hours.
Timing of work:
A software engineer has to work 5-6 days per week, usually 40-50 hours a week.
In times of ongoing project submissions or instability in the software they have to work longer hours and on Saturdays as well to meet strict deadlines.
Source: https://aim2excel.in
Updated
Rebecca’s Answer
Hi, I am glad to hear that you would like to be a software developer. In fact, there are many different kinds of software developer , e.g. Web , Apps, ERP, etc. You could explore more different software.
However, before starting the career of a software developer, I would recommend you attend the computer science courses in the college. You could help you to acquire the fundamental knowledge of software development. It is not only to learn the programming language itself but also the theory and algorithm how to utilize the computer resource efficient and deliver the best performance.
Going back to your question on daily life of software developer, it is usually to develop the programs following the requirement/specification and conduct the system testing on the software itself. You may also need to work with other developers together.
Hope this helps! Good Luck!
However, before starting the career of a software developer, I would recommend you attend the computer science courses in the college. You could help you to acquire the fundamental knowledge of software development. It is not only to learn the programming language itself but also the theory and algorithm how to utilize the computer resource efficient and deliver the best performance.
Going back to your question on daily life of software developer, it is usually to develop the programs following the requirement/specification and conduct the system testing on the software itself. You may also need to work with other developers together.
Hope this helps! Good Luck!
This information is very helpful! Thank you a lot for your time to answer my question.
Pius