29

I attained my bachelors degree in computer engineering in January 2014. I was not a prolific programmer as an undergrad, instead focusing on my other coursework and in general completing my degree. I am now paying the price for that. I got a job after graduating that involved writing code, however I had a hard time understanding the programming tasks required. Luckily I had senior coworkers who were very helpful. Despite this I was fired after five months because I was unable to complete my tasks in a timely manner.

Since then I have begun working on my own (basic) projects such as library management and a chat engine.

After a few months I was able to get another programming job. This time I was able to understand the tasks I was assigned, however I still struggled to complete them in a timely manner and my boss was growing quite frustrated with me. I decided to leave the position after two weeks because of this.

I have continued to improve my programming skills since graduation, but I am still very slow at developing my programs and I rely heavily on Google. I suspect that this is because I did very little programming as an undergraduate. I do enjoy programming, and I regret not pursuing it more passionately then.

I have since considered applying to a masters program in computer science in order to improve my programming knowledge. I'm not sure that this is the best route because I believe that most masters programs in computer science are more research oriented. I believe that if I continue my studies and complete all my programming assignments I will be able to do well in industry. I would appreciate any advice on deciding between a MS and an MBA so I can remedy the errors I made in the first two.

  • 4
    This question appears to be off-topic because it is about industry oriented education. – Davidmh Jan 10 '15 at 20:58
  • 21
    Serious question: if you didn't enjoy programming in your undergrad, and you haven't found the motivation to learn since then, why do you actually want to make a career out of it? – sapi Jan 11 '15 at 1:56
  • 4
    @Wrzlprmft Questions about "Preparation for a non-academic career" are explicitly out of scope, per the help center. However, questions on "side-effects of an academic programme" seem defensible. – ff524 Jan 11 '15 at 10:34
  • 4
    It doesn't help the credibility of a CS major that someone can graduate while being barely able to code. When I was going for my MS in Comp Sci, I made a point to program in C, which was the prevalent language back then, as much as possible. I got plenty of practice because no one in any of the teams I was on was any good, and I ended up doing all the project work - Better a shared A than a shared C, I suppose. Fact is, almost everything I know, except for theoretical Comp Sci, I learned outside of school. I do find the theoretical Comp Sci stuff valuable, as in extremely valuable, though. – Vietnhi Phuvan Jan 11 '15 at 15:09
  • 5
    So in short, you've spent years of your life in formal education, failed to gain basic skills necessary for your line of work, and have decided more formal education is the solution? As a professional programmer this does not seem to be a particularly efficient or effective solution to the problem at hand. – NPSF3000 Jan 12 '15 at 12:16
31

Although having done a bachelor in computer engineering without doing any coding at all is highly unusual, learning to code is mainly a self-taught art. Even if you had been fully taught many programming languages during your undergraduate years, they might quickly become obsolete. On a perfect world an undergraduate degree on computer engineering must have given you the necessary theoretical base on databases, programming concepts, data structures and algorithms. Then it takes many / endless hours of coding to learn how to successfully apply those concepts on real-world software applications. So, regardless of doing a MSc or not, you must still code on your own "free" time, either on your little self-projects, on learning / self teaching new programming languages or participating on open-source projects and communities like Stack Overflow (SO).

The fact that you avoided coding on your undergraduate years is a bad sign though. Successful programmers are usually partly (or fully) geeks who enjoy installing / testing a new linux distribution every few months, hack their laptops to automate tasks, participate on SO by coding and solving other people's problem just for fun. Are you sure that coding is what you want to do for the rest of your life? Programming is really a hard and stressful work (as you saw on your first real jobs) and is very hard to enjoy it, if you do not have any real passion for it.

