• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

Those of you who work in a software developer firm...

sao123

Lifer
I am planning to interview for a software developer position in a local company.

The job says a developer stays with a project from project conception to support, the complete lifecycle...

but what are typically the stages of a project life?

It seems to me that coding is only about 1/2-2/3 of the project itself... there's the design, modeling, then coding, and then maintenance...

what are the day to day activities in each stage? Whats it like to develop in a team?
What are the deadlines like?

How much coding do you do from memory, and how much do you look up in a reference manual or MSDN site?

Anything you can tell me would be beneficial...
thanx.
 
Originally posted by: HardTech
every book I've read has said coding should not take more than 10% of the total project

Not if your client actually wants functionality tailored to meet their needs. Sure, I can build a .NET web app with forms authentication and a basic layout in a few hours, but nobody wants that.
 
Originally posted by: tfinch2
Originally posted by: HardTech
every book I've read has said coding should not take more than 10% of the total project

Like that ever happens. 😛

administration time can easily surpass actual coding time in most projects. but this largely depends on the nature of the project.

as for the OP, i cant really give a good answer... i develop working projects in a construction environment, so i have to deal with both customer and contractors, mechanical schedules as well as our own UL-508 shop scheduling before I can even think of slapping some code together.
 
Originally posted by: sao123
I am planning to interview for a software developer position in a local company.

The job says a developer stays with a project from project conception to support, the complete lifecycle...

but what are typically the stages of a project life?

That really depends. Not all projects go through the same phases, but if you abstract it away a little you typically have at least the following:

Inception
Construction

That's it. Different methodologies give these areas different names, but the point is always the same. You always have to start the project, right? That's inception. You have to actually build it too, right? That's construction.

Most methodologies are abstractions of another (e.g. UP, RUP, EUP, etc.) and simply apply different vernacular around the same ideas. SCRUM, for example, is a light project management approach that is largely just different vernacular. Most of the additions to these methods are in direct response to issues that one often encounters when building an y non-trivial application.

The point is this: You can't follow a methodology blindly. You have to be agile (pun intended), so you have to have the tools to address problems as they arise. Trying to push a project into a mold will cause it to fail absolutely every time. There are some very specific exeptions (e.g. the team that built the Mars Lander software).

It seems to me that coding is only about 1/2-2/3 of the project itself... there's the design, modeling, then coding, and then maintenance...

Sounds good. Modeling isn't always necessary, so don't say it's a necessary part of the project. Modeling what? Some projects don't need modeling, and some shops use methodologies that expressly forbid such a process; at the very least, some forbid the idea of having an up-front modeling process and instead allow for a more emergent solution through modeling. The same applies to design.

what are the day to day activities in each stage? Whats it like to develop in a team?

If it's a good team, then it will be very interactive. If it's a bad team, then it will be a political hell and nothing but problems trying to decide even the slightest nuance. This usually involves countless emails, telephone conversations and meetings without the slightest bit of progress. It happens.

Day-to-day activities differ. My day-to-day activities are usually design meetings to go over large-scale architectural ideas that might affect a dozen or more functional areas, talking with lead developers to derive designs for key functional areas or working on key functionality that includes a strong architectural component (e.g. building a domain model, transaction support, etc.).

What are the deadlines like?

That too depends on the methodology or the shop itself. Some set their iterations to 1-4 weeks, but I've seen longer. Generally, it's a lot easier to manage a project on shorter iterations, but you can't have a one-week iteration on a project where the smallest unit of functionality takes two weeks to reasonably build, so project management has to be able to identify these metrics and create the appropriate iterations. The point is that all releases are usually timeboxed, and that box is equal to one iteration; multiple iterations equals one release.

How much coding do you do from memory, and how much do you look up in a reference manual or MSDN site?

Probably 90% from memory. I've been at it so long that I don't think there's a single area for which I'd need documentation. Most of the senior people that work with us are the same. You get to a point where development is almost intuitive; you know what needs to be done and how without really having to think about it, and you've worked with so many frameworks/libraries that you can navigate your way around without having to really utilize documentation.

Note that this doesn't exclude documentation for the tangential things that are very important: Nuances of implementation that might affect you, exceptions, related functionality, etc. etc.

Anything you can tell me would be beneficial...
thanx.

Not sure if the above was beneficial or not, but the prevailing theme here is this: You can't put software into a deterministic approach where you simply do one thing for every other one thing. You'll find that flexibility is what's needed, and the more you embrace change the more successful you'll be.

If I were to peel away all the layers of abstraction and other nonsense about software, I think I would say that you need to think about what everything really means. Don't think, "Do I need an elaboration phase here?" Instead think, "What's the point of the elaboration phase?" Find what's behind these abstractions and you'll find patterns in projects much more readily, and this will allow you to navigate the problem space like a pianist's fingers navigate the keyboard. That might sound silly, but I assure you it's true.

Feel free to ask me any questions if you have them.
 
Originally posted by: sao123
I am planning to interview for a software developer position in a local company.

The job says a developer stays with a project from project conception to support, the complete lifecycle...

but what are typically the stages of a project life?

It seems to me that coding is only about 1/2-2/3 of the project itself... there's the design, modeling, then coding, and then maintenance...

what are the day to day activities in each stage? Whats it like to develop in a team?
What are the deadlines like?

How much coding do you do from memory, and how much do you look up in a reference manual or MSDN site?

Anything you can tell me would be beneficial...
thanx.

I work for a small company where I wear many different hats, so my experience may be different from yours:

