I am working as a software developer, and have been assigned a task of improving a current feature. The lead asks me to understand the feature without taking any external help.

The feature is technology-wise pretty new to me and I tried to search for any documents available, but unfortunately none are available. The person who has implemented the feature sits just a couple of cubes away from me but as per my lead's approach, I should refrain from getting into any type of discussion(help) with him.

Having spent a couple of days digging into the code and trying to figure things out by myself, I have a faint feeling that it is not a very practical thing to rely on an approach of absolutely no help from people for certain activities. So my question is, what is the scope of help/knowledge transfer in software type of jobs, and is it really possible to do everything without taking anybody's help?

OR What are the different situation/factors based on which one can decide whether to take help or not?

  • 1
    Your question is way too dependent on the complexity of the code you're maintaining for us to give an answer. Add the specificity of priorities and deadlines to the mix and your question is simply unanswerable. I've completed plenty of projects when my entire team fell apart on me but they were school projects. On the other hand, I've done projects that required all of us to be absolutely, positively capable of carrying my our own weight. Voting to close. – Vietnhi Phuvan Jan 15 '15 at 11:22
  • 4
    your lead is probably trying to train you to be self-sufficient too. – bharal Jan 15 '15 at 11:23
  • @Vietnhi Phuvan - Do you mean to say that the scope of taking help differs from project to project, varying from complexity to complexity? I am looking for a more absolute kind of an answer, something like "not taking help can always work/not work, in any situation" – Sushant Jan 15 '15 at 12:12
  • 1
    There is no absolute answer to your question. Not only it depends on the code complexity, but also your own ability. You can do a lot things on your own if you are good enough. My advice to you is: your lead specificly said do not take external help, you'd better obey it. – scaaahu Jan 15 '15 at 12:30
  • @GRK You're NOT going to get that answer because you are asking that question in total disregard of the relevant factors – Vietnhi Phuvan Jan 15 '15 at 12:42

Sure it is possible. It is even common for senior people. I rarely have to ask others how something works because I understand the syntax, the database structure, the actual code, the business reasoning behind the code, and the limitations that people would have had in creating the code.

I believe that your boss is trying to make you more self-sufficient and to give you a better understanding that will make you a more valuable, senior employee. As such, he is clearly willing to allow the extra time it takes to figure things out for yourself. This may be a plus as he is grooming you for senior responsibilities or it may be a minus as he thinks you don't have enough actual knowledge and he wants you to gain it rather than always being dependent on others. Either way, it is worth your time to do as he asks. Additionally, he may have asked you to do this becasue the other person is tired of being bombarded with questions that you should be able to find the answers to on your own or he may be tied up on something critical that the boss doesn't want him pulled away from to hold your hand.

In any event, the boss wants it, so you really have little choice but to do as he asked. If I told you not to ask questions (which I probably only would do in the case above where the person getting the questions needed to be undisturbed for other reasons) and you did, then I would have a very negative impression of you as an employee.

Another point to consider is that often no one who worked on the previous code even works there any more. You have to gain the skill of figuring things out on your own. It is critical to your career development. Your boss is doing you a favor by forcing the issue.

Not only should you learn to figure these things out on your own, you should learn to retain the knowldge you get so that the next problem is easier to figure out. I find that inexperienced people are often in the habit of throwing away knowledge after to using it once and so are continually re-inventing the wheel. If you have more than a years worth of experience and you have to look up things more than 20% of the time, you are probably doing this.

  • +1 for the boss trying to make the OP more self-sufficient. The tone of the question ("is it possible?", "I have spent two full days") makes me think of someone who would try to get others to solve his issues at the slightest difficulty. Another possible decission for the boss'decission: He does not like what he sees and is testing how effective the OP actually is in his own, against a well known problem of studying a feature. – SJuan76 Jan 16 '15 at 0:19
  • -1 @SJuan76 for your uncontrolled imagination and being judgemental. where is "I have spent two full days" in the post? – Sushant Jan 16 '15 at 11:38
  • @GRK Having spent a couple of days digging. You are welcome. – SJuan76 Jan 16 '15 at 11:53

So my question is, what is the scope of help/knowledge transfer in software type of jobs, and is it really possible to do everything without taking anybody's help?

Everything? Certainly not.

But as a software developer, part of your job is being able to work independently. Being able to read through code and understand what is going on. Being able to keep abreast of new technology on your own.

That said, there is a balance you need to take. If it's going to take a month for you to learn what is going on, then maybe taking a day of someone else's time to explain it is better. If it would take an hour for someone to explain things, or you could take an hour to just look at it yourself, you should just buckle down.

Every situation is different, but one thing to remember is that being told how something works is not the same as learning how something works. Unless you understand it and internalize that knowledge, you've not gotten far. Figuring things out on your own tends to lead to better understanding than direct instruction.

  • absolutely one morning at work I was told oh we have just brought a 40k piece of equipment work out how to interface it to that computer (there where no device drivers) and then go and talk to Bob about how we can use it to digitise that data from his experiment. – Pepone Jan 15 '15 at 22:26

It's possible to achieve such a task without any help, but it's very unpractical and doesn't really make much sense if it can be avoided.

It'd save a lot of cost for your employer, and a lot of headache for you, if you'd simply get a moment from the person who implemented the feature to give you a brief introduction on it, giving you a chance to avoid big misunderstandings that would result in a massive overhead.

You should be able to ask him whether he would have done something differently if he were to create it again, giving you an idea of which things would be practical to take a look at.

You should also be able to send emails with questions concerning specific functionality of the feature if you have any questions, you are coworkers after all and coworkers should help each other; they're (should) getting payed for it anyway.

Knowledge sharing is important, developers spend a certain amount a day discussing and asking questions concerning specific features; as should you.

The scope is practically that knowledge should be shared as long as it's not going to affect the person who has the knowledge too much, i.e. the amount of time teaching should be reasonable, and it's certain that the knowledge sharing will actually result in much less development time and a better understanding of the feature, resulting in higher quality.

  • Agree with this. I think it's bad for developers to work in a bubble. The best way to get better is to learn techniques and ideas from your peers. Also, with multiple people's inputs in the early design process, you're more likely to think of potential problems, address them, and come up with a better design that could prevent massive rewrites later. Lastly, reading code on your own will tell you what the code does, but it will not tell you why. Sometimes the why is very important. – Kai Jan 15 '15 at 16:48
  • Does down voter care to explain? – Jonast92 Jan 15 '15 at 16:56

It should be possible to do this when there is a proper documentation which describes every feature, how it works, where it is implemented and how it is implemented.

But without such a documentation you can only rely on information from colleagues who also worked on the feature or figure out how the feature works on your own. The latter can take between hours and weeks, depending on the complexity of the codebase.

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