Sign in to follow this  
Farwell

Learning Programming

13 posts in this topic

So, I've recently hit my ceiling at my current job as a network technician. I've cemented my role after 14 months with very very little hope for learning anything new due to other co-workers handling other aspects of the networking world and thinking only about job security so not wanting to teach anyone else what they do. Understandable? Sure. Annoying as fuck? You betcha.

 

Are there plenty of things I could learn networking-wise? Absolutely. But networking was not my degree and I don't plan to only work in networking for the rest of my life. I was a Management Information Systems major in college and plan to get into some programming project management at some point. In order to do so, I need more of a programming background. I took 4 programming classes in college, 3 java and 1 perl. I know the very basics, and nothing more. TBH I probably couldn't remember half the basics if I tried at this point so might as well start over fresh (it's been 4 years).

 

I work the typical 8-5, but also have to work a lot of overtime (200 hours in the past 14 months). While this may seem bad, I do get paid hourly (non-exempt salaried if being PC) and my 8-5 work is pretty chill and at times boring. I probably have 2-3 hours each day in this 8-5 where I could be doing something productive instead of waiting for quality posts on Wotlabs or decent ESPN articles that aren't about what kind of cereal Lebron James had for breakfast. So I bring myself here to ask resident programmers and developers alike the questions I hope to get good answers to:

 

What should I focus on learning? (languages, front end/backend, popular jobs in which fields?)

Where can I find this sort of information? (are sites like www.freecodecamp.com or a paid teaching site decent? / should I resort to books?)

What sort of tools will I need? A server and a website? (money shouldn't be too much of an issue to acquire if need be)

What do you personally recommend?

 

Now I'm going to write down that I don't know what I should be looking into specifically. Are web developers a good market to get into, or perhaps just focus on a specific language? If I had to focus on a language I'd prefer it be java as I have familiarity with it, but you might recommend something different based on industry trends, and that's fine too.

 

Any feedback would be great. Thanks.

Share this post


Link to post
Share on other sites

Literally the exact same position I was in a year ago... I made a thread about the same thing too :D

 

It has a load of really good information, but as far as a road map goes for learning how to programme:

 

I really like getting my introduction to programming through Java and this book but realised quickly, this is a never ending skill. I'll let OOP/Ding tell you why Scala is better & how to get into web dev etc... But as foundations go, READ! Whatever you can get your hands on, immerse yourself into the world and you'll quickly out-qualify those surrounding you. 

 

Good luck. :)

Share this post


Link to post
Share on other sites

I went back through a couple pages and couldn't find anything, sorry I might have missed your thread, thanks for referencing!

Share this post


Link to post
Share on other sites

But as foundations go, READ! Whatever you can get your hands on, immerse yourself into the world and you'll quickly out-qualify those surrounding you.

Excellent advice. Most people just do their assigned tasks and stagnate. If you take a few hours a day to read and experiment with things, then you'll rise quickly.

Read everything that interests you and then apply what you've learned to pet projects. Doing is the next step that makes all the reading pay off.

As far as coursework, the Udacity material seems good. MIT has all their undergraduate course material online for free too. Otherwise, just pick something that you want to learn how to do and Google it. Everything you need is out there.

Share this post


Link to post
Share on other sites

I went back through a couple pages and couldn't find anything, sorry I might have missed your thread, thanks for referencing!

 

Oh no worries about that, nobody really cares about old posts anyway. Hope it helps, being able to programme is like being able to drive. :)

Share this post


Link to post
Share on other sites

What is weird is I will go on stretches of years without programming ANYTHING, then get interested again.  While I am rusty at it, it all comes back pretty easily.  I have not used BASIC in 10 years, until I read this thread:   Sure I messed it up a bit from memory, but I got the thing working in ~10 minutes.  Recently I got an arduino just to fiddle with.  Since it is very C like, it was easy to get into.  You know your basics, syntax might be a bit hazy, but just start writing.  See what you can do.

 

The arduino is nice because you get to see exactly where your code messed up in a lot of projects.  Just why did THAT LED light up?  No, I pressed THAT button, not this one.  Etc.

Share this post


Link to post
Share on other sites

Thanks for the suggestions!

 

So far i've talked with a bunch of old college friends about what to get into and while Scala does sound like it's headed in the right direction, it seems java is the big one to know and could be useful in the immediate future (1-2 years). Can always learn more later, right?!? 

 

