I often wonder how professional developers, who work for a top companies like Microsoft, solve their problems. Do they turn to internet forums for advice and post their code for everybody to see. Or do they bang their head against the wall until they figure it out. If its the latter, I find that to be impressive Lol. But to you professional C++ developers who work for companies that are either known or unknown, do you use the internet forums and post your code for help.
well if you work at microsoft, generally you cant post your code (its illegal actually) but theres probably many solutions. a) ask a co-worker, b) debug it (it could be a silly mistake with an easy fix) c) look it up on google and see if someone had the same mistake and fixed it. d) ask without posting code or giving anything away on the forums
to you professional C++ developers who work for companies that are either known or unknown, do you use the internet forums and post your code for help.
DTS is right, posting code on the web goes against the NDAs pretty much everywhere, and besides, when the problem can be narrowed down to self-sufficient code small enough to post, it's usually obvious anyway. I don't think I've asked a job-motivated question on a public forum, with or without code.
And yes, asking a co-worker is very common. Sometimes (a lot of times actually) just explaining the problem to a co-worker lets you see the solution. If it's hard enough, you might get a bunch of coworkers to look at it - professional programming is very much a team effort. Another common direction is to actually debug, add more trace, Purify, Quantify, come up with better tests, keep analyzing until the problem is isolated and caught in the act (if it's a code problem anyway, not exactly clear what kind of problems you're asking about).
I know you asked about "top" companies like Microsoft, but I met with people with a smaller company, which I consider to hire very good programmers, a couple weeks ago. One of the guys showing me around had a web browser with about 5 tabs open - with 4 of those tabs being opened to stackoverflow.com. Now, I'm sure he didn't say "here's the code of what we're currently developing… can anyone help?", but I thought it was kind of interesting because I wondering the same thing you were. However, it should be noted that the company I visited was very small and much more laid back than I'm sure churning out code at a place like Microsoft would be, but I may be wrong! I'm interested in what career-programmers do here as well.
As far as I am concerned these "top" companies do hire\recruit developers who "know" what they are doing and have a lot of experience in their field and they don't hire 1,2 they hire dozens that way it is almost impossible for them not to be able to think of a solution.
Microsoft is quite a large company, so any developer working there will have plenty of colleagues to ask. I also believe that companies of that size will have internal forums/newsgoups. Prob. quite a different story for a lone developer, or member of a small team.
At work I will usually quickly check the usual places (MSDN + forums, stackoverflow.com, etc.), but if there's no clear answer I will immediately ask the other members of my team. Usually someone has encuntered the problem, or knows of some resource I can turn to.
Also, a lot of companies follow an agile approach these days, which means daily standup meetings. Any blocking issues, including problems tracking information down, will generally be flagged in those meetings.
If asking my team fails, I can broadcast a message, internally, to other teams to see if anyone can help. But questions are rarely asked on public forums for reasons of confidentiality, and only ever with clearance from project managment. And would only be about the general issue, and never expose code aside from trivial fragments.
Any company doing serious Windows development will have an MSDN subscription which allows the company to put in a limited number of help requests to Microsoft. This route is taken only when things are going pretty badly.
The thing is that there is already a lot of information on the web. A high percentage of the question asked in these forums, for example, are repeats (some ad nauseum!) of old questions. And I see similar questions asked over at dreamincode.net and daniweb.com...
Almost every problem I've hit has already been encountered by other people, and quite often solved. So the number of times I've had to go to the trouble of posting a question is really quite small.
Those which I can't find an answer to (after asking a number of experienced colleagues, checking the forums, ....) can occasionally get very sticky. In those cases you do end up "banging your head against a wall" until you (and your colleagues) figure it out. Rather than random "banging", this usually means investigating to look for further informatio; by adding diagnostic code to the program, by debugging, etc.
But the bottom line is that, as a professional developer, you must be able to search the web effectively.
How lenient can your bosses be about solving a problem? Obviously, you guys work on projects that have a deadline or shipping day. Can your boss fire you for not getting a particular problem done on time.
Can your boss fire you for not getting a particular problem done on time.
It's very obvious when the deadlines are slipping (and I would make it known long before it ever becomes obvious), the boss would put more people on the project or reassign it to someone else and put me on a different task.. And I might lose a part of the bonus at the end of the year. I've seen people fired due to poor performance, but that requires a lot more than blowing past one deadline.
Can your boss fire you for not getting a particular problem done on time.
Well, if you were just being lazy, then I guess so.
But if your talking about a "head banging" sort of problem, then that's not going to happen.
In an agile enviroment, there will be pretty rapid feedback when things start to go pear shaped. Ypu feedback to the team and get help as soon as possible.
Project managment then have to decide whether to commit resource to the problem, or delay or cancel a feature. A minor feature would probably be dropped or delayed, but if it's a key feature then more resources (people!) will be committed to the problem.
I have spent a few weeks debugging problem, when they're seen to important enough. Then just when you're about to go spare, some piece of information comes to light which allows you to fix or work around the problem.
(These are also the times when the issue is likely to be escalated to Microsoft, if it's a system related problem.)
C++ related problems are not going to cause this much grief, as there are more than way to solve problems. Even if you hit some (obscure) compiler bug, you can usually just recode the affected functions ro solve the problem.
Generally speaking, professional developers can be found at all skill levels. Remember, they all start out at the same level.
In most cases, it's all about problem solving. For example:
- What do we know?
- What information can we get? (do an experiment, look at recent changes, talk to a domain expert, trace in a debugger, run valgrind, check static analysis, try to reproduce, profile, add asserts to get core files, use a compiler/library flag, Google 3rd party usage, etc.)
- Can we eliminate some possible sources of the problem?
Of course, having a hunch about the problem based on past experience usually gets you on the fast track.
There are such things as 1) technical assignment; 2) team discussion; 3) code review. Moreover usually serious firms have their own forums where only developers of the firm have the access.
If a question has a general character it can be asked in some general forum. For example developers of compilers can ask their questions in the open forum devoted to the C++ Standard.