views:

571

answers:

14

The comments here got me thinking. If you are a new Developer without a mentor and no one to collaborate on for your projects; can a tool, ReSharper in this case, stand in that capacity? Does it need another tool or process, system or human, to accomplish this.

I am in no position to get a fellow dev soon and I fear StackOverFlow will BAN me long before I run out of ignorant questions. In my case can tools like ReSharper, StyleCop, ReFlector make a significant difference.

In ReSharpers case does the refactoring capabilities really pan out from the learning perspective or is it simply *poof* your code is better with little chance of gaining understanding as to WHY I should have extracted that method stub?

I desperately want to get to the point where I am capable of answering as many questions here as I ask.

Have a blessed day and thank you for your time.


EDIT based on answers so far:

So if the answer is No, it does not accomplish these things and I will not be getting a real human anytime soon can anyone offer alternatives?

Thank You!

+1  A: 

In terms of refactoring, Resharper is only as good as you are. If you don't know why you should extract method, or whatever, you'll just do it in the wrong places and for the wrong reasons. It won't make things more maintainable or extensible or any of the other great promises. You have to know what you're doing.

Jason Punyon
A: 

I can't imagine how a software tool could possibly replace an actual human as a teacher. While I don't personally have any experience with the tools you've mentioned, I can't imagine a software tool that could explain something as well as a human, or one that could come close to anticipating every question you might have for it.

When I don't have a fellow developer around, I find it helps to talk to anybody that will listen. Frequently, the act of speaking helps me get my head around something.

Jeff Barger
+4  A: 

I would say no. ReSharper will often give you the option of changing something (e.g. "invoke as extension method") and then if you accept it, it'll give you the option of changing it back.

That's great when you know that you want to change the code, but it doesn't give much of an idea of why you want to change it. There are some suggestions which are more "obviously good" but it's a long way from having a mentor.

Don't get me wrong: ReSharper is a wonderful tool and it will probably save you a lot of time, but it probably won't refine your design and implementation skills. It'll help you follow those skills more quickly.

Don't worry about asking loads of questions here though - we love it :)

Jon Skeet
A: 

Resharper is a great tool. When I first started using it, there were many things that I didn't know that Resharper brought to my attentions.

After using it for a couple weeks there wasn't anything new to discover. From that point on it became a productivity tool.

Chuck Conway
A: 

Quick answer, no. It's not AI and no where close to what a real co-programmer can offer.

I use ReSharper on a daily basis and cannot live without it. But my fellow programmers offer much more insight into things that ReSharper cannot.

+2  A: 

my opinion is: see jon skeet's answer

if resharper could answer questions on SO, it would tell you the same thing

Steven A. Lowe
You mean like a little lightbulb with "Add link to Jon Skeet's answer"? Love it :)
Jon Skeet
@Jon, more like looking in code and realizing it is an answer to SO question, putting highlight with link to question with context action to go to SO ;)
Ilya Ryzhenkov
+4  A: 

Well, it doesn't help you to write smarter or better designed code. But it certainly helps you clean up messy code and helps you with sticking to some best practices. However you should be aware that some settings are not good by default. For example it gives me hints about how I could use 'var' instead of its real type. I do not consider that appropriate in many situations.

What you can do is use resharper in combination with fxcop for example. That way it keeps your style clean. For other mentoring types of things I would recommend a copy of 'clean code' by 'Uncle bob'. That book gets you really thinking about what functions should do.

Then you should get into architecture and read some documentation about it. There are no tools which can check if you did those things properly.

A mentor will still be the best way to improve your code, but resharper and fxcop will enable you to write your code a little bit more clean and based on conventions. So when seniors check your code it is one thing less they will say 'WTF' about :)

Tomh
A: 

ReSharper could never replace a professional, it's a great tool no doubt, but my advice, grab yourself a mentor.

M4dRefluX
A: 

There's no way any tool is going to give you answers to the big questions. (Should I use a thread pool or create my own? Should I use a monitor or a mutex? Etc etc)

Still, very few people have the opportunity to work with a really gifted mentor and some still manage to become amazing developers.

Spencer Ruport
+1  A: 

I agree with everything said about humans being better than tools. That said: I would still use any static or dynamic code checking tool that you can lay your hands on. Read every warning and try to understand why it is generated. Then fix it. Understanding and trying to learn comes first though.

Also invest in some books. There is a long list of suggestions to be found on SO.

Jeroen Huinink
Yes I love books and own quite a few but IMHO nothing beats getting it explained in context to you, ie a Lead Dev.
Refracted Paladin
+1  A: 

I slightly disagree with lots of the answers here. Resharper can help you develop your programming skills. It will often suggest alternatives for code you write. It's still up to the programmer to decide what alternative is better, but seeing the alternatives and then researching them online can be a great learning tool.

It's certainly not enough. If you can't work together with someone at work I'd look for people to cooperate with on line. Start reading code from open source projects and if you find something that you think you can contribute to do it! That's a great way to get feedback.

Mendelt
+2  A: 

I'd say resharper will never replace the experience of having another developer mentor you but you will learn a lot from resharper. If you don't have a mentor to learn from, another tool that will teach you quite a bit is an application called NDepend. NDepend will analyze your code and make refactoring suggestions and show you where you could do some things better.

I suggest you work in conjunction with both tools and you'll learn some really valuable lessons! Good luck!

FailBoy
+2  A: 

ReSharper is not a substitute for a real person.

Alternatives: get to know other developers, join a user group, get a geek lunch going, Code Camp, network.

After you get a small group together, arrange to go out for beers and talk shop for a while. It is amazing what you can learn over a couple of beers.

Chris Brandsma
<humour>"ReSharper is not a substitute for a real person" - but then neither is a programmer! *cymbal crash*</humour>
Mitch Wheat
+1  A: 

It will not be able to be as good as a fellow programmer, but it will be a lot better then nothing, especially if you are new to the language. There is so much bad code out there and alot of it would be fixed atleast in part by StyleCop/FxCop. Its a step in the right direction.

Other then that i would try to participate in some small open source project or at least read some open source code to see how other people are doing things. You could also try to attend user group meatings.

For your special case: I think you are already way ahead of the average dev by thinking and caring about stuff like that and participating in places like SO, reading books and blogs. And if you are the only developer you might get away with taking more time to design what you are building.

I´m in the same position as you are so I know what it feels like to think about falling "behind" because you cant learn from anyone, but thats what the interweb is for:) If we work together we can atleast in part replace the missing team members

LDomagala