The Value of a BS in CS

<p>The problem with a lot of self-taught programmers is that they think they are a lot better than they are. I have met a few very good self taught programmers. </p>

<p>However OP thinking being fluent in a few languages is equivalent of a BS in CS is laughable. </p>

<p>First define fluent. Do you use proper coding guidelines (put comments where necessary, know how to write efficient algorithms, know how to use which data structure for said program, do you even know how to use and implement a data structure other than an array?)</p>

<p>Second, can you make a program that someone 3 years down the road can modify without growing a beard? </p>

<p>Coupling and cohesion will be some of the deciding factors of how good code is.</p>

<p>Coupling refers to how modules depend on each other. You want this to be low. The reason for this is that later on it is very likely that code would have to be modified. If there is an unnecessarily high dependence between modules, the changes made to one module can have unwanted side-effects on other modules. Having a high coupling is like having a tangled mess.</p>

<p>Cohesion refers to how related the contents of a module are. If cohesion is low, it means that some code just happened to be where it is without much thought as to why this is the case. Cohesion should be high. </p>

<p>Having a low coupling and high cohesion will help a lot with maintenance. Maintaining software incurs a very high cost and in some cases will not be carried out by the same people who developed the system, so it’s a pain in the ass to fix it. So it follows that taking these two properties into consideration would be very helpful.</p>