A project consists of quite a few stages, from start to finish. Assuming this is a consulting firm:
1. Proposal (Sales)
2. Requirements (Sales/Project Management. 1&2 are connected.)
3. Architecture
4. Database design (if applicable)
5. UI design
6. Coding (5&6 can switch places or happen at the same time, depending on circumstances)
7. QA
8. Rework/bug fixes
9. Client approval/launch
10. Support

As far as the day to day activities, don't expect to do much beyond coding if you're in a larger company and working as a developer. If you're in a smaller company, you could be doing jobs 3-10 in a single day for multiple projects.

Here's a brief description of each:
3. Design the object model and workflow for the project.
4. Design the DB tables, relationships, stored procedures, etc. May include creating the data layer in code as well.
5. You won't handle this, but this includes developing CSS styles (if web development), images, etc.
6. Write the code while conforming to the object model and workflow created in step 3, using the database created in step 4, and implementing the UI design created in step 5.
7. Try to break the product. Follow set test cases.
8. Fix the stuff you screwed up the first time.
9. Move the database to live environment. Move app to live environment. Do anything else that needs to be done to launch the application.
10. Fix new bugs that are found and write new code for change requests. This will also involve QA and deployment to live environment.

Developing in a team can be annoying sometimes because of source control issues, different schedules, etc.

Deadlines depend entirely on the type of development and the client. Some are hard and fast, some are not.

I code mostly from memory, with the help of Intellisense. We are a Microsoft shop that pretty much only uses .NET 2.0, so you can usually lookup anything you need from within Visual Studio.
 
Originally posted by: Descartes
Originally posted by: sao123
I am planning to interview for a software developer position in a local company.

The job says a developer stays with a project from project conception to support, the complete lifecycle...

but what are typically the stages of a project life?

That really depends. Not all projects go through the same phases, but if you abstract it away a little you typically have at least the following:

Inception
Construction

That's it. Different methodologies give these areas different names, but the point is always the same. You always have to start the project, right? That's inception. You have to actually build it too, right? That's construction.

Most methodologies are abstractions of another (e.g. UP, RUP, EUP, etc.) and simply apply different vernacular around the same ideas. SCRUM, for example, is a light project management approach that is largely just different vernacular. Most of the additions to these methods are in direct response to issues that one often encounters when building an y non-trivial application.

The point is this: You can't follow a methodology blindly. You have to be agile (pun intended), so you have to have the tools to address problems as they arise. Trying to push a project into a mold will cause it to fail absolutely every time. There are some very specific exeptions (e.g. the team that built the Mars Lander software).

It seems to me that coding is only about 1/2-2/3 of the project itself... there's the design, modeling, then coding, and then maintenance...

Sounds good. Modeling isn't always necessary, so don't say it's a necessary part of the project. Modeling what? Some projects don't need modeling, and some shops use methodologies that expressly forbid such a process; at the very least, some forbid the idea of having an up-front modeling process and instead allow for a more emergent solution through modeling. The same applies to design.

what are the day to day activities in each stage? Whats it like to develop in a team?

If it's a good team, then it will be very interactive. If it's a bad team, then it will be a political hell and nothing but problems trying to decide even the slightest nuance. This usually involves countless emails, telephone conversations and meetings without the slightest bit of progress. It happens.

Day-to-day activities differ. My day-to-day activities are usually design meetings to go over large-scale architectural ideas that might affect a dozen or more functional areas, talking with lead developers to derive designs for key functional areas or working on key functionality that includes a strong architectural component (e.g. building a domain model, transaction support, etc.).

What are the deadlines like?

That too depends on the methodology or the shop itself. Some set their iterations to 1-4 weeks, but I've seen longer. Generally, it's a lot easier to manage a project on shorter iterations, but you can't have a one-week iteration on a project where the smallest unit of functionality takes two weeks to reasonably build, so project management has to be able to identify these metrics and create the appropriate iterations. The point is that all releases are usually timeboxed, and that box is equal to one iteration; multiple iterations equals one release.

How much coding do you do from memory, and how much do you look up in a reference manual or MSDN site?

Probably 90% from memory. I've been at it so long that I don't think there's a single area for which I'd need documentation. Most of the senior people that work with us are the same. You get to a point where development is almost intuitive; you know what needs to be done and how without really having to think about it, and you've worked with so many frameworks/libraries that you can navigate your way around without having to really utilize documentation.

Note that this doesn't exclude documentation for the tangential things that are very important: Nuances of implementation that might affect you, exceptions, related functionality, etc. etc.

Anything you can tell me would be beneficial...
thanx.

Not sure if the above was beneficial or not, but the prevailing theme here is this: You can't put software into a deterministic approach where you simply do one thing for every other one thing. You'll find that flexibility is what's needed, and the more you embrace change the more successful you'll be.

If I were to peel away all the layers of abstraction and other nonsense about software, I think I would say that you need to think about what everything really means. Don't think, "Do I need an elaboration phase here?" Instead think, "What's the point of the elaboration phase?" Find what's behind these abstractions and you'll find patterns in projects much more readily, and this will allow you to navigate the problem space like a pianist's fingers navigate the keyboard. That might sound silly, but I assure you it's true.

Feel free to ask me any questions if you have them.

I started reading your post without seeing your handle and immediately thought, "That sounds like Descartes" 🙂 I always find your posts on this subject erudite. Thanks for sharing!
 
Originally posted by: amdskip
Have you ever taken a software engineering course?

I graduated form Penn State with a BS in Software Engineering / Comp Sci...

But we all know, corporate work environment rarely mirrors classroom antics.
 
Back
Top