PDA

View Full Version : Becoming a programmer



Brasel
06-18-2014, 02:06 PM
I've been in IT for over 10 years now. I know MS SQL fairly well, and I've dabbled in programming languages such as C+ and Java in the past. I understand programming concepts pretty well and I could have them down if I brushed up on them. I'm not familiar enough with syntax to say that I'm a programmer, I just know how it works. I've never really programmed anything other than MS SQL stored procedures in the past, and the little rinky dink programs that I learned in school.

I want to ditch IT support and get into programming. I'm not happy with my career and I really want to try something else. I know there are plenty of programmers here and I was hoping for some insight as to how long it takes to become proficient enough to land an entry level job, and what kind of salary I'm going to expect. I know that the salary ceiling will be much higher, but I am kind of afraid of the potential salary drop to get into a new entry level position.

Any advice is appreciated.

Beldaran
06-18-2014, 10:27 PM
Entry level is the hardest to get, because no one wants to hire an entry level programmer unless they are 22 years old and graduated from a Computer Science program with a 3.9 gpa or better, which means you need to do something on your own that makes you look *not* entry level.

First, read this book (http://www.amazon.com/Starting-Out-Early-Objects-Edition/dp/0321512383/ref=sr_1_15?ie=UTF8&qid=1403143987&sr=8-15&keywords=starting+out+with+c%2B%2B). If you hate it, you won't enjoy programming. Then read this book (http://www.amazon.com/Introduction-Algorithms-Second-Edition-Thomas/dp/0070131511/ref=sr_1_10?ie=UTF8&qid=1403143874&sr=8-10&keywords=algorithms+2nd+edition), and if you want to die, you won't enjoy programming.

Next, you need a few killer personal projects. Pick your technology stack and make some projects, and not half assed, half finished ideas, but finished projects that you can talk about and demonstrate in a job interview. It could be a phone app, a website, a video game, whatever. No one will believe you have skills unless you SHOW them.

How far away you are from a programming career is directly related to your level of effort and free time. If you put in 20-30 hours a week of aggressive, focused learning, you could have a cool portfolio and be ready for a job in 2 - 2.5 years I guess. I made that number up. But the point is, this is a very competitive business an everyone is younger, smarter, meaner, and more dedicated than you expect.

It's also a shitty industry, because it's one of the few where experience works against you. Don't have enough experience? Fuck you. Have too much experience? You're old, fuck you. Anyway, you can make it though. Pick a technology you like working with that is used by at least some portion of industry, and just stroll confidently forward. With focus, patience, and confidence, you can absolutely become a successful software developer. Just don't let anyone tell you that it is impossible. However, if you want to be lazy, surf the internet, and keep up with Game of Thrones, some younger, hungrier kid is going to get the job you want and it will be impossible. It takes guts and perseverance to do difficult things. But you know that already. =)

Source: I taught myself to program and now I make my living with it. I do have a college degree, but it's in mathematics, not programming. My degree got me my job interview, and my demo projects got me my first job.

EDIT: I forgot to address the salary questions. I don't really know the answer, to be honest. I feel like I made pretty good money right out of college, but I don't know what you currently make so it could all be relative. I wouldn't worry about pay, though. I would worry about overall career trajectory. It's much, MUCH easier to get a raise than it is to change careers. If you really want to be a programmer, get vicious about it and go do it. Otherwise, keep collecting that IT paycheck.

Aliem
06-18-2014, 11:39 PM
For general game stuff I got started with Open Zelda way back when. Then when that fizzled out I dicked around with Blitz Plus and Blitz Max. Now I use Love2D. It's a lot like Blitz, though with the obvious difference of using LUA instead of BASIC. That's probably as far as I'll ever take my programming; it's completely for fun on my end. I hope to have a megametroid style game (is that a thing? If not, it really should be. Like metroidvania, but replace the castlevania bit with mega man.) that's very very short done sometime this decade. =p

EDIT

It has come to my attention that Mega Man Zero is a lot like what I described. I suppose I should play that.

Brasel
06-19-2014, 10:33 AM
Thanks for the information, Beldaran. I'll take a look into those books for now.

SUCCESSOR
06-20-2014, 06:55 PM
First, read this book (http://www.amazon.com/Starting-Out-Early-Objects-Edition/dp/0321512383/ref=sr_1_15?ie=UTF8&qid=1403143987&sr=8-15&keywords=starting+out+with+c%2B%2B). If you hate it, you won't enjoy programming. Then read this book (http://www.amazon.com/Introduction-Algorithms-Second-Edition-Thomas/dp/0070131511/ref=sr_1_10?ie=UTF8&qid=1403143874&sr=8-10&keywords=algorithms+2nd+edition), and if you want to die, you won't enjoy programming.

Those seem to be exceptionally terrible examples. Those books are guarenteed to bore and frustrate you. The former is not even a very good introduction book. The latter is a great book to have and study (and possibly required for a course) but you don't have to drudge through the whole thing before learning a Programming Language.

I say pick the language you are interested in and do a few tutorials online before investing in a book you may never use that has a terrible resale value. I suggest something newer and not C(C++) or something like that. (I personally have failed to teach myself C++ for nearly 10 years, mostly due to lack of discipline and consistent interest.)


It has come to my attention that Mega Man Zero is a lot like what I described. I suppose I should play that.

Mega Man ZX has also been described as a Metroidvania type game. Unfortunately, I haven't played either. I'd really like to. I wish I still had my DS or GBA. Well, I still have my GBA but it doesn't charge.

Beldaran
06-21-2014, 11:16 PM
Those seem to be exceptionally terrible examples. Those books are guarenteed to bore and frustrate you.

They are good books for someone who wants to develop a professional level of skill. The contents of those books will be a substantive part of actual job interview questions, and they provide an intellectual foundation for the practical craft of software development.

I did not say he had to master every concept on every page, but that he should test the depth of his interest and aptitude by reading them.


I personally have failed to teach myself C++ for nearly 10 years

Then maybe you shouldn't be giving programming career advice to Anthony.

Gleeok
06-22-2014, 05:07 AM
I can't really give you any advice for becoming a professional programmer in terms of career options and job advice, but I can say with almost absolute certainty that in addition to learning good coding practices, common algorithms, recurring patterns, templates, etc--for example what Beldaran posted--you also are going to need practice using all those paradigms. I don't know if anyone would hire a c++ programmer that's never.. you know.. programmed anything before. Seeing how Mega Man has has apparently become really popular around here recently, that may be worth considering. There's no reason you have to stick to boring console apps, though I would stay away from working directly with Windows API, Graphics API, or any other low-level crap that will drain you of time that could be better spent learning the core language and libraries.

ctrl-alt-delete
06-22-2014, 02:13 PM
Anthony

http://eembdersler.files.wordpress.com/2011/07/c_early.pdf

http://ldc.usb.ve/~xiomara/ci2525/ALG_3rd.pdf

SUCCESSOR
06-22-2014, 10:10 PM
They are good books for someone who wants to develop a professional level of skill. The contents of those books will be a substantive part of actual job interview questions, and they provide an intellectual foundation for the practical craft of software development.

I did not say he had to master every concept on every page, but that he should test the depth of his interest and aptitude by reading them.

Then maybe you shouldn't be giving programming career advice to Anthony.

http://s2.quickmeme.com/img/f4/f4747dcc4eb209cf95060dfc79415f2e2bdb2ea652042b7659 6baae3a2362b4c.jpg

I wasn't denying the content of those books or the value of some of your advice. In fact, I agree with most of it. I disagree with the books you recommend he read through to determine if he will be fit for a programming career. Those books are guaranteed to make anyone miserable. Students have been tortured by that algorithm book and ones like it for ages. Yes, you do need firm understanding of the subject matter of those books. 90% of people will not make it through those books on their own even if the subject is interest. The first one promises teaching Objects to an absolute beginner but that is not a something a beginner can or should grasp without already having a firm grasp on a lot of basics. Based on a couple reviews it sounds like the book is also scattered and quite dull in it's approach. Sam's or Dummies books are very good at covering the basics for absolute beginners(so good Anthony might have to skim a few chapters to get started) but they also do so in a interesting manner. A little bit of humor helps get you through some of the incredibly dull content you need to absorb when learning programming.

I also wasn't giving professional advice. I was sharing my experience to make the point that I may have gotten a lot farther if I chose to learn another language on my own. Most programmer recommend people don't start with C or C++ and instead pick a language with less of a learning barrier. I was suggesting internet tutorials because they are free and they give you the chance to see how the language works and get some interactive experience with it. Plus, he might be able to invest in a book that covers much more of the language since it doesn't have to spend the first half covering the basics of programming. As you, gleeok, and others have said to have a job in programming you need all those skills and knowledge, but as someone who is wondering about getting into programming and if such and such language is for them they don't need it right now. This isn't the early 90's you don't need to know C to be a programmer(though it obviously helps a lot).

My advice(from a non professional programmer as Belderan pointedly noted): Find out if you like the language you are going to be learning before investing in the goal and materials to work with it.

There is an Algorithms course (https://www.coursera.org/course/algs4partI) on Coursera but it, like most algorithm courses/books, recommends a basic understanding of a programming language. This one happens to be Java.

Din
06-23-2014, 06:14 PM
I'd argue that the most important part of programming, as others have pointed out, is just that - programming. Set some goals and personal projects for yourself, and don't be afraid to get your hands dirty. Many introductory books have exercises that the reader can do to practice, and they're usually excellent for first getting your feet off the ground.

If you want to get a feel for it, I'd say a good first step would be to focus less on the object oriented side of things and more on the core programming basics. That is, take a good long time to familiarize yourself with things such as variables, control flows, loops, methods, and arrays. Start off with simpler tasks (such as, say, a program that counts the number of words and characters in a file), and gradually work up to more complex exercises and situations involving these basics. If it doesn't grab you by then, honestly, it probably won't later on. But if it does, then you'll probably find yourself enjoying it later on as well, and that's usually a good time to look into the more intermediate things such as pointers, recursion, data structures, algorithms, and object oriented programming.