Slashdot Mirror


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

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."

161 of 224 comments (clear)

  1. set goals by O('_')O_Bush · · Score: 1

    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.

    --
    while(1) attack(People.Sandy);
    1. Re:set goals by CastrTroy · · Score: 2

      Please see this article. 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.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    2. Re:set goals by Nutria · · Score: 1

      Or he could use PowerShell to automate routine drudge tasks.

      --
      "I don't know, therefore Aliens" Wafflebox1
    3. Re:set goals by Synerg1y · · Score: 1

      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.

    4. Re:set goals by Synerg1y · · Score: 1

      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.

    5. Re:set goals by Chrono11901 · · Score: 2

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

    6. Re:set goals by somersault · · Score: 2

      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.

      --
      which is totally what she said
    7. Re:set goals by Synerg1y · · Score: 1

      The courses I've seen start you off with flow charts to try and explain the flow and concept of stuff like boolean logic, variables, variable types, basic operators (+/-/*//), etc... moving into local applications, which I guess is the basis for a game. I remember though, when I took AP Java in HS, we wrote the fishes game in a command window towards the end of that course, and I think I spent most of college going "duh, that's how you do it" as a result of the challenge level of that class. So maybe there's simpler games to write, I remember some guy in that class wrote a game for his ti-84 which was pretty cool, but as a general piece of advice, it's not the place to start, it's something to strive towards. It can lead to some very bad habits that are difficult to fix, especially when you start googling answers on how to write it, you gotta be able to separate good code from all the people who started out thinking they're hot enough to write games and who wind up writing 10 lines for every 2 cause they don't actually "understand" what's going on in the code. And don't get me started on game algorithms, some of those went famous like from Quake. Remember we're talking about an OP who has been out of coding a while, and wasn't one of those people that MUST have a coding job out of college, 6 years is a long time to go without if you have a strong passion and knack for it. I'd probably say f' it and start coding on the side for OS, or self projects during those 6 years to stay sharp.

    8. Re:set goals by Zmobie · · Score: 1

      Not exactly. If the guy barely has experience with powershell or unix shell scripting then even some seemingly menial tasks can be more work than you think, especially if the company is trying to maintain decent coding standards.

      Things like reports can sometimes be even harder to implement than parts of the engine depending on what you are using. Sure, you use SSRS and you can whip a .rdl file up in about half an hour if you get a bit of experience, but writing the stored procedure to power it in such a way that it won't make the database explode is a much more difficult task that even Senior developers can have problems with on occasion. So, sure some things might sound easy, but when you get into it they really are not.

      Granted the reports is only one example, but also remember with most entry level positions the company hiring you views it as an investment. They are not going to want to invest much if the person applying for the position doesn't have something to show they have basic programming skills (personal projects are by far a favorite, when I graduated I had several listed on my resume and the HR people and developers they had interview me were incredibly happy to see that).

    9. Re:set goals by Zmobie · · Score: 3

      Dear lord, no they are not. Yes Jr level positions are usually shadowed/mentored by some Sr level developers, but they expect you to have at least some experience. Now, obviously they don't expect you to necessarily have professional experience, otherwise no one would ever get into the field, but every software shop I have seen expects at least a few years of programming experience before they will even talk to you.

    10. Re:set goals by Synerg1y · · Score: 1

      Gentlemen, I've actually trained a lady under me at a dif job and have a very good idea of how it works, I never assigned her super complicated crap I knew she'd struggle with, more like write a simple select and you can find your datafields in the following queries type stuff, or add this field to the corp app (I had to teach her MVP basics / resharper real quick for that one).

      Let's be realistic though, it takes one dumbass mgr. or even sr. dev. to completely turn a beginner's job into a nightmare, especially with a tech illiterate motivated by greed CEO at the helm.

      If you're still blowing up db's as a sr. dev., cudos, you're making way more than your worth (+1 to test & stage env.).

      I completely agree on the view of investment on a beginner individual, it's like rolling dice and hoping you get a 6 on who you're hiring, but are willing to settle for a 3 knowing that a 1 or 2 are just as likely. Now about company practices to keep that individual with promotions and competitive salary, that I haven't seen a whole lot of (change your job every 3 years if you like to be at the top end of your salary range (it goes up yearly no shit), requires self-marketing).

    11. Re:set goals by somersault · · Score: 1

      Well, I started off thinking 2D games, but then I was thinking for the absolute basics you could start off with very simple command line stuff, but you can even turn that into a game. For example a simple game where you are presented with 2 integers that the user has to add together and type in the answer. Then randomise the numbers. Put it in a loop. Then add in subtraction, multiplication and division. Keep track of how many answers the user got right or wrong. You could even add in a high score table and teach them how to do basic array sorting. Then you could save and load the high score table to a file. You can teach a lot of basics by building up a simple little game like that.

      Basic 2D graphics are a fun way to demonstrate programming features too. When I was something like 4 years old I'd type in the program listings into my Commodore 128 to draw circles and triangles on the screen. When I was older, my dad taught me about looping through arrays by helping me to build a Moire style screensaver. Having an animated visual output like that is quite satisfying, especially to a new programmer, yet it's really simple to implement and so is a good early project :)

      I agree that it's crazy some of the questions you see online.. some people are clearly just copy and pasting with no clue wtf they're doing. Right now I'm often Googling pretty simple Javascript/JQuery stuff (how to create and reference Objects and hash tables for example) myself though simply because I don't have a paper reference manual :p

      --
      which is totally what she said
    12. Re:set goals by Zmobie · · Score: 2

      I'm not saying the senior developers are actually blowing up the database, but it does take them time and thought to write a half decent query. You can take a naive approach to the task and get something that works, but when you get a table that joins 3 others in that are anywhere between 3 million and 30 million rows you need to think your query through before you lock the entire damn database.

      Entry level developers need to know this at the very least, and if you get someone in there that barely understands the basics of SQL you get code that might work but is completely useless if you have to scale it up (or worse goes into production and THEN you find out they are locking the database with the report query). I am not saying it is impossible, but how many companies do you know that really want to hire a person with little programming experience into that position? Moving to it within the same company, maybe, because then they at least know they work with whatever the company passes off as corporate culture and that they have basic competency, but even at my company which is not very big, they don't hire people to do software development unless they have a few years of experience.

    13. Re:set goals by O('_')O_Bush · · Score: 1

      Because someone coming in "6 years IT experience, no programming experience" is going to be an entry level programmer... He will either be put doing what he is most qualified for, or thrown in way over his head. Even if there was a "learn programming" job, it will be lightyears from his "seasoned admin" salary.

      --
      while(1) attack(People.Sandy);
    14. Re:set goals by CastrTroy · · Score: 2

      The problem is that if you want a "beginner" developer to do the job right, you probably have to spend just as much of your own time explaining what needs to be changed, and verifying that the resulting changed worked correctly (often sending the change back, re-explaining what needed to be changed, and checking it over again), as it would take you to just do the change yourself in the first place. You can view working with beginners as an investment. But you have to be very careful that you are not pouring time into somebody who just doesn't get it, and won't ever yield a return on your investment.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    15. Re:set goals by CanadianSchism · · Score: 1

      Actually, I'm pretty sure that even an entry level admin/entry level dev salary would be more than I'm making right now, after 6 years.

    16. Re:set goals by Johann+Lau · · Score: 1

      The problem is that if you want a "beginner" developer to do the job right, you probably have to spend just as much of your own time explaining what needs to be changed, and verifying that the resulting changed worked correctly (often sending the change back, re-explaining what needed to be changed, and checking it over again), as it would take you to just do the change yourself in the first place.

      Yes, to the beginner who stops the thought experiment right there it would seem like that it just cancels out, true. But the really awesome thing about this invention called "teaching", is that the next time they may require less or even no help, and then they can repeat that process an indefinite amount of times! So instead of 1 - 1 it's more like 1 - 1 + 0.5 + 0.74 + 0.86 + 0.94 + 1 + 1 + 1 + one trillion gazillions. And now that I explained this to you through the power of science, you can use it and teach it to others. Fuck yes!

      you have to be very careful that you are not pouring time into somebody who just doesn't get it, and won't ever yield a return on your investment.

      Are you talking about teaching something to someone who actually wants to learn it, or handholding them? And how would you know without trying at least once? I don't mean on one person in total, I mean at least once for each person?

    17. Re:set goals by Emperor+Shaddam+IV · · Score: 1

      The guy posting the question could code a simple game. My first 3 apps I wrote in Basic on a TRS-80 and then a commodore 64 when I was 15 were:

      1. A character generator for D&D that would roll the stats and let you pick the attributes to generate a D&D character.
      2. A text based Blackjack 21 game.
      3. A simple shooter that had one sprite for a space ship you could move around and control with a joystick and some simple sound and graphics.

      I probably learned more coding these types of app's then I learned in college. For example, to code the simple shooter I learned about sprites, peeks and pokes, using plot verse directly addressing screen memory to control graphics,writing loops, handling input real-time events from the keyboard and then a joystick, generating random numbers, data types, etc. It also started me looking into assembly language for games because Basic was so slow.

      Of course, a lot has changed since then, but a simple game app would be a challenge and it would be something this guy could show off to his friends when he was done.

    18. Re:set goals by datavirtue · · Score: 1

      I second that. I spend over 1000 hours per year learning new languages and frameworks and that is not enough time. You need to get more time than 1 hour per day and you should concentrate on practical languages and the popular frameworks if you hope to get a job in the field. Java and C# .net, Hibernate, LINQ, ASP .NET MVC, PHP and various MVC frameworks, etc...the list goes on. You often need skills in multiple types of programming and different but related languages since a lot of projects include integration and migration. Don't forget to manage your code in a popular subversion system, do unit testing, and become proficient in Visual Studio 2010+, Eclipse and possibly Netbeans. Pay attention to the latest methods for accessing and managing databases as well as dependency injection frameworks. You are in for a ride. Get a GITHub account.

      --
      I object to power without constructive purpose. --Spock
    19. Re:set goals by datavirtue · · Score: 1

      I don't recommend Powershell as a "language" to learn programming either. They made it for non-coders--as if those people should be writing PS scripts either. I find that it does not mesh well with the way I think as a programmer. It feels like a mix between VB and Javacript. I tried to like it, and it does deliver way more power than CMD, but it is not very accessible. It wouldn't have been anymore difficult for non-coders to learn how to do all of this stuff in a subset of C# syntax, but instead they came up with totally different syntax, IDE, and security caveats.

      --
      I object to power without constructive purpose. --Spock
    20. Re:set goals by datavirtue · · Score: 1

      As an admin I would write scripts to read through server logs and email me severe errors and warnings every morning.

      --
      I object to power without constructive purpose. --Spock
  2. Python by HaZardman27 · · Score: 4, Insightful

    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.

    --
    Apparently wizard is not a legitimate career path, so I chose programmer instead.
    1. Re:Python by Anonymous Coward · · Score: 1

      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 (and OpenGL 3D, but you have to do the hard work yourself): Pygame
      3D drawing/animation/gaming: Blender 3D
      (I started by gaming, because that's a fun way to learn a language quickly)

      Web: Django
      Co-routines: Stackless Python
      Maths: NumPy and SciPy
      Networking: Twisted

      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
      Dive into Python
      How to think like a computer scientist?

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

    2. Re:Python by HaZardman27 · · Score: 1

      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.

      --
      Apparently wizard is not a legitimate career path, so I chose programmer instead.
    3. Re:Python by HaZardman27 · · Score: 1

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

      --
      Apparently wizard is not a legitimate career path, so I chose programmer instead.
    4. Re:Python by viperidaenz · · Score: 1

      Last time I looked for jobs, it was full of Java and C#.

    5. Re:Python by Zmobie · · Score: 1

      Did you seriously just suggest Python and Ruby are more widely used than C#? I don't know what the hell you are doing, but dear lord if you want a paying job C# is in way higher demand than either of those languages. Plenty of people may have their issues with the .NET framework and such but there are still loads of companies looking for developers that can write C# and ASP.

      Now C, yes that I can agree on, as the majority of software shops have moved toward managed languages (or at the very least use C++) because there is a lot more to deal with in low level imperative languages (more powerful, yes, but also much more prone to problems and sloppy programmers).

      As far as the python being immature, it really isn't that bad, the syntax style is just a bit different and it is true object oriented instead of technically being a hybrid using primitive types. Most people once they get the actual concepts of general programming can easily transition between different syntax styles. I mean, saying it is immature because it doesn't use curly braces is like saying SQL is immature for the same reason. It all boils down to the language style.

    6. Re:Python by Tough+Love · · Score: 1

      there are still loads of companies looking for developers that can write C# and ASP

      Why is it that whenever I hit a .asp page on the net I know I am in for an eye-gouging, mind-numbing experience?

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    7. Re:Python by b4dc0d3r · · Score: 1

      If you paid attention to the context, I read ASP as ASP.NET, not classic ASP.

    8. Re:Python by Tough+Love · · Score: 1

      Is it just my imagination, or are .asp sites blessedly becoming rarer? This site's spin on it is hilarious: "As mentioned above, programmers have moved away from Classic ASP and VBScript to other languages. However, that is not quite the same as dying". News for you! Oh yes it is. And do I even need to comment on the bad taste of trying to distribute this spin via pdf? Especially, DRM protected pdf? Say, this idiocy would not have anything to do with .asp dying would it?

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    9. Re:Python by Zmobie · · Score: 1

      there are still loads of companies looking for developers that can write C# and ASP

      Why is it that whenever I hit a .asp page on the net I know I am in for an eye-gouging, mind-numbing experience?

      I never said all of them were good at writing it, just that it is in demand. A really good ASP developer can make some fairly good sites, but just like when some idiot gets their hands on php without knowing how to use it, there are some things that look like the interpreter(or compiler in the case of ASP) threw up about half way through.

    10. Re:Python by Zmobie · · Score: 1

      Oh, b4dc0d3r's post made me realize I should clarify, I do mean ASP.NET not classic ASP. The latter is a whole different ballgame.

    11. Re:Python by professionalfurryele · · Score: 1

      Agreed. I've used a fair chunk of languages and you can learn from each of them (although sometimes what you learn is 'don't do things this way', I'm looking at your early versions of Visual Basic and all versions of brainfuck (i still prefer brainfuck to VB though). Python isn't perfect and it isn't for everyone (some people get real grumpy about meaningful white space), but if you haven't programmed before then it is a good place to start. If not python then something designed with teaching in mind, say Pascal. You will eventually want to pick up something like C and you wont be a complete programmer till you've written at least one piece of software which is full of buffer overflows, misused pointers and mallocs that don't do what you think they do, but you don't have to start there. Also worth giving something like Haskell a go just to screw with your brain. But start with something like python.

    12. Re:Python by drkstr1 · · Score: 1

      It should be hammer.pound(nail), or maybe even something like human.do(new PoundCommand(hammer, nail)). OOP is all about grouping and managing your cross-cutting concerns.

      --
      Fanboy Status: Apache Flex, C#, Eclipse, KDE, Pirate Party, Ron Paul, Slackware, Windows 7
    13. Re:Python by Jane+Q.+Public · · Score: 1

      "Last time I looked for jobs, it was full of Java and C#."

      That's because during much of the last decade, Java and C# were among the languages in high demand. Which establishes a code base, which then has to be upgraded and maintained. And as you probably know, there is generally more work overall in upgrading and maintenance than there is in writing novel code.

      However, that is no indication whatever that very much new is being done with Java or C#. Something to keep in mind.

      During that time, languages like Python and (in just the last 5 years or so, which is a very brief time) Ruby have become the languages of choice for many people who are doing new work.

    14. Re:Python by Jane+Q.+Public · · Score: 1

      I see Midnight Modder is on the prowl again.

    15. Re:Python by Half-pint+HAL · · Score: 1

      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.

      Seconded. I've just left a career in IT (a longer one than the OP) and even though I was heading for education, somewhere along the way, I decided to start coding again (I'm trying to develop learning software to use for better homework tasks, and managing classwork). I hadn't really been planning on picking up Python, but a couple of things pushed me that way -- one was that I started looking at Natural Language Processing (and the NLTK for Python is pretty comprehensive, as well as free) and the other was that I started doing a MOOC course on web app development which was based around Python.

      What I found once I started was that Python made all the concepts I'd previously learned in university with C very, very easy. By lifting the difficulty out of handling strings, lists and other not-complicated-but-not-elementary datastructures, it let me focus on the "bigger picture" of process and task design.

      So in the end, whether I deploy my apps online using a Python-based server or I rewrite them to another language based on the Python prototype, the end result would not be possible without Python.

      There are a couple of things that bug me about the language (there's no language without its quirks) but so far I believe its a damn good option for the returning lapsed programmer.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    16. Re:Python by XcepticZP · · Score: 1

      You've just started learning programming and already you're bashing OOP? I think you should pick a new field ASAP. Because abstraction, separation of concerns and OOP is here to stay, and you're on your way out already, buddy. Programming is not the field for you. Unfortunately, you and your boss won't figure this out until you've made a royal mess of the codebase with your "open_door" and "open_door_with_handle_but_only_halfway", and "open_sliding_door_with_handle_but_only_halfway(int* out_length_param, int* out_noise_level_param, int* out_angle_param)" functions. That is the type of code you'll be writing, and I would nuke it from orbit in a hearbeat. Ugh, I feel dirty just thinking about what sort of code you're already writing thinking it's so much better than the OOP way of doing it.

    17. Re:Python by Half-pint+HAL · · Score: 1

      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.

      Everything in Python was done for a reason, and mostly that reason was readability. However much it bugs me that I have to manually correct the indentation in IDLE if I copy and paste a code block (admittedly bad practice, but often required), I always remind myself that it's there to stop me being lazy and writing something that gets confused further down the line.

      Beginning and end delimiters are designed for ease of computer processing, but humans aren't that good at processing them -- we're not stack machines! It's a normal C convention to indent like Python for this very reason -- debugging and maintaining other people's code is hard if incorrect indentation causes us to misread the flow control. But because it's convention rather than syntax, it never gets done, and productivity is lost.

      Yes, it bugs me that heavily structured code ends up filling loads of columns, and it may not be "idiomatic", but that's my best way of reducing the overhead due to multiple nested function calls (come on guys, what's wrong with macros??).

      I'd be all for a flexible programming language that isn't human readable until it's being viewed in a dedicated editor, but as long as code's in plaintext, Python's doing things the right way, in my book.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    18. Re:Python by ixidor · · Score: 1

      So, when you start at step 1, and download IDLE, you are a moron? IDLE suffers from the whitespace issue. if memory serves, notepad++ also has that issue. so where would you recommend a noob start, ironpython?

    19. Re:Python by sshirley · · Score: 1

      "Microsoft has all but killed C# on the desktop"?? C# is the primary language! WPF (Windows Presentation Foundation) is a .NET technology as is the main technology used in creating desktop applications.

    20. Re:Python by HaZardman27 · · Score: 1

      I use vim and have never encountered any "whitespace issues". IDLE is there as a crutch for those who aren't able to write software without an IDE.

      --
      Apparently wizard is not a legitimate career path, so I chose programmer instead.
    21. Re:Python by HaZardman27 · · Score: 1

      I understand that vim isn't for everyone, but with a little bit of configuring your .vimrc file, you can completely eliminate whitespace problems, even if you are copying and pasting from other sources. set ts=4 set shiftwidth=4 set expandtab If you copy something in with tab characters, just use :retab and it will expand your tabs to spaces.

      --
      Apparently wizard is not a legitimate career path, so I chose programmer instead.
  3. simple by Anonymous Coward · · Score: 1

    By programming.

    1. Re:simple by 19thNervousBreakdown · · Score: 4, Informative

      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.

      --
      <xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
    2. Re:simple by b4dc0d3r · · Score: 1

      The question was what language to learn. Before working on FOSS code, you should choose a language.

      Java does a decent job at teaching the kinds of things you might need to know, and it's applicable to web, desktop, and mobile platforms. Lots of people knock it - I hate it, even though I did adopt a Java FOSS app.

      I would recommend C# 4, which is good for servers as well as desktop, and with a bit of help from Mono can work on Linux. A serious Fortune 500 job is probably going to involve C#, and getting used to Linq wouldn't hurt.

      There are lots of FOSS apps written in C# because the basic MSVS compiler is free. Adapting some of the algorithms to use Linq would be a good exercise, unless they require specific speed enhancements. It is a lot easier to understand what the code does with Linq. Obviously I have spent a lot of time with Microsoft tech, but the jobs are everywhere so it's hard to avoid.

      I would stay away from scripting - even if you use C# with code-behind files, which is basically no different from scripting, you can still build the code into an assembly.

    3. Re:simple by Half-pint+HAL · · Score: 1

      I've been a lapsed coder too, and I wouldn't say it shows lack of love. People get distracted. People let themselves get distracted. Heck, who among us can really be claiming to "do what we love"? I spent years suffering in corporate IT and studying part-time to get out of it. I let myself ignore the things that made me really happy -- people, places, travel, physical activity, and yes: even coding.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    4. Re:simple by CanadianSchism · · Score: 1

      By programming.

      And being under 30.

      What language was the original question... And I AM 30, just hit it this year. So?

  4. For me, I do a hell of a lot of FOSS code by ios+and+web+coder · · Score: 5, Interesting

    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.

    --

    "For every complex problem there is an answer that is clear, simple, and wrong."

    -H. L. Mencken

    1. Re:For me, I do a hell of a lot of FOSS code by gewalker · · Score: 1

      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.

    2. Re:For me, I do a hell of a lot of FOSS code by Kjella · · Score: 1

      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.

      Just don't ever let the company lawyer see that post...

      --
      Live today, because you never know what tomorrow brings
    3. Re:For me, I do a hell of a lot of FOSS code by ios+and+web+coder · · Score: 1

      Good point, but I'd tell them anyway (I am very much a good company man). It would be their choice whether or not it was worth doing anything about it. If they made enough of an issue about it, I'd quit. I don't have a real problem with making a living. I don't make a secret of my FOSS work, but I don't advertise it, either. Remember, I do this for free, for very altruistic organizations (not my church). They would make themselves look like serious, serious crudmuffins, if they did, as they would be doing serious grinch-moves. It would be absolutely awful PR. They'd tell me not to spend any company time (I'm talking 15 minutes to do a quick field-test; not six hours of coding). On it. No big loss. What I do, is take vacation time, and attend classes, at my own expense. My own experience, is that most corporations aren't actually the serious evil to which they are cast. They are comprised of humans. I have a lot of friends that are lawyers.

      --

      "For every complex problem there is an answer that is clear, simple, and wrong."

      -H. L. Mencken

    4. Re:For me, I do a hell of a lot of FOSS code by Half-pint+HAL · · Score: 1

      I must commend you on your charitable work. You would do it in your own time, but you do it in someone else's time, because you can. How magnanimous of you.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    5. Re:For me, I do a hell of a lot of FOSS code by ios+and+web+coder · · Score: 2
      Eh?

      Didn't you read what I wrote?

      The nature of my job doesn't allow me to do anything more than a quick check to see if the site is visible through a firewall. Since everything at work is monitored and controlled up the yin-yang, it's actually impossible to do more than that.

      Let me break it into smal, easy-to-comprehend words:

      • I own the computer I do the work on (since I use Macs -that ain't cheap). I don't use the company kit for that.
      • I own the time I do the work. lots and lots of it.
      • I don't list the work I do on my taxes, because it would trigger an instant audit. It would probably come out to a very significant figure, if I slapped an hourly figure on it. It would also probably cause problems for the organizations for which I do work.
      • I take vacation time (not company time) to seek technical training on my own (many) dimes.
      • My company benefits VERY MUCH from my personal endeavours. I am a senior software engineering manager with intimate, up-to-date knowledge of engineering practices and workflows. That is incredibly valuable. Just ask any of my employees. I'm not some clueless BOFH "bungie boss."
      • My post was stupid. I phrased it badly. I should have known that curmudgeons would jump on it.

      I've linked to just one or two of the many projects I do in other posts. If you actually give a damn, you can go check them out.

      Don't be such a sourpuss. Life's way too short for that crap.

      --

      "For every complex problem there is an answer that is clear, simple, and wrong."

      -H. L. Mencken

  5. Python by cinghiale · · Score: 5, Interesting

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

  6. Make a Project by bill_mcgonigle · · Score: 2

    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.

    --
    My God, it's Full of Source!
    OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
  7. Python... by MarcoPon · · Score: 3, Insightful

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

    --

    SeqBox
    1. Re:Python... by Anonymous Coward · · Score: 1

      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.

    2. Re:Python... by ios+and+web+coder · · Score: 3, Insightful

      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.

      --

      "For every complex problem there is an answer that is clear, simple, and wrong."

      -H. L. Mencken

    3. Re:Python... by mikael_j · · Score: 1

      How is Python "pedantic"? Because you can just dump out unreadable gibberish without bother to format your code in any sensible way? Because that seems to be the main complaint from those who dislike Python. This is also why I think it's a good language for beginners, better to have them learn right away how to use indentation and proper code formatting than have to deal with their unreadable code several years down the line (and boy have I seen some unreadable code by developers who, for some reason, never got around to learning when to indent. It should be so simple, instead they manage to just insert a random number of spaces and/or tabs at the beginning of each line).

      --
      Greylisting is to SMTP as NAT is to IPv4
    4. Re:Python... by Half-pint+HAL · · Score: 1

      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.

      Libraries only become necessary when you want to do something that relies on them. If you're learning "to program" rather than learning "to program Python", you won't need to learn all the libraries. The core language is pretty flexible, and I'm already doing some very interesting stuff with it, using only 2 library functions (Math.floor and random.random).

      String processing and list processing don't require libraries, so compared to many (non-scripting) languages, the libraries are far less of a concern....

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  8. Stay in the IT Discipline....go DevOps by Midnight_Falcon · · Score: 5, Interesting
    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.

    1. Re:Stay in the IT Discipline....go DevOps by zacherynuk · · Score: 1

      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.

    2. Re:Stay in the IT Discipline....go DevOps by CanadianSchism · · Score: 1

      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...

    3. Re:Stay in the IT Discipline....go DevOps by Anonymous Coward · · Score: 1

      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.

    4. Re:Stay in the IT Discipline....go DevOps by Midnight_Falcon · · Score: 2
      Become an IT consultant. You can get jobs at IT consulting companies at a junior to mid level, because that's how they make money -- paying junior guys little and then billing out at $125-$200 hour for them.
      Then, you will learn to get your skill level and job title up to that of "Systems Engineer", and then maybe "Senior Systems Engineer." During this time, you'll learn a lot more about tech, get out of just hardware/application support, and get exposed to lots of projects.

      You will be sent work that is way above your head and have to figure it out, and in the process maybe even learn some PowerShell, etc. Then in your free time you can further develop those skills

      The caveat is that IT consulting work is often difficult, with numerous simultaneous demands from lots of clients.

      It requires good communication and strong interpersonal skills, it's very much about relationships and "soft" skills rather than specific tech skills.

      But it's also like training that you get paid for, but only for really smart/diligent people (it's the real world, B+ is not good enough, projects have to all get an A).

      Just apply to IT consulting shops every time you see a job opening. Even send in resumes if they aren't looking for people -- consulting shops are ALWAYS looking for people and if you send your resume to the right person, you might get hired real fast.

      For some background, I've been an IT consultant for 7 years, worked in-house at a company for 2, and still do consulting on the side. My job title is "Systems Architect" or "Chief Engineer"

    5. Re:Stay in the IT Discipline....go DevOps by rover42 · · Score: 1

      Yes. In particular, you mentioned doing various things related to databases. Consider learning more SQL and looking at DBA jobs. Those require most of the skills that progammers need, some of them pay quite well, and all the skills you already have would be useful fo a DBA.

  9. Depends on what you want to do by Anonymous Coward · · Score: 1

    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#.

  10. Learn JavaScript by Anonymous Coward · · Score: 1

    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.

    1. Re:Learn JavaScript by Half-pint+HAL · · Score: 1

      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.

      Seriously?!? You need to know the proper ways to do stuff, because you will never be a lone coder in the real world. You need to understand other people's code, and they need to understand yours. Which means learning the standards and doing things right. Bad habits stick....

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  11. Adderall by Anonymous Coward · · Score: 1

    Adderall and codeacademy.com.

  12. Ask Slashbot: by Anonymous Coward · · Score: 1

    How does an IT Programmer become a General?

  13. hour-a-day doesn't work by bbulkow · · Score: 1

    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?

    1. Re:hour-a-day doesn't work by Synerg1y · · Score: 1

      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.

    2. Re:hour-a-day doesn't work by Dcnjoe60 · · Score: 1

      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).

    3. Re:hour-a-day doesn't work by viperidaenz · · Score: 1
    4. Re:hour-a-day doesn't work by Synerg1y · · Score: 1

      I wonder if the myers-brigg is taken by int* types as 90% of it's test taking volume :)

    5. Re:hour-a-day doesn't work by Emperor+Shaddam+IV · · Score: 3, Informative

      Actually, the hourly rate and what a contractor makes depends on a lot of factors. I've contracted a lot ( almost 10 gigs in my career ) as an LCC, Sub Chapter-S corp and as a W-2 Employee ) and basically:

      1. You can setup a sub-chapter S corp and work for a company as another corporation.
      2. You can just do 1099 self-employeed as sole-propritor, LLC or partnership if you have others involved.
      3. You can work through a contracting company as their "employee" where they pull out the FICA, Social Security, etc and provide benefits at a cost to you and you get billed at X dollars an hour and get paid X - Y dollars an hour ( Y being the contracting companies cut ).

      There are probably other options I don't know about.

      So when someone says 100 bucks an hour, it doesn't mean much until you look at HOW they are earning 100 bucks an hour: W-2 or Independent as S-Corp, self-employed, etc , how they are filing their taxes, what expenses and other deductions they are taking, etc. In fact, I would say that at least in my experience I actually earned more of the rate as a sub-chapter S then any other way. Its just some extra work to keep track of all the expenses, run your own payroll, pay estimated taxes, file taxes and make sure you take all the deductions for the right expenses, etc.

      Also rates depend very much on skills and demand. 100 dollars an hour is not that unrealistic. SAP and other ERP software packages and specialists can easily go over 100 an hour even being paid as a W-2 employee no matter where you are.

      On the other hand, if a programming language or skill is "saturated" with a lot of programmers and the supply of talent exceeds the demand, rates drop like bricks. This seemed to happen with Java a few years back. I had some people calling me offering 30-40 bucks an hour for Java. I either ignored or laughed at most of them. Thankfully Java rates seem to be going up again, although I'm not doing much Java these days so I can't comment on what the going rates are for Java right now.

      But the previous post was right. You have to "live" it. Even when I take time off between jobs, I spend some time reading technical books, checking out new languages, and writing code to keep my skills current. An hour a day probably isn't enough to learn a new language.

  14. In business? by Anonymous Coward · · Score: 1

    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.

  15. Programming Made Easy! by Anonymous Coward · · Score: 1

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

  16. FPGAs by TeknoHog · · Score: 1

    1. Get an FPGA devkit
    2. Learn Verilog
    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!

    --
    Escher was the first MC and Giger invented the HR department.
    1. Re:FPGAs by loufoque · · Score: 3, Funny

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

    2. Re:FPGAs by Anonymous Coward · · Score: 1

      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.

    3. Re:FPGAs by viperidaenz · · Score: 1

      silicon != silicone

  17. What do you care about? by DoofusOfDeath · · Score: 1

    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?

  18. HTML/CSS/PHP by Danzigism · · Score: 2

    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.

    --
    *plays the Apogee theme song music*
  19. Just do it... by erp_consultant · · Score: 2

    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 :-)

  20. PHP by pak9rabid · · Score: 1

    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).

    1. Re:PHP by Chrono11901 · · Score: 1

      On top of that the market is overflowing with PHP jobs (though this may be true for all web languages).

  21. programming by Spazmania · · Score: 2

    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.

    --
    Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
    1. Re:programming by tsm_sf · · Score: 1

      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.

      --
      Literalism isn't a form of humor, it's you being irritating.
    2. Re:programming by Atzanteol · · Score: 1

      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.

      --
      "Ignorance more frequently begets confidence than does knowledge"

      - Charles Darwin
    3. Re:programming by ImprovOmega · · Score: 1

      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.

    4. Re:programming by mikael_j · · Score: 1

      It's been a while since Perl was The language used by sysadmins. It's still around, sure. But shell scripts never really went away and Python has been growing steadily as well.

      --
      Greylisting is to SMTP as NAT is to IPv4
  22. Start with the classics! by gregthebunny · · Score: 1

    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.

    1. Re:Start with the classics! by viperidaenz · · Score: 1

      Probably won't get you a job though. The relatively few C/C++ jobs will be filled by experienced people.

  23. Programmers code every day by NewWorldDan · · Score: 5, Insightful

    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.

    1. Re:Programmers code every day by CanadianSchism · · Score: 1

      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.

    2. Re:Programmers code every day by loufoque · · Score: 1

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

    3. Re:Programmers code every day by PRMan · · Score: 1

      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.

      --
      Peter predicted that you would "deliberately forget" creation 2000 years ago...
    4. Re:Programmers code every day by LodCrappo · · Score: 5, Insightful

      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.

      --
      -Lod
    5. Re:Programmers code every day by PRMan · · Score: 4, Insightful

      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.

      --
      Peter predicted that you would "deliberately forget" creation 2000 years ago...
    6. Re:Programmers code every day by Anonymous Coward · · Score: 1

      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.

    7. Re:Programmers code every day by Gertlex · · Score: 1

      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...

    8. Re:Programmers code every day by TuxWithoutPants · · Score: 1

      If something isn't written in a programming language it isn't real. If you don't see code in 2~3 days, you feel a strange and uncomfortable feeling creeping up your back, in a week you will be dreaming about classes and in a month you will be dry coding by craving it into the walls with your bleeding fingers. The shrink makes me carry a device with some form of IDE when I go into the public now, tells me its safer, for them.

  24. Go to school by tsm_sf · · Score: 1

    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.

    --
    Literalism isn't a form of humor, it's you being irritating.
    1. Re:Go to school by PRMan · · Score: 2

      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.

      --
      Peter predicted that you would "deliberately forget" creation 2000 years ago...
  25. My 2 cents. by TsuruchiBrian · · Score: 1

    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.

  26. The best answer is: whatever drives you by Phoenix+Rising · · Score: 1

    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.

    --
    Let us live so that when we come to die, even the undertaker will be sorry -- Mark Twain
  27. Repost aint it? by pepsikid · · Score: 2

    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.

    1. Re:Repost aint it? by Half-pint+HAL · · Score: 1

      So what? The answer will be different every year.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  28. Don't knock a quality education by Anonymous Coward · · Score: 1

    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.

  29. My two cents by Synerg1y · · Score: 2

    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.

    1. Re:My two cents by Half-pint+HAL · · Score: 2

      Learning styles have been shown to be irrelevant: see Pashler, H.; McDaniel, M.; Rohrer, D.; Bjork, R. (2008). "Learning styles: Concepts and evidence". Psychological Science in the Public Interest 9: 105–119.

      Note that they don't say that learning styles "don't exist", just that whether they exist or not, nobody has been able to demonstrably improve teaching or learning by conscious application of learning styles.

      Good teaching is better for everybody, regardless of learning "style".

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  30. Before choosing this programming language or that by johnwbyrd · · Score: 3, Insightful

    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.

  31. Don't by 1s44c · · Score: 2

    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?

    1. Re:Don't by CanadianSchism · · Score: 1

      I actually have the same problems every day... Just wrapped differently. A LOT of comments on here have helped me open my eyes a bit. I've taken the more "concerned" responses ("you're too old", "you're not in love with it because you're not doing it") with a grain of salt, and just as another reason to look at my career path more closely. In the end, I just have to do it. That's all there is to it.

    2. Re:Don't by jchevali · · Score: 1

      I second this answer. Being a programmer won't improve you. You can be as good as any doing what you do.

  32. Not Enough Time by jon3k · · Score: 1

    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.

    1. Re:Not Enough Time by CanadianSchism · · Score: 1

      I'm not starting from zero, luckily.

  33. Decide "what" THEN "how" by davidwr · · Score: 2

    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.

    --
    Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
  34. Seven Languages in Seven Weeks by kwerle · · Score: 4, Insightful

    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.

  35. Me, 6 years ago. by GreggBz · · Score: 1
    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.

    1. Re:Me, 6 years ago. by Johann+Lau · · Score: 1

      I wrote about 40% of a pretty impressive game

      Oh, you too? :D

      Seriously though, the cool thing about making a game, creative app or random "effects" is that you're totally free to experiment, while still learning a LOT, especially the higher you aim. Making a simple game or a starfield is easy, but there is just no ceiling to that stuff; while there are usually limits to how crazy you can get with "serious" apps etc.

  36. Niche languages? by Grashnak · · Score: 1, Informative

    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.

    --
    Life needs more saving throws.
    1. Re:Niche languages? by ranton · · Score: 2

      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.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    2. Re:Niche languages? by Grashnak · · Score: 1

      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

      --
      Life needs more saving throws.
    3. Re:Niche languages? by ranton · · Score: 1

      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.

      He didn't say they were bad languages (although he did provide a small criticism of Python), he just said they were niche. Since when does calling something a niche product/market/industry imply that it is inferior? Lamborghinis are definetly part of a niche market, but I sure would trade in my current mainstream car for an exotic sportscar. That said, if I was going to choose to specialize in fixing either Lamborghinis or Fords, it would probably be an easy choice.

      (I am not claiming that Python or Ruby are superior languages either, I am just stating that saying something is a niche language does not imply it is bad)

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    4. Re:Niche languages? by Tough+Love · · Score: 2

      You're wrong about Python, everybody's using it these days. It's probably more common than Perl now. I would say that most scripts that would have been written in Perl and many that would have been written in Bash are now being written in Python.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    5. Re:Niche languages? by Grashnak · · Score: 1

      I'm not saying it's good or bad, I'm just saying he is grossly misinformed if he thinks Python is a niche language. It's used by huge sites and from what I've seen has replaced Java as the language most used to teach programming.

      His whole point was that you'd be better off learning C (seriously, wtf?) and then C++ than Python, and I think that's just demonstrably not true across the board. Sure, there are still lots of areas where a language like C++ is superior, but for the vast majority of people looking to learn programming, Python is a much better choice and increasingly in high demand.

      Personally, I use R, but I'm mostly a data analysis geek.

      --
      Life needs more saving throws.
    6. Re:Niche languages? by ranton · · Score: 1

      While it may be a good language to teach first semester programmers how to program (since it is basically a scripting language), that doesn't mean it is a very marketable skill on its own. Learning Python as your primary scripting language is a great idea, but you better be very proficient in languages that are more commonly used.

      I just got home from work and pulled up monster.com to see if Python actually was more commonly used than I thought. The results in the Chicago area when searching for Python was 43, 64 for C++, and 117 for C#.

      But that isn't the whole story. I looked at all of the jobs on page 1 for each skill (20 per page). Below are the number of actual developer jobs (not general IT) which listed the searched for language as the primary development langauge.

      Python: 1 - 5%
      C++: 14 - 70%
      C#: 18 - 90%

      By assuming the first page is representative of the rest of the search results, the number of open jobs right now for each language are as follows:

      C#: 105
      C++: 45
      Python: 2

      Looks like Python is a niche language to me. It is a quite useful skill, since about half of the search results for Python were for C++/Java/C# developers who needed strong scripting skills. But using it as your primary development language is unlikely to open many doors for your career. I agree that C++ isn't your best choice either, but it is still an order of magnitude more common than Python in the workplace.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    7. Re:Niche languages? by Grashnak · · Score: 1

      Indeed, those results seem pretty conclusive. I yield in the face of my own apparent ignorance :)

      --
      Life needs more saving throws.
    8. Re:Niche languages? by ranton · · Score: 1

      Not so. Ruby continues to become more popular, and is already significantly ahead of JavaScript, .NET (except C#), LISP, etc. I don't see you can call anything in TIOBE's "A" list a "niche" product.

      Ruby has moved down a notch in the list since 2007, but that's just because Objective-C suddenly jumped into the A list, near the top. Other languages like PHP and .NET (again, except for C# in particular) have gone down 2 or more notches during the same period.

      TIOBE's A list just means it at least still has a sizeable niche. I never said Ruby or Python were dead languages. The kinds of languages that it considers B are Ada, MATLAB, and Assembly, among others. And if you rightfully ignore the A status and look at its actual rating of 1.7, you can see that even TIOBE regards Ruby as a niche language. I don't know how you can look at that rating and come to any other conclusion. But I think TIOBE's ratings are usually a bit odd (Javascript and C# being so low is astounding), so I wouldn't necessarily use this low rating to prove my point either.

      TIOBE does seem to agree with the Anonymous Coward above by saying that C/C++ are the best languages to be proficient with. And learning Java and C# are then pretty easy once you have C/C++ down. Objective-C is a much different language than these, although it is also clearly a great skill to have as well.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    9. Re:Niche languages? by ranton · · Score: 1

      Indeed, those results seem pretty conclusive. I yield in the face of my own apparent ignorance :)

      The funny thing is, I actually do think Python is a great language for this submitter to learn. With his skills in IT, a good gateway job into a developer position could be working for a QA department. In fact most of the Python job postings I saw were for a QA departments. And at companys that really take QA seriously, there is little difference between QA and software development.

      He should start learning either Java or C# IMHO, but Python would be a good start and put him into a QA position quickly.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    10. Re:Niche languages? by Jane+Q.+Public · · Score: 1

      Would somebody care to explain to me why I got modded down for merely making factual statements about well-respected, freely available industry data?

      As someone else pointed out (see the post with all the links), several other respected industry sources also say that Ruby is up in popularity, and some of them rank it as high as #5.

    11. Re:Niche languages? by Jane+Q.+Public · · Score: 1

      " But I think TIOBE's ratings are usually a bit odd (Javascript and C# being so low is astounding), so I wouldn't necessarily use this low rating to prove my point either."

      Having been in the industry for many years, I do not find their placement of JavaScript or C# odd at all.

      However, if you want to look at other sources, see that other poster's comment with all the links in it. Many of those sources rank Ruby higher than the TIOBE Index does.

      Regardless, I disagree. Visual Basic .NET, for example, which is below Ruby in the list, is not a "niche" language either, since it can be used for creating general-purpose desktop apps or web pages or services, as the programmer desires. In fact there was a time when Visual Basic was the only game in town if you wanted to program for Windows in anything other than C, and at that time Microsoft was not publishing most of the C API anyway, so if you wanted to use that you were pretty much SOL. Not that Visual Basic has anywhere near the same relevance anymore, but it is hardly "niche".

      In the same vein, Ruby is not limited to web pages via Rails or Sinatra. It is perfectly capable of general-purpose apps, and if you want UI you can use Wx or Qt or Shoes or MacRuby or... the list goes on. Compiled, or at least bytecode-compiled? JRuby, Rubinius, Parrot, or some of the other variants.

      Heck, I did a very nice (at least in the customer's opinion) desktop app in MacRuby last year. Native Cocoa UI and everything. It is a native desktop OS X app in every way.

    12. Re:Niche languages? by Tough+Love · · Score: 1

      You're wrong about Python, everybody's using it these days. It's probably more common than Perl now. I would say that most scripts that would have been written in Perl and many that would have been written in Bash are now being written in Python.

      Which troglodyte in denial modded that down?

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    13. Re:Niche languages? by XcepticZP · · Score: 1

      What kind of crack pipe are you smoking, buddy? There are bad "C programmers", and good "C programmers". And lets face it, most of both groups struggle to cope with object orientated programming, and a host of other simple programming topics because they're still stuck with their old ways. i.e. They will make horrible java/python/C# developers.

      You seem to have more of a gripe with actual bad programmers and somehow attribute this to them only knowing Python/Ruby. That's rather silly, as if had they been taught programming in C/C++ they would have been better programmers. That is patently false. Programming is not for everyone.

      I'd go so far as to say that "C programmers" are the LEAST versatile programmers out there. There way of programming is a hammer, and every single programming language and scenario looks like a nail to them. Humongously long functions, no objects, input/output parameters galore, no separation of concerns, deeply nested logic. Yes, I see this every day. They write horrible, unmaintainable, SUPER FAST little code blobs that no one can understand/debug except them in their little archaic environment. As if speed even matters anymore these days for 99+% of all the programming scenarios out there.

    14. Re:Niche languages? by Half-pint+HAL · · Score: 1

      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.

      But the OP isn't looking for a single language for marketability. He said himself that he's looking to hone his chops and get back into programming after a hiatus:

      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?

      He's looking for a "gateway" drug of a language, and Python fits the bill perfectly. You get to noodle with some of the more advanced concepts in computing without fighting with many of the more eccentric features of some of the languages you mentioned.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    15. Re:Niche languages? by CanadianSchism · · Score: 1

      This probably hits the nail on the head... The thing is (and I may have only glossed over it in the OP) that I DO have a background in programming. Most of my time at Cégep was spent programming... But I graduated from that program in '05 (I'm still a spring chicken, I would hope, at 30). So, while I've been "out" for a while, I do know the basics, would pick up OOP pretty easily again, and be able to continue on building experience. The problem is, there are SO MANY CHOICES to make, which is why I asked the original question. Gateway language fits that scope pretty well, tbh.

  37. JavaScript by DriveDog · · Score: 1

    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.

  38. Be seen or provable by thetoadwarrior · · Score: 1

    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.

  39. user groups, open source by peter303 · · Score: 1

    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.

  40. College by Dennis+Sheil · · Score: 3, Interesting

    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 s

  41. Avoid Perl by jonadab · · Score: 2

    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.

    --
    Cut that out, or I will ship you to Norilsk in a box.
    1. Re:Avoid Perl by Un+pobre+guey · · Score: 1

      After you've written enough Perl you feel like doing it any other way is an uphill battle. Nevertheless, once you grok/accept its peculiarities, Python is a pretty good replacement. You can even be as concise as with Perl after a while. Plus the young'uns like Python more than Perl because Perl's sigils freak them out and make them want to cry.

    2. Re:Avoid Perl by Anonymous Coward · · Score: 1

      Mothers, don't let your young babies grow up to hack Perl code...

    3. Re:Avoid Perl by jonadab · · Score: 1

      Python is one of the languages I tried to learn after Perl. It didn't take. The examples in the documentation were all like, okay, so here's this programming "problem" that could obviously be solved with about four lines of Perl, which you could write in your sleep. So, taking the mandatory object-oriented approach, we've analyzed the problem and broken it down into six major objects, A, B, C, D, E, and F, some of which will require minor auxiliary objects, but we'll get to that later. Now, object C is the simplest, so we're going to write that part first. Here's a half-page of code that almost, but not quite, implements object C. Setting that to one side for a moment, let's have a look at A...

      My mind is probably exaggerating this experience, because it's been a few years. But this is basically the impression I got.

      It also doesn't help that every single program I've ever had occasion to work with that was written in Python has a seriously bad case of what I call Guido's Way Syndrome: "There's exactly one way to do everything, the very first way WE thought of when we implemented it, so if you had in mind to try to configure the software to do anything _different_ from that, you are obviously wrong and must change your mind and decide to do things our way. What do you MEAN some of your mailing list users would like to get both the individual messages and the digests? They should use separate email accounts for that, so they can keep it all separate. What do you MEAN they want to get it all in one account? That's not how WE would do it. Tell them they're WRONG. We will NOT allow a feature to be added to the software to support such HERESY."

      --
      Cut that out, or I will ship you to Norilsk in a box.
  42. 6 years by goaliepride · · Score: 1

    So I see a lot of people saying "it won't happen". Having just gone from a systems admin job at a public school district office for five years where all I used programming wise was powershell within the last year or so (a lot of what you're describing, right?), to a full time programmer job, I wanted to comment. My job search lasted 5-6 weeks and at the end I had two job offers. I had never been a full time programmer, but do have a bachelors in I.T. . What I did was this: I found a few things that needed to be fixed, a.k.a. automated. So some things you'll see are just bad to do manually. For example at my job they had a script some contractor wrote to create student AD accounts at the beginning of the year, but nothing to update for changes. I worked at a military proximity school district so there was a lot of changes during the year. These were done by hand (or not at all). Using powershell I was able to write a program to query our SQL database for current info, check it against our AD database, and make changes if they are needed (new student, change of schools (and drives, groups, etc.). I also made a script (powershell again) to create a tool for our staff to be able to simplify and speed up the creation of new staff members. The thing is this: Learning sucks when it's for an hour a day out of a book when you have my learn by doing needs. By finding a relevant project and taking a stab at it, you'll learn useful things fast. Sometimes reading the super nitty gritty book stuff just puts me to sleep. If the programs I wrote looks intimidating, know they were to me too. You google, then you google some more, then you analyze, incorporate, change, and fit. Some code you borrow entirely, some you create entirely, and a lot of "new" stuff is somewhere in between. I also read seven languages in seven weeks which I liked. Then I got into programming with C# mostly (bought two books), and was fighting between that and Ruby (bought a book). I decided C# was the path for me, then wound up with one job offer C#, the other Ruby, and chose Ruby for it's ease/enjoyment of programming. The future of this looks like web programming with RAILS, though my current position has me automating software verification for medical devices. My advice on switching careers is this. Do something relevant that'll help you learn (and make you look like great to your current employer), after that try a few languages to see which you like, then look at job listing to find what people are hiring for (don't get too intimidated here, which is easy, as employer's "require" a lot they don't necessarily hire based on), and get to learning. Write some examples in your chosen language, make them tight (refactoring, look it up), and start applying.

  43. I did this by fox1324 · · Score: 1
    I went in to college as a CS major, and eventually switched out of it because I was bombing Calc 4. However, I did pick up the fundamentals of OOP and programming in Java. Prior to that, I had been "programming" with things like batch files, IRC script, html, and css.

    Graduated, began working at an internal corporate helpdesk at a large ISP. Started off doing Tier 1/2 stuff. Moved up, gained experience with the server side of things, began doing on-site support for a consulting company a major city. Hated it, and moved back to a corporate helpdesk in the same city. Acquired a macbook and iPhone. Took a liking to the mac ecosystem (i was a windows guy up until then). Decided iOS development was what i wanted to do.

    Studied and programmed in Obj-C with my free time for about a month (free courses from Stanford available on iTunes). My OOP knowledge was still there, and I decided to quit my helpdesk job, study iOS full time, and try to get a job with that. As luck would have it, I was so essential to my helpdesk that they offered to train and transition me to development, in exchange for an additional month at my old position. (2 weeks was not enough time to backfill).

    Went to an excellent bootcamp-style training course which solidified my skills and built up my confidence. Have been programming full-time for just under a year, could not be happier about the switch.

  44. Learn it "The Hard Way" by ndrw · · Score: 1

    Given your requirements of spending an hour a day for the year and learning over that time, I suggest checking out Learn Python the Hard Way. I reviewed it briefly after being pointed that way in a previous slashdot article (about teaching kids programming), and it has basic lessons, strung together over time into more and more complicated exercises. They have a Ruby, C, SQL, and other tidbits available as well, if Python doesn't seem like your kind of thing.

    Cheers,
    Andrew

  45. Read "Programming Pearls" by snowtigger · · Score: 1

    This book teaches you to think like an experienced programmer.

    It's a great way of refreshing your algorithm skills and an easy ready compared to other (heavier) algorithm books.

  46. VERBAGE! by TiggertheMad · · Score: 1

    Gentlemen, I've actually trained a lady under me...

    HOT. Please post pics.

    --

    HA! I just wasted some of your bandwidth with a frivolous sig!
  47. Some advice from someone in a similar situation... by xyourfacekillerx · · Score: 2

    Just don't jump into projects involving involving the technologies (i.e. platforms and tools) of the now. The number of subjects you have to "learn" about are so fragmented it's an utter nightmare. You'll get lost, feel incompetent, and give up; I've seen it a hundred times. What you are going to do is reinforce and awaken your incommunicable knowledge of programming fundamentals; not in a formal, theoretical way, not with simple practice (though consistent routine is required to turn this into a habit again). Like the way most of us learned in high school or whatever when it was just about having fun.

    And no this doesn't sugg starting with a beginner or inermediate book. You'll get bored because the concepts will vaguely remind you of things you already kind of know. It's like muscle memory I guess.

    So you were mostly right, starting of with relatively less cumbersome languages, environments and tools related to technology you are familiar with. Powershell is really cool and that's what got me back into programming. I wrote myself a dozen cool utilities, many of which already existed, just to encourage my ingenuity and creativity.

    One last tip. Comment and comment well instead of doing design docs detached from the code. Treat your commenting and coding as a sort of tutorial; you're showing yourself and others how to accomplish tasks and solve problems. If you get distracted by planning and design in documents outside your code, you may feel less enthusiastic about completing a project, since that is the most time consuming and least interesting part of programming. You can get formal and theoretical later on.

  48. There's only one way by lolococo · · Score: 1
  49. A dirty little secret by Eskarel · · Score: 1

    The dirty little secret of the programming world is that the vast majority of jobs aren't really all that different than what you're doing now. Sure a few folks work in C on the bare metal, and a few people do some really high level stuff for companies like Google or Microsoft, but the vast majority of people working as programmers are making LoB apps used by maybe a few hundred people accessing a dozen or so tables from either an existing LoB system or a custom database. For the most part these apps are accessing human readable numbers of result sets so unless you're doing something really silly you won't actually lock the tables and you won't actually give a rats about getting your performance down an extra couple of milliseconds because it'll all just be noise lost in the http latency, and you will spend the vast majority of your time dicking around with making the front end the right colour mauve for marketing and you'll be doing that in, guess what, html. You'll also in a lot of cases be handing second tier support(if you're lucky) for your own apps. In then end your understanding of business processes will be more useful than your programming knowledge, which if you have the knack will come and if you don't won't. Don't be scared by all the crap Slashdotters like to post about their jobs where they spend 8 hours thinking and 10 minutes doing or where they need to understand sql incredibly well to avoid problems(in most languages these days you won't actually touch raw sql anyway)

    Fundamentally though, your plan will fail, you can't learn programming an hour at a time because you can only learn programming by doing it and an hour will just about get your IDE booted up and allow you to work out where you left off the day before.

  50. BlitzMax by blueapples · · Score: 1

    Try BlitzMax (http://blitzmax.com/Products/blitzmax.php). It can do GUI, console, games, even CGI. Nice OOP language with hundreds of libraries and east C integration. It made me love programming again, the way I did back when I first learned. It's a great language to bang out a quick tool or idea.

    --
    www.blueapples.org
  51. Ignore the Python people by gravis777 · · Score: 1

    I am going to get marked "troll" for this, I know, but Python is really worthless unless you are working in an IT house. The language is not that popular outside of the open-source community. The language has too many drawbacks - its SLOW (as it is not compiled), and any major revision to the language requires you to either rewrite your code or have 3 or 4 different versions of Python on your machine. Don't get me wrong, Python does have some uses, but unless your company specifically asks you to learn it, I wouldn't bother. It's probably going to do nothing for you on your resume.

    Probably the 4 best things you can learn are Pearl, PHP, SQL (not really a programming language, I know), and .Net (oh, here come more troll comments). Those look really good on resumes, and seem to be the things that the majority of businesses are using.

    If you plan to go into a software house, also learn C and Java.

    HTML5 and CSS may also be good things to brush up on if you want to do web / app stuff.

  52. Choose the field, then the language. by Qbertino · · Score: 1

    Choose the field, then the language.

    In terms of the field, there are two basic things you can aim for: One of the popular fields (Web, Mobile, Games) or the big-bucks||safe-job fields (ERP, non-trivial Databases (big-table or big-company), *nix maintenance, embedded systems, specialized vertical markets, Enterprise Client/Server, etc.)

    It depends on what you want to do.

    Once you've chosen your field, you choose your technology and then your PL. For Web and Mobile, using anything else than free open source technologies these days is silly and pointless, for Games and all the other stuff it probably will be some proprietary closed source stack/technology.

    The PL itself should be an official independant standard either way. Which PL it will be in the end depends entirely on the choices made above.

    If you want to make a solid and future-safe switch, I'd stick to the chosen field and become an expert. Better jobs that way. ... Unless the technology goes entirely belly up. Happens rarely, but was the case just recently with Flash/AS3 - which, for example, got me by the balls, since AS programming was my main source of income until two years ago.

    Good luck.

    My 2 cents.

    --
    We suffer more in our imagination than in reality. - Seneca
  53. Re:On the Taxpayer's Dime? by CanadianSchism · · Score: 1

    It'd be after, and unless you're in Canadia, then no. I may work in the public sector, but I don't work like most of them do.

  54. mobile mobile mobile by farker+haiku · · Score: 1

    What type of phone do you have? Android? Learn java. Not the type of Java these people are talking about, I mean learn android. Have an iPhone? Learn iOS dev stuff. Do it every day for a year. Show it off during the interview. You'll learn something that is in high demand and you'll get the job you want.

    --
    Your sig(k) has been stolen. There is a puff of smoke!