Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Ask Slashdot: How Does an IT Generalist Get Back Into Programming?

Soulskill posted about 2 years ago | from the one-leg-at-time dept.

Programming 224

CanadianSchism writes "I've been in the public sector for the past 6 years. I started off doing my work study in web design and a bit of support, eventually going through the interview process to fill in a data processing technician post, and getting the job. The first four years of my work life were spent in various schools, fixing computers, implementing new hardware, rolling out updates/ghosting labs, troubleshooting basic network and printer problems, etc. I was eventually asked to work on the administrative information systems with an analyst, which I've been doing for the past 2 years. That's consisted of program support, installing updates to the pay/financial/purchasing/tax/energy systems, taking backups on SQL servers, etc. I've never had the opportunity to take time for myself, and jump back into my first love: programming. I've picked up Powershell books (have two here at the office), but haven't gotten anything down yet, as there are always other projects that come up and whittle my attention to learning a language down to zilch. This new year will see a change in that, however. I'll be setting aside an hour every day to devote to learning a new language, in the eventual hope that I can leave this company (take a sabbatical) and hop into the private sector for a few years. My question to you all is, what language should I start with, to learn and get back into the principles of programming, that will help me build a personal portfolio, but will also lend to learning other languages? At this point, I'm not sure if I'd like to make/maintain custom applications, or if back-end web programming would be more interesting, or any of the other niches out there."

cancel ×

224 comments

Sorry! There are no comments related to the filter you selected.

set goals (1)

O('_')O_Bush (1162487) | about 2 years ago | (#42330025)

You won't be dong it for a living anytime soon, but you could at least do something fun and personal. Try writing a game or app for Android. You can cover a lot of ground in an environment that is easy to use like that.

Re:set goals (0)

Synerg1y (2169962) | about 2 years ago | (#42330613)

why not do it for a living? who do you think beginner programming jobs are for?

Dunno if I'd start in mobile development, especially something as fragmented as android (Sorry android 3), mobile development without understanding usability and other UI concepts is an utter waste of time. Most people don't start off their programming careers by writing games, eh nvm... I'm not talking to anything resembling a dev here (both OPs).

Re:set goals (2)

CastrTroy (595695) | about 2 years ago | (#42330787)

Please see this article [codinghorror.com] . Bad programmers actually create more work for the good programmers than they end up doing. If you want to be a programmer, fine. But it's not something I recommend you jump into with minimal training. There's almost no such thing as a "beginner" programmer job. Most good programmers have been programming for years (often a decade) at home or on their own before they start doing it for a living.

Re:set goals (1)

Synerg1y (2169962) | about 2 years ago | (#42331269)

Right... but ideally a beginner programmer wouldn't be doing mid/sr. programmer work, it's more like add a textbox here & write this report here, not build this module or create this ETL process. Everybody's gotta start somewhere, but again I must stress, that approach isn't for most people.

Re:set goals (1)

Synerg1y (2169962) | about 2 years ago | (#42331319)

Oh, and it's probably important to state your case beforehand somewhere between getting a job offer and getting hired that you're a true beginner, consider that the "beginner" leaving before you has probably learned their stuff and is moving on since nobody ever promotes inside IT, so that they don't expect you as a "beginner" programmer to fully dive in MVC or something. I've seen things more retarded in my career, and people either get canned or run out screaming.

Re:set goals (2)

Chrono11901 (901948) | about 2 years ago | (#42331327)

Jr level positions are for people with little to no experience... to do small tasks with oversite of a Sr. Developer.

Re:set goals (2)

somersault (912633) | about 2 years ago | (#42331399)

Most people don't start off their programming careers by writing games, eh nvm

What would you say most developers start out learning?

I have to admit that no matter what problem you're solving in programming, it can be as much of a rush as making a game, but I still think it's a good way to capture the imagination of a new programmer. It's good if your program is fun to test as well as to code. Even if it's just a basic text quiz type game, it's good to have such immediate feedback on what you're programming.

My first programming book was learning how to make games in Amos BASIC on my Amiga (I was 11 or 12). My next was a book on C at 15, again I was doing this on my Amiga. Then I started messing around with Quake 3 mods in C++, then bots (AI kind, not hacking kind) for Counter-Strike. That was the most fun/rewarding project I've done because of the community aspect. People appreciated my work in an obvious way, and of course I loved "testing" my code too :p

Once I started working on business applications I realised that I find the programming part even more interesting than the gaming part as long as it's challenging enough to be interesting, but I'm sure a lot of good developers have started off their programming careers by writing simple games. Since the earliest mainframes, we've had computer games.

Re:set goals (1)

Nutria (679911) | about 2 years ago | (#42331219)

Or he could use PowerShell to automate routine drudge tasks.

Python (4, Insightful)

HaZardman27 (1521119) | about 2 years ago | (#42330031)

It's easy, it's fun, and it's versatile. It would be useful to all of the field you mentioned and would also be useful for scripting if you do end up going back to IT.

Re:Python (-1)

Anonymous Coward | about 2 years ago | (#42330641)

Python has whitespace issues, I disagree one should learn that first. Until Python can mature and use curly braces ({,}) or even Pascal/Ada style Begin and End for block indications rather than whitespace indentation, I cannot recommend Python. That, and most (O'Reilly published) Python books are littered with footnotes and Monte Python references throughout--hard to take the language seriously if one is not a Monte Python fan and the footnotes are seriously distracting to learning.

Instead, learn the basics of C, jump into C++, while at the same time learning C#, is what I recommend.

This is what I am doing--I already know the basics of C, I am getting into C++ beyond using it as "a better C", and at the same time I am also getting into C#. The most challenging part may be thinking in Object Oriented programming--it's like someone's dyslexia became mainstream so one has to think of the object first and then the operation (e.g., door.open) rather than the more straightforward procedure oriented thinking of applying the operation to something (e.g., open_door). To me, it's not natural--I don't find objects and then think of their operations, I think of the procedure I want to do and the operations I want to do on items in stepwise sequential order: use_hammer_to_pound_nail rather than hammer.pound.nail, though both achieve the same thing the latter requires me to find the hammer object, then think of all the operations a hammer can do, then apply it to yet another object--while the first just does what I want to do.

Progress may be slow, but going the C then C++/C# route seems to be more marketable than niche languages like Ruby, Python, or even perl.

Niche languages? (1, Informative)

Grashnak (1003791) | about 2 years ago | (#42330793)

Progress may be slow, but going the C then C++/C# route seems to be more marketable than niche languages like Ruby, Python, or even perl.

1995 called. Your C books are in.

You might want to look up the definition of niche, cause I don't think it means what you think it means.

Re:Niche languages? (2)

ranton (36917) | about 2 years ago | (#42331105)

You might want to look up the definition of niche, cause I don't think it means what you think it means.

I am pretty sure he is correct in using 'niche' as a way of describing a small segment of the programming market.

Languages such as Java, C/C++, C#, PHP, and Visual Basic are FAR FAR FAR more commonly used than Ruby or Python. Those two are niche languages by almost anyone's definition.

If the marketability of your skillsets is your primary concern, learning languages like PHP, Java, Javascript, or C# is clearly the best way to go. I sure wouldn't want a language like Ruby or Python to be the only one I am proficient with.

Re:Niche languages? (1)

Grashnak (1003791) | about 2 years ago | (#42331369)

I think that if a language is being used to power sites like Reddit, Quora, Pintrest, Instagram, Disqus, Mozilla, and various bits of Google, it's disingenuous to call it "niche" and suggest learning C.

http://www.quora.com/Django/What-is-the-highest-traffic-website-built-on-top-of-Django [quora.com]

Re:Python (1)

HaZardman27 (1521119) | about 2 years ago | (#42330907)

Uhh... C# is more of a "niche" language than Python, and maybe even Ruby. Microsoft has all but killed C# on the desktop, which means its pretty much only useful as a server-side language, and is even more limited by the fact that you have to use a Windows server (unless you want to try running Mono).

C is a great language, but not nearly as friendly as Python. And Python doesn't have "whitespace issues" unless you're a moron or use a terrible editor. Lack of curly braces doesn't make a language immature. There's just so much wrong with your comment; it's no wonder you posted anonymously.

simple (1)

Anonymous Coward | about 2 years ago | (#42330045)

By programming.

Re:simple (4, Informative)

19thNervousBreakdown (768619) | about 2 years ago | (#42330409)

Yep. Ain't no other way. Write stuff.

Even better, write stuff that's hard. Read stuff. Read really complicated stuff, and try to make it do other stuff. Nothing will teach you good programming practices like knowing why you follow them, and nothing will tell you why like seeing the hell that comes of not following them, which any large project is almost guaranteed to contain plenty of examples of. From misnamed or misused variable/functions, to multiple (and therefore slowly diverging) implementations of the same logic, to spending weeks reinventing something already solved in your programming language's standard library because they didn't like the order of arguments on a function, to bringing in a massive overcomplicated framework to solve a simple problem due to a too-strong avoidance of NIH (not that you shouldn't beware of NIH, you just shouldn't let it lead you into trying to pound a space shuttle into a square hole), you'll see it all.

Fix some bugs for a large FOSS project. Pick things that are just slightly over your head, and then pretend someone's breathing down your neck to get it done yesterday. Pick a project where you don't just get to commit changes, find something where your code is reviewed before it's accepted. You'll find a lot of honesty in people that aren't getting paid and don't give a shit about alienating you, and if you can handle a bruised ego you'll learn a lot.

One thing I wouldn't suggest doing is writing code for other people on your own, not right away. It's not that you shouldn't do that eventually, just don't do it when you care more about accomplishing your goal than you do about learning until you've got some good habits firmly established. Otherwise, your bad habits will just become reinforced, since they're usually easier especially when you're only looking at your own code, and to to be honest, you probably don't know the difference between a good habit and a bad habit until you've worked on a large project with a lot of people.

The best thing about working on FOSS projects is, you'll actually be able to demonstrate work to future employers. That goes a long way in an interview or on a resume.

learn Ruby (0)

Anonymous Coward | about 2 years ago | (#42330049)

great language, great ecosystem, easy to start

Re:learn Ruby (-1)

Anonymous Coward | about 2 years ago | (#42330087)

And lots of gays to meet up with at the glory hole.

For me, I do a hell of a lot of FOSS code (5, Interesting)

ios and web coder (2552484) | about 2 years ago | (#42330059)

I do it for free; usually for NPOs that can't afford programmers. Helps me to learn.

I don't particularly care whether or not it ever becomes "famous" (it won't because it addresses a very small, select audience). I just care whether or not it is the best quality I can do.

The nice thing, is that there is minimal pressure, which is good, as my "day job" gets first dibs on my time.

I don't watch TV. I don't hunt. I don't tweak cars, and I don't like to spend much time tending a server.

I just like to code. I also make sure that I don't write stuff that competes with my "day job." I like my company, and they could easily make my life miserable if I did. I also don't spend much of my "day job's" time on my personal stuff. I don't mind spending a bit of it, though, as they DEFINITELY benefit from my extracurricular work.

That works for me.

Re:For me, I do a hell of a lot of FOSS code (1)

gewalker (57809) | about 2 years ago | (#42330341)

If you are involved in your church or some other NPO that reflects something you actually care about - you will find it much more motivational for "free" programming than something you don't care about. If you don't care about the NPO, it will not be motivational. If working for "free" is not motiviational, you can try something like freelancer.com or rent-acoder.com -- you won't make much money, but it is easy to find work and your commitment to deliver something is more motivational than no commitment at all. You could also call some local business with crummy websites and offer them to write something better for low-money until you get your chops. These business can also be references and contacts to find a real job. Mostly, you need to do some coding. I have over 30 years experience as a programmer, I am not hiring you unless you without some experience unless you are fresh out of school -- in which case I will interview you very carefully to determine if you have strong potential as a developer.

Re:For me, I do a hell of a lot of FOSS code (-1)

Anonymous Coward | about 2 years ago | (#42330603)

your user name indicates that you are indeed a faggot by day, guessing the same is true by night

Python (5, Interesting)

cinghiale (2269602) | about 2 years ago | (#42330071)

http://xkcd.com/353/ [xkcd.com] Results may vary but yes it is that simple and powerful.

Re:Python (0)

SirGarlon (845873) | about 2 years ago | (#42330741)

Seconded. After I wrote my first Python program, I don't think I will ever type #!/usr/local/bin/perl again. I threw out my Perl Cookbook.

Re:Python (1)

Anonymous Coward | about 2 years ago | (#42330879)

I second Python: just type in the pseudocode you'd write on a piece of paper, and there is a good chance that it will work just like that in Python.

2D gaming using SDL [wikipedia.org] (and OpenGL 3D, but you have to do the hard work yourself): Pygame [pygame.org]
3D drawing/animation/gaming: Blender 3D [blender.org]
(I started by gaming, because that's a fun way to learn a language quickly)

Web: Django [djangoproject.com]
Co-routines: Stackless Python [stackless.com]
Maths: NumPy [numpy.org] and SciPy
Networking: Twisted [twistedmatrix.com]

That just scratches the outside of it, but have a look at the above to get an idea of the language.

And Python's documentation is quite good: brief, but everything you need is there - you just need less than you would expect at first. Here are some good tutorials:

Official Python Tutorial [python.org]
Dive into Python [diveintopython.net]
How to think like a computer scientist? [greenteapress.com]

Hmmm, looks like I've turned into a Python fanboi... Be careful if you try Python, you could fall for it.

Re:Python (1)

HaZardman27 (1521119) | about 2 years ago | (#42330929)

Don't forget Pylons [pylonsproject.org] . It's a pretty good web framework that has a different approach than Django.

Re:Python (0)

Anonymous Coward | about 2 years ago | (#42331303)

Thirded. C teaches you everything you need to know about how programs work, and python makes it a cinch to write them.

Make a Project (2)

bill_mcgonigle (4333) | about 2 years ago | (#42330103)

Pick something you love, or an itch you're dying to scratch. If it's a passion you'll stick with it.

Then pick a language that fits the niche that you're working in. If you're gluing unix bits together that's one thing, if you're going to be pushing out a big web app, that's another, and if you're making meatspace things go "Bing" then that's a third.

As you said, an hour a day is a great way to get yourself to be serious about it.

Re:Make a Project (0)

Anonymous Coward | about 2 years ago | (#42331277)

I have a herpeitic sore on my penis from having unprotected sex with a prostitute. Does that count as an itch to scratch?

Join a small open-source project (0)

Anonymous Coward | about 2 years ago | (#42330149)

Knowing the language is less important than interest in the project, features or bug fixes (depending on what YOU like).
Take about a year of time, then you'll be more fluent and safe, and then try to get into a programming job. Having a broad understanding and background also is more important than listing 200 programming languages you can code in.

Advice: Programming for money is not as much fun as a hobby. IT has far more diversity "to keep you going".

Python... (3, Insightful)

MarcoPon (689115) | about 2 years ago | (#42330163)

Take a look at this Google Python Class video: it will get you immediately up & running: http://www.youtube.com/watch?v=tKTZoB2Vjuk [youtube.com]

Re:Python... (1)

Anonymous Coward | about 2 years ago | (#42330477)

Cannot see how anyone could love Python. (It is drab and boring and far too pedantic.)

I would go for Perl / Ocaml / Go / Lisp something fun to write.

Re:Python... (3, Insightful)

ios and web coder (2552484) | about 2 years ago | (#42330589)

I guess you never used Pascal, eh?

Over the years, I've programmed Pascal, FORTRAN, BASIC, PL/I, C, C++, Ruby, Python, Machine Code, ASM, PHP, JavaScript, HTML, XSLT, etc.

My longest-term language was C++ (over 20 years), but I now mostly do PHP (Server-side) and JavaScript and Objective-C (client-side).

ObjC was weird to learn (not as weird as XSLT, though), after C++, but I've got the hang of it.

Language (to me) is almost irrelevant. I can learn a new language to a useful level in a couple of weeks.

However, what takes the time, is the framework/SDK/API. That can take years to master.

Scripting languages (like PHP and Python) rely on enormous libraries. These can take a long time to learn, and learn well. They also tend to be moving targets.

Stay in the IT Discipline....go DevOps (5, Interesting)

Midnight_Falcon (2432802) | about 2 years ago | (#42330187)

My opinion here is you've developed skills in IT, but now you're looking to do a bit of a "paradigm shift" and go into Development. However, there's big money these days for Sysadmins who can code well, e.g. python, powershell, ruby, and use it it some type of framework like Puppet or CFEngine etc.

You can become a rockstar DevOps Sysadmin if you get this down

I'd suggest Ruby first, then Python...but of course, you'll want to make sure your Linux/unix sysadmin knowledge is top notch too. I'm self taught so I'm not very good at telling people how to learn it besides "eh figure it out", but I'm sure you are industrious enough :)

In conclusion: Stick with IT. Also add Programming. Collect $$ for being a DevOps specialist.

Re:Stay in the IT Discipline....go DevOps (1)

zacherynuk (2782105) | about 2 years ago | (#42330505)

I agree with this. The chasm between the ops and the dev is rarely bridged and understanding both sides of the fence, as well as being competent is a rare skill indeed.

With this in mind, perhaps develop your skills by scriptifying and automating the environment you currently support; find a niche you like and expand upon that. If you can include sanity testing and expandability into a personal set of tools which frees up enough of your own time to focus on programming; then all the best!

Although I love programming, especially automation (Nothing is as satisfying as watching a remote shell enliven dozens of servers, users, printers and PC's on different continent (sometimes even offshore) - 100's of hours of planning whizzing past in grey and black. then: 'Done!' - lovely) - I have to hand it off to other people now as it gives me sleepless nights, weird dreams and days and days of insomnia until the 'Done!' moment. It was worse when I did graphics and AI at Uni - it's like a (bad) drug to me.

Re:Stay in the IT Discipline....go DevOps (1)

CanadianSchism (2794651) | about 2 years ago | (#42330649)

I have done .NET programming, but that was back in College. I was also deep in SQL and ASP dev for a little while, but then I turned to the hardware side, and have now become an "admin systems technician"... Which is basically glorified help desk. Thanks for the answer, it seems to be in accord with a few people on here, though I'm guessing a lot of it boils down to personal interest...

Re:Stay in the IT Discipline....go DevOps (1)

Anonymous Coward | about 2 years ago | (#42330851)

I agree too.

Use your existing IT skills, learn Ruby and Chef and try to automate some of the tasks that you already do. There is a tremendous market out there for IT automation programmers and you'll be able to find something. Once you have some experience with Ruby and Chef (I recommend Chef, instead of Puppet mainly because it uses more real Ruby) you'll be able to branch out to iOS app development or Ruby on Rails if you want something different.

Depends on what you want to do (1)

Anonymous Coward | about 2 years ago | (#42330241)

It all depends one what "type" of applications you want to code for which operating systems and platforms and where you want to go career wise.

First you might want to install Postgres, MySQL, the free development version or Oracle, etc and really learn SQL and database concepts well because almost any language or tool you learn today will be accessing a database most, if not all of the time.

Second, figure out what kind of app coding you want to do.

If you want to do internet websites, maybe look at Ruby/Rails or Java with Spring Roo or one of the other frameworks.

If you are looking more for a corporate job working with business logic and back end stuff running on Unix/Linux or other servers then maybe explore Java and the Enterprise Java Beans framework, JMS, Java Mail, etc. If you really want a challenge, look at C++

If you want to do mobile phone/table apps, look into installing and downloading Xcode on a Mac and doing some iOS Apps using Cocoa/Objective C. Or do Android if that's what you prefer.

If you want to do more Windows/SQL Server GUI work and code Windows apps, then maybe look at Visual Studio and C#.

Learn JavaScript (1)

Anonymous Coward | about 2 years ago | (#42330255)

Jump right into programming with a text editor and browser with JavaScript. No compile time, simple to write basic stuff.

Later as you start to get it, research the proper ways to do thing. Don't start worrying about 'proper' form initially unless u wanna go back to college. Just hack stuff for entertainment with only an hour a day you could do some stuff.

Also check out jQuery. Powerful and effective JavaScript library.

JavaScript is everywhere these days it's good to know and based on the sheer demand for it (even entry level) you may be able to work your way toward some UX gigs. If sys admin stuff is more your thing, get some js chops and try node.js

Oppiset, if you have a tolerance for learning curves and a Mac, objective-c and that whole ecosystem is worth a look.

Adderall (1)

Anonymous Coward | about 2 years ago | (#42330257)

Adderall and codeacademy.com.

Ask Slashbot: (1)

Anonymous Coward | about 2 years ago | (#42330285)

How does an IT Programmer become a General?

hour-a-day doesn't work (1)

bbulkow (954499) | about 2 years ago | (#42330289)

Although you know yourself, I've found that attempting to program for an hour a day doesn't work. There's a reason programmers - even marginally competent ones - are paid well above $100/hour on contract. Learning to program is hard. You need to dedicate chunks of time to programming, like 5 or 6 hours in one go, in a week. It's also hard to remember what you're doing if there are 6 days between your programming days. If this is all the time you have, don't curse yourself if you don't get to proficiency. You wouldn't expect to learn being an engine repair mechanic in one hour a day, because most interesting repair tasks take a few hours. This is the nature of the thing, not your fault. I'll give you an example. I was trying to place irregular stones in a path, and I had all the sizes of the stones, and I wanted to find the optimal placement. I did it by eye but didn't think the result was optimal, but couldn't find a better solution. I stopped my gardening task and wrote a program. I hadn't programmed in python for a year, so I had to dust off my knowledge, then wrote the program a couple of different ways, and used a method of config files I hadn't used before. The task took about 3 hours by the time I was done, and I found that my initial eyeball solution was optimal (but now I knew) - and I'm a lifetime programmer of just about every language. Instead, set your goals lower - expect to write a few nice scripts for your own fun. _make it fun_. Consider automating tasks you would do in your everyday work, and write the automation on the weekend - like if you're taking backups, what does an rsync script look like that emails you when it's done, or does more copies in parallel, or whatever you can think of?

Re:hour-a-day doesn't work (1)

Synerg1y (2169962) | about 2 years ago | (#42330443)

Rofl, a tape measure might've helped too, but everybody has their thing :)

But ya, I remember folks in college wanting to become programmers and just not being able to adapt their style of thinking to it. I'm curious as to what makes a programmer a programmer, book smarts have a lot to do with it, but there's plenty of people out there that have failed at coding and succeeded at something else. Critical thinking is a part of it too, but it's almost like you have to tailor your thoughts a certain way to understand it and not everybody is capable, kind of like learning foreign languages almost.

Re:hour-a-day doesn't work (1)

Dcnjoe60 (682885) | about 2 years ago | (#42330909)

There's a reason programmers - even marginally competent ones - are paid well above $100/hour on contract.

I thought the reason was that they are individual contractors, not employees, so that they are responsible not only for income taxes, but self-employment tax, their own health insurance, their own retirement and any other "benefits." But then, I could be wrong. I'd also question that above $100/hour figure, at least in the midwest portion of the US. $60/hour seems more like it (which is nothing to scoff at, but after withholding all of the things mentioned above, it isn't a lucrative as it sounds).

In business? (1)

Anonymous Coward | about 2 years ago | (#42330303)

C#

If you are good with LINQ and Entity Framework and AppFabric, then you'll be quite useful. And if you want to get some specialty that isn't too common and in good demand, pick up learning BizTalk.

Programming Made Easy! (1)

Anonymous Coward | about 2 years ago | (#42330309)

Smash your thumb, and translate what comes out of your mouth into PERL.

FPGAs (1)

TeknoHog (164938) | about 2 years ago | (#42330313)

1. Get an FPGA devkit
2. Learn Verilog [fpga4fun.com]
3. Live on the bleeding edge between hardware and software. Dream of being a hardware guy that dreams of being a butterfly in the software world, and vice versa.
4.
5. Get chicks
6. Profit!

Re:FPGAs (3, Funny)

loufoque (1400831) | about 2 years ago | (#42330663)

Hardware guys are indeed the most likely ones to get chicks in the IT world.
Must be all that silicon.

Re:FPGAs (1)

Anonymous Coward | about 2 years ago | (#42330781)

While I love FPGA's, I would seriously not recommend them for any general programmer.

Programming/Designing them is a halfway point between electrical and software engineering. Or more to the point, they have the problems inherent to both, especially with high performance designs.

That said, you can get full fpga boards these days for very affordable prices. And there's starting to be a lot of various "IP" available under different open licenses.

www.opencores.org possibly hosting some of the more interesting selection.

What do you care about? (1)

DoofusOfDeath (636671) | about 2 years ago | (#42330319)

I find it hard to learn dense material (specific kinds of math, etc.) unless I care about the problem that needs to be solved.

So how about trying to find (or start) some project which develops an app you'd like to use?

HTML/CSS/PHP (2)

Danzigism (881294) | about 2 years ago | (#42330333)

I was in a similar situation a few years ago. After working various IT positions for the past 15 years, it wasn't till about 4 years ago I decided to get involved with web development. I picked up a book from O'Reilly called "Head First in to PHP and MYSQL" which taught me an incredible amount of web fundamentals and seemed to have been geared towards people that already have a background in technology. Without meaning to give them a free plug, I really appreciate the "Head First" series of books that O'Reilly publishes. They are definitely fun and exciting. Not just for PHP and MySQL, but tons of other languages like Python, C#, Java, and more. I thought I was a lost cause when it comes to programming thanks to only having minor experience in HTML and QBASIC hehe. Needless to say, it definitely got me interested in programming again. Worked for me. Might work for you too.

Just do it... (2)

erp_consultant (2614861) | about 2 years ago | (#42330335)

Sounds simple but that's really all there is to it. Pick a language with a good support community and dive in. Python is a good choice because of it's versatility and support. Perl is still around and is a great scripting language. The important thing is pick something and stick to it. I've seen so many people with bookshelves full of programming books and they never got to the end of any of them. Professional dabblers. It's better to pick one or two languages and really know them well than to dabble in lots of them without any real expertise. Once you do that then picking up new languages will be easier because the core concepts will be familiar to you.

I used to work in the public sector so I'll share something with you. There is a stigma attached to being a public sector employee. I've been told this by more than one recruiter. It's a great training ground but at some point you have to make up your mind whether you want to stay there your whole career or venture into the private sector. The longer you stay the harder it will be to get out. Some recruiters will look at someone with 10-15 years of public sector experience and be reluctant to hire you for a private sector job. I met some smart people in public sector but I also met more than my share of lazy pricks. You sound like one of the former so just make the right choice for you. Good luck :-)

Nike said it best (0)

Anonymous Coward | about 2 years ago | (#42330339)

Just do it.

PHP (1)

pak9rabid (1011935) | about 2 years ago | (#42330343)

PHP. Classic procedural programming, object-oriented programming, & (as of PHP 5.3) functional programming...it's got it all. In addition, the syntax is very C-like, so making the transition to other popular languages such as C/C++, Java, C#, and Javascript isn't too difficult. Also, the documentation for PHP is very good (http://php.net/docs.php).

programming (2)

Spazmania (174582) | about 2 years ago | (#42330351)

The current learning language for Computer Science is Java. It used to be Pascal. Switched to Java because of the importance of object oriented programming.

The language of choice for Linux/Unix system administration is Perl. Windows admins don't generally code though one of the dot-net's would likely be the choice if they did.

Pick one. Then buy a book and work through writing and running the example code. Then come up with an idea for a simple program you want to write. Then write it, referencing your books and Google search.

Re:programming (1)

tsm_sf (545316) | about 2 years ago | (#42330407)

Windows admins don't generally code though one of the dot-net's would likely be the choice if they did.

I think VB has moved out of the red-headed stepchild category at this point.

Re:programming (1)

Atzanteol (99067) | about 2 years ago | (#42330541)

PowerShell is what a Windows IT admin would be using these days.

I would recommend Java or C# for the questioner. Both are easy to find work in.

Re:programming (1)

ImprovOmega (744717) | about 2 years ago | (#42331261)

C# has the added benefit (for a Windows Admin) of being able to easily import and manipulate COM+ objects. Basically if it can be automated in Windows there's a COM+ API for it somewhere. Excel sheets, databases, you name it. Plus if you need .NET or actual Win32 API (*shudder*) you can hack that in too. Double plus added bonus: C# is syntactically similar to Java so if you need to go all platform independent on something a lot of the concepts will transfer nicely.

Start with the classics! (1)

gregthebunny (1502041) | about 2 years ago | (#42330353)

C and/or C++ will get you further than any other "modern" language.

Join an open source project that strikes your fancy, or find a niche and start your own.

Nah! (0)

Anonymous Coward | about 2 years ago | (#42330355)

You're too old, peepaw.

Programmers code every day (5, Insightful)

NewWorldDan (899800) | about 2 years ago | (#42330387)

It's been my experiance that good programmers always have a project in the works. It's almost a disease. I can't go 2 weeks without writing something. So if you've gone 6 years without writing anything, I've got to wonder if it's really your thing.

That said, the next question is where to start. Pick something with high demand where it's relatively easy to get your foot in the door. The biggest problem you'll encounter is that everyone wants 5 years of experiance. If you can work programming into your current job, great. That's how I switch from systems administration to programming. I'd recommend learning C# and MVC. The tools are excellent and there's huge demand for it right now. The HTML and Javascript side of it will translate over to anything else you want to do.

Re:Programmers code every day (1)

CanadianSchism (2794651) | about 2 years ago | (#42330629)

It's not that it isn't "my thing", for not having done it in 6 years... It's that the nature of the job that I've held hasn't lent much time to it, and I never really jumped into it during my off-time. That was spent gaming and playing the bagpipes. Just goes to show how priorities can change over the course of one's lifetime.

Re:Programmers code every day (1)

PRMan (959735) | about 2 years ago | (#42330857)

Again, what he's saying is that if you really love it, you would be doing it instead of asking on Slashdot how to do it.

The other day my wife needed to turn an image into a PDF file. Not finding something that did it for free in the past, I wrote it myself. Another time I wrote a utility that split PDF files. And another time one that joined them together. With a little help, I got my wife setup to manage PDFs without paying a dime. All with stuff I wrote for fun when needed. (I really should merge these three tools together into one tool.)

A programmer friend of mine came to my house once. He's an OK programmer, but not great. He said, "You have over 100 folders in your home source directory!" And, trying to be nice, I said, "Yeah, but I've been writing this stuff for over 20 years..." And he said, "Yeah, but that's an average 1 every 2 months!"

What can I say? I can't stop writing code. If I can't do something fast and for free, I usually just write it myself.

Re:Programmers code every day (5, Insightful)

LodCrappo (705968) | about 2 years ago | (#42330875)

It seems like you are missing the OP's point. Good programmers code all the time *regardless* of whether the nature of their job lends time to it. They *do* jump into it in their off-time.

The fact that you haven't is a strong indicator that programming is not for you.

Re:Programmers code every day (1)

Anonymous Coward | about 2 years ago | (#42331169)

and I never really jumped into it during my off-time. That was spent gaming and playing the bagpipes.

I think that might be part of the problem. As a developer, I know I work on things outside of work in my own free time. That includes learning new languages and frameworks to keep up with the industry's technologies.

Re:Programmers code every day (1)

Gertlex (722812) | about 2 years ago | (#42331321)

What others are saying matches what I think... (programmers do it for fun, and never stop coming up with programming ideas... even scripting for games)

What I think is missing from the discussion is what was the programming you were doing before IT took over your life? Did you ever really get going on a project?

I can totally see it being the case that you enjoyed the bits of programming you were taught, but never stumbled onto the right set of tools... Namely, if I see something I want to accomplish, I'm contemplate solving it with various capabilities I already know. If I know some of the tools needed, that's enough to get started. E.g. if I need something that talks to a serial port and monitors packets, while recording packet timing? I know the serial part, so I'll just jump into the project and figure out the timing part as I go.

I would recommend starting off with scripting (e.g. Python), to reacquaint yourself with the logic, and then add in one of the "real" languages in order to become familiar with the proper approaches to larger complex setups.

If gaming is a potential hook for your programming interest, I suggest using AutoHotkey to learn a bit of logic while making macros for tedious stuff...

Re:Programmers code every day (1)

loufoque (1400831) | about 2 years ago | (#42330683)

Of course programmers code every day, it's their job.

Re:Programmers code every day (4, Insightful)

PRMan (959735) | about 2 years ago | (#42330881)

What he's saying is that most great programmers would be programmers whether there was a paying job or not. If they were factory workers, they would be writing code on nights and weekends for fun.

I'm Confused (0)

Anonymous Coward | about 2 years ago | (#42330427)

I read the title of the submission and thought it was a programmer who took some time off and is trying to get back into development. The summary reads entirely differently making it appear that you have no professional development background. If the later is the case, then your real question is how do you break into the career. The only answer I have for that is the same as I would have for any college grad: show some interest in the subject with personal or school projects. Heck, in your position you might be able to develop applications at work assuming you don't have a centralized development bureaucracy.

The good news is that, at least in my neck of the woods, jobs in development are easy to find. Heck, I still get head hunters calling for positions even though I went to the dark side five years ago.

-- MyLongNickName

One does not "just"... (0)

Anonymous Coward | about 2 years ago | (#42330441)

You dont just "jump" into programming. Writing code is 15-20% of the job AT MOST, rest is analysing, design, applying patterns, team coordination, management etc. Get a uni degree or forget about this.

Umm but, er but (0)

Anonymous Coward | about 2 years ago | (#42330473)

Start by buying a red stapler for your desk. You'll be noticed by management and your new career path will start.

Go to school (1)

tsm_sf (545316) | about 2 years ago | (#42330479)

One of the big changes I've seen in the past few years is the gradual disappearance of "or related work experience" in job requirements. A lot of positions now require a BS.

There are still plenty of positions available without one, but if you're thinking about a career in development you should give this a lot of consideration.

Re:Go to school (2)

PRMan (959735) | about 2 years ago | (#42330899)

Go through a recruiter and just go to the interview anyway. I have a BA in another field of study and not Comp Sci and nobody cares. I know high school dropouts that have no trouble getting work because they are awesome coders with great recommendations.

Re:Go to school (0)

Anonymous Coward | about 2 years ago | (#42331179)

A maths, physics or engineering degree is probably as good or better than comp sci provided you can do good code.

Re:Go to school (0)

Anonymous Coward | about 2 years ago | (#42331119)

At least around here, the labor laws are such that you generally can't be an exempt (salaried) employee without a college degree unless you're a manager. The software industry generally demands long hours of unpaid overtime on a schedule between "constantly" and "a few times a year" which just couldn't legally happen with a non-degreed workforce.

My 2 cents. (1)

TsuruchiBrian (2731979) | about 2 years ago | (#42330489)

OOP: C++ or java or both. scripting: python or perl or javascript. This will no doubt change in the future, but I believe those are the best languages to know. Also I would focus on the open source alternatives (gcc, make, eclipse, linux, apache, mysql, etc) as it is cheaper to learn and eventually use. Once you know them it is not hard to transition to Microsoft stuff although you may not want to. Also, if you are going to learn C++ (which I highly recommend as it gives you a good understanding of a lot of insight into the inner workings of computing in general), I would probably learn some kind of platform independent SDK like QT.

Re:My 2 cents. (0)

Anonymous Coward | about 2 years ago | (#42330691)

Smalltalk [pharo-project.org] - the original OO language circa 1972.

The best answer is: whatever drives you (1)

Phoenix Rising (28955) | about 2 years ago | (#42330515)

If you want to be a web developer, learn HTML, CSS, JavaScript, a web backend language, and SQL. If you want to do sysadmin type stuff, learn a scripting language or three (PowerScript, Python, Perl, UNIX shell scripts (ick!)). If you want to get into heavier programming, pick up languages used in the direction you want to head; that might be a scripting language or it might be a "real" programming language.

If you can, work your programming skills in to your current job. It's much easier to get a job programming if you've been programming at a job. If not, I'd suggest getting involved with a FOSS project of some sort. Experience on the resume is a huge plus; doing a project for yourself on your spare time not so much.

Whatever you do, pick something that you can get "in to"; you'll be happier in the long run if whatever you learn is what you want to be doing. I'm at a programming job now, coming from systems administration; I got there because I was always working for software development companies, and I had to write a lot of scripts and more involved bits and pieces of code. I finally made the leap when I found a programming job that addressed a topic I was passionate about.

Good luck.

Repost aint it? (2)

pepsikid (2226416) | about 2 years ago | (#42330523)

I've been lurking in /. for years, and I'm absolutely certain that this topic is nearly, if not exactly, word-for-word identical to another /. post from either last year or the year before.

Don't knock a quality education (1)

Anonymous Coward | about 2 years ago | (#42330535)

A lot of coders I know will badmouth higher education til the cows come home, but I was in a similar situation to yours after a decade in IT.

A BSCS and a MSCS later I'm starting my 4th year of a very nice software engineering job. A job that required an education to get a callback for an interview. And not for nothing, but I had 3 solid job offers coming out of school despite being in the middle of an economic downturn.

My two cents (2)

Synerg1y (2169962) | about 2 years ago | (#42330539)

First of all, I feel like I'm wasting my time writing this because I have no idea what kind of learner you are.

Your type largely determines your approach to learning... anything, especially something more complicated like programming. I'm a kinesthetic & how I've picked up new computer concepts and programming languages either by jumping right into them (work related and situational mostly), or by reading a book and doing the examples. I'm dead serious, it's that simple (+/- motivation), read the chapter, put what you learned into a compiler, debug it (if you need to), play with it, try new methods, whatever... I picked up jquery & ajax mostly this way, the latter mostly through implementing on business systems, the former I read a "missing manual" series book on.

If you're feeling cocky, you can fake it till you make it, land a beginner programming job and get paid to learn it! I know it would work for me, but that's largely cause I'm a hands on learner (kinesthetic) and I learn by doing. If you're an auditory learner, you'd probably get chased out with fire with this kind of approach and would benefit more from online, or class lectures.

Before choosing this programming language or that (3, Insightful)

johnwbyrd (251699) | about 2 years ago | (#42330545)

Instead of following the pattern on here of recommending this programming language or that, I'll suggest a different course.

First, choose a very specific field of work. Video games, insurance, pinnipeds, ASIC design... something.

Second, look at the development technologies and tools that exist in that field and are used frequently and common. Games use C++ and assembly, ASICs use Verilog, pinniped databases are written in .NET.

Third, focus on learning the technologies that are used in your particular field of interest.

This will permit you to have a marketable skill in precisely the area of programming you want to accomplish.

I am aware that many programmers consider themselves "generalists" -- and heck, I do too. But the field of programming is now sufficiently wide that ALL programmers must, to an extent, specialize. Of course you can always apply your generalist knowledge to solving one-off problems. Instead, I suggest you focus on a particular area of expertise related to your dream job.

Best of luck.

Don't (2)

1s44c (552956) | about 2 years ago | (#42330575)

Seriously - It's better as a generalist. Or do you really want to swap having a new problem every day to having the same one for years?

Make your goal to build, not simply learn (0)

Anonymous Coward | about 2 years ago | (#42330577)

I've take time off a few times in my career (1-2 years). And, coming out of this, no one had any problems with the gap, as long as I had something interesting to show.

Doesn't need to be the next Facebook, but find something that's bugging you, and build a mobile app to fix it. A website for your hobby, a video game. Something you can demo is good, but something you can talk about interestingly, and passionately is cool.

So, pick the problem, then pick the language. If you are doing iPhone development, I think it's objective-C or HTML 5 (I do not do mobile development, obviously). Learning Ruby, if you want to do phone development, is not a good idea. (Unless there is an SDK, but you get the idea).

So, stop thinking about "should I learn to use a hammer, or a drill", and start thinking about what you want to build.

The awful brain drain. (0)

Anonymous Coward | about 2 years ago | (#42330583)

Since the awful amount of brain drain here in the States. Companies have pretty much given up on hiring anyone. Now all their competition works for free.

Not Enough Time (1)

jon3k (691256) | about 2 years ago | (#42330597)

At 1 hour a day you might be competent programmer in 10 years. You'll need to spend HOURS per day, assuming you don't have some type of practical background in programming already.

edX/Coursera (0)

Anonymous Coward | about 2 years ago | (#42330627)

Similar situation myself, IT generalist wanting to get into programming.
I'm a bit more pragmatic in looking at it from the direction of learning a scripting language to supplement sysadmin tasks, and if I get into more pure programming, great. With that in mind, I settled on Python. I'm in the middle of taking the MIT 6.00x Intro to Programming course form edx.org, and I've found it to be a great class, both in learning Python, but also in establishing a "Programmer" mindset.

Check out edx and/or coursera, they offer a variety of intro programming courses, and I've also found the online classroom aspect a good driver in making sure I put in the time and the work.

Decide "what" THEN "how" (2)

davidwr (791652) | about 2 years ago | (#42330661)

My question to you all is, what language should I start with, to learn and get back into the principles of programming, that will help me build a personal portfolio, but will also lend to learning other languages? At this point, I'm not sure if I'd like to make/maintain custom applications, or if back-end web programming would be more interesting, or any of the other niches out there."

Several languages are good and refreshing the basic principles of programming and as stepping-stones to learning other languages. If you need a list, just ask several high school or college CS department what languages they teach as 1st and 2nd languages.

You narrowed things down by saying you want to build a portfolio. What kinds of projects do you want in that portfolio? You don't seem to have decided yet.

Once you decide, that will be a major factor in choosing your language. You'll want to pick a language that many or most people doing this kind of work use for this task. To put it another way: You want to have the tools to join an existing team or project with a minimum risk of lack of knowing a specific language handicapping you.

By the way, for many "types" of programming (e.g. "back-end web programming," it's not just the language but the whole development ecosystem that you need to be familiar with before you go market your skills.

If you can show a potential client

Here's what I did using [very popular development environment for the task at hand] and oh by the way I am also familiar with [another popular development environment for the same task] and [a third] and, just to round things out, I've written some small bits of code to do [something in a completely different problem area] using [a popular development environment for that problem area, preferably not one of the ones you've already mentioned]

then you'll be ahead of the game.

Why does these idiotic threads keep popping up? (1)

zugedneb (601299) | about 2 years ago | (#42330669)

And also, what the hell is a "programmer"?

First, u become expert in a field, and then u learn a programming language. If u do not own a field, what the fuck are u going to program? Linked lists?

I am a troll, but my advice is better then all the other moron's: study a field until u can express all operations of it in logical statments, and all objects of it as discrete structures, and then. my friend, u can program.

Seven Languages in Seven Weeks (4, Insightful)

kwerle (39371) | about 2 years ago | (#42330673)

By and large, languages don't matter. It's the frameworks that do. Nobody* is looking for a ruby programmer - they're looking for a ruby on rails programmer. Nobody is looking for an Objective-C programmer - they're looking for iOS (and/or MacApps) programmers.

* yes, there probably are 3 ruby jobs, but you don't qualify and they are not near you/flexible enough/whatever.

I don't happen to like Java. I found python annoying when I last tried it (which was long ago). I think I'd like it more, now. php was meh. I really enjoy ruby and I liked Obj-C 15 years ago. Find out what you like to work with.

Check out the Seven Languages book. It's fun to take a few languages for a spin. If it's not fun for you, maybe you should stick with IT :-)

But you're really asking about finding a job.

By and large, jobs don't matter. Yes, you need/want to make enough to live comfortably, but it's amazing what you can be comfortable with. What really matters is what you work on, who you work with, and what you work with. Find a job in a field that interests you, working for/with folks that you get along with. Once you're there, fix the kinds of problems you enjoy fixing. Do some of the ones that need fixing, too. You do both software and IT - it should not be hard to find a great place to work and make it work for you.

Me, 6 years ago. (1)

GreggBz (777373) | about 2 years ago | (#42330681)

1.) Something you won't get bored with.
2.) Something that's popular and not a niche language.

3.) Something that's platform independent.

I asked myself the same question several years ago. Because I was a hard care Unix admin at the time, I picked C# and DirectX development. I wanted something "easier" than my 50 hour a week job and different enough that I did not get sick of it. Also, I remembered Visual Basic from college and it was fun. I wrote about 40% of a pretty impressive game, all while teaching myself C#. It was good at the time because the development environment was fantastic (Visual Studio) and the API was sane and powerful (DirectX).

Of course, I can no longer continue development of my project with out serious pain because Microsoft has now decided to abandon managed DirectX and leave it's closest descendant, XNA, in limbo.. There may never be the tools to work on it with Windows 8.

I had a desire to do it again, but this time I picked OpenGL ES and Java, Android development.

I'm finding that eclipse is nearly as good as Visual Studio, and Java is about as easy as C#. Also, most of the concepts have translated nicely.

So, I've been spending about 1 hour a day porting that game over.

I guess my suggestion is that. There's certainly other choices, but I think with this you can jump into something that's trendy and fun (Android development) while learning a Java, a fundamental language that should survive the test of time.

I just got back into programming (0)

Anonymous Coward | about 2 years ago | (#42330693)

This is how I did it:

1. I kept a side job working programming a system for a few years. In your case, just can start your own website and create the software for it. It feels like a waste of time but it will help you re-learn, get back into the habit of programming and bring you up to date to whatever language you choose. Another option is to contribute to an open source project or even create your own.

2. Go through your CV. Make sure that you highlight everything that relates to development. If you write scripts, make it sound like they're more generic programming but don't lie. I'll say it again, don't lie.

3. Be prepared to explain why you did not stay with programming. You will be asked about it, make sure you have the exact reasons and that you can explain why you really want to get back into it.

4. Be ready to take a pay cut, if necessary. Once you're in a developer job, you can go to a better one much, much easier.

5. Be patient. It may take time to find a job when you're not the typical profile of what they want. You may be luckier if you search for a job that has a component of programming and some other aspects on which you've got recent experience. It took me almost a year to find a suitable job. I now have another, much better offer with a mixed systems/dev profile.

6. Make sure that you have enough theoretical and practical knowledge to pass tests. You need to be able to understand things like MVC, design patterns, algorhithms...

7. Here everything goes through employment agencies so, if you find a competent agent, make sure you keep in touch with them and remind them that you're looking for something.

8. It may be worth refining your CV as you go along, when you realise that you can improve the content or when you learn new technologies. Make sure the changes don't contradict what the previous versions say (don't lie!).

I can't think of anything else but don't let anybody tell you it's impossible, it's not. It just needs a bit extra work.

Getting back into implies you were there (0)

Anonymous Coward | about 2 years ago | (#42330711)

I'm not trying to be rude, rather I'd prefer to help you with some things that may mean a lot long term.

First, you've implied that you were a programmer. You description of jobs don't imply it. Please take it from someone who was coding a very long time ago, that you never stop learning, and the day you do, you're done. if by your description we should regard you as a programmer, you're wrong. This can be fixed simply as a function of time and effort.

You appear to have the two most important things to start (desire, and some raw skill), but need to realize how important the third is. training! If you think that you can pick it all up by yourself, you may(few do well), but you will learn more of the base theory you need with a university level course. Start with the self study, but be aware that after the first differentiator of "can he program". There's a world of difference between programmers. Strangely the most committed have generally done whatever is required to pick up the theory, and often deal with problems in unique ways. The bad ones build ivory towers, the good ones pull solutions out that will sometimes leave you in awe.

Having also dealt with some individuals who did not complete their degrees, I can say I at least a few of those, they were very widely read in the theory that was part of the courses, and I've regularly learnt from some of these people.

Expect it to be a long road until you can consider yourself a senior/skilled programmer with many many learning experiences along the way. When you get the first chance to prove yourself, work your tail off, and keep asking how you could do it better.

There's one quote I'd like you to consider. "The only way good way to judge a quality of a doctor, and that by review by other doctors". The same holds true of nearly every other profession, including programming.

Good luck with your endevours.

Python (0)

Anonymous Coward | about 2 years ago | (#42330805)

Python seems to be easy to pickup.

JavaScript (1)

DriveDog (822962) | about 2 years ago | (#42330807)

My background included a significant amount of C and some assembly as well as a variety of other stuff including (not Visual) BASIC (workplace need, not my choice). I finally decided on JavaScript and probably also Node.js. I'm happy with the language itself and being useful in so many places and platforms and situations made it a no-brainer for me. I'd choose to use Linux everywhere, but being stuck with Windows also means that I can do a lot with WSH JScript, which is supported on everything from XP on (maybe 2000, I don't know). I quit bothering to learn to jump through hoops with DOS batch files.

language is unimportant (0)

Anonymous Coward | about 2 years ago | (#42330811)

languages are unimportant, you can pick up a reference book or just google for syntax. logic and problem solving is key.

try creating the same project over multiple languages platforms. try C, C++, PHP, Python, Perl, and for a mind boggling experience, objective C (worth the battle, i found the fairly rigid structure [MVC paradigm] really added to my development practices).

focus on your ability to understand the problem and find a solution for it.. no matter what language that might be in!

Be seen or provable (1)

thetoadwarrior (1268702) | about 2 years ago | (#42331041)

It's all well and good if you're learning but if you don't get to do it on the job then people might not think much of you practice as there is no one to vouch for you or verify your code is good. Put your stuff on Bitbucket or some other source sharing site or contribute to open source. At the very least you can then always point people to your repos when you're looking for a job.

user groups, open source (1)

peter303 (12292) | about 2 years ago | (#42331071)

We have a couple dozen computer user groups in our town. About a third focus on coding. Java, web-services, mobile computing, gaming are fairly hot topics these days. User groups are often in meetup.com. If you still have a computer print monthly in your town, they may list computer groups too. Some user groups are lecture oriented while others are show-and-tell their projects. Many of these project are more or less open-sourced on the github cloud code-base server. So you look for a project someone has talked about, starting on the simpler side. Then download, compile, and modify their code. Maybe you could extend it a direction the original author lacks time for. Maybe you could use their code as a guide for you want to do, but you would be mostly starting from scratch. A good starting project is to write documentation for their code. That would mean you'd have to explore the nooks and crannies in it. A second perspective is a real help to an author. Because some authors say "this feature is easy to use" when it really is not.

Probably in the early months you wont get paid for this. But we have recruiting sniffing around our user groups all the time looking for warm bodies.

only 1 hour ? (1)

gearloos (816828) | about 2 years ago | (#42331109)

I'd really be more concerned with only being able to devote one hour a day. I found myself going many hours once I began concentrating. One hour may be fine for starters, but you'll soon see it takes much longer to lay out your entire thought process for the part you are working on on a given day.

College (3, Interesting)

Dennis Sheil (1706056) | about 2 years ago | (#42331235)

Do you have a Bachelor's degree? I began working as a systems administrator before completing my Bachelor's degree. I have always done some amateur programming, but wanted to improve my skills to where I really was a "programmer". So I killed two birds with one stone and started taking one course a semester at a local college. I would go either at night, or on the weekend. Some semesters I took more than one course.

As I said, I already had written programs. I did not have the deeper understanding to write better, bigger and more complex programs though. The computer science program laid a foundation of calculus, statistics, and discrete mathematics. Then it went deeper into graph theory, and the theory of computation. Then we began learning C++. Then we learned more advanced C++, how algorithms and recursion and so forth worked. Then we learned Java. Then we learned about data structures, and the relationship between data structures and algorithms.

If you just want to learn a little Perl to write some simple scripts, you don't need to do all of this. It sounds like you want to have a deeper understanding of programming though. So this is necessary. I think it is best done at a college, although theoretically someone can learn much of this on their own.

I think the idea of learning programming by "I want to learn one language well" is an amateur mistake. Our learning initially was almost purely mathematical. If you read volume I of "The Art of Computer Programming", he doesn't get into (M)MIX programming until pretty far into the book, the beginning is math. The cursory learning of a programming language was just a byway to then teach us about recursion, backtracking and the like. We immediately moved onto Java instead of going deeper into C++, to see that there were different ways of doing programming by different languages. We later learned radically different languages using different paradigms like logical programming (Prolog), functional programming (Lisp) on top of the object-oriented programming (C++, Java) languages we had already learned.

Eric Raymond once said "Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot." Other experienced programmers have agreed with this sentiment. As you said you're still an amateur, it's probably beyond your capacity right now to understand why someone should "waste time" learning a language like Scheme Lisp which they might end up never using. An ounce of prevention is worth a pound of cure though. The opinion of most expert programmers is that understanding the core ideas of computer science and programming is more important than domain expertise in a particular language. You say "I'll be setting aside an hour every day to devote to learning a new language, in the eventual hope that I can leave this company (take a sabbatical) and hop into the private sector for a few years." You should ask yourself if this is enough. Yes, knowing at least one commonly used programming language is important to get a job as a programmer. You will never really understand that language, and its limitations and advantages, until you learn some other languages, and some of the general concepts behind all programming and computer science. You said you were a novice programmer, and I think putting too much emphasis on learning one language well is an amateur mistake. There's a lot of steps you should be doing before deciding to become an expert in one language.

I'll give a personal example. I do a lot of Android (Java-like) programming. I also need a web API for some of the programs. A server-side Java solution is just too expensive for what I'm doing - sites like Bluehost and Dreamhost don't really support Tomcat and the like for $9 a month. So I use other languages for my web API than Java. Do a Google, or more importantly, a Craigslist job search for "full stack" programmer. Some companies are looking for people who can understand their whole business. They might have a web (HTML, Javascript, PHP), iOS (Objective C) and Android (Java) interface into their API, which hooks up to an application server which could be running Oracle Tuxedo or something like that. You might be concentrating on one portion of it, but having some knowledge of the full stack can be helpful, even necessary.

Avoid Perl (2)

jonadab (583620) | about 2 years ago | (#42331241)

If you want something that will help you learn other languages, don't make the mistake I made. Don't learn Perl.

If you learn Perl, you will rapidly lose all interest in other languages, because any time you try to pick one of them up, you'll be reading through the documentation and examples, and your brain will go, "All THAT just to accomplish THAT little thing? That's, like, eighty lines, and in Perl it would be, like, three lines. I'm gonna just go do it in Perl. Yep, see? Three lines, like I said. Four if you count the shebang."

Before Perl, I'd programmed in about twenty different languages. Since learning Perl, I've tried to learn half a dozen other languages, but I failed to really get into any of them.

If you want to learn other languages, don't learn Perl.
Load More Comments
Slashdot Login

Need an Account?

Forgot your password?