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
    Commented Jan 10, 2015 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
    Commented Jan 11, 2015 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
    Commented Jan 11, 2015 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. Commented Jan 11, 2015 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
    Commented Jan 12, 2015 at 12:16

7 Answers 7


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.

  • 13
    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. Commented Jan 11, 2015 at 10:02
  • 9
    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
    Commented Jan 11, 2015 at 10:33
  • 11
    learning to code is mainly a self-taught art — Perhaps. But learning to programm well is definitely not.
    – JeffE
    Commented Jan 11, 2015 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. Commented Jan 11, 2015 at 13:31
  • 12
    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". Commented Jan 12, 2015 at 3:30

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
    Commented Jan 11, 2015 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. Commented Jan 11, 2015 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]. Commented Jan 11, 2015 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. Commented Jan 11, 2015 at 2:15
  • 1
    I'd still say that "magically make you a programmer" != "helpful in improving programming skills"
    – bjb568
    Commented Jan 11, 2015 at 2:22

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.
    Commented Jan 11, 2015 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
    Commented Jan 12, 2015 at 20:40
  • @reirab - Completely agreed.
    – Rob P.
    Commented Jan 13, 2015 at 9:52
  • +1 for mentioning that debugging is a highly underrated skill (along with all the other valuable insights).
    – Ben Kovitz
    Commented Mar 26, 2015 at 21:21

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
    Commented Jan 11, 2015 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
    Commented Jan 11, 2015 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
    Commented Jan 11, 2015 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
    Commented Jan 12, 2015 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
    Commented Jan 12, 2015 at 20:47

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:


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. Commented Jan 11, 2015 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
    Commented Jan 12, 2015 at 21:05

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.


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
    Commented Jan 12, 2015 at 21:02

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .