featured

By Code FellowsNovember 8, 2013

Importance of Computer Science to Software Engineers Doing Web Development

Not everyone finds themselves diving into web development with a computer science background. So if it seems like a viable career path, the burning question must be:

How does someone without a computer science degree land a job in web development?

Well if you’re a math savant, you can just go ahead and read this book to start your path toward enlightenment. Also if you could answer this little P = NP problem while your at it, it would be much appreciated.

As for the rest of us plebeians, we should be asking ourselves:

“Is computer science honestly that important for software engineering?”

While comprehensive knowledge might be an advantage during the interview process, a software engineering job may or may not even require the expertise acquired studying computer science in asymptotic analysis of data structures and algorithms. I guess I have to give the horrible answer of it depends… Some jobs are going to require this expertise. It may be essential to do the work. But that is something that’s simply out of our control. However, there are plenty of jobs where this knowledge is being assessed as part of a thorough hiring practice. That’s also exactly where we can take back control and take advantage of the situation. Here is how we leverage both our knowledge and lack of knowledge to our advantage:

  • This brings me to the first of the two important rules in life.
  • Don’t tell everyone everything you know.

The reason for this is straight forward. If you tell someone during an interview that you have expertise in asymptotic analysis and understand data structures and algorithms, you’re likely going get asked a question intended for someone who is well versed in the subject matter. Unless you plan on taking the time to master the material I would suggest being honest. Don’t want to get caught pretending to know more than you do.

  • Despite this, a question may still be asked in regards to asymptotic analysis. Don’t be afraid. They may be asking you anyway to assess how calm you stay under a stressful situation. The solution is simple. State clearly what you do and don’t know and proceed to ask for help or describe how you would get help in such a situation where your knowledge is lacking. Show them your curious and willing to learn on the spot.
  • Another key thing to understand what asymptotic analysis describes. If you can clearly describe what the advantages and disadvantages are, this might even prove that you’re agood communicator.
  • Understand the basic problem is one of Time Complexity (how long it takes to run) vs Space Complexity (How much storage it takes) and the possible trade offs between the two.
  • Understand that the tool for measurement is called “Big O” and is referred to as “Big O notation” and O(N) is pronounced “O of N”
  • Understand that Big O is simply referring to the rate of growth for a resource based on the size of the input
  • Understand that Asymptotic analysis is not the end all for describing algorithmic efficiency. It doesn’t take into account the frequency in which that algorithm or data structure will be used or how much better more powerful hardware will run things.
  • Most importantly someone smarter than you has likely already done the hard part. This stuff tends to be core to the structure of many systems and programming languages. The architects have likely taken this into heavy consideration so you don’t have to.

Creative Commons Image Credit