Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I\'ve been considering moving to a new city (getting seduced by those big city l

ID: 639300 • Letter: I

Question

I've been considering moving to a new city (getting seduced by those big city lights), and I'm trying to decide if my lack of "computer science"-y skills is going to make me overly uncompetitive. Let me explain my situation a bit more:

Programming since jr. high school, professionally since 2004. I've worked for a small company that does custom web applications (PHP) since 2006.

I've studied design patterns on my own, and used them in my work.

Worked with MVC frameworks (PHP) for a couple years now. I have a strong understanding of how to write good, maintainable MVC code that adheres to the principles of MVC (rather than just cramming code into wherever I can in the framework.)

Recently done some work with C#, through which I'm learning dependency injection and the MVVM pattern. Grokking these, but still a ways to go.

Full complement of web development skills (normalized databases, SQL, HTML, CSS, JavaScript), and I'm very confident of my skills in these. Also aware of security issues, and how to write a secure application. My main deficiency is scalability, which I've never had a need to learn, unfortunately.

Where I get nervous is with the things you'd learn in a CS degree. My degree is in aerospace engineering, not CS, but I've decided that programming is the thing I really care about.

What I know:

Basic data structures: I took a class in which I implemented basic linked lists, and queues and stacks built on those. I've written a basic binary tree (inserts, various traversals, but not removal (I was really drunk when I wrote the code, and it turned out not to work at all)). I know about hash tables, and understand some of the principles of their implementation.

I understand big-O notation, but since I'm not really familiar with algorithms, I suspect I might miss interview questions about this topic. (what's the worst-case insertion time into a hash table? I have no idea.)

I've done a little bit of functional programming by way of JavaScript, python, and dabbling in Haskell. (I realize the first two aren't functional programming languages, but they have functional aspects to them). I understand currying and higher-order functions.

What I don't know:

Don't really know formal algorithms at all. I couldn't sort my way out of a paper bag (well maybe bubble sort, which I know is O(n2)). I guess I know some of their names.

Never written a parser, or compiler, or any component of an OS. I've never done anything interesting with concurrency (e.g., anything beyond using basic asynchronous calls in .NET to keep my UI from blocking.)

I want to learn all these things, purely out of interest, but for now I simply don't have time right now with main job + side job + life outside programming (gasp! I know). I don't want to put my larger life plans on hold unnecessarily if I don't have to.

I'm not aiming for a Google or a Microsoft, but I'd like to at least get a job that's interesting. How much will I be held back by the deficiencies I've listed? I feel relatively confident that in a job I would actually apply for and get, I would be able to perform very well, but what about interviews?

I'd like to know:

How crucial are computer science topics toward getting a job?

Explanation / Answer

In one of the companies that I've worked for, most of the developers there finished college with degrees that are completely unrelated to Computer Science. Most of them are just self-taught when it comes to programming and they are the big guys in our company, mind you. The most important trait a developer should have is self-motivation and initiative when it comes to programming so I'm pretty sure you'll be fine if you're not aiming for Google or Microsoft. Maybe in a few years after getting actual work experience in the industry.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote