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

Tenks

Bronze Knight of the Realm
14,163
606
Sounds like your game was further along than Pantheon.

The RPG-esque game is actually a pretty common OO teaching tool as well. I know I had to write it in my HS comp sci class. I guess my major beef with many OO programming problems is the similarities for finding the object oriented relationships are always so well defined and hard. Often times in my real world the relationships and similarities are more abstract and harder to find so I don't start out with "Room" or "Player" interface it grows more organically. But with OO classwork this investigation and trial and error is rarely taught. There is no problem solving (which, IMO, is a core principal in being a competent programmer) it is just "Here is the problem; here will be your interfaces. Do it."
 

Noodleface

A Mod Real Quick
37,961
14,508
One complaint I have about curriculum (speaking from a computer engineering standpoint) is much like yours, they just say here "do this with this". I think even greater than that is the lack of debug skills they teach you. My first "real interview" before EMC hired me full-time, this guy was asking me questions about how I'd debug things and I was like "well typically I use a bunch of print statements" and he just looked at me like I was an idiot. I'm spoiled now because while I use a lot of print statements, I have source-level debugging at the processor level with some external hardware. I just felt ill-prepared right out of school.
 

Tenks

Bronze Knight of the Realm
14,163
606
There are still people on my team (people making over 6 figures, architect roles) who don't understand you can debug a live web service via your IDE instead of just logging a bunch of shit to logs. It is frustratingly annoying. I even put together a step-by-step how-to on the team's wiki and they still do it the println way.
 

Tenks

Bronze Knight of the Realm
14,163
606
I'm also in charge of auditing these project's testing and splitting out the integration tests from unit tests. How these people don't understand the fundamental difference between unit and integration is beyond me. They even claim to have no integration tests despite (it seeming like) 90% of their tests require a live, active and bootstrapped HBase instance running on a development server just to run a mvn test command. There is a god damn "unit" test I'm staring at that is 700 fucking LOC.
 

Tuco

I got Tuco'd!
<Gold Donor>
45,525
73,616
Yeah it's easy to slip into conflating unit with automated. I know I've done this in the past where I'll create a 'unit test library' that are true unit-level tests. Then I'll keep adding more and more stuff to it until it's got things that replay datasets collected from onboard sensors and run simulations through the entire system, then I build an optimization on top of that. This is easy to do in the 'unit test library' because I've added so much testing scaffolding to the library I don't want to refactor out. So I'm left with the choice of refactoring my 'unit test library' into a testing library, unit test library, integration test library, system level test library, several optimization libraries, or I can just shit on Tenk's day.

oh and debugging via IDE vs logging shit to a file, one downside of working with robotics vs other fields is that all the best debugging happens on a live robot, so I'm pretty much forced to have a very comprehensive logging infrastructure to do it. I don't even bother configuring my IDE (eclipse cdt) to do debugging because for me it's a bad habit that gets ripped from me when I'm in the field.
 

Deathwing

<Bronze Donator>
16,446
7,460
Obviously, the best way to debug is logging surrounded by #define statements!



More seriously: it somewhat troubles me that I'm a software test engineer and I didn't get some of Tuco's first paragraph.
 

Tenks

Bronze Knight of the Realm
14,163
606
I think he's saying his tests start out completely decoupled and isolated like a true pure unit test should be and later on he just keeps piling dependencies and coupling tests with outside classes until eventually they become integration tests. Happens to the best of us. Often times you can write the test in an integration fashion 10x quicker than having to decouple the class from outside dependencies and enter into Mock hell.
 

Tuco

I got Tuco'd!
<Gold Donor>
45,525
73,616
Yeah, but in my case I shit so much into my unit test library that it goes way past integration tests into full blown optimization suites. I mean we're talking about starting with testing the inputs and outputs of a triangle class and ending up with a resilient back propagation algorithm to tune my kalman filters.
 

Voyce

Shit Lord Supreme
<Donor>
7,253
23,801
You and your fancy C++ and Java with your IDES and your OO

*Working Storage names are place holders*

 

Tuco

I got Tuco'd!
<Gold Donor>
45,525
73,616
Serious question: What enjoyment is there to be had programming in assembly? It's obviously challenging, but do you ever get proficient enough or have a good enough library built up that you can just sit down and produce content without being mired in all the tediousness of it?
 

Noodleface

A Mod Real Quick
37,961
14,508
I should say that we only write little assembly nowadays (at least in my BIOS development). We do have to occasionally write some though, as stuff is really low level. So while I am not incredible efficient at it, the guys that have been writing BIOS for 15 years can look at it and "just know" what it does. It's almost amazing. I'll have to sit there and go "Ok, well this is moving this data to this register, these two are being added", but the other guys are like "IT DOES THIS". I probably wouldn't enjoy it if I only wrote ASM though, it's incredibly difficult and slow.

The major aspect of my job that uses ASM is when we need to do active debugging at the processor level. Our debugging tool lets us do active, source-level debugging using a specialized piece of hardware. We can look at the Code as Source, Disassembly, or Mixed mode. Often times, source code is ok, but a lot of other time we have registers doing funky things, and it's those in between steps you don't see between the lines of C that you have to watch. I guess that's where the real assembly comes in.

I talked to the other BIOS engineers and many years ago they wrote exclusively in ASM and not C. They said they preferred it.....
 

Dumar_sl

shitlord
3,712
4
A CS degree is a good degree to have, but actual coding for a living is pretty terrible unless youtrulyenjoy coding with the included overhead that almost always comes with it. I'll explain.

I've worked in many different industries. I've coded for one of the biggest game publishers. I've coded in very low-level embedded systems. I've done web programming. I've done enterprise-level database design work. Yadda yadda, on and on. I've seen it all in some form, from ASM to high level scripting.

