Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Possible Duplicate:
Tips or techniques to use when you don’t know how to code something?

I recently graduated on a Computing course, and luckily got a job as a junior programmer. Now, I have been given a series of tasks, from a bigger project.

My company has (supposedly) bought a revenue/sales software written in PHP. Basically this whole big piece of software needs to be modified to meet my country standards.

I have been given a large number of tasks to do in a relatively small time span. Now, this might be my very own understanding of the whole timing problem, but this seems a very big thing to do because I need to fully understand:

  1. the whole system structure
  2. the "style" in which it has been written, classes, functions, etc.
  3. the database structure

Considering the above, I need to add some functionality, some of which can be considered "core" ones which, in my opinion, is a too long of a job to be done in 6 days.

I understand that I have given too little information for anyone to understand the level of difficulty of said tasks, since for some people might be impossible while for others might be a breeze, so I want to ask the following:

To the people who went past a similar situation, what was your outcome? Can I start considering myself unprepared or maybe they are asking too much? What was your experience on a similar situation?

share|improve this question

marked as duplicate by Oded, Dynamic, ZJR, Jim G., Glenn Nelson Dec 25 '12 at 2:29

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

This is not something we can answer. In general, if you have been given tasks and a deadline without being consulted, you have no idea where the deadline came from. It may be unreasonable, but it is your job to say so if that's your estimate (and provide a realistic estimate, based on your analysis). – Oded Dec 24 '12 at 19:09
@Oded, I agree with you, but what I need really is to see what were the outcomes from people who already passed though this kind of situation. I basically want to understand if I am a fit for the job because on my estimate it would honestly take me a month; Basically I want to know if I am OK or not, compared to other people's experiences. – john smith Dec 24 '12 at 19:17
I don't think it's a duplicate of the above referenced question. This question is about changing existing code. In my opinion it's a perfectly valid question, and there's even a whole, quite well-respected book that answers that question - not specifically from a junior developer's perspective, but in general: Working Effectively with Legacy Code by Michael Feathers. – Christian Hujer Nov 25 '14 at 4:52

You do not need to know the entire system to make changes. In fact, most systems are too large for one person to fully understand. I suggest you do your best to understand the impact of your changes -- your changes will only impact a small slice of the system. Creating tests will help ensure the correct functionality.

Does it matter if you are ready for this project? Your company thinks you are. I assume if you are a junior programmer that there are people whom can help you out. I'd go to them, I doubt they put you on the project with the expectation that you'd complete the changes without guidance. If that was the case they'd put a more experienced developer on the project.

share|improve this answer
That's the exact problem! I don't have anyone pointing me into the right direction and I am simply alone in this. There's basically the "boss" who's just packed this ready application, and me, fixing it upon client request... It feels so weird: I never had a problem working on my own projects (and some of them were big) but starting this way just seems very unnatural... – john smith Dec 24 '12 at 19:33
I have in IT for 30 years and only the last year I am working on a project that uses test units. Advising to rely on test units (personally I do not consider them a nice change for analytic documentation), be at first sure that there really are some. – Gangnus Dec 24 '12 at 22:06

Can I start considering myself unprepared or maybe they are asking too much? What was your experience on a similar situation?

Stop worrying, and just prioritize the tasks that you are currently assigned to do. Do the best out of the time that you are given by implementing changes and analyse its potential impact on the current system. Thus, having set of testing strategy before pushing your change-set to production is the very important part to Keep in mind.

The 6 days time-frame/deadline might be set just arbitrarily to see your response/potential, in terms of your effort to tackle the tasks. My advice would be - just focus on your tasks and do higher priority tasks as much as possible.

share|improve this answer

I'd second ElYusubov's suggestion of just prioritize and do the work. There are a lot of unknowns and this only gets resolved by diving in and getting things done.

In my first job out of university, I spent a few weeks getting my first task done which required the assistance of a couple co-workers to navigate me through the work to get the task completed. A key point here is to have communication with whoever assigned this tasks so that a realistic timeline can be made. You have to communicate how long you think things will take and possible explain where you came up with that estimate in cases with a wide difference between what someone may think it'll take and what it actually takes.

If the work has been estimated by a fellow developer, then ask for a list of the pieces to do that may be a different breakdown than what you thought is necessary. In a way, this makes me think of how to get from A to B that likely has more than a few answers. Some people will see how to make a straight line from one to another and get there in the fastest way and others may take an unconventional yet possibly more worthwhile route to get the same job done.

share|improve this answer

I've been giving deadlines which were created based on when business people wanted/needed something done: maybe it's a big trade show and the sales guys need a new feature or you're working on some integrations and a different dev team needs something from you so they can start their coding on time.

You have six days to work on these items, I would spend the first two and see how much you get done. If it still seems like too much let your boss know that you're going to work as hard as possible but will probably only get X% of the requirements complete. They might be able to help prioritize so that the most important tasks are finished on time.

You also may be able to bring in some extra help if it's 100% necessary that everything be finished in six days.

share|improve this answer

Ask for documentation. Not necessarily the project has the actual analytic docs, but it should have at least user and administrative ones. From this find what components you should change, than go down to classes and functions. Make one functional change, after that you can come with your guess for expected timeline to your boss.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.