On answering your core question, most MSc programs I know, are mainly focused on particular aspects of IT science, such as databases, networks, electronic commerce etc and not on teaching programming. If your core motivation is learning how to program, I would suggest to follow (and pay for) some industry certifications (e.g. Oracle for Java and Oracle DB) and their respective structured courses. There is even multiple free educational material for those certifications, so you might even not need to pay for it. Still, to really learn coding you must spend hundreds of hours of actually coding and you should not simply expect to learn programming by studying at yet another course or getting a new degree.

  • 12
    I agree about the main point, in order to learn to program you have to do it. But please try not to propagate the myth about learning to program and learning programming languages, it is fundamentally two different things with no intrinsic correlation beyond that one learn the basics of programming along with a language. Once you are a good programmer picking up a new language is easy, and the basic programming skills will never be obsolete. Installing stuff is a chore, you have to do it, but you most certainly do not have to enjoy it. – aaaaaaaaaaaa Jan 11 '15 at 10:02
  • 8
    As a geek and a programmer I must say I have never used Linux, I don't use a laptop and the only tasks I need to automate don't require any kind of hacking. – Pharap Jan 11 '15 at 10:33
  • 10
    learning to code is mainly a self-taught art — Perhaps. But learning to programm well is definitely not. – JeffE Jan 11 '15 at 12:47
  • 8
    @JeffE On the contrary, like any other craft, learning to do programming well first and foremost requires practice, no one can teach you that. – aaaaaaaaaaaa Jan 11 '15 at 13:31
  • 11
    I agree with all of this answer except the second paragraph. It basically reads as "successful programmers do (all the things I do)". Successful programmers program, period. They do it often and improve their skills. This myth that you aren't a proper programmer if you've never compiled an OS from scratch, or tinkered with an Arduino, or some other ridiculous criterion, is actively harmful in its discouraging effect. No one would say "you can't be a successful carpenter if you don't spend time cutting down trees". – Chris Hayes Jan 12 '15 at 3:30
26

I feel like this whole question is a great example of someone taking a Bachelor's course on the assumption that it would open up career doors for them, without ever really considering or understanding how [little] said course related to their chosen career path.

No degree is going to magically make you a programmer or a software developer, surely not a research degree, and certainly not a Computer Science degree. "Computer Science" is a misnomer for courses that would be better called "Computing Science". It's not about developing software.

Taking a Bachelors course in Software Development/Engineering should have given you a great foundation, but it sounds like it may in reality have been more of a Computer Science course (a contradiction that is unfortunately rather common in the undergraduate academic world). Regardless, whether you took a real Engineering course, decide to go and take one now or just leave it be entirely, my advice is as follows:

If you wish to improve your skills, take up more hobby projects and consider contributing an open-source repository. It sounds like this is going to be a slow road so you should probably get an unrelated job to tide you over for the next few years until you have become a useful programmer.

  • 2
    It is not unreasonable to expect that a degree will certify if you are a competent developer. Should this guy have gotten a BS without knowing how to program is a different question... – Mikhail Jan 11 '15 at 1:50
  • 16
    @Mikhail: In my experience and that of many people I've spoken to, it is entirely unreasonable to expect that a degree will certify you as a competent developer. Demonstrable real-world experience (be it commercial or otherwise) is the only true mark of a competent developer. This is somewhat unique to our particular field, though, somehow. Of course competency supplemented by a rigourous education is even more attractive for roles that may involve design and/or optimisation tasks. – Lightness Races with Monica Jan 11 '15 at 1:55
  • 1
    LRiO is right. You need actual experience in software development. That means writing code, building, testing, DEBUGGING, [go back to building]. – Martin James Jan 11 '15 at 2:00
  • 1
    @bjb568: My answer talks about whether it will make you a good programmer. Only in comments are we talking about certification. – Lightness Races with Monica Jan 11 '15 at 2:15
  • 1
    I'd still say that "magically make you a programmer" != "helpful in improving programming skills" – bjb568 Jan 11 '15 at 2:22
14

Getting a masters COULD improve your programming skills, or not, depending on the work you do, and the use you make of it. There's also a question of exactly what kind of programmer you want to be, because all programmers/programming jobs are not alike. Working on business-oriented software development, perhaps as a member of a large team, is quite a different experience from using programming as a tool in basic/applied research, where you may be one of a few (or the only) real programmer tasked with translating the ideas of non-programmer scientists into code.

I have to agree with others, though, that becoming a reasonably good programmer takes practice. It's a lot like any physical sport: you can study the theory all you want, but unless you actually get out and DO it - and push yourself in the doing - you will never be good at it. That means not just following a recipe (I'm almost tempted to say 'design pattern' :-)) to code something once and turn it in, but taking it apart and learning how & why it works, and perhaps more importantly, why it fails. (Debugging is a highly underrated skill.)