I've picked up 3 books on amazon based on your guys' reccomendation: Headfirst's Java and Headfirst's OO Analysis + Design and Design Patterns: Elements of Reusable OO Software

 

I'll begin my programming journey this week! Pretty excited, now that my work life is going to be mostly boring i'll have something useful and new to do/learn.

 

Thanks for your help so far. I'll refer to Gash's old thread if I have questions in the future.

Share this post


Link to post
Share on other sites

Programming is about knowing the concepts, procedure and limitations. Once you clearly understand what you want your program to achieve and the steps involved, all that is left is to simply lookup the particular syntax and structuring of the language you wish to use. Unless you are seriously into performance computing (ie. making a database return results as efficiently as possible) you probably won't notice any difference between the languages aside from how complex the structuring may be.
 
You already have experience in Java, so I would start with this quick refresher to brush up on the basics again, then CodingBat for quick exercises. If you want more challenging stuff, go nuts on Project Euler. Tools, I only use Eclipse for complex stuff, everything else I prefer Notepad++ simply because I don't need to press as many buttons. I would only consider books as reference guides in case I need to know the particulars for a specific language, and even then they tend to end up gathering dust on the top shelf.
 
After brushing up on your Java and programming basics, you can start messing with other languages like PHP (Never's dream child) or Python for web development if you want to, otherwise it wouldn't hurt at all to learn more languages. With your interest in systems management, you can also go for SQL if you want to take the database route. Learning Bash always helps since that would also let you do stuff on Unix (GNU/Linux) and OS X if you need to. I honestly don't know anything about the programming industry at the moment, I'm more of the hardware/network admin guy making sure server and firewall boxes don't drop dead in the middle of the night. Also crawling around tight spaces with a flashlight and replacement patch cables.
 
Ultimately the key to being proficient at any language is to play with it as much as possible. My personal standard for proficiency is to be able to write code and know exactly what it will do without testing or compiling it, pretty useful for planning stuff when you only have pen and paper.
 
 
 
 
Did I mention books aren't that useful?
 
book.jpg

Share this post


Link to post
Share on other sites

I learned programming as a 14 year old that pirated a copy of Borland Turbo Pascal 5 on 2 floppies and read everything I could get my hands on: books, magazines (90s magazines actually had programming articles), etc.

 

I would say that you should figure out something that interests you and make a clone, for me at that age it was games and graphics so I cut my teeth by writing a pacman clone.

 

Avoid as a first language: PHP, C++, C#, Java, Javascript, anything too commercial. Those are generally craptacular designs that tacked stuff on top of stuff and have little coherence and will make you more confused that you should be.

 

Recommended as first languages: C (everyone should learn C), Perl, D, Python, Ruby. Those are generally well designed languages where stuff is in the place you would expect to find it when you look. Perl is somewhat out of fashion but IMHO it is still the pinnacle of computer language design applied to practical problems. You can do so much weird stuff in Perl that it opens your mind simply by letting you know those things are possible.

 

At this point the last of your worries should be commecial applications and how good your resumé will look. Languages are all very much alike, if garbage collected scripting languagues are medium tanks, once you learn one getting used to the other is mostly a matter of figuring out which keywords to use instead, and their kinks.

Share this post


Link to post
Share on other sites

If you are not headed to web dev, a lot of shops these days use some combination of .net (C# or *gasp* VB) and SQL...

 

Application programming generally cycles between client-server and distributed about every 10 years or so. Right now, we're in a distributed cycle and everyone using C#.net is calling services to the back end (SQL).

 

I transitioned from a coder to a SQL developer over the last couple years. There is a still a lot of SQL stuff I don't know very well, and I have worked for the same company for about 10 years, so I don't know what else is out there anymore...

Share this post


Link to post
Share on other sites

Programming would be something quite valuable for you. I went to school for Computer Programming degree and was actually hired mid-way through my freshman year as a jr. programmer. Now I am a sr. programmer and a senior in school. 

 

Per your questions:

What should I focus on learning? (languages, front end/backend, popular jobs in which fields?)

Focus on a commonly used language and build up your knowlage of that one language. Once you master the ins/outs of that language, learning other languages comes easy. Learning the other languages will become job specific. Furthermore, I recomend learning the keep your code clean, precise, and well documented. You WILL benefit in the long run.

 

Where can I find this sort of information? (are sites like www.freecodemap.com or a paid teaching site decent? / should I resort to books?)

Home in on that ONE language and find many different sources (websites, books) on it and also learning from other peoples mistakes and issues helps a lot. (Stackoverflow is a great place)

 

What sort of tools will I need? A server and a website? (money shouldn't be too much of an issue to acquire if need be)

Most tools will be free. Again find your language and then find your best IDE for that language (EXAMPLE: Java-I use Eclipse)

 

What do you personally recommend?

Personally I recommend a C language. They are common and there are many recources available. Through school they taught me on C++, through work I learned on Java/Pascal/C#.

Share this post


Link to post
Share on other sites

In my experience reading books provides some foundation, but is in general quite inefficient way of learning past the very basics.

Come up with some kind of idea, some kind of application you would like to create (try to find a balance between something so simple you don't need any additional learning in order to implement it and something so complicated you have no idea where to start) and then start working on it. Hands-on learning is the most efficient way. While I spent 6 years in the university studying programming (Master's Degree in Computer Science), almost everything I've learned was learned either in hobby projects or in actual job. Uni is a great to learn abstract stuff, like math, concepts of modelling, etc., but real-world development can only be learned by actually programming stuff.

And don't worry if the idea you came up with was already implemented with someone else. You don't need to create an unique app in order to learn.

 

And while I might be somewhat partial here, C++ is a great tool for learning. Certainly not the simplest, but it has both low entry level (it is not that difficult to start working with it, as you are mostly using C, but skipping some of the more complicated memory management) and almost unlimited possibilities for improving – after 3 years of professional development I thought I finally mastered it, then changed job and found out that I was barely scratching the surface of what is possible.

As a bonus you actually get some understanding of inner workings of pointers and memory allocation, instead of simply trusting the garbage collector to do the job.

Share this post


Link to post
Share on other sites

So, I've recently hit my ceiling at my current job as a network technician. I've cemented my role after 14 months with very very little hope for learning anything new due to other co-workers handling other aspects of the networking world and thinking only about job security so not wanting to teach anyone else what they do. Understandable? Sure. Annoying as fuck? You betcha.

 

Are there plenty of things I could learn networking-wise? Absolutely. But networking was not my degree and I don't plan to only work in networking for the rest of my life. I was a Management Information Systems major in college and plan to get into some programming project management at some point. In order to do so, I need more of a programming background. I took 4 programming classes in college, 3 java and 1 perl. I know the very basics, and nothing more. TBH I probably couldn't remember half the basics if I tried at this point so might as well start over fresh (it's been 4 years).

 

I work the typical 8-5, but also have to work a lot of overtime (200 hours in the past 14 months). While this may seem bad, I do get paid hourly (non-exempt salaried if being PC) and my 8-5 work is pretty chill and at times boring. I probably have 2-3 hours each day in this 8-5 where I could be doing something productive instead of waiting for quality posts on Wotlabs or decent ESPN articles that aren't about what kind of cereal Lebron James had for breakfast. So I bring myself here to ask resident programmers and developers alike the questions I hope to get good answers to:

 

What should I focus on learning? (languages, front end/backend, popular jobs in which fields?)

Where can I find this sort of information? (are sites like www.freecodemap.com or a paid teaching site decent? / should I resort to books?)

What sort of tools will I need? A server and a website? (money shouldn't be too much of an issue to acquire if need be)

What do you personally recommend?

 

Now I'm going to write down that I don't know what I should be looking into specifically. Are web developers a good market to get into, or perhaps just focus on a specific language? If I had to focus on a language I'd prefer it be java as I have familiarity with it, but you might recommend something different based on industry trends, and that's fine too.

 

Any feedback would be great. Thanks.

 

There are a couple of things I could recommend, given your current role as a network technician.

 

1. C/C++ - Heavily used in high speed network applications. Universally used in low level drivers, OS kernels, networking etc. Downside: Tough to learn, but if you master it, most other languages are easy

2. DevOps - This is a big and growing area of software development that aims to automate the channel from development to production. Take a look at scripting languages such as Chef and Puppet. Not really programming, per se, but could be really lucrative on your resume.

 

Here's a pointer to an online IDE/compiler site I posted in that original thread Gash referenced. It has support for virtually any language you'd likely want to learn.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.