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

Khane

Got something right about marriage
20,311
13,959
As someone who's been in the industry for a long time I'll never agree with you guys. Most of the developers I know are self taught and they are excellent at what they do. Most self taught developers are better at handling new technology and finding ways to solve problems than programmers who learned through traditional schooling because they don't get caught up in the mantra their professors tried to instill in them or stick to the (most likely) ancient technologies they learned at a university.

I will agree that the degree can make it easier to land that first job but after that it doesn't matter at all, it's completely inconsequential. Hachima comes from a different world in software development. What he was exposed to and had the opportunity to work with is far from the norm, he is either being modest or just doesn't understand that he is the top .01% of developers who got into and experienced a program like those offered at MIT. It's a completely different world than your normal CS program at a typical college or university.

You're talking about spending money and 4 years of your life vs teaching yourself the skills you need in less than half that time and starting to work and earn money (even if only modest freelancing work) right away. I'm fairly successful at 31 years old making well over six figures and as someone who hires and has done so for the better part of the last 6 years I can honestly say if I could go back and do it all again I wouldn't have gone to school for a degree in software. I would have gotten a degree in business management/entrepreneurship and taught myself development skills on the side.

This is a field where if you are truly interested in being a developer and put in the time you can excel without ever needing a formal degree. I see it every day when I go to work and with all the people I've met in the field over the years.

TragedyAnn, in your specific case I wouldn't recommend quitting school. You've put the time in already and just because you are in school doesn't mean you can't teach yourself as a compliment to your schooling as well. You've already invested time and money into getting the degree so it's probably in your best interest to finish and get that piece of paper.
 

Vilgan_sl

shitlord
259
1
Meh, Amazon offers to fly everyone out. I strongly suggest working at Google before Amazon.

I think there is a general continuum:

Low experience: Where you went to school matters, because there isn't much else to judge on. Did you do an internship? Do you have code people can actually look at? Yay, you'll get a job. If you went to a boot camp and that's it and don't have a large amount of stuff you've actually built then fuck off. If you went to a top tier school, it will be easier to get a "good" job immediately.

Medium experience: No one gives a shit where you went to school anymore or what your grades were. What cool shit have you done? What can you do that others can't?

High experience: People /especially/ don't give a shit about your school or grades, but do start to dig more into leadership and mentoring ability or ability to be an architect/project lead on a large team.

I know plenty of people that went to great schools like Caltech and MIT and then didn't do much and lots of people that went to "bad" schools and are now millionaires. Does a 4 year degree have value? Sure, especially if the alternative is a bootcamp w/ limited shit to show for yourself. But the hard part is getting the foot in the door. In 3-4 years no one will give a shit what school you went to, they want to know if you are smart and where you fall on the badass coder metric.
 

Tenks

Bronze Knight of the Realm
14,163
607
I've heard nothing but bad things about working at Amazon. Pretty apparent their idea is to just grind out wide-eyed developers with 60+ hr workweeks until they quit.
 

Hachima

Molten Core Raider
884
638
I've heard nothing but bad things about working at Amazon. Pretty apparent their idea is to just grind out wide-eyed developers with 60+ hr workweeks until they quit.
With a company that big, people's experience will vary greatly depending on what group you are part of and even what team you are in within that group. If its a smaller company it's easier to make generalizations for the company, but even if there are just a handful of teams it can still come down to what team you are on and one persons experience will vary greatly from another.
 

Vilgan_sl

shitlord
259
1
With a company that big, people's experience will vary greatly depending on what group you are part of and even what team you are in within that group. If its a smaller company it's easier to make generalizations for the company, but even if there are just a handful of teams it can still come down to what team you are on and one persons experience will vary greatly from another.
To a degree this is a true, but disregarding all the discontent Amazon devs doesn't seem appropriate either. My old CEO used to mention that his favorite recruiting spot was hanging out near Amazon because everyone was so desperate for a lifeline out. I've known 20+ people that work or have worked there, and general consensus seems to be it is better than working at a shit company but not on the same level as Google, Facebook, or Microsoft. They pay well but at their heart they are a retailer not a software business and that can grate on people.

That said, it certainly doesn't hurt to have on the resume and some people like it so YMMV. I do think you'd be crazy to pick Amazon over Google though unless the compensation difference was immense or already bought a house somewhere that made Amazon a much better commute.
 
349
1
Well all my credits transfered so basically the only classes I will be taking for this degree are comp sci. Because I am getting my school paid for through the VA, I have to be enrolled full-time to recieve all the benefits. The catch is that I can only take classes that are in my degree plan. There is a sophmore comp sci class that is the prereq for all other comp sci courses and it is not offered during the summer. I was pretty bummed because this would require me to basically pay out of pocket this fall because I would only be able to take one class. This would also set me back a semester from when I planned on graduating. Thankfully there is a solution. I can test out of that class by taking the final at the end of the summer. I was given last years final and it basically a bunch of questions on interpetting different code samples in Java and predicting the out given certain inputs. It actually looked kinda easy, I've done a few things in python so alot of the concepts I know I just need to use the java syntax instead. I was also given the text book for free which was nice. I am working through it right now.

Assuming I test out of this thing I will be taking all the sophmore comp sci classes required my first semester (this fall) which are OO Programming (c++), discrete math for cs (no idea), data structures, and machine programing and Machine Programming & Organization. These are all 4 hour credit classes so I am kinda nervous about the work load. I've heard data structures is an intense class but thats just from other students. I've done 16-18 hour semesters and they were not fun. Pray for me.
 

Obtenor_sl

shitlord
483
0
I've heard nothing but bad things about working at Amazon. Pretty apparent their idea is to just grind out wide-eyed developers with 60+ hr workweeks until they quit.
Can vouch for this. Amazon doesn't pay that well and the perks are mostly non-existant, specially when you compare to others in the field. I love Amazon as a company, but to be fair, Amazon IS Walmart of the internet, so you're working for e-Walmart.
 

Tuco

I got Tuco'd!
<Gold Donor>
46,815
78,428
Assuming I test out of this thing I will be taking all the sophmore comp sci classes required my first semester (this fall) which are OO Programming (c++), discrete math for cs (no idea), data structures, and machine programing and Machine Programming & Organization. These are all 4 hour credit classes so I am kinda nervous about the work load. I've heard data structures is an intense class but thats just from other students. I've done 16-18 hour semesters and they were not fun. Pray for me.
Unless you're some kind of genius or know this shit already or your college is irresponsibly easy your academic advisor should be taken out and shot. And that's even if you got a 4.0 in the prereq you're trying to skip. Those are all hard hitting CS classes.

I'd recommend you try to learn the items on the OO programming syllabus ahead of time using online resources. Having a good knowledge of classes, polymorphism, inheritance, templates, points etc will help both that class and data structures which hopefully in C++ because pointers. Data Structures is sort of a realization of OO programming. OO Programming is more of a way of thinking about how to solve problems, data structures are specific ways to solve specific problems.

Those classes specifically (OOP, Discrete math, data structs and assembly shit) are the core of a CS degree and the classes that make someone a computer scientist. And by that I mean a normal uneducated person learning them will literally change the chemistry of their brain to make them be able to think like a computer. Doing them all in one semester will be awful.
 

Tenks

Bronze Knight of the Realm
14,163
607
Can vouch for this. Amazon doesn't pay that well and the perks are mostly non-existant, specially when you compare to others in the field. I love Amazon as a company, but to be fair, Amazon IS Walmart of the internet, so you're working for e-Walmart.
I also heard Amazon was willing to pay developers a months salary if they quit because some bullshit about weeding out people who didn't actually want to be there.
 

Noodleface

A Mod Real Quick
38,242
15,023
Good luck with assembly, fuck that shit. Also fuck discrete math. I absolutely hated that bullshit class.
 
349
1
hmm maybe ill only take 3 of them then. ya generally you take 2 one semester and 2 the other. again the VA is really putting my in a pinch with their very strict requirements to be considered full time. they wont let me double major or pick up a minor either. i cant really complain because i am getting paid to goto school but damn they arent making this easy for me. worse case scenario i quit my job (i can afford not to work) and just live at the library.
 

Obtenor_sl

shitlord
483
0
I'd say one of the most important classes when doing a CS degree is Algorithms (besides the actual programming classes). If you don't know that the code you built is running at 2^n and sure it works for your small test set and then bombs when running live then you're an idiot. Knowing why/when you should transform an algorithm running on O(n^4) to O(logn) or similar will be extremely helpful in your interviews and actual work. And this is not usually something you pick up by 'yourself'
 

Lendarios

Trump's Staff
<Gold Donor>
19,360
-17,424
Data structures plus discrete math can be a hard combination, but they complement each other.

Here is an actual syllabus of discrete math from my alma mater.

Sets and Operations on Sets, Relations, Equivalence Relations, Functions, Cardinality,

  • Logic and Arguments, Mathematical Induction & Recursion, Combinatorics, Combinatorial Identities & Binomial Theorem
  • Graphs (Directed & Undirected), Isomorphism of Graphs, Paths, Adjacency Matrices, Euler Paths, Four Color Problem, Planar Graphs, Trees, Traversal of Trees
  • Boolean Algebras, Disjunctive Normal Form, Minimization of Boolean functions (Karnaugh)

Now Data structures

  • Be familiar with basic techniques of algorithm analysis
  • Be familiar with writing recursive algorithms
  • Master the implementation of linked data structures such as linked lists and binary trees
  • Be familiar with advanced data structures such as balanced search trees, hash tables, priority queues and the disjoint set union/find data structure
  • Be familiar with several sub-quadratic sorting algorithms including quicksort, mergesort and heapsort
  • Be familiar with some graph algorithms such as shortest path and minimum spanning tree
  • Master the standard data structure library of a major programming language (e.g. java.util in Java 1.2)
  • Master analyzing problems and writing program solutions to problems using the above techniques
  • Algorithms - What they are and what are their time and space complexities. Big-Oh notation. Computation of complexities of an algorithm.
  • Lists, Stacks, Queues, Trees, binary search trees, AVL trees, B-trees.
  • Hash Tables, Binary heaps, heapsort,
  • Sorting Algorithms: Insertion sort, Shellsort, mergesort, quicksort, bucket sort. Lower bounds for sorting.
  • Disjoint set UNION-FIND algorithm, Graph Algorithms: Minimum spanning tree, shortest path algorithms.

Some how they do complement each other. But it is the semester where you realize if you like programming or not.
You will do fun things like,
  • Finding the shortest route on a maze.
  • Create like 5 different sorting algorithms.
  • Create a tic tac toe that never loses.
  • Implement search algorithms.
  • Induction. probably the most useful tool ever in programming.

The difference between self taught and traditional learning, can be best compare to a doctor and a nurse. when training a doctor, the first years are taught from the ground up, Cells, tissues, compounds, reaction of cells and tissues to compounds, how the cells interact with each other. A lot of under the hood items, and then they go into the practical and most visible portions of medicine. A nurse training briefly focuses on the inner workings of the cells and mostly on the practical and visual aspect of medicine. The same can be said about self taught vs traditional. Self taught only knows what he has forced himself to learn, that that is very specific, and most time it is not very deep the knowledge. You just have to pick the correct technology to become specific at.
 

Tuco

I got Tuco'd!
<Gold Donor>
46,815
78,428
I mostly agree with what Lendarios says, but I'd caution against carrying the nurse/doctor comparison too far. Medical doctors go through a decade of intense education and training in ways that require an expensive and formal medical school (cadavers n' shit, residency, learning information not readily available on the internet etc). Nurses go through a subset of this.

Computer science undergrads go through a couple years of education that can easily be done out of school if you have the drive and access to the internet. Even the most obscure and academic parts of an compsci degree (discrete math, design patterns, functional programming etc) are enumerated in detail with youtube vids, wikipedia etc. And in the end, both college grads and self-taught programmers compete for the same positions, just college grads have an easier time getting into a lot of positions.
 

Khane

Got something right about marriage
20,311
13,959
All the stuff you guys are mentioning is great knowledge if he's going into a field that is heavy on math (like financials). Obviously he doesn't know where he'll be seeking employment yet so it's good to know. However, if he doesn't go into a math heavy field all those skills will be forgotten 6 months after college because he literally will never use that shit.

The only thing I remember from all my college CS math courses is the law of Modus Tollens and binary. I feel bad for all you guys who still work with unmanaged code and ancient programming languages where you actually have to do those bothersome tasks (like allocating and de-allocating memory) yourself.
 

Tuco

I got Tuco'd!
<Gold Donor>
46,815
78,428
Labeling memory management as a "bothersome task" is a huge mistake.
Yeah I was looking forward to Khane's reply to Lendarios', but I didn't expect him to so readily prove Lendarios' point about the mentality of a nurse vs a doctor.
 

Khane

Got something right about marriage
20,311
13,959
You guys kill me. It's good to know about things like Garbage Collection in managed code but you really shouldn't fuck with the way the CLR operates (in .NET) unless you absolutely have to. Memory management in C++ is necessary but it's a goddamn pain in the ass, so yes it is bothersome. I know you understand the difference in what I'm talking about here.