I really think you should have gotten at least a start on this as an undergrad. If your teachers didn't try to force you to, IMHO they shortchanged you.

  • Agreed. It will depend a lot on the program/work done. I had very few programming assignments in my MS program and they usually had very little applicability to my day job writing code in a generic business environment. – Rob P. Jan 11 '15 at 13:43
  • @RobP. In general, an M.S. in Computer Science isn't really supposed to be particularly relevant to writing generic business software. Graduate school in science and engineering is usually focused on preparing you for performing research or similarly specialized work. Regarding this answer, it really depends on the program. Software is not usually the primary focus of CompEng programs and software development isn't even always the focus of CompSci programs. Theoretical computer scientists, for instance, don't necessarily need much software development experience. – reirab Jan 12 '15 at 20:40
  • @reirab - Completely agreed. – Rob P. Jan 13 '15 at 9:52
  • +1 for mentioning that debugging is a highly underrated skill (along with all the other valuable insights). – Ben Kovitz Mar 26 '15 at 21:21
9

A masters degree in computer science will not increase your programming knowledge much, if at all. I earned both a bachelor and master degree in computer science. I did some programming for my bachelors degree, but very little for my masters degree. To my surprise, my masters degree was mostly a higher-level and less in-depth presentation of much of the same material covered in my bachelors degree (at completely different universities). (Lesson learned -- If I had to do it again, I would get my masters degree in a different field from my bachelors degree.)

Computer science coursework (for software development) focuses primarily on teaching the fundamental concepts of algorithms, database theory, graphics theory, etc. At the bachelor level, programming exercises are intended to help the student understand the theory and demonstrate a basic understanding. Degree programs do not provide in-depth training for any particular programming language or platform. Instead, they provide the fundamental concepts that are widely applicable in computer science. When I began professional work as a developer, I quickly discovered that my CS coursework left out many topics that were extremely relevant to the platform I was using and the type of development I was doing. There are so many languages and platforms that no CS degree could possibly cover them all. Many professional training books and courses offer in-depth training for specific platforms or types of work. But even those courses will not and can not cover everything you need.

I have worked with some developers who were great people, but only marginally competent at development. A competent developer (or a professional in any field) will have some amount of both skill and talent. Skill is a combination of training and experience. Talent is the in-born ability of certain people to intuitively learn concepts or skills in a field, and understand problems/scenarios in their field. For example, I took piano lessons as a child. While both I and my teacher tried hard to improve my skill, I really didn't have much talent. I finally gave up playing the piano when I realized that my lack of talent made skill acquisition very hard, and I would never acquire enough skill to compensate for my lack of talent and play well.

To put it bluntly, it sounds like you may not have a lot of talent for programming, and are trying to compensate with more skill (education). That may or may not succeed. I am not trying to be unkind, but to encourage you to take a hard look at your own talents. If you are not sure, ask a trusted colleague for their frank assessment. I certainly commend your desire to improve yourself professionally. I would encourage you to consider looking for another type of technical work that may be a better fit for the talents you do have. I have worked with colleagues who couldn't write decent code, but who had great customer service skills, a knack for regulatory intricacies, or an amazing understanding of reporting details. With your drive to improve, there is a position out there that is a good fit for you.

  • 1
    To put it bluntly, it sounds like you may not have a lot of talent for programming — Downvoted. Programming is absolutley not a skill that you can do well from mere talent, despite the nearly universal Dunning-Kruger effect that makes poor programmers to think otherwise. OP admitted that he didn't have enough experience; extrapolating anything about his innate ability is uncalled for. – JeffE Jan 11 '15 at 12:41
  • 2
    @JeffE: I disagree, at least if I understood you. I think there is a talent for programming, just as there is a talent for music. From my own experience, learning programming was almost like being able to speak in my native tongue after living in a foreign land. On the other hand, I have no real talent for music, and am still at best a mediocre musician despite probably thousands of hours of practice. I think to be really good at anything takes both a native talent and a great deal of dedicated practice. – jamesqf Jan 11 '15 at 18:30
  • 3
    It's dangerous to equate Computer Science with Computer Engineering the way your first sentence does (and the first sentence in your second paragraph goes beyond dangerous to flatly wrong). Computer Engineering is not the engineering counterpart to CS -- Software Engineering is. Computer Engineering is scarcely distinguishable from "Electrical Engineering with Digital Electronics emphasis". – Ben Voigt Jan 11 '15 at 20:31
  • I didn't say talent doesn't exist; I said it wasn't enough. People don't become professional musicians through talent alone, either. Conversely, the fact that someone can't play the piano well (by professional standards) does not imply that they don't have talent. – JeffE Jan 12 '15 at 2:15
  • "To my surprise, my masters degree was mostly a higher-level and less in-depth presentation of much of the same material covered in my bachelors degree." That is very surprising, indeed. And, frankly, that's not how it's supposed to work. That was not at all my M.S. in CompSci experience. It's supposed to be quite the opposite: much more depth, but not as much breadth, as the undergrad degree. Graduate degrees (MBA and MEd aside) are supposed to be specialized degrees. It's not uncommon to be among the world's experts on some very narrow subject upon earning your M.S. (or, especially, Ph.D.) – reirab Jan 12 '15 at 20:47
6

If your goal is only to improve programming skills, then doing an MS is just a waste of time and money. If you find it difficult to learn programming by yourself, you can take a free online programming courses in Coursera or Udacity. There are plenty of them, for example:

https://www.coursera.org/course/interactivepython
https://www.udacity.com/course/cs046
https://www.udacity.com/course/ud036

Note also that there are many career options for a BSc degree in CS that do not require much programming skills. For example:

  • If you don't know how to code, but you know how to test other people's code, you can become a test engineer.
  • If you can talk to customer and convert the discussions into UML diagrams, then you can be a Business Analyst.
  • ...
  • 5
    I agree. Just because you have your BSc does not mean that an MS is the logical next step. Take a couple of programming courses. Maybe coding is not your thing; that way you will find out. I know brilliant science people who just can't grasp coding. – Tom Robinson Jan 11 '15 at 18:52
  • Even if coding is your thing, I agree with the answer that a Master's may not be the logical next step. – reirab Jan 12 '15 at 21:05
1

You need to frame your question more precisely. What caused your productivity problems in your programming assignments? Saying you were "too slow" isn't very enlightening. Why were you too slow? Did you make too many mistakes that had to be corrected? Are you sure your slow coding was the main issue? Why do you say so? To answer this question, you would need to consult your more successful workmates. What did they say?

If you were having problems completing assignments on time, did you seek help or mentoring from coworkers or supervisors? If your employers knew your educational background (and why wouldn't they?), why did they hire you in the first place? If they hired you knowing your weaknesses, did they offer extra help? Jobs are not like academics. Jobs are focused on getting the job done, no matter what. Besides gaining an education, in school your knowledge and capabilities are constantly being evaluated. The job is not about you. For that reason, good managers will help their employees be successful. It's to everybody's benefit.

Without knowing where you attended college, or where you worked, I can't evaluate your poor understanding of English grammar. If you attended college in an English-speaking country, why don't you know the language better? If you were working on an English-speaking job site, I'd say your inability to communicate effectively was a hindrance. I have to differ a bit with you and one previous commenter about the nature of education. Education should not be confused with training. While a form of education, the latter is quite narrow. It consists of imparting the minimum knowledge and skills to perform some function, programming or nursing for examples. There are broader skills that education in seemingly unrelated topics can teach you. From education in the liberal arts and sciences, you learn how to recognize patterns, how to generalize your observations and frame them in more abstract but general ways so that you can apply them to seemingly unrelated problems. You will learn basic logic and how to use it to critically evaluate data and arguments you encounter in work and life. Writing and speaking exercises will compel you to express your thoughts clearly and logically.

How well did you perform when you took these courses? What did your teachers say about your performance? If a college level liberal arts education is your foundation, but you lack specialized training in computer science and coding, then pursuing a Master's degree could be a way to acquire that training.

0

I am myself an undergraduate student of CS and believe me I have realised very early that programming is whats going to matter. i wont be solving Calculus questions in the office. The situation of yours is different but what my Discrete Mathematics teacher told me, might be of your use. He said that after graduating, do masters and if possible doctorate as it opens up your mind towards your field giving you a much more dynamic and wide point of view of your field. So thumbs up for master's degree.

  • This very much depends on what you want to do with a Comp Sci degree. If you want to do theoretical CompSci, Calculus (and, more so, proofs) might actually be more useful than programming. For software engineers, though, programming is more important (and software design is probably yet more important.) IMO, a good CS undergrad degree should give a good balance of these concerns. Regarding grad degrees, they're typically actually rather narrow, though you may get a broader perspective from hearing about (or, better yet, collaborating with) your peers' research. – reirab Jan 12 '15 at 21:02

protected by ff524 Jan 11 '15 at 20:09

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.