#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
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
Working closely with other developers, UX designers, business and systems analysts
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.
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.
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.
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!
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.
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: