IT/Software career thread: Invert binary trees for dollars.

Deathwing

<Bronze Donator>
16,392
7,392
I got the impression you were advocating someone not even bother learning it.

Ever since Java took away pointers, I'm wary of giving up more control to the language, even if that control is annoying. The more I know, the more I can do, the better.
 

Tuco

I got Tuco'd!
<Gold Donor>
45,426
73,489
.NET's memory management is amazing until you try to stress your system in ways .NET doesn't like.

GC.Collect();

One .NET project I've worked on runs image processing on thousands of massive images and allows viewing of them and the image processing outputs.

GC.Collect();

What happens when you try to open too many?

GC.Collect();

You run into weird issues where the more you try to manage the huge amounts of memory you need.

GC.Collect();

Any kind of attempt to figure out ways to work around it is met with stiff resistance from the .NET community.
 
349
1
The amount of certs and jobs out there for CS major is really promising. I cannot believe how big this field is. I mean, dont get me wrong, I knew it was big especially when you consider IT as part of the field but damn. Sun alone offeres dozens and dozens of java certs and other things. Is there any cert that you guys recommend. Obviously the cert is just a piece of paper ultimately and your knowledge and experience will trump it but it definately cant hurt to have a few.
 

Khane

Got something right about marriage
19,834
13,351
Certifications in things like Java (i.e. software, not hardware) are generally not worth the money. They tend to be very expensive and while having it can help, it doesn't help enough to make it worth the money you're spending on the cert in my experience. There is no detriment to getting them, so if you have the disposable income go for it, but if you don't I would suggest saving your money.
 

Tuco

I got Tuco'd!
<Gold Donor>
45,426
73,489
Why are functional languages becoming popular at financial institutions?
 

Hachima

Molten Core Raider
884
638
Memory management in C# can be important and requires an understanding of the GC and also computer hardware.

Take the program

vs

The first version takes 3100ms to run, the second one takes 1600ms to run (optimized code on). One key reason is by not getting CPU cache misses on the second version by letting each thread have its own cache line to work with. I also had to move the Stopwatch instantiation before the array instantiation, otherwise it was actually slower and took 4600 ms. I can also leave the Stopwatch being instantiated at the same spot, but add a int[] junk = new int[1]; junk[0] = 0; before the actual array and get the same faster results. It kind of demonstrates the affects of locality of references atTips for Improving Time-Critical CodeThis is where you need a solid understanding of data structures/memory allocation is needed. I'd say the majority of C# developers out there that don't understand things at that level and don't need too and have great high paying jobs too. At the same time there is process intensive,multithreaded code that does need that level of optimization but people that do get into that stuff usually study and learn it on their own/on the job working on existing code. If you are doing web development you aren't going to be focusing on these things but following other principles like js at the bottom, css at the top, bundling/minifying sprite sheets etc.

Plenty of areas to specialize in out there, a CS degree will give you a good well rounded foundation for whatever you choose to focus on imo though.
 

Tenks

Bronze Knight of the Realm
14,163
606
Managed code and unmanaged code both have their places. I cannot ever understand why so many developers think it is one or the other. If I'm doing stuff that is a better fit to be written in C then I'll write it in C. If I'm doing stuff that is better fit in Java I'll write it in Java. Developers hold way, way too hard onto biases instead of just selecting the appropriate tool from my experience. Not every block of code is required to be written in the fastest. most efficient manner especially if it hamstrings readability.

Just look at all the re-writes and re-do's in the Hadoop project lately. It was originally (mostly) pure Java and now more and more of it is being re-written in C/++ and JNI'd up. You can have both.
 

Tuco

I got Tuco'd!
<Gold Donor>
45,426
73,489
I also had to move the Stopwatch instantiation before the array instantiation, otherwise it was actually slower and took 4600 ms. I can also leave the Stopwatch being instantiated at the same spot, but add a int[] junk = new int[1]; junk[0] = 0; before the actual array and get the same faster results.
Seeing how people avoid cache hits and align data sometimes cracks me up.

Since this is a general compsci/software thread I'll repeat the oft spoken advice that you should very rarely attempt to optimize your code at a low level first. Make the code legible, well architected and straightforward (if possible) and if you have a time critical system use a profiler to figure out where the real hogs are. And the answer is probably to redesign your algorithm, narrow your search space etc. But if you do get to a point where you absolutely have to optimize the way you index an array it can be a real joy as a software developer and you'll have to know and learn some very important details of low level programming, memory management etc. You'll pick up cool stuff like what Hachima showed, and evil stuff like
Fast inverse square root - Wikipedia, the free encyclopedia
Tenks_sl said:
Managed code and unmanaged code both have their places. I cannot ever understand why so many developers think it is one or the other. If I'm doing stuff that is a better fit to be written in C then I'll write it in C. If I'm doing stuff that is better fit in Java I'll write it in Java. Developers hold way, way too hard onto biases instead of just selecting the appropriate tool from my experience. Not every block of code is required to be written in the fastest. most efficient manner especially if it hamstrings readability.
This is 100% correct. Programmers who love one language and hate everything else are usually full of shit.
 

Khane

Got something right about marriage
19,834
13,351
I just don't like working with unmanaged code and after so much time not even touching anything but .NET I'd have to re-teach myself. Just not something I would want to do. I don't believe it's one or the other, I just don't want to leave my comfortable little world, and there really is no need for me to do so.
 

Tenks

Bronze Knight of the Realm
14,163
606
I just don't like working with unmanaged code and after so much time not even touching anything but .NET I'd have to re-teach myself. Just not something I would want to do. I don't believe it's one or the other, I just don't want to leave my comfortable little world, and there really is no need for me to do so.
Managed code is, I'd argue, a better default than unmanaged code. It allows for quicker delivery of product and never having to hunt down sometimes impossible to find leaks. But there are times where unmanaged code simply falls short and you *need* to manage to memory yourself. And for that I'm glad we have the tools to do that.
 
349
1
To keep this thread going I'll throw in another question. Did any of you guys do an internship. I plan on applying for a few for the following summer. I was thinking Blizzard or Square would be cool but honestly I'd go anywhere. Have you heard of any good places to try? Do any of you work for major companies who hire do internships? If so would you recommend your company? thanks for the info so far. didnt expect id get so much help here.
 

Khane

Got something right about marriage
19,834
13,351
Do you want to go into game development? I would suggest against that. It's literally the worst field you can get into as far as software development goes.
 

Tuco

I got Tuco'd!
<Gold Donor>
45,426
73,489
Do you want to go into game development? I would suggest against that. It's literally the worst field you can get into as far as software development goes.
I agree with this, game development is the worst field.

However, internships are incredibly valuable. If you apply for a bunch and only get one at a game company it's probably best to take it. Only take it if they compensate you reasonably well though ($14+ an hour). If they give you shit pay it means they probably won't give you enough attention for the experience to be valuable.

I had three internships before graduation.
 
349
1
Naw I'd rather work for companies like Google but by the time i graduate I'll be in my 30s. realistically I think that might hurt me internship and jobwise. Who wants a 30 year old newb. As far as what I want to do eventually, havent thought of it too much. as long as it pays good and its in my field, I am interested. Of course the gamer in me has this fantasy of game development. I've heard alot of bad things about it but noone that is actually in the game industry. Not saying you guys havent been there but I do wonder why its so bad. I was told the same thing about joining the Army and for the most part I loved it.

Whatever job I eventually land, there is no doubt in my mind I'll play with game development. Ever since my first RPG maker to Graal Online, to editing half-life maps, its always fascinated me.
 
349
1
I've also considered working for the NSA or other cyber-defensive/offensive agencys(anti hacker hackers?)
 

Hachima

Molten Core Raider
884
638
My current job is for one of the comapnies on the list at25 highest paying internships - Feb. 28, 2014but my department doesn't have interns. I worked with someone that started as an intern at first and he had a good experience though. But that probably doesn't help you any haha. The top paying internships are certainly going to be very competitive to get into, but if you do well there is a good chance at getting hired and if you hate the company it still looks great on a resume
smile.png
I just suggest applying to a few that aren't on the top of your list and then apply to your dream pick after a few interviews etc. And heck maybe one of those turn out for you anyway. Even if its not a famous company, a good mentor that lets you explore your interests is going to give you a great start. If you don't have some type of internship experience, getting a first job is going to be very difficult unless you have some impressive personal portfolio projects to show off.

I self taught myself C/C++ for my first job at a game company before doing any college work.. I also did an internship for a game company and was hired on full time and did that a while. Although fun, the pay/hour ratio wasn't worth it to pursue long term. Another internship I did was working with VisualStudio 2008 features when it wasn't even going to be released for beta for another year. Knowing my effort made a difference in something that many people enjoy can be just as rewarding to me as making the latest awesome game. Or those times when you get a breakthrough with an awesome solution to a difficult problem your company is trying to solve even though the end user will probably never know what it took to get their product working.
 

Noodleface

A Mod Real Quick
37,961
14,508
I did a 1.5 year internship at my company (EMC) and they hired me afterwards. Absolutely would not have been hired here without an internship, and leaving with 1.5 years experience would have been great either way.

The software engineering parts are pretty varied - really low level stuff (drivers, firmware) to web development.
 

Tenks

Bronze Knight of the Realm
14,163
606
I had an internship just doing QA shit / automated scripts in Java from years 2-5 of my degree. Helped a ton. I probably learned more there about real-world software development than any classroom could teach. My degree mandated 1 year of full time internship but they kept me there as a part time intern during school time as well.
 
349
1
If you're interested in game company internships, can PM me, my company usually has a few interns at any given time.
I'd love to man but my only experience atm is some basic scripting in python and java. I hope by next summer I'll be somewhat useful. I really wish I had more experience because I am totally free this summer to do an internship :/