I loved the work, but I've hated the management of the work. It doesn't matter where you are - the type of PM you have; what ALWAYS ends up happening is the project is on schedule for most of its life, but then crunch time occurs and you're there until early in the AM trying to pump something out. This happens over and over and over, regardless of industry; inept PManagement kills this profession; it's NEVER a 9-5 job, and if you're on salary? Haha to you. It's fucking awful. Terrible.

Get the degree, get some exp. Get out as fast as you can into mgment or consulting. Don't ever stay in a coding position too long.
 

Tuco

I got Tuco'd!
<Gold Donor>
45,525
73,616
What Dumar says is somewhat correct. Software is such amorphous field that process management can be incredibly difficult and it's very common for projects to have a budget that encapsulates only a subset of the work needed to release a useful product. Plus you'll always have fuck ups or people quitting that ruin projects.

On the flip side, I've been programming professionally for a company for 7 years now and have never had to work till early in the AM. There's been crunch times, sure, but they have been very minor. And many of the people I've worked with have the same story. I'm not in the automotive field any more, but in the automotive field it's actually pretty rare to have a crunch time at all.

Different fields have it worse too. Game development is the most notorious.
 

Mario Speedwagon

Gold Recognition
<Prior Amod>
18,911
68,265
Serious question: What enjoyment is there to be had programming in assembly? It's obviously challenging, but do you ever get proficient enough or have a good enough library built up that you can just sit down and produce content without being mired in all the tediousness of it?
Pretty sure the original roller coaster tycoon was programmed in assembly.
 

Khane

Got something right about marriage
19,932
13,472
A CS degree is a good degree to have, but actual coding for a living is pretty terrible unless youtrulyenjoy coding with the included overhead that almost always comes with it. I'll explain.

I've worked in many different industries. I've coded for one of the biggest game publishers. I've coded in very low-level embedded systems. I've done web programming. I've done enterprise-level database design work. Yadda yadda, on and on. I've seen it all in some form, from ASM to high level scripting.

I loved the work, but I've hated the management of the work. It doesn't matter where you are - the type of PM you have; what ALWAYS ends up happening is the project is on schedule for most of its life, but then crunch time occurs and you're there until early in the AM trying to pump something out. This happens over and over and over, regardless of industry; inept PManagement kills this profession; it's NEVER a 9-5 job, and if you're on salary? Haha to you. It's fucking awful. Terrible.

Get the degree, get some exp. Get out as fast as you can into mgment or consulting. Don't ever stay in a coding position too long.
Pffft, I still code just so I can lord my expertise over all the peons in my office.

Actually I am the only one at every single place I've ever worked that does what I do and works with the software I work with, so I'm stuck wearing every single hat for that piece of software. Architecture, Design, Development, Deployment and even Server Maintenance. Uuuuuughhh. And because of that 50% of my time is fighting with people that my code works as expected and the upstream or downstream process never finished or produced poison messages/errors. But it pays well and I get 6.5 weeks of PTO sooooo....
 

Vinen

God is dead
2,783
490
Pretty sure the original roller coaster tycoon was programmed in assembly.
This is correct.

All Atari games were as well (or machine code... I forget)

The vast majority of programmers in this day and age don't even need a CS degree. High level languages such as Java, C#, Failure-Ruby, etc... all handle the difficult choices for you.
 

Voyce

Shit Lord Supreme
<Donor>
7,253
23,801
I majored in Comp Info Systems and I had intended to get a job as a DBA, but for other reasons I ended up in IT Support for several years and only through the last year and a half, have crawled my way back up into programming. I've learned a fairly daunting amount about IT, on a broad level. I can say that to be writing modules again, is by far and away more fulfilling to me than having to help PICNICs, making and distributing OS Images, and dealing with Site Outages, even if I'm working on Legacy Systems.


The most fun I had in Support was working through Hardware issues where the solutions were obscure, like bad ram timings in the bios, sure you have software problems but it's not like you can fix off-the-shelf software as if you wrote some or any of the application, or have the source code on hand, no, you call the vendor and deal with their level 1 IT Support. Then you try to explain it to the non IT people you work for, when the honest answer is I don't know exactly what's wrong, and there's really no way I could other than by making a stab in the dark.
 

Cad

scientia potentia est
<Bronze Donator>
24,522
45,533
oh and debugging via IDE vs logging shit to a file, one downside of working with robotics vs other fields is that all the best debugging happens on a live robot, so I'm pretty much forced to have a very comprehensive logging infrastructure to do it. I don't even bother configuring my IDE (eclipse cdt) to do debugging because for me it's a bad habit that gets ripped from me when I'm in the field.
I always did copious logging (with log levels) as part of my coding, because the insidious problems that you need logging for always happen in production where you can't debug via IDE anyway. For development debugging of course you just run it in the IDE and debug with breakpoints. Thats fine. No hard problems ever come up in dev. The hard problems come up every 35018th run with particular data under particular circumstances, if you don't log everything you'll never catch it. So you have normal log level, debug log level, and 'holy fucking shit I can't figure this out' log level. Bonus points if you make the log level changeable without a restart via config screen.
 

Deathwing

<Bronze Donator>
16,446
7,460
Cad's description of 35018th run made me think of my current employer's area of focus: static analysis. What do people in programming think of running their code through a static analysis checker on top of whatever other tools you might use? I didn't know of static analysis before working here and I would have liked it at my previous job.
 

Tuco

I got Tuco'd!
<Gold Donor>
45,525
73,616
I'd also he interested in learning more about static analysis. It is something I've wanted to try but never had the time budget for.