Fight your way out; only scrubs and mashers jump out of the corner
Posted by: dazarobbo
I only want to add here that Software Engineering is probably not what most people think it is - it is not all about programming. It is about:
- Managing personnel (MOI, team structure, communication, etc...)
- Determining the best process model to use (eg. Waterfall, RAD, Spiral, Incremental, etc...)
- Estimating project and system size and effort (COCOMO model).
- Understanding the scope of the project!
- Being able to decompose a problem (abstracting it)
- Determining feasibility
- Being able to schedule a project (establish milestones, identify critical paths, etc... look up what a Gantt chart is)
- Identifying risks to the project and how to mitigate and manage them (RMMM plans)
- Specification (SRS documents)
- Being able to take requirements and model them into Use Cases to show the structure/relationships within a system (or part thereof), diagrams to show the behaviour of objects and how they interact, and the different states a system changes between
- Developing different tests (white/black box testing, unit testing, integration testing, validation, verification, etc...)
There is very little actual programming involved. It is mostly focused on the management side of a project.
I have to disagree a bit; when starting out, unless you're the only developer in a team, you're not going to be spending as much time with management and logistics as these points would have you believe. Right after college you'll be writing code and solving problems; that's almost guaranteed.
Now it is true that as time goes by and you advance inside a company you'll need to take on more responsibilities, and that's where the points dazarobbo is making start to play more into your daily activities.
Over the course of a 20 year career in software engineering, sure, these tasks will take up more of your time than writing code, IF you promote into management positions.
All that said, the points dazarobbo is making are indeed vital to the successful development of software, and you should not neglect studying them in favor of learning how to write code. To be an effective member of a team you'll need to understand these processes, their importance, and integrate yourself into them.