Slashdot Mirror


Ask Slashdot: Stepping Sideways Into Programming?

thundertron writes "I'm a 28-year-old, non-technical, UX-focused Product Manager at a startup. Overall I'm very happy with my work, but I'm endlessly frustrated that I'm not committing code. I love the few occasions where I commit some front-end code or put together a fairly sophisticated query, but if the onus were on me to put together an entire site my hands would be tied. I've thought about going back to school (or even taking time off from my career to take courses) in CS to immerse myself in programming. The flip side is that I know I won't want to do that forever — I won't want to be employed primarily as an engineer because I like too many other aspects of the business. My best option seems to be to dive into Ruby on Rails and just pick up what I can in my spare time. Perhaps others in the Slashdot community have some suggestions/recommendations?"

101 of 152 comments (clear)

  1. Try Not To Code by WrongSizeGlass · · Score: 5, Insightful

    One of the most important aspects of a PM's job is objectivity. Once you're part of the team contributing code you'll face the difficulties of having to kill some of your own ideas or contributions. It's never easy to be on both sides of the line when your dealing with more than a few people on a project.

    1. Re:Try Not To Code by nine-times · · Score: 5, Interesting

      I agree with this-- you need enough knowledge to judge the work of the people you're managing, but often enough, it's detrimental for managers to "pitch in".

      I'm sure there are people here who would disagree. If you're the person being managed, sometimes it's nice to see your manager pitch in and help. They're suddenly doing "real work". And as a manager, sometimes it's helpful to experience first-hand the difficulties that your subordinates are facing. It gives you perspective, and it gives you a better grasp on how to help your subordinates.

      On the other hand, one of the primary jobs of a manager is to be detached from some of the nitty-gritty details and to be keeping an eye on the big picture. It might be that while everyone else is obsessed with making their code perfect and efficient, your time is better spent looking at the product as a cohesive whole and figuring out whether you're actually achieving your goals. It's a challenging job in its own right, and it's a job too often neglected.

    2. Re:Try Not To Code by callmehank · · Score: 1

      Some of the best PMs out there are technically literate people who also happen to be a resource to programmers. Admittedly, that's rare, but being at least a domain expert in the software project they manage is what PMs should strive to be, rather than being simply trackers and schedulers who report to management.

    3. Re:Try Not To Code by gl4ss · · Score: 1

      but if he is just a project manager who doesn't understand code - then he is in shit if shit hits the fan, just being an interchangeable project manager who can fill excel isn't really that rare so any job he would apply for would have several identical on paper people applying. maybe he wants to avoid ending up as a phb. anyways, my advice to him would be to start with something else than a "ready to run" solution. he could do his own very simple web server in c++(or some basic, python, whatever, anything that makes him do some code that can react to tcp connections by sending some requested data back) for starters for example, it's not that much that the server needs to do for a hello world response, and then go further from that by adding a database connection. and any coder ends up killing some of his own ideas - if he as a project manager has no clue if the ideas are handy for their project or not, he can't call the shots and is a manager in title only and could very well mistakenly sign up for an overkill super expensive database solution for something they could just as well use something like sqlite or something homebrewn.

      --
      world was created 5 seconds before this post as it is.
    4. Re:Try Not To Code by donscarletti · · Score: 3, Insightful

      Coding is sometimes the only way for the manager to understand the problem being faced. Also it is sometimes a good way for the manager to communicate with the team. We had a project manager who decided to implement a small feature that everyone else said couldn't be done in a short timeframe. Firstly, he proved it could be done, secondly through this experience, he then understood enough of the system to not keep asking stupid questions and continue sounding like a retard in meetings. Turned out he was a shit coder, but who cares, we just got someone to re-do it who knew what he was doing once the basic solution had been prototyped. The only person annoyed at him was the CTO, but he was just a relic of the era that systems were so simple, you could write them correctly the first time.

      I would say that a project manager should not be making personal contributions. If he is a craftsman who loves his code, then that counts. But mostly the worst thing for objectivity is not code but contributing concepts, designs, theories and of course personal preferences and experiences.

      --
      When Argumentum ad Hominem falls short, try Argumentum ad Matrem
    5. Re:Try Not To Code by metlin · · Score: 1

      I couldn't agree with this more. And especially as a UX focused PM, I cannot stress how important it is that you step away from the code and look at the UI and how it really looks in an objective, customer-centric fashion.

      I'm the co-founder of a startup (shameless plug: Deal Umpire), and one of our hardest problems has been getting good UX people. I wouldn't trust most backend developers with good, usable design because they assume that the users should be "smart enough" and do not realize that most websites aren't usable enough.

      UX is the most important part of a site because that is what your customers judge you by -- and it simply does not matter if you can contribute to code or not, as long as you get the big picture.

      So, seriously -- stick to your core competency, and to hell with the coding. Having interviewed developers, PMs, and UX designers, I have to say that you probably bring a very unique skill set that most companies would love to have. Keep that. There's nothing magical or spectacular about coding.

    6. Re:Try Not To Code by AmberBlackCat · · Score: 1

      I disagree. I think everybody who gets do decide what will be done should have to actually do it themselves for at least a little while. Because every plan seems smart while you're sitting in a leather chair, playing solitaire.

    7. Re:Try Not To Code by TheRaven64 · · Score: 2

      I wouldn't trust most backend developers with good, usable design because they assume that the users should be "smart enough" and do not realize that most websites aren't usable enough.

      The simple solution here is to put your most talented developers to work rewriting your customers.

      --
      I am TheRaven on Soylent News
    8. Re:Try Not To Code by im_thatoneguy · · Score: 1

      I would say it's somewhere in between.

      A larger part of being a manager is communicating and programming is one of the only languages on earth that is 100% clear since it compiles and does exactly what you told it to do.

      I like to write "Psuedo-code" or create a primitively scripted demo so that I'm not just talking about how the user will interact with the application--I can show it.

      I would say learn enough, on the side, on your own time so that you can create prototypes but don't worry about contributing project-code. Your job is to contribute direction. If you haven't gone through years of school or immersed yourself full time for months on end learning the nitty gritty you'll just be a slow handicapped developer contributing questionable code. But if you can script well enough to prototype and understand the concepts of programming you can find creative ways to get around the limitations your developers see.

      By nature people are kind of lazy. They aren't anxious to come up with ideas which entail a lot of extra work. As a director or manager it's your job to find the best possible solution and if you aren't responsible for actually doing it you're far less likely to be blinded by the "easy way out". Which isn't to say it'll end up being hard; good developers can often find an easy and creative way to implement something which at first glance is impossible.

    9. Re:Try Not To Code by donscarletti · · Score: 1

      Well, I would hope very much that he is not doing the duel role of PM and UX _designer_, that would be a serious conflict of interest. Designers in particular need a lot of careful oversight and critique about whether what they are doing at least passes the coworker test in intuitiveness and ease of use. Having a project manager with an understanding of user experience is great in this case since it at least gives another person to review whether something is actually as intuitive as it is in the designer's mind.

      Coding is extremely important to a good designer anyway. Not necessarily efficient or elegant code like a career programmer should write, but quick prototype code. Firstly, to express their vision in a very concrete way, if you can clarify and express your ideas in detail, writing code is pretty trivial. Secondly to allow an interface to be quickly _tested_ by coworkers and if they are lucky by focus groups of typical users. Frequently I have seen designers who consider what they do to be separate from coding tend to be limited to re-skinning what the programmers have designed rather than being able to design interactive experiences on the own.

      --
      When Argumentum ad Hominem falls short, try Argumentum ad Matrem
    10. Re:Try Not To Code by wvmarle · · Score: 1

      For a manger I think it's very useful to at least be able to do the basics of what the people they manage do. I mean: if you manage coders, it'd be very helpful to be able to code yourself. Most likely not that well, that doesn't matter, as you're not the one coding. But understanding what a coder is doing, the tools they use, how they use it, why they use it, where the typical problems lie: that should be helpful. When talking to your coders about their work it helps understanding why they're doing things the way they do, and to have more realistic expectations of what can be done and what not.

      But don't expect to be as good a coder as they are - you're manager because of your management skills, managing coders because you know about coding. Coders are coders because they know how to code stuff, and how to code it well.

    11. Re:Try Not To Code by wvmarle · · Score: 1

      On the other hand, one of the primary jobs of a manager is to be detached from some of the nitty-gritty details and to be keeping an eye on the big picture.

      One of the other main jobs of a manager is to keep their subordinates (in this case: their coder) detached not as much from the "big picture" but everything that goes in it: legal issues, marketing, planning deadlines, decisions on graphical design, UI layouts, features to include (and to exclude), etc.

      A coder may give their ideas for features and so, but in the end it should be the manager that tells the coder "this is how it's going to look like, these features have to be included, now make it work like that". To the coder to implement just that. And to the manager again to oversee that the coder is actually implementing what they want them to implement.

    12. Re:Try Not To Code by syousef · · Score: 2

      Most importantly the project manager got your respect, and I dare say the respect of others on the team. Tech staff hate it when they have a manager that understands nothing and couldn't code their way out of a paper bag. Proving that he wasn't one of those would have been very good for his reputation and team morale. Pity he seems to have made the cardinal mistake of annoying those above him. Did he end up being fired or put aside? Then the team would have said "You know old so and so, he wasn't so bad. Not a great coder but at least he proved he could do it".

      Personally I think managers should pair program with an experienced team member for at least half a day about once a month. I'm in the minority.

      --
      These posts express my own personal views, not those of my employer
    13. Re:Try Not To Code by pandrijeczko · · Score: 1

      Yep, as a techie engineer & consultant for the past 30-odd years, a skilled Project Manager is a great asset to have on a project.

      I've got good communications skills and have no problems standing in front of customers, but I've tried to manage smaller projects myself purely from my own skills on many occasions - most of the time it's been fine, but on others it's got into a stalemate position until I've pulled in a PM to help sort out the tangle and get it moving.

      So don't try to straddle both skill areas - they're mutually exclusive.

      --
      Gentoo Linux - another day, another USE flag.
    14. Re:Try Not To Code by Jaruzel · · Score: 1

      Short and Anonymous this may be, it's still one of the most insightful statements in this whole comment thread.

      --
      Together, We Can Make Slashdot Better. I Do NOT Mod ACs. - Check Me Out
    15. Re:Try Not To Code by swalve · · Score: 2

      This is one of the big mistakes in the IT field, I think. Coders *should* know the big picture stuff, so they don't start going down unsustainable paths. My boss is one of those "insulator" bosses, and while he does it out of the belief that it is the right way to do things, it leads to problems. Grown ups *want* to know where they fit into the bog picture.

    16. Re:Try Not To Code by Anonymous Coward · · Score: 1

      As a former UX product manager (3yrs out of a nine year PM stint) I'm in the camp that believes you have to understand what your product is about 'under the covers'. Did I code? No. Teach full on UNIX sysadmin & tools courses at one point - you bet. A PM job, is both strategic and tactical - including such things as inputing to design requirements, as well as (in a smaller company) tracking the competition and their competing product functionality. Understanding the code, to my mind, is a reasonable objective. Do all PM's go to that level - I suspect not. I've heard very successful Marketing Managers boast that they don't need the level of knowlege you are asking about. Lastly - if you plan to move up and on - my own example might help: I made a concsious decision to back away from getting my hands dirty. Too much going on - too much of the low level detail to ever be expert - while management value the ability to deal with the Tech-Heads - your clients will value your ability to talk in a language they understand - and appreciate the ability you have to frame products in terms of business applicability (or consumer usage, if that's your product set). There is a fortune to be made for anyone that can stand with a foot in each camp.

  2. Not Ruby by Anonymous Coward · · Score: 3, Interesting

    Go Python.
    http://diveintopython.org/
    Then if you feel you need more jump into Perl. With an understanding of those two languages you should be set to pick up (just about) any other languages easier.

    Just my opinion.

    1. Re:Not Ruby by inKubus · · Score: 1, Insightful

      Yeah, Ruby is not what I would do either. Ruby is dying fast. While I'm not a huge Python fan, it's not a bad language. If you're on the UX side you should look at learning HTML5 and javascript libraries like jQuery and javascriptMVC. In my opinion the content management side of the business is going to be where we all end up long term, with most "programming" being telling the CMS what to do and what modules to route documents to. So learning some standards like CMIS, OData, GData, and some big document management systems like Alfresco will get you much further than "building web applications". As much as the designers would like to brainwash you that it's all about the UI (and designers are very good communicators so they can), the reality is that UI is a solved problem. At Fortune 1000 companies, you're not going to see much "programming" in the end user stuff. In general, it's middleware. Your career will be much longer if you learn about the data side, and not at a programmer's level but at an analyst level. The number of analysts will be 100 times the number of programmers in 10 years.

      --
      Cool! Amazing Toys.
    2. Re:Not Ruby by Tacvek · · Score: 1, Insightful

      I'd dispute that ruby is dying. Ruby is a well designed language, and works just fine. It will remain around, although when it reaches steady-state it will probably not be a particularly popular language anymore.

      What is dying is Rails. Rails has been one of the largest driving forces for Ruby. And make no mistake, it is an excellent web MVC framework. Consider that most web MVC frameworks that have come since rails have incorporated at least one component of Rails. For example Microsoft's ASP.NET MVC comes with a routes system inspired by Rails, and has a definite convention over configuration design.

      Rails is dying in large part because the MVC frameworks of other languages are now comparably easy to use, meaning that the advantages of using Rails frequently do not overcome the disadvantage of learning a new language, namely ruby.

      --
      Stylish sheet to fix many problems in Slashdot's D3: https://gist.github.com/801524
    3. Re:Not Ruby by digsbo · · Score: 1

      Not Ruby. I would go with Microsoft C#/.Net. I know, I know, I'll say this on /. and everyone will mod me down, but MS dev tools have a history of being accessible to those with business backgrounds. That's what VB was, originally, a tool for business people to put together something that worked. Now C#/ASP.Net is a great deal more sophisticated than VB 1.0, but there are still the training wheels available for people who might not be ready to build a site from scratch. I know a few people who get started w/ basic HTML, learned ASP, and eventually became full-fledged OO developers, all in the MS ecosystem.

      If you were to go Ruby or Python, I think the chances are higher that you'll give up, but it's also slightly possible you'll develop into a full-fledged dev much more quickly (moreso if you go w/ Python).

    4. Re:Not Ruby by telekon · · Score: 4, Informative

      Yeah, Ruby is not what I would do either. Ruby is dying fast. While I'm not a huge Python fan, it's not a bad language. If you're on the UX side you should look at learning HTML5 and javascript libraries like jQuery and javascriptMVC.

      Funny, after attending RailsConf last month, I'd say that reports of Ruby's demise are greatly exaggerated. In fact, if your perspective comes from a UX-oriented side of things, I couldn't imagine a better language/framework for you to get started with than Ruby/Rails.

      It's only moving more in that direction. Rails 3.1 will include jQuery as the default JS library, supports CoffeeScript and Sass by default, and the new asset pipeline makes it easier than ever to build out your app with a backend REST API and do the heavy lifting on the client with MVC frameworks like Backbone.js

      What you should learn first depends on your goals. Are you just curious about programming? Or do you really want to make a shift in your career path? If you work in a Ruby/Rails environment, and really want to get into the coding where you work, then that's the obvious choice. If you're completely new to coding, Ruby is also a marvelous first language to learn. I started with C and Perl, and I WISH Ruby had existed then.

      If you just want to understand the dev side of things better, you could start by learning the basics of web development from something like Code School. Their Rails for Zombies course is a great place to start, and better yet, it's free. If you want to get your Ruby up to snuff, try Edge Case's Ruby Koans.

      IMHO, much of the Ruby-hating is jealousy. If you're new to programming, you might be unfamiliar with holy wars. Coders develop religious issues over everything from languages, to tooling, to operating systems. You'll have to decide for yourself where you want to start. But Slashdot opinions are probably not the way to make that decision. My advice: Pragmatic Programmers has a very basic intro-to-Ruby book called Learn to Program. It might be too basic, it might not. But then you can check out Seven Languages in Seven Weeks and decide whether you prefer Ruby, Scala, Erlang, Clojure, etc.

      I heartily encourage you to learn to code, whether you find it professionally or personally rewarding. Maybe you can contribute to some open source projects, even if you decide it's not right for your career. Either way, have fun with it.

      In interest of full disclosure, I'm a committed Rubyist. We tend to be opinionated loudmouths. But also beware the Pythonistas. They tend to be disgruntled contrarian CS students.

      --

      To understand recursion, you must first understand recursion.

    5. Re:Not Ruby by dkf · · Score: 2

      Ruby is dying fast.

      That's some of the most robust "dying fast" I've seen in a while. How many decades do you think we'll need to wait before ordering the hearse?

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    6. Re:Not Ruby by aztracker1 · · Score: 1

      I think that jumping into web application dev is something taken too lightly... if you are coming from a UX/Designer background I would encourage to become very good with hand-coded HTML, CSS (start with 2, then 3)... Then start with some JavaScript reading (self-plug). Only then would I start digging into the backend, and would suggest the language(s) your company is using first.

      If you try to do html + css + javascript + backend language + backend framework + persistance layer (SQL) all at once it becomes overwhelming, and you'll be very slow to master anything or become proficient with it. There are a lot of layers, parts, syntax and languages that go into web application deelopment... short of using node/express/mongo on the back end very slow learning as well.

      Though node and mongo would be a shorter learning path, would still suggest a strongly typed language and some SQL variant after you get the front end and JS down. Mainly for knowledge and exposure.

      --
      Michael J. Ryan - tracker1.info
    7. Re:Not Ruby by wjcofkc · · Score: 1

      The book seems to stop in 2004 which is Python 2.3, I believe. There have been a lot of changes since then, especially moving to 2.6. Perhaps someone could recommend a better free online resource or a more up to date book?

      --
      Brought to you by Carl's Junior.
    8. Re:Not Ruby by telekon · · Score: 3, Funny

      Dude, yeah! Were you the guy with the faux-hawk and glasses?

      --

      To understand recursion, you must first understand recursion.

    9. Re:Not Ruby by inKubus · · Score: 1

      If programming languages are indeed religions, as the gp posted, then Ruby is the equivalent of mindless evangelical Christianity. Everybody's doing it man, you don't have to do anything but use Ruby on Rails and you'll be saved. PFT! But I guess people have to learn on their own. If that works for you, great, but I'm not going to hire you for my team where we typically use 5-6 different languages a day, none of which are anything like Ruby, and which Ruby fails to prepare you for.

      --
      Cool! Amazing Toys.
  3. advice by eexaa · · Score: 2

    The advice I give to everyone having trouble to get a 'whole project' running is to write a simple game. Like, say, something from Spectrum, or arkanoid, or a zombie pwning game. Nearly everyone started on it, it covers a pretty large amount of problems to solve, and it's fun to do.

    1. Re:advice by Oxford_Comma_Lover · · Score: 1

      If your first real project is in C++ and the beginning programmers don't have major issues with it, you're already ahead of the game. In undergrad we once did a project with four CS upperclassmen, and two of us discovered after the project began that the other two really had no idea how pointers worked.

      --
      -- IANAL, this isn't legal advice, and definitely isn't legal advice for you. Also, Squee!
    2. Re:advice by FrootLoops · · Score: 1

      In undergrad we once did a project with four CS upperclassmen, and two of us discovered after the project began that the other two really had no idea how pointers worked.

      Scary. I know of old VB6 programmers who knew how pointers worked!

    3. Re:advice by wvmarle · · Score: 1

      I have never written a game, yet I have written several other pieces of software. Just because I enjoy coding doesn't mean I enjoy making games.

      Well here my curriculum vitae when it comes to programming. It will sound familiar for many people at my age (late 30s).

      I started off when I was about 10, 11 years old with Basic. That's nearly 30 years ago now. I did quite interesting things there, once I rigged up a shaking coil to my MSX home computer via the joystick port, allowing people to time their game, and enter their name for high score. That's the nearest I came to writing a game, and that was for one night only. It was a success, no-one had ever seen something like it before.

      Later through secondary school I didn't program, then in college had to learn Turbo Pascal as a side subject, which was dead easy to me and some other people with coding experience, and totally incomprehensible for the other half of the class. We did some quite interesting things with it, such as controlling a small car.

      And then some eight years ago Python. A very easy to learn language, concise, I love it. With the help of GTK and Glade is making a GUI a breeze, it's actually fun to do. As soon as you understand the basics, signals and so, it's all so easy. It's now my absolute favourite language. And this one I'd recommend anyone who would want to learn coding, and wants to be able to write simple to semi-complex projects. It's a scripting language, so not as fast as compiled languages, but on modern hardware for most applications fast enough.

      Shortly after I used Python also to power my web sites, and in the process picked up MySQL. Now SQL that's a totally different animal when it comes to programming. I can write simple queries, but nothing fancy at all. I just don't understand the way it works well enough - this mainly due to lack of experience and training. I just never bothered to learn it, as it's not necessary.

      Half a year ago I started playing with Android, and thus had to learn Java. It's become "yet another language" syntax-wise. The basics of programming are the same across languages after all. It's fun, but I'd love to be able to use Python there. Java may be a technically better choice (I trust Google on that they don't make such a choice over one night of ice), it's missing the ease of programming Python offers. But I manage quite well, I have to say.

      Well to come back on the "write a game" advice: that's not my advice. I'd write something that I need - an itch to scratch. I learned programming first out of curiosity, later expanded on that when I felt the need. I needed a fax manager - I wrote one, and learned Python to do it. I needed a web site - I wrote one, and leaned html and MySQL for it. I wanted to write an Android app, and learned Java and Android platform for it. I've no intention to learn a new language just for learning that language, but if the need is there I will.

    4. Re:advice by swalve · · Score: 1

      Pointers are a fad. What kind of fucking cheap-ass computer doesn't have enough memory to pass the contents of an entire dataset around as variables? Sheesh.

  4. CS != programming by cheeks5965 · · Score: 5, Insightful
    first, I think it's awesome that you want to get more education. But you need to keep in mind that there's an enormous difference between computer science and programming (CS!=programming). If you want programming experience or new languages then there are many avenues (self taught and other).

    CS is mostly abstract - algorithms, math, etc. you could get a good CS education without needing a computer. It's like the difference between medical school and being a doctor. If you want to be a better doctor then going back to med school wont' make any difference.

    Hope this helps. Good luck!

    --
    -- Flame me and I will happily flame you back. Bring it!
    1. Re:CS != programming by ranton · · Score: 1

      Sometimes when I hear comments like this I am reminded of IT people complaining about the terms "hackers" and "crackers" being used incorrectly. And like the hacker terminology debate, it isn't slashdotter's opinions that matter. In this case it is most likely hiring managers and college administrators (at least its not the press this time).

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    2. Re:CS != programming by FrootLoops · · Score: 1
      My CS program split pretty well into theoretical and practical halves. Also, some of the less useful courses were just specialized--like Compilers, or Computer Graphics. Your med school analogy,

      If you want to be a better doctor then going back to med school wont' make any difference.

      doesn't hold up: the hypothetical doctor had already been to med school, while the person who asked this question hasn't had a CS education.

    3. Re:CS != programming by EnsilZah · · Score: 1

      How about this analogy instead?

      I'd like to cook a fancy dinner once in a while, should I study biomolecular chemistry?

    4. Re:CS != programming by SanityInAnarchy · · Score: 1

      If you want programming experience or new languages then there are many avenues (self taught and other).

      Granted, but I'd be slightly wary of being self-taught, and I can't stress this part enough, learn Ruby before Rails. Same goes for any language -- learn a language well, and learn the fundamentals of programming, and only then should you consider picking up a framework, particularly one which does as much for you as Rails.

      CS is mostly abstract - algorithms, math, etc.

      Depends where it is. The program I'm going through now had us doing actual programming for at least the first two years. The harder stuff is going to be the theoretical components (math, algoritms, etc), but that's certainly not the extent. I mean...

      you could get a good CS education without needing a computer.

      The better CS programs simply will not allow this. Aside from that, my non-CS courses are starting to require computers for other reasons, also.

      It's like the difference between medical school and being a doctor. If you want to be a better doctor then going back to med school wont' make any difference.

      But before you become a doctor, you need some medical school.

      --
      Don't thank God, thank a doctor!
    5. Re:CS != programming by FrootLoops · · Score: 1

      It's a little extreme, but replacing "study biomolecular chemistry" with "go to culinary school" gives a high quality analogy, both for the person who asked this question and in general. I imagine most good cooks have gone to culinary school, just like most good coders have a degree in CS. To dabble in cooking a nice meal you certainly don't have to go to culinary school either.

    6. Re:CS != programming by next_ghost · · Score: 1

      So? Coding isn't programming either. There's only so much you can learn about programming without diving into the theory behind it. I know that from personal experience. I've started learning coding from books and by hacking together simple programs when I was 10 years old. But taking a CS degree still made a huge difference in the quality of my code.

  5. Backwards? by SuperCharlie · · Score: 1

    Seems like a step backwards in the food chain... Most coders would love to get to any manager status.

    1. Re:Backwards? by Anonymous Coward · · Score: 2, Funny

      clearly someone who has never been a manager

    2. Re:Backwards? by Anonymous Coward · · Score: 3, Insightful

      Clearly someone who has never been a coder.

    3. Re:Backwards? by yarnosh · · Score: 4, Informative

      Only if they're seeking money. A programmer who actually cares about programming doesn't want to give it up. Personally, I think technical lead, project manager, or architecture is about as far "up" as I care to go in this business. Beyond that, you're divorced form the code and that's just no fun.

    4. Re:Backwards? by OddJobBob · · Score: 1

      How does it go again?
      Those that can do
      Those that can't do teach
      Those that can't teach (project) manage

    5. Re:Backwards? by SuperCharlie · · Score: 1

      I guess Im old and jaded.. Ive worked in a few corpratocracies as both coder and manager, among other things.. and from what Ive seen, there is a hall of programmers who eventually get ridden into the ground with a manager that takes all the glory and makes sure to point out the individual errors. The manager climbs the ladder on the backs of the programmers and in the void a programmer moves up to repeat the cycle. Maybe its just my experience, but at 28, this guy has a lot to learn about the real world..and I walked away to do it for myself.

    6. Re:Backwards? by digsbo · · Score: 1

      Not me. For another 20% to 30% in pay, I end up working about that many more hours, and spend an average of 6-12 months between jobs instead of 1-3 months. And it's a lot easier to convince an employer you're willing take a pay cut to get an offer than to step back to development from management.

    7. Re:Backwards? by Stiletto · · Score: 1

      Bingo. Don't do it. Why take such a step backward in your career? As someone who's spent his career trying to go from code-monkey to management, I say: You're insane.

      Why would you give up a career with upward potential, the opportunity to be creative and design, to actually shape and mold a product, not to mention the money, for a "career" where you are merely implementing, filling in the lines with color, working 60-80 hours a week, where your salary flatlines after 4 years, and you're unemployable after 35?

    8. Re:Backwards? by syousef · · Score: 1

      Only if they're seeking money. A programmer who actually cares about programming doesn't want to give it up. Personally, I think technical lead, project manager, or architecture is about as far "up" as I care to go in this business. Beyond that, you're divorced form the code and that's just no fun.

      I've actually turned down being groomed for management "one day" after a brief stint as an acting manager. I told them I'd do the work any time they were in a bind, but not interested long term. In a way I've shot myself in the foot should the coding work ever dry up but I don't think I could be happy as a manager. One interesting effect was that people seem to feel a lot less threatened by me - they know I'm not the good technical guy that could "beat them" working my way up the ladder, and they know I'm putting forward technical solutions on their own merits, not in order to big note myself.

      --
      These posts express my own personal views, not those of my employer
    9. Re:Backwards? by wvmarle · · Score: 1

      There is a big difference between skill set needed to be a coder, and to be a manager. Many great managers will make a poor coder, and the other way around. Even if said manager is managing a software project.

  6. Programming Fundamentals by Anonymous Coward · · Score: 2, Informative

    I highly recommend this course. It's from stanford and has all the lectures online. It teaches you how to think about programming.
    http://see.stanford.edu/see/courseinfo.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111

  7. Becoming a programmer by Aladrin · · Score: 2

    At my previous job, we had a CSR that we found had an aptitude for testing. So we made him a tester. He soon started to feel like you do: that he wanted to be coding.

    He started learning to code on his own time, in the language we were using at work. He found someone in an IRC chatroom that needed some coding done in that language, and he helped them. A couple times. And a few other people.

    And most importantly, he told the other programmers he was doing this. We cheered him on, and we told the bosses. He was eventually tried in-house as a programmer, and turned out to have a good aptitude for it.

    In just a few years, he was just one of the team and not 'the guy that came from CS, can you believe it?'.

    In short, start learning and using the language on your own time, and tell people at work about it.

    --
    "If you make people think they're thinking, they'll love you; But if you really make them think, they'll hate you." - DM
  8. Introspection before school by mkawick · · Score: 1

    Your options are perhaps limitless. I would suggest that before you decide on anything, ask yourself this one simple question: do you like solving tricky problems... brainteasers.. jigsaw puzzles? Programming is a lot like all of these activities combined and "on steroids."

    If you think that you like these then learn Javascript. There are some excellent O'Reilly books on the topic and try doing the fun stuff like drawing graphics in HTML5. By the time you've done something fun, you've learned a ton of the language. Once you have these basic concepts down like functions, variables, structure, and reuse, then you are ready for formal training.

    Do not go back to school until you have at least established that you like this sort of thing, that you can be good at it, and that it can compliment your career (or at least make a fun hobby). It'll just waste your money and your time and speaking as a former University professor, it is disheartening to see a student struggle who simply doesn't have the aptitude or interest.

  9. Cliche... by Anonymous Coward · · Score: 1

    Everyone who designs wants to develop. Those who normally wish to develop, later find some hidden thirst for art. Those who get married wish they didn't a year later and those who have a car usually decide they need a truck.

    It's the human factor. It has nothing to do about some technical desire and if you can find a way to balance these weights of desire, you'll find the key of living an acceptable life.

  10. comitting code versus programming by fermion · · Score: 1
    First, as an engineer you have problem solving skills that many of the population does not have. After all, that is what engineering is about, working the problem, be it finding parts, or working on traffic flows, or calculating impedance's, or calculating stress.

    That problem solving skill is critical to programming, which, at a high level, may not involve committing code.Even before writing any machine readable code, there is a great deal of design work to be done. Understanding the problem, building prototypes, decided if those prototypes are suitable given available resources. For instance, depending on the language one uses the design in going to be different. A couple years ago I had the experience, in a class for high school students, watching a recent computer science grad trying to implement a program in Robo Pro, which has no variables. Watching him trying to fit the tools to the his solution, rather than the other way around, really made me realize why senior managers were needed to help the new programmer.

    So this is what I would say. Programmers and codes are now widely available. If one wants to get a CS degreee and become a software developer that is great. One can look at the states of software and hardware and know that we always need more good engineers that can create excellent products. You may already be there. Short of this there is benifits to knowing the languages and processes your programmers are using, not becuase you are going to contribute code, but because you then know what kind of requests and requiments are appropriate given the constraints that are being made by the language and processes. For instance Ruby on Rails is very high level language, and as such imposes many more constraints to how a web site is developed than if that website were developed in lower level interpreted language, like say forth. We deal with the constraints due to the overall effeciency of the development process.

    So I would not sweat the contributing code. No would I micromanage process. What I would do is learn the tools that are being used. To do this you will have to design and write code. But maybe make it your own personal project.

    --
    "She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
  11. If you want to get more into programming... by DaveHowe · · Score: 2

    Why not look into contributing to an Open Source solution in your chosen area? see if you can find (for example) some PM tools that almost are good enough, and make them better?

    --
    -=DaveHowe=-
  12. Code reviews by roman_mir · · Score: 4, Interesting

    Maybe you want to schedule 1-2 code reviews per week and participate in them first, just observing how the developers do it?

    Start from there, then you'll be in better position to judge whether this is something you are really interested in.

    1. Re:Code reviews by roman_mir · · Score: 1

      I said:

      just observing how the developers do it

      , I didn't say: "you do the review".

      Take off your manager hat if needed, tell them you want to learn, not to judge them there.

  13. Similar "backwards" progression here by Anonymous Coward · · Score: 1

    I've done exactly what the OP is suggesting, moving from a more (in my case) marketing-management role into a programming one. For years I had known that I wanted to do some programming, I had taken classes, I had made hello worlds here and there, I built some websites. Built many many servers. Eventually I decided to quit my job and go freelance, thinking that would help, but within a few months I discovered that programming was going to be the thing for me.

    What happened? Well, I launched my business and I started "web designing" and ran into every trap associated with that along the way. No longer did I have a crack team of design pros, project managers, directors, etc. to back me up. When it came time to present my work I always felt nervous even if I had done a stunning job with something. In those circumstances I can talk circles around any code I've written but I could care less to defend a really beautiful design (to me it "just works"). So over time I began taking more and more complex jobs, first with a bit of custom programming, then a bit more, and now a lot. After a couple years of doing this I finally feel confident calling myself a programmer.

    Going freelance probably is not the best route to go to make this transition. I looked at it as though I was getting paid to go back to school, just getting paid a lot less. Over time I have climbed back up the ladder and now get paid about the same but probably more (the upward trend is great). This is a key point: you are starting over. If you manage to negotiate anything but a starter wage you're really being hired as a management guru again and that is hard thing to shake.

    Somehow you will end up climbing the ladder just like everyone else... so dive in. I think you're already on the right track to do a bit of css theming. Now try php or ruby templates. Then really dig into your API docs and run like crazy. Take on "easy" coding tasks like adding/removing things from display and then work your way up to handling froms and user data (and the security issues that come with it). Stay up all night coding if that's your thing. It certainly works for me.

  14. Re:yes, there is a HUGE shortage of progammers! by hoggoth · · Score: 1

    > you could be making $150,000 a year, live in a mansion, have 8 cars.

    I take it you don't line in New York or LA or San Francisco or... the USA...

    --
    - For the complete works of Shakespeare: cat /dev/random (may take some time)
  15. Keep it as a hobby/part-time endeavor by Dr.+Winston+O'Boogie · · Score: 3, Insightful

    I would not suggest sacrificing salary earning years for a temporary career change, which is what I see as the summary of the situation. To do anything for an entire career and be happy requires that your are extremely passionate and interested in the field. I am not sensing that sort of level of interest, and that the priorities here are to be winding up doing something other than engineering in the long term.

    I can understand feeling bad about not being able to contribute a certain way in your current environment, but everyone is limited in the things they can contribute in some way. It is a bit of the maturing process to be able to settle for not being able to do everything (as much as many of us would like to).

    If the desire to program is deeper than I am giving credit for here and you are willing to sink significant time into, I suggest viewing the language/programming environment as the tool, and the problem as the focus. If your goal is to set out to "learn ruby-on-rails", you'll not get much out of it. If you goal is to solve a particular problem, and you happen to choose ruby-on-rails as the way to realize the solution, that is the way to learn something the most important skills you need as a programmer (and what will be relevant when the technology trend-du-jour changes).

    There's all the resources you need on-line at your fingertips to learn as much about programming as you want, so it is all a matter of how much you are willing to sacrifice your free time and energy to dive into it.

    One last tip: If you focus on real problems that interest you and not academic exercises, you will learn the important skills faster.

  16. CS != Software engineering by rocket+rancher · · Score: 2

    Going to a CS department with the expectation of learning how to be a commercial code jockey is not an optimal strategy. Perhaps this is off-topic, but I'll try to keep it brief and focussed. One recent poster wanted to take a CS degree to become a better coder, but wanted to skip the gen ed requirements that four year degrees have, and this poster also suggests that taking CS courses will help him be a better coder. The thing is, CS is not about coding. It's about investigating the nature of computability and developing models and the mathematical tools capable of describing the models in rigorous ways so that they can be analyzed. You already have to be a good coder if you want to do CS, and if you aren't, you need to take programming courses which are usually found in engineering or MIS departments, not in CS departments.

  17. Programming is a CS tease, self-teach instead by vlueboy · · Score: 4, Interesting

    It's just that having the degree doesn't set you too far ahead of the pack in this economy. While you're studying others are sharpening their resume in small jobs till their skills harden to the point that nobody even asks for proof of a degree when they see a years worth of related bullet points.

    I'm in a similar situation to yours career-wise. Started working tech support around age 17 and since then only desktop support gigs have been offered. This summer, I finally stopped getting typecasted, thanks in part to a remote Unix server operations support gig that somehow left some programming-relevant buzzwords in my resume that I could actually prove semi-daily use of. Without the shell experience gained there, I wouldn't be working with front-end code. I'm at a small company and still transitioning, since the assignment is a short paid internship. My resume will finally say that I've done development full-time, rather than call-center or user-facing jobs.

    My first suggestion to you is to re-check yesterday's discussion , which was a refreshingly civil rehash of "CS degree isn't programming, yada, yada." Make sure you scale it to >120 comments to get the most detail out of it; just take a break every half an hour to think how the comments apply to you and give it a couple days to review the whole thing seriously. Even to IT insiders, it seems that a CS degree isn't understood --I reluctanctly got one, and somewhat wish I had taken a 2 year degree at a tradeschool approach instead of being forced to plough all the way thru advanced Calculus, Math theory and a bunch of "core" humanities classes. At our age you are well rounded as you'll get and your skills will not really benefit from the degree's forced requirements... unless you quit your job to go fulltime into the 4 CS year degree. Only around half of CS classes are coding, so your job might actually be providing you with more hands-on experience with a single project than you get out of public colleges' degree programs for a whole semester.

    Anyways, since you are already writing SOME code and queries towards your company's codebase and bottomline, then you don't need a full 4-year CS degree if you're looking for future jobs at mid-size and small places --the resume's degree blurb is to secure your FIRST programming job, which you indirectly are already in.

    So, try to learn the languages and environments on your own (time is hard to find, but force yourself to do little things like regularly trying out examples at code-snippet blogs.) It's very important that you regularly use one or two big IDE's (Eclipse, Visual whatever) and vi / emacs for shells scripts, php and xml. Get familiar with CVS and Maven for code repositories; try out tutorials on youtube to see how they work, and force yourself to default to an Ubuntu 10.04 boot so that you have a shell handy, a compiler and are only apt-get away from Eclipse and other things. If you can live daily with tools that the other devs have, then you're a step closer to slowly push your way... oh, and since you're not a coder at the current company, you'll probably not be given a chance there --ever. A jump away might be the only way; chicken and the egg, really. It takes a good bullet point or two in your resume about "experience with X" programming skills that a junior position for a full-time programmer will appreciate. And without temp agencies, it's hard to kinda make the jump, so it can take you years to get a lucky break.

  18. Enjoy a nice drink... by Panaflex · · Score: 2

    Sure, go home, crack open a book on programming and sip a cold one. Do some chapter projects, get to know a bit everyday and you'll learn a lot. Start with other peoples samples and learn how to improve or change parts to do what you want.

    But unless your truly devoted you won't be part of the code staff anytime before your project is done. At the very least you'll gain an understanding of how it works and what causes delays.

    Some people are pretty amazing... there was a kid who learned C coding and submitted his first Linux patch within 6 months of touching a computer for the first time. But chances are that you don't have 8,000 hours time and a rabid passion to devote to get to that level of understanding.

    --
    I said no... but I missed and it came out yes.
  19. Try MIT Open Courseware by LibRT · · Score: 2
  20. Coding is for foriegn nationals, not US workers by walterbyrd · · Score: 1

    The US IT career field is getting offshored, and inshored, to death. The few jobs that cannot be offshored, and being given to visa workers, as US workers train their H1B replacements.

    Please see the hdnet, Dan Rather report: "No Thanks for Everything." I think they took it off youtube, but you can still get it from iTunes.

    1. Re:Coding is for foriegn nationals, not US workers by vonshavingcream · · Score: 1

      I have repeatedly tried to send our coding offshore. I have to say that the dozen or so times that we tried, it has always turned out bad. We ended up having to do all the work over again or for the first time (because they just didn't do it.) I'm saying all experiences are this way .. we have just not had the luck of finding a quality coding house that could produce what we asked for in a timely fashion. And we tried everything from the $3.00 / hour to the $25.00 /per hour houses all with very similar results. In my experiences, someone who can code , and it at your place while doing it, is worth a few dollars more per hour.

    2. Re:Coding is for foriegn nationals, not US workers by Warlord88 · · Score: 1

      Out of curiosity, where did you try to find the send the coding offshore? India?

    3. Re:Coding is for foriegn nationals, not US workers by digsbo · · Score: 1

      To get decently managed groups from India, you end up paying nearly the same total cost as you would in the USA. Cheap offshoring firms give crap quality; expensive ones mediocre. It seems, from some of what I'm hearing, that US firms are starting to figure this out and the offshoring trend (at least in companies where finance is not focused on only the future 2 quarters) is slowing down.

  21. Pick one by AtlantaSteve · · Score: 2

    Ultimately, you can either be a PM or a developer. I agree with other comments, that trying to be both simultaneously invites failure. That said, it seems like most careers in I.T. involve "stepping sideways" into something along the way.

    I'm more accustomed to seeing this flow in the opposite direction... people who start off as developers, yet later in their careers step into management, hands-off architecture, pre-sales support, etc. However, there's no reason why you can't flow the other way. You would have a hard time being taken seriously at something truly hardcore, like development of compilers, kernels, or large enterprise back-end systems. However, who are we kidding... **most** of the JavaScript coders I've ever met were HTML designers who gradually stepped into development, and a ton of PHP or Ruby guys just kinda stumbled into it with no Computer Science background at all.

    However, if you want that career path... you ARE going to have to "shit or get off the pot", and say farewell to being a PM (at least in the sense that most people use that job title). A true PM stays the hell out of the codebase, although you can pitch yourself as having "team lead" experience if you want to leverage that background. As far as making the transition, do the same thing any other entry-level programmer would do. Pick up a degree in the evenings, or maybe some certifications (they can matter a little bit at the entry-level). Dive into an open source project, so you have some resume code floating out there. Make your company aware that you want this transition, and be prepared for the fact that you likely will need to change companies for it to really stick.

    Also be aware that you may be talking about a pay cut at first, because you're going from being an experienced PM to an entry-level coder. However, senior coders make more money than PM's... so you can be better off in the long run as far as that goes.

    Good luck.

  22. Learn to be more humble by bigsexyjoe · · Score: 1

    First of all, I have plenty of experience with managers who think they can code a complex website because they can write SQL queries. I say learn to get your hands dirty doing, but don't do it to get in the way of your engineers. Just learn to understand what their job is, don't try to do it. Now I think the key to writing good code is experience. School, websites, books, etc don't really teach what you should be doing to build and maintain a complex production site. While you can learn things like design patterns, the abstract knowledge isn't that helpful without diving in and knowing why to code that way based on your experience. You'll learn quickly that programming languages like Java aren't really that hard, per se. But coding a site requires a lot of other knowledge (CSS, database stuff, server stuff) and a lot of wisdom about what is good coding. That being said, there are a few things to learn to even be able to code for web environment. You need to know your front-end, which is HTML, CSS, Javascript. You need to know SQL. And then I suppose you'd need to know a language. Learn whatever language the site is in, I suppose. I say the best thing for you to do is maybe just concentrate on front end stuff, and make some mock-ups for your engineers. But in the end, you just have to learn what team work is about and not think you can know how to be a software engineer without actually doing it as your profession.

  23. Why. What. When. Whatfor by drolli · · Score: 1

    Before anything else, answer a few questions seriously to yourself

    -why do you believe you make a good coder?

    -do you belief learning a specialization of coding will help you with the current task professionally or do you believe coding skills in general will make you more valuable for your employer?

    -is there a timescale on your career where you see that a missing formal or informal qualification blocks you, and if so, when?

    -Do you want job security, personal fun, or a payrise? (or all)

    Please understand that "i am happy at my job and think about learning ruby for rails" does not qualify for me as a complete motivation to use time and energy for it.

  24. Maybe try something new by phy_si_kal · · Score: 1

    Opa is a recently released open source technology that mixes together front-end and back-end code. See http://opalang.org/ Also, there are packages for MacOSX, which is probably your environment ;) If you can try it, I'm really curious about how easy it is for a non-programmer to learn this kind of programming language.

  25. I disagree by Bacon+Bits · · Score: 1

    The truth behind this is entirely dependent upon the school you choose. The CS degree does date back to a time period when most schools did not even own a single computer -- when computing itself was a theoretical science -- but the name endures as it it what people recognize. Certainly, there are an increasing number of Software Engineering and Computer Programming programs at schools, just as there are an increasing number of Information Technology and Computer Information Systems degrees. However, most schools still offer a Computer Science degree, and many still use that term as the one for programming.

    --
    The road to tyranny has always been paved with claims of necessity.
  26. And Product Manager != Project Manager by IntentionalStance · · Score: 1

    He's probably first level support for some package

  27. "Designers" are taking over. That's a problem. by Anonymous Coward · · Score: 1

    The main problem these days is that so-called "designers" are calling many of the shots, rather than actual software developers.

    This is a pretty radical departure from the past few decades, where we've seen it mostly be the opposite situation. Software developers would make the decisions, but would occasionally enlist the help of graphics and UI designers to tweak the UI's appearance or for suggestions about improving the UI's usability.

    These days, however, we're seeing the "designers" deciding how UIs, and even the software as a whole, are to behave, from beginning to end. The software developer is there to merely implement whatever the "designer" wants, without any ability or power to make decisions themselves.

    The problem arises because software developers and "designers" have very different focuses. Software developers want to create applications that work well, and are effective to use, even if they might not be very pretty. "Designers" tend to only care about appearances, even if the application isn't very usable. And they only keep themselves relevant by changing, often needlessly, the appearance of the application or web site on a frequent basis.

    This is exactly what we've seen from each organization and group that you mentioned. Apple, for example, was originally founded by software and hardware developers. Their operating system's UI didn't look horrible, but it was usable and that's why Apple systems became popular initially. After their rough patch, and the acquisition of NeXT's technology and talent, we saw them focused on providing high-end, high-quality software and hardware where usability was key. Then the iPod/iPhone/iPad situation arose, and the emphasis shifted more towards "design". Now more emphasis seems to be on making the software look "trendy" and "hip", rather than working well.

    The same goes for Mozilla. We've seen nothing but one pathetic Firefox UI redesign after another from them lately. These unnecessary redesigns are only disruptive, and haven't been beneficial. Now the developers have been distracted for a long time making these changes, rather than fixing the performance problems or memory leaks that plague Firefox. Users suffer not only from the bad UI changes, but they also suffer from the lack of real progress when it comes to fixing these serious problems.

    It's time for software developers to make the decisions, rather than "designers". The priorities and concerns of the software developers are much better aligned with those of the actual users. The applications may not look as pretty, but that's easily ignored if they work well.

    1. Re:"Designers" are taking over. That's a problem. by ranton · · Score: 2, Insightful

      When I read your post, it sounded like you were describing some of the best trends in software development (not problems). Having designers take control of the user experience away from the developers is a good thing in my opinion. Unless they suck at their job, of course, but the same can be said of developers.

      These days, however, we're seeing the "designers" deciding how UIs, and even the software as a whole, are to behave, from beginning to end. The software developer is there to merely implement whatever the "designer" wants, without any ability or power to make decisions themselves.

      Hallelujah. Thank god designers and business analysts are keeping developers from creating horrible interfaces and forcing unusable workflows on end users. I don't think you see too many developers complaining that they aren't allowed to fumble around with user interface design anymore.

      This is exactly what we've seen from each organization and group that you mentioned. Apple, for example ...

      Are you honestly using the best example of designers having a bigger impact on a successful company than developers to illustrate designers run amok? Does anyone dispute that it's the aesthetic excellence of Apple products that has made it into a successful company, as opposed to technical excellence?

      It's time for software developers to make the decisions, rather than "designers". The priorities and concerns of the software developers are much better aligned with those of the actual users. The applications may not look as pretty, but that's easily ignored if they work well.

      I could not disagree more. As the software development field continues to mature, the last thing we should do is go back to the dark ages when software developers were primarily responsible with the user experience. Keep us doing what we are good at: implementing the great ideas of great designers and UX experts.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    2. Re:"Designers" are taking over. That's a problem. by Jane+Q.+Public · · Score: 1

      "Does anyone dispute that it's the aesthetic excellence of Apple products that has made it into a successful company, as opposed to technical excellence?"

      First, even "technical" excellence is not a subjective thing. One person's excellence is another person's mediocrity.

      There is a LOT of "engineering elegance" that goes into most Apple products. That is to say, they go to a lot of effort in designing the internals (whether that is hardware or software), so that the externals "just work", and are simple to use. A couple of examples:

      While others were struggling with horribly clunky interfaces on their MP3 players, Apple made the iPod, with essentially a single control. And far from it being awkward to use the device via that one control, it's actually simpler than most others. (That has now been copied to some degree, but of course Apple still has patents.) I don't know if you've ever seen one torn apart, but there's a great deal of engineering and internal complexity involved in making that one "simple" control work.

      A couple of years ago, they came out with the new "unibody" case construction for their MacBoooks. The main body is now machined out of a single billet of aluminum. You can bet there was an awful lot of engineering involved to do that... but as a result, they got a smaller, lighter, yet stronger body. And not only that, but it cost them less and it is more "green" to manufacture.

      Yeah, I call that technical excellence.

      You can dislike their products and design decisions, and dislike their OS if you want. But denying Apple's "technical excellence" is to deny reality.

    3. Re:"Designers" are taking over. That's a problem. by Jane+Q.+Public · · Score: 1

      Pardon me: I meant that technical excellence *IS* somewhat subjective. But nevertheless, I assert that Apple products have plenty. You can't deny good engineering when it is right in front of your face..

    4. Re:"Designers" are taking over. That's a problem. by Jane+Q.+Public · · Score: 1

      "Thank god designers and business analysts are keeping developers from creating horrible interfaces and forcing unusable workflows on end users."

      They AREN'T. I think that was GP's point.

    5. Re:"Designers" are taking over. That's a problem. by Anonymous Coward · · Score: 1

      I'm a scientist, rather than a programmer or a designer like you guys, but I think the GP is right. I've been using a lot of different software for a long time, and it's not getting easier to use. I'm pretty sure that I'm not alone in finding this, too. I think the GP's example of Firefox is a good one. The user interface changes with each release make it harder and harder to use. Functionality that was easily accessible in the old versions is very difficult to find, especially when they get rid of familiar user interface elements like the menu bar and its menus. By the time we figure out where everything is, the next version of Firefox is out, and they've moved everything once again. Microsoft has done the same with recent versions of their Office suite, and it also has become much less efficient. Software was easier to use when programmers designed the user interfaces. At least there was some consistency between applications then, but that has been eroded really badly now that designers want every app's user interface to look unique from every other app.

    6. Re:"Designers" are taking over. That's a problem. by _4rp4n3t · · Score: 1

      You're missing the point. GP is suggesting that engineers should be responsible for UX / UI design, as well as making it work. Parent is arguing that designers should, well you know, do what they're trained to do do, and design, while engineers should then engineer those designs.I very much doubt it was an engineer who came up with the scroll wheel idea for iPod. Yes, sure, engineers made it work, and did a great job of doing so, and that's how it should be. And quite what case construction has to do with software engineering escapes me.

    7. Re:"Designers" are taking over. That's a problem. by SnapShot · · Score: 1

      Designers are to artists as engineers are to scientists or as innovation is to invention.

      --
      Waltz, nymph, for quick jigs vex Bud.
    8. Re:"Designers" are taking over. That's a problem. by justforgetme · · Score: 1

      well, I don't understand where You are at this because while engineers and scientists may have on appearances few connecting vectors they do have a lot in common with engineers (well, maybe not with copy/paste ones) on the other hand You can't invent without innovating so those two words are kind of mutually inclusive..

      I don't know what designers are to artists, IMO designers are artists who understand how to monetize their services and that is as what they should be used.

      to add to the general designer/developer conversation:
      I think that UI/UX developers should do UI/UX
      I think that busyness logic and backbones should be the responsibility of developers
      I think that designers should be given free room to innovate and to connect UI development with application development having as a responsibility the best possible presentation and performance of UI/UX.

      --
      -- no sig today
    9. Re:"Designers" are taking over. That's a problem. by Jane+Q.+Public · · Score: 2
      No, I didn't miss the point. I'm pointing out that he did.

      "I very much doubt it was an engineer who came up with the scroll wheel idea for iPod."

      Perhaps not... but you had better believe that an engineer was the first person they consulted before moving ahead with the idea... which is the big problem I see, which has not been acknowledged by the other posters here: in far too many situations, designers know about design and little else, and make their designs without confirming or consulting about the design's actual feasibility. Which makes the lives of everybody else in the company miserable.

      Design is great... but engineering should be in on the design process. When designs are approved on their own, before any input from engineering (which happens quite a bit in my experience), the results are often a disaster.

      The case thing was not intended to be an example of software engineering, and I never implied that it did. But software software UI/UX design has a lot more parallels with physical design than many people acknowledge. There is an awful lot of overlap: Where do we put the buttons? How large do we make them? How do we label them? What is the sequence of operations that will make work flow go most smoothly? Etc. At some point it all comes down to Human Engineering (or Industrial Psychology, depending on your POV).

  28. And let's be honest by IntentionalStance · · Score: 1

    Learning to programme should be completely trivial if you've got any talent.
    Learning a whole eco-system of development tools which is what you'd need to do to hold down a serious job is a much bigger task of course.
    A decent CS degree from a good school won't teach you how to code - they'll assume you know that pretty much as an entry requirement

  29. The rewards from programming are not casual by holophrastic · · Score: 1

    Right now, you like to code because you do a small amount of bounded coding, and it's fun to see your work producing benefits. But like so many other disciplines, the next step is the exact opposite.

    If you graduate up to the next step of programming, you'll find that you spend an inordinate amount of time sweating details and in general frustration. By the time you work through a given task or project at this next level, you'll look back and not quite understand why it took you ten times longer than it used to take you to do only 10% more.

    The rewards in programming come at the third level. The level where you go end-to-end on a task, project, or entire project. It's then that you discover that for the same amount of time as in the second stage, you can now get done an entire task or project, all by yourself, and it's really really cool.

    If you're planning on sticking with it, or would be willing to do so if it winds up suiting you, then hey go for it. There are many great ways to pickup programming in any language. Just find someone to steer you past the six small things that any given language has as stumbling blocks. If you choose Perl, then talk to me. In two hours I can ensure that you skip the ten months of horror that most people go through with Perl, all because no one told them six subtle things -- like hidden variables, context-sensitive variables, the particulars of list context, and why, as a human being, you should always be using references.

    But if you're planning to pickup programming only to get the rewards for a short while, like a year or two, then you are going to be sorely defeated. It can be dreadful, awful, and just plain rude.

    I know what you're thinking. You're thinking that Ruby isn't Assembler, and it isn't C, and it isn't Basic. Ruby's designed to actually get things done, and moreso Ruby on Rails. So how could it possibly be so painful?

    The question is the actual answer. Your house is easy to understand because you expect it to be a house. You expect your car to drive on the road, and hence your car is easy to drive. The world is quite different in things like PHP and Ruby on Rails and Perl, and programming in general.

    The smaller lower level languages are really hard to learn, there's very little to learn, and you're left wandering in an open and endless field, with a pile of wood, hammer, and nails. You can build any house you want, but you'd better be an architect.

    The larger, higher-lever languages are closer to frameworks. They are really easy to learn, there is a tonne to learn, and you're left in a reserved plot with a box of Ikea furniture and an allen key. You can easily build your house. But it's going to be that house, the way it is, and you get to hope that it fits into the plot, and that your couch isn't too big.

    The world of hurt in programming is never the programming. It's in figuring out how your english intentions can possibly be translated into rational logic. After that, it's just syntax and typing, each of which is easy.

    That's why you like it now. Your tasks haven't hit the threshold where understanding what you want is difficult. The second level thrusts that into your life with the sentence "I know what you want. But you've used two oxymorons in your description." When project demands conflict in logic, it can be arduous to talk them through until they don't.

    When you learn to do that really well, that's when you graduate from level 2 to level 3, and life becomes beautiful, because you wind up with a skill that amounts not to programming at all, but to disecting business logic. It's really cool. And that's why good programmers can solve real-world problems with ease.

    1. Re:The rewards from programming are not casual by holophrastic · · Score: 1

      Glad to hear from someone a few steps back on this issue. Thanks for the coroberation. Let me know if I can help you directly. I flexed a lot of people's time in getting where I am, so I owe it forward. If you need someone to talk to, or to answer weird-o generalities, or to direct you in terms of goals, easier paths, or horder paths, I'm around. slashdot@holophrasticenterprises.com

  30. PM IS *NOT* CODING by ip_freely_2000 · · Score: 1

    Your job (should be) to define requirements, manage the roadmap, talk to customers/prospects and prep the product marketing and sales functions. Coding is not part of your job. If you want it to be, then you need to re-think your career path. Not to say being a coder is bad, it's just that you cannot be both and be successful at it. Choose wisely.

  31. Computer science is not programming by cjonslashdot · · Score: 1

    Computer science is not programming. Computer science is not the same thing as software engineering.

    If you just want to learn how to write simple programs or build simple e-commerce sites, don't waste your time going back to school.

    A computer science degree will teach you to understand programming and understand computers. It sounds like you just want to learn how to build things.

    However, if you want to build complex, reliable things, you should realize that this is not done through programming: it is done through design. I would recommend that you study some simulation languages, to develop a good feeling for concurrency issues, and that you learn some functional programming languages.

  32. Job Security and On the Side App Development by DaRat · · Score: 1

    One advantage of being on the product / project management side is that you'll have more job security if you've got good people skills. It's very easy to offshore dev jobs, but much harder to offshore the product or project management roles.

    If you really want to code, why not work on an app or open source dev project on the side? Keep your day job, but do something else on the weekends and evenings until you're sure that you want to make the switch and have the skills to carry it through.

  33. Find a new way to enjoy coding by anchovy_chekov · · Score: 1

    Well.. if you can take some advice from a crusty old coder. After 20 years of coding I've recently swapped over to working as a product manager. As much as I miss coding for money I'm now finding new ways to code for pleasure. I code for my kids, I code for myself - and I no longer feel the pressure of having to produce code under crazy time constraints or the demands of managers with limited technical knowledge.

    If you're coding as well as managing it's far too easy to get sucked into the code and forget your other duties. Or piss developers off by getting into their faces a bit too much. I've done both since starting as a PM and realise now that the best part of my job is building a bridge between the techie and non-techie worlds. And that's a joy.

    I have a small project that I work on over the odd weekend, helping build services for parents of kids with autism. It's paid work but not much more than beer money - though being Australian that possibly means a lot. But it also feels like I'm contributing something meaningful. Maybe find something like that - something where you can practise your coding chops, have fun and do some good.

  34. You don't love it - you won't excel at it by presidenteloco · · Score: 1

    In your comment you said a number of things.
    You said you are non-technical. Coding is all about mastering very particular technique.
    You said you don't want to make it your career, which suggests you don't have a deep
    interest in the hows and the whys of quality coding/software engineering.

    So why not leave it to those who have either been doing it since the age of 14 or
    who have a gift and a love for the craft and the science of it.

    It sounds like you might do better at the other aspects of the business.
    But anyway there are lots of lighter-weight options than a CS degree.
    Try continuing education courses at a university or collage. Or a diploma program
    at a college. Or as others have said, the MIT online courseware.

    --

    Where are we going and why are we in a handbasket?
  35. Re:advice, expanded by kale77in · · Score: 1

    write a simple game

    I used to say the same (it's how I learned), but I'd generalize this a bit now... To learn programming you have to have something you want to accomplish by programming. It doesn't stick with you unless you're solving a real problem. That may be a game (and MUD coding was, for me, the most instructive, but it's a bit old-school now). It may be writing a plug-in for a blog/broswer/whatever; could be a facebook app; could be a website; could be anything that grabs you. It'll help if you find into a web community or project full of people doing the same things. If there's a book on the subject, and you're a book person, that'll be a good kickstart. Now that I hire programmers, nothing impresses me so much as a project that's entirely their own work, done for the love of it. This means they imagine, then plan, then self-start, then see it through. If _you_ really _want_ to code something, then do it.

  36. Re:From Experience by Javaman59 · · Score: 1

    it is great you want to learn code. I learned to code before I ever got to college and I do not believe it improved my abilities that much. Coding is one of those things that changes so often you have to re-learn anyway, so you may as well get used to self-teaching. If it is Ruby on Rails you are after I would recommend Rails for Zombies. http://railsforzombies.org/

    It is a quick free and great way to get going in rails.

    Seconded!

    When I read the OP I thought that he had answered his own question. He wants to code, just because he knows he wants to. That's enough. It's quite easy to get into coding on his own home computer, in his spare time, as a hobby. Instead of watching TV in the evenings, he writes code and enjoys it. He suggested RoR as a potential learning vehicle. Great! It's self contained, so he doesn't have to learn a whole eco-system (compared with .Net or Java). It will be a vehicle for learning HTML, CSS, JScript and SQL, and Agile development. It's also elegant and fun to work with, and has several very good introductory texts. The OP is on the right track already, and just needs a few people to say - "do what you just said, sir".

    --
    I'm a software visionary. I don't code.
  37. Re:Ruby was a marketing effort. Nothing more. by dkf · · Score: 1

    [Ruby] itself takes the worst of Perl

    Sorry, but I don't believe that. It has neither Perl4 namespace syntax (look it up if you don't believe me; it existed but was utterly horrendous) nor Perl5's "object system" botch, nor even the bizarre oddness that is the plethora of magical global variables with hyper-odd names or even type globs. Damn, but that's got to be a miss on the whole "worst of Perl" front.

    Keep the hyperbole toned down, please.

    --
    "Little does he know, but there is no 'I' in 'Idiot'!"
  38. Give the man a break by evilgraham · · Score: 1

    After all there is more joy in heaven when one sinner repents... But seriously, as a manager you deal with people. They do what they want, and there is nothing you can do about that. Computers, on the other hand, are more amenable, and do what you want, but you have to ask nicely. But let's not kid ourselves, the only thing worth doing in this entire business is programming; anything else is a sideshow. So you want to make a contribution? Well, there has never been a better time to start. The world is full of open-source projects where the people who make things happen also let you know how they do it. Find something that you think is the mutt's nuts and whatever language it is written in, lean that, and take the time to understand how things really work. It will cost some time, for sure, but that's how it's done. It seems that you don't want to be limited in your understanding of what is required to get things working. This is a good attitude. The world is full of people who pull things out of their arses without having a clue. More power to your elbow, Sir.

  39. Programming, paths, and book recommendations. by Koda · · Score: 2

    There's are plenty of things that are great about Ruby on Rails, but I don't recommend *Rails* as a starting point. Without any background in programming, SQL, HTML, or JavaScript, there's a good chance you'll overwhelmed, or at least confused. RoR covers a LOT of ground. I think Ruby, Python, and Groovy would all be good languages to start with, but don't worry about picking "THE" technology yet or a full framework. Even if you do pick the "right" technology that you make into a career, there will be plenty else to learn, now and in the future.

    Here's are some specific recommendations:
    A) First, there is no need to quit your job yet. Consistently use some of your evenings and weekends to explore and learn. If you find out you don't like one of the technologies I've recommended, don't sweat it. It may not be for you, or it just might be the wrong time.

    B) Try some programming, and see how you like the logic and puzzle-solving part of it. Here are two books I'd recommend to get started, in no particular order:
    1) "Python Programming: An Introduction to Computer Science" (Second Edition) by John Zelle
    2) "Why's (Poignant) Guide to Ruby" by _Why the Lucky Stiff - http://mislav.uniqpath.com/poignant-guide/

    C) Try some web development and see how you like the design, layout, and organization of it. Start with the book "Head First HTML with CSS & XHTML" by Elisabeth Freeman & Eric Freeman. You'll learn HTML the new school way, where presentation and structure are separated (and the web is better off for it).

    D) Try visiting some user groups for different technologies, like Ruby on Rails, Groovy on Grails, Java, Python, .NET, MySQL Adobe Flex, whatever. You'll get a feel for the culture while learning new things.

    E) Once you finish the above, there are several directions you can take:
    1) Want to program more? Sign up for a college class on programming. It doesn't matter whether it's C, Java, shell scripting, or whatever. Just take a class to continue developing your programming skills and develop an appreciation for the different aspects of the world of programming. And a class at a community or technical college can be perfect for this.
    2) If you're continuing down the programming path, buy another book on Ruby, Python, or try something new like Java, JavaScript or PHP. If you want something more hardcore, check out "The Joy of C" by Lawrence Miller and Alexander Quilici.
    3) If you continue progressing in programming, and/or if you really want to get into Ruby on Rails, Groovy on Grails, Spring, or any framework, you'll probably want to take a class on Intro to Databases or just pickup a book on SQL. If you liked Head First HTML book, then check out Head First SQL, and/or get the very concise "My SQL Crash Course" by Ben Forta. Knowing basic SQL and database essentials will make you better with Rails, Grails, Spring, or any framework. Or if you really like SQL and organizing things, database development and/or administration can become an entire career. And you may get into data mining or data ETL (over the years I've been exposed to Microsoft SQL Server, Sybase, MySQL, Oracle, Informatica, and lately to Microsoft SSIS).

    F) If you've made it this far, you've probably picked your path, and possibly found a programming language you love. Your next steps may be one of the following:
    1) Dive fully into Rails, Grails, Django, Spring, JSF, force.com, or another framework.
    2) OR Learn more HTML, CSS, and JavaScript. Play with JQuery, Dojo, or another JavaScript library.
    3) OR keep taking college courses, perhaps hardcore CS with Calculus, Physics. That's not the only route, but this will take you from good to great in programming. Don't overlook other options, including a BA in Computer Technology.
    4) OR if you're not not digging hardcore programming, school, and/or you cr

  40. Just Start by Anonymous Coward · · Score: 1

    If you want to learn just dive into it on your own time. Pick something simple to write like a todo list or a blog and just start. There is a great site called http://railscasts.com which has 200+ screencasts on Rails now. There like mini college classes covering many popular subjects and will help you get up to speed fast. Commit to watching 2 screencasts a day and in 6 months you will know more than you think. Also pick up a good intro to Rails book and read a chapter a day. Also get the intro to Ruby book. Again it wont take long, even as a non programming you will pick it up fast and both Ruby and the Rails framework are great tools to start out on. Not to plug to many sites but there is a nice multipart series on http://nettuts.com that covers everything from setting up rails to making a basic app. I think its 12 or 13 parts now and its a great intro resource out there (most of it is on the free side of their paywal as well).

  41. Why not a coder already? by Anonymous Coward · · Score: 1

    The question I always ask people over about 18 when they ask me about becoming a programmer is: why aren't you one already? There may be a good answer, but I've not heard it, yet. There's nothing stopping you. Programming tools are free and the internet is chock full of free tutorials and books. There are also many great books you can read. The equipment isn't expensive. In fact, all the really good programmers I know (and many who are not so good) couldn't not be programmers. There is this irresistible pull. It's what we do in our spare time when we don't even have to do it. Keep in mind that's who you'll be competing against. So, why aren't you a programmer already?

  42. It's called a hobby by bryan1945 · · Score: 1

    If you "love what you do", but want to do something else, but don't want to do that something else forever, do it on your own time and make up your own site or something. You don't stop doing something you love doing for something you only want to do for a bit, except as a side job or hobby. Ask to get some more work on projects when you're not busy. Sure, go back to school or take some classes, education is always good.
    Don't take this personally, but having a really hard time finding a job right now, I kinda want to slap you for complaining about a job that you love to do.

    --
    Vote monkeys into Congress. They are cheaper and more trustworthy.
  43. Try a couple classes on javascript by spads · · Score: 1

    You don't really say what technologies you're working in (not familiar with 'UX', but from your mentioning Ruby, I would assume web and would thus recommend javascript. It has a C-like syntax, and is really the central technology of web applications. From there you could also go to php, which also has a C-like syntax. If you really get sucked into it, at some point you'll probably want to take some C for completeness. PERL also has a C-like syntax, with a lot of other quirkier elements. It is probably strongest for the stuff it does best, which does not include web apps.

    Some above posters are right that you might not want to get directly involved in the nuts and bolts of your current projects. However, I think it is imperative that you either (A) learn to program some or (B) be willing to trust a lot of what your developers are telling you implicitly on faith. The best technical manager I have had knew how to program, and he was very smart, though ultimately, he could not ultimately allow himself to get into it much, I presume, because of his other duties, or, perhaps, because he was a bit of a chickenshit. Still, he knew what that stuff involves, which somehow (conscience?) seemed to block him from trying to bullshit or steamroller you too much.

    --
    Bukowski said it. I believe it. That settles it.