Slashdot Mirror


'I Know How To Program, But I Don't Know What To Program' (devdungeon.com)

An anonymous reader has shared an interesting article that talks about one of the most common challenges faced by novice developers: "I know how to program, but I don't know what to program." The author of the article also shares his views on some of the most common solutions for that problem: "do programming challenges", "contribute to an open source project", or "make a game." From the post: Doing programming challenges is good mental practice, but they do little to help someone learn how to create a new program. Contributing to an open source project is a step up. You might learn about how a real project is structured and improve your skill with the programming language, but you won't learn much about the full lifecycle of a project. Some projects are very complex too which can be intimidating for a novice. Making a game is another step up. Games are fun! I started by programming games in QBASIC. The same dilemma arises though. "I want to make a game, but I don't know what to make." The author advises these beginners to try rewriting a library which already exists (despite this being considered as a prohibited practice by many). Developers should also not wait to get the "best idea" before they begin writing it, the author adds. From the post: I've seen the same mentality with musicians. Trying to create a masterpiece on their first attempt, putting all their energy into one song and not seeing a bigger picture. The bigger picture being, you will write LOTS of songs over time, not just one!

255 comments

  1. Mine Research Papers. by Anonymous Coward · · Score: 5, Interesting

    Find an old computer science research paper that seems interesting.

    Implement the hell out of it.

    Seriously, most advances in the industry are from expired patents and research that was done in university 20 to 30 years ago.

    1. Re:Mine Research Papers. by sims+2 · · Score: 1

      I new verson of something like paperdisk http://www.paperdisk.com/index... would be neat Ive always wondered how much extra data you could store if you used colors too.

      --
      Minimum threshold fixed. Thanks!
    2. Re: Mine Research Papers. by Anonymous Coward · · Score: 0

      You can store about as much info as is in a page-sized, 300 dots/inch .gif. Pretty much thats it.

    3. Re:Mine Research Papers. by Farmer+Tim · · Score: 2

      Colour would be an improvement, but not as much as you might think. CMYK is no problem, but the RGB hues are limited by the quality of the inks/toner, paper, the mixing pattern and print resolution versus dot size...to have a safe error margin you wouldn't want to use intermediate hues, so realistically that's three bits per dot. Since a scanner can't tell a halftone from a faded print it may not be a good idea to vary the print density, though this could be mitigated with reference colour bars, in which case each dot would be three bits plus a remainder which could be paired with an adjacent dot(s) to squeeze out some extra bit depth. On the down side, each dot would have to be large enough compared to the scanner's optical resolution to prevent colour errors due to aliasing.

      (NB: deliriously tired, probably miscalculated the possible bit depth, but you get the idea)

      --
      Blank until /. makes another boneheaded UI decision.
    4. Re:Mine Research Papers. by Anonymous Coward · · Score: 0

      Not taking color into account, I think QR codes are what we have in place of Paperdisk today.

    5. Re:Mine Research Papers. by skids · · Score: 3, Interesting

      Yeah there are tons of opportunities to replace naive-but-working code with more sophisticated techniques/algorithms out there.

      I think TFA is right in that rewriting existing code is indeed productive -- but really the reason is not so much practice at writing, but that you are learning the one skill people who "know how to program" do not necessarily have even if they think they do: how to fluently read code, rather than write it. So, with your suggestion, find an academic paper, think where it applies in an OSS project, and go check how that project implements that functionality. See if using those ideas in that spot improves the project.

      In addition it is a good suggestion in that it also builds the skills of taxonomy and research which are needed to avoid wheel re-invention - you can;t avoid it if you do not know the given wheels actually exist.

    6. Re: Mine Research Papers. by Anonymous Coward · · Score: 0

      Most advances? And you gave zero examples?

      Citation please.

  2. solve a small problem by tombak · · Score: 5, Insightful

    Find a small problem that you are in fact facing in your day to day life, and write code that would solve it. Code has to solve real-world problems and there is nothing more satisfying than writing code that solves an actual problem. For example, write a "HELLO WORLD" program; and make it run at boot time, voila! H

    1. Re:solve a small problem by mrchaotica · · Score: 3, Informative

      Find a small problem that you are in fact facing in your day to day life, and write code that would solve it.

      All my (computing) problems are either big or already solved. : /

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    2. Re:solve a small problem by BlckAdder · · Score: 3, Funny

      Because it's an actual problem that my computer does not print 'HELLO WORLD' on bootup?

    3. Re:solve a small problem by AthanasiusKircher · · Score: 1

      Because it's an actual problem that my computer does not print 'HELLO WORLD' on bootup?

      GP obviously misses that voice that said "WELCOME!" when you logged into AOL in the 90s. :)

    4. Re:solve a small problem by Anonymous Coward · · Score: 0

      Go get a Raspberry Pi. Look around your house for something that can be automated, measured, or controlled. Do it.

    5. Re:solve a small problem by Anonymous Coward · · Score: 0

      It depends on what the problem is. If the problem is that you don't have a girlfriend, then more time spent coding isn't going to fix that.

    6. Re:solve a small problem by NotDrWho · · Score: 2

      All of the problems in my day to day life are way bigger than any code could handle.

      --
      SJW's don't eliminate discrimination. They just expropriate it for themselves.
    7. Re:solve a small problem by XxtraLarGe · · Score: 5, Funny

      Find a small problem that you are in fact facing in your day to day life, and write code that would solve it.

      All my (computing) problems are either big or already solved. : /

      There you go. Write a program that creates small problems for you! ;-)

      --
      Taking guns away from the 99% gives the 1% 100% of the power.
    8. Re:solve a small problem by Anonymous Coward · · Score: 0

      Unfortunately this. Code can make some things more convenient for me. But most of my problems, actual problems, have a much more human nature. Can't write code to get over grief, poverty, addiction, etc

    9. Re:solve a small problem by Anonymous Coward · · Score: 0

      Wouldn't that juts be tumber.com?

    10. Re:solve a small problem by xvan · · Score: 1

      I wouldn't be so sure about that: https://science.slashdot.org/s...

    11. Re:solve a small problem by Anonymous Coward · · Score: 0

      In other words, upgrade your computer to Windows 10 !

    12. Re:solve a small problem by lgw · · Score: 1

      Some examples I've done that are entirely non-work-related:
      * Automating workflow to transcode DVD images with exactly the settings I want, filtering out titles like copyright warnings.
      * Writing bots for 2D games (which is always more fun than the game)
      * Writing automated character sheets for tabletop RPGs (good excuse to write something with a GUI for once)

      None of these are important problems, even to me, but "a writer writes". It's less about "what do I really need to automate" and more about "what's an excuse to code something fun for once."

      --
      Socialism: a lie told by totalitarians and believed by fools.
    13. Re:solve a small problem by Anonymous Coward · · Score: 0

      Sounds like cookery: people cook for their family and loved ones before cooking for others. Program for a family business or to solve a family issue first.

    14. Re:solve a small problem by pseudorand · · Score: 1

      Small problem is the ticket. Scratch your own itch. Anyone who can't think of something they want a computer to do that their computer doesn't already do just isn't thinking very hard.

      And I don't mean something there isn't an app for. There probably is an app for almost everything. But programming isn't really that hard and finding apps among the gazillions is, so it's often easier to just code your own. If and when it breaks in ways that annoy you, it's much easier to fix yourself.

      Of course the real problem isn't the processing and display of data, but getting the data in the first place. Big companies and lazy/unfriendly governments (as if there were any other type) make getting the data you want really hard and/or expensive. Try getting "public" property records for the entire US. Or court records. How about just the complete list of UPC codes and a text description of what they translate to, much less pricing various businesses sell that product for. Or how about just your own financial or medical records. Some of those things are "sort of" available in a programmatic way, but I long for a future where they're all available in their entirety via simple ssl-protected REST API calls. Today we have a gazillion useless apps. Maybe someday we'll get access to the data to create a few useful ones.

    15. Re:solve a small problem by 0100010001010011 · · Score: 2

      Progress is measured in inches. I'm a Mechanical Engineer that knows how to code. Years ago when I started off in industry I would write a script or macro to shave a minute off of my work load. My peers laughed and said "Ha, you only saved a minute, what a waste of time". After a while those minutes add up. A minute a day for a year is 4 hours of savings.

      A minute an hour for a year is 33 hours. If that's a minute 5 of my other co-workers are also doing it means I saved my boss 150 hours a year. 120 '1 minute scripts' later I can do in 8 hours what would have taken me 10 hours before.

    16. Re:solve a small problem by Anonymous Coward · · Score: 1

      This is... not necessarily a good idea.

      Because you're setting your own requirements, you'll feel free to change them as you go along. "Oh, what I really wanted was..." That's a terrible habit to form.

      Better approach is to get someone else to set your problem. Then when you've solved it, ask yourself (and them): "would you have paid me to do that?" And also, just as importantly: "will this solution still work in a year's time, or will it need rework by then?"

      There's no hard and fast "correct" answer to either of these questions, but you'll learn a lot by asking them.

    17. Re:solve a small problem by TsuruchiBrian · · Score: 1

      All problems are big when they get solved. Small computing problems were solved back when nobody even heard of computers. In the future they will probably talk about all the easy quantum computing problems that were yet to be solved in the early 21st century.

    18. Re:solve a small problem by Anonymous Coward · · Score: 0

      Computer systems im general seem to be random problem generators. Pick a problem and solve it the programmatic way. At the turn of the millennia (even though I was using windows) I wasn't using anything I hadn't compiled from source other than a few niche products and games.

    19. Re:solve a small problem by Pseudonym · · Score: 1

      All my (computing) problems are either big or already solved.

      I bet that if you think hard about it, you'll discover that this is not the case. Problems that you think are solved are usually not, in fact, solved. You're just too used to the current "solution" to see the problems with it.

      Obligatory Bret Victor.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    20. Re:solve a small problem by ivanl · · Score: 1

      I second this - Find a small problem that you are in fact facing in your day to day life, and write code that would solve it.

      Over the years, I've a directory tree full of little scripts I wrote. Examples:
      * I can never find a random password generator to my liking, write one yourself.
      * Write a script to curl to retrieve the torrent file & auto submit to your rtorrent
      * Pull down maxmind geoip database & massage it into a format suitable for ipset
      * Hate (short 1-paragraph) RSS given out by sites? Write script to ingess RSS, fetch the full articles (w/ pix), & egress to rss-tt
      * Write a script to poll your VOIP prepaid balance and pushover notifications to your iPhone, if it gets low. ....

    21. Re:solve a small problem by Dutch+Gun · · Score: 1

      Damn... which comic to choose?

      --
      Irony: Agile development has too much intertia to be abandoned now.
    22. Re:solve a small problem by Anonymous Coward · · Score: 0

      Find a small problem that you are in fact facing in your day to day life, and write code that would solve it.

      All my (computing) problems are either big....

      There you go, that should keep you busy for a while... ;-)

    23. Re:solve a small problem by Anonymous Coward · · Score: 0

      Microsoft has that market locked down already!

    24. Re: solve a small problem by Anonymous Coward · · Score: 0

      Data is easy to find. GNU Scientific Library has random number generators to create data. The Gutenberg online library has tons of data. Analyze the vocabulary used by Shakespeare, or your favorite author on Gutenberg. Use GMP to expand irrational numbers to millions of digits.

    25. Re: solve a small problem by Anonymous Coward · · Score: 0

      Even Arduino is cheap and easy to use

  3. Open Source by Thelasko · · Score: 3, Interesting

    Contributing to open source always seemed intimidating as a novice. I'm too afraid I'd wreck the code or introduce bugs. Basically create more problems than solutions.

    I stick to my own little scripts for my specific needs, knowing that the code is clumsy.

    --
    One of our competitors trademarked the term "hypothesis". From now on, we will call them "boneheaded ideas".
    1. Re:Open Source by Okian+Warrior · · Score: 5, Funny

      Contributing to open source always seemed intimidating as a novice. I'm too afraid I'd wreck the code or introduce bugs. Basically create more problems than solutions.

      Then you should contribute to the linux kernel.

      Linus always takes an encouraging and tolerant attitude towards new users, especially ones who make mistakes.

      If you want to learn to code, there's no better place to start than the linux kernel.

    2. Re:Open Source by Anonymous Coward · · Score: 2, Insightful

      You are a very bad man.

    3. Re:Open Source by bluefoxlucid · · Score: 2

      If you can get feedback and correction, it's one of the most efficient ways to mass-learn; if you're just digging on your own and your self-activation is weak, it's one of the best ways to quit programming.

      As per Deliberate Practice and modern cognitive science, expertise is developed by a process in which a student takes action which produces errors, then learns from those errors. Deliberate Practice is the most efficient form of practice: it targets specific technical skills (design patterns, integrating of small goals into large architecture, reflection, implementing simple algorithms, planning, etc.) in a goal-oriented way which produces constant and immediate feedback. Such action directly corrects the basic, inherent weaknesses in your abilities, producing the most impact with the least time and effort.

      If you try to contribute to an open source software project, you have to exercise a large set of skills, notably in reading and understanding code. Then you have to exercise a smaller set of implementation. For a novice, this massed learning produces a huge amount of domain knowledge--all unrefined and shitty--which gives you a launching pad to develop expertise; and, being a huge amount of new knowledge, it consumes 20 times more energy than ANYTHING ELSE YOU COULD DO WITH YOUR BRAIN. This exhausts your PFC and dlPFC, sapping your willpower and driving you into a low-energy state: the part of your brain says "X is hard but I need to X" gets tired, and the part of your brain that says "X is hard, look at cat pictures" takes over. This is generally a good thing, since it keeps your brain from critically exhausting all its energy and failing, thus terminating your heartbeat and breathing; unfortunately, pushing yourself that hard *also* develops a negative reward whereby you start immediately feeling tired when faced with work, and so you never do anything useful again.

      Learning is complex, but not hard. If you feel utterly overwhelmed, that means you should take a break and review; stop shoving new knowledge into your brain.

    4. Re:Open Source by NotDrWho · · Score: 1

      Not to mention the less-than-welcoming nature of coders working on a existing project. For all its ostensible openness, OSS is filled to the brim with coders suffering from "it's my party and no one else is invited" syndrome.

      --
      SJW's don't eliminate discrimination. They just expropriate it for themselves.
    5. Re:Open Source by allo · · Score: 4, Interesting

      Don't misunderstand Torvalds. He has a nice attitude to beginners. Just not to idiots (which refuse to take advice) or beginners, who insist to do it their way without understanding why it's done another way. If you're a dick, Torvalds will tell you. If you ask a dumb question, he will try to help (or at least ignore you).

    6. Re:Open Source by Thelasko · · Score: 1

      Linus always takes an encouraging and tolerant attitude towards new users, especially ones who make mistakes.

      Nothing like trial by fire to build up my chops.

      Thanks!

      --
      One of our competitors trademarked the term "hypothesis". From now on, we will call them "boneheaded ideas".
    7. Re:Open Source by Anonymous Coward · · Score: 0

      I stick to my own little scripts for my specific needs, knowing that the code is clumsy.

      When I began programming as a hobby in 1983 after I exhausted the usual Commodore BASIC stuff to an advanced level I decided to learn machine language. This was before any assembler was available. I taught myself to write a utility to control the cassette tape unit and then proceeded to implement a menu-based table of contents that started each cassette tape with a list of applications on that cassette tape. Later I bought a IBM PC-compatible computer and decided to learn how to design and implement a menu system which provided multi-level pull-down menus and Lotus 1-2-3 style menus. I short I learned to programme by being curious enough to ask "how is that done?" whenever I saw a programme with some feature that I found interesting or I thought about a seemingly trivial problem that I wanted to solve as a means to learn.

      Today I still prefer TUI applications although I am learning more about JavaScript and NodeJS.

    8. Re:Open Source by Anonymous Coward · · Score: 0

      There is virtually no correlation between programming skill and practice or even experience. Take that how you want. The bigger point you make is there is a lot of non-programming involved in order to program, like interacting with people or learning tools. A sizable portion of being a "good programmer" has little to do with programming, and practice and experience can greatly improve one's skills in these areas.

      Speaking of cognitive science, Deliberate Practice actually makes little difference for improving cognition. Deliberate Practice does help with stuff like martial arts, athletes, and people who play instruments, they have not found it to help at all for creative processes like problem solving. People do benefit from practicing problem solving because the learn from experience, but they do not increase their ability to problem solve, only their ability to recognize something they have experience and how they solved it.

      I forget the term, but there is actually a more recent branch of cognition studies that focus on people's ability to to effectively gain nearly the full benefit of experience, without having to actually experience something. Some smaller group of people can effectively gain experience solely from thinking. These people can effectively gain experience factors or magnitudes faster because they are not limited by actually experiencing something, but by their ability to think about something. This ability has been used to explain situations where someone with only days or weeks of experience can be seemingly at a master level.

      Of course real experience is always better, but real experience is limited by the real world, while this pseudo-experience is only limited by your ability to think. It's not to say that this smaller group of people are special in their abilities, but this group of people is more like left hand vs right handed people. The way they approach problem solving is how they naturally do it. Of course a right handed person can learn to control their left hand as well as their right, but have you ever tried that? It is extremely difficult to actually get anyone to do that and continue to do that.

    9. Re:Open Source by Anonymous Coward · · Score: 0

      ...a very bad man, Jerry.

    10. Re:Open Source by Anonymous Coward · · Score: 1

      Not to mention the less-than-welcoming nature of coders working on a existing project. For all its ostensible openness, OSS is filled to the brim with coders suffering from "it's my party and no one else is invited" syndrome.

      The lack of documentation is no picnic either for beginners to an existing open source project. What is with the dearth of comments in source code? Why not create a high-level architecture diagram of the overall application? For a beginner wanting to gain experience with an open source project my advice is clone (not fork) the repository to your computer, read through the documentation if it exists, review each source code file and create a roadmap of the function names excluding library calls and diagram which functions are called by other functions until you have a complete map, then begin at the top-most function and read the comments if available otherwise write your own comments at a high-level for each function. This might seem boring and not related to programming but it is a necessary skill to develop in preparation to write code. Let's say you finish commenting the first source code file and are eager to compile, if appropriate, and run the existing code. Go ahead. Once you have it running you can start looking at the code in the first source code file to see if there any unused variables or if the logic of the code can be improved: a common issue is conditional statements which could be rewritten to eliminate the else clause. Continue this process for each source code file until you fully understand every aspect of the code. You might not have created anything new but you will have accelerated your learning.

    11. Re:Open Source by Anonymous Coward · · Score: 0

      Even if you dont want to join the party and just use the open source libs for hobby , many of them work for the people at the party in the way they utilize them, and hardly well at all any other specification-conforming-application of the same data structures.

    12. Re:Open Source by Anonymous Coward · · Score: 0

      https://www.youtube.com/watch?v=4XpnKHJAok8

      He'll tell you you're stupid and doing it wrong if he doesn't agree with you regardless of whether you have a valid approach. He's a very good, probably great programmer, but his people skills are crap.

      Quit the hero worship. Heroes are for children.

    13. Re:Open Source by Anonymous Coward · · Score: 0

      Contributing to open source always seemed intimidating as a novice. I'm too afraid I'd wreck the code or introduce bugs. Basically create more problems than solutions.

      Much the same can be said of using open source projects (many of them, anyway). IMHO much of the intimidation could be made to go away with proper documentation which can bring a novice up to speed, but containing enough detail to cover every last corner. Unfortunately for many programmers, documentation is still an (unpleasant) afterthought.

      When the OSS is a stand-alone product that's all fine and well. When it's something that is intended for other software to depend on (e.g. a framework, library, database, or operating system) it might be well for its developers to realize that that baby of theirs that take up all their energy, passion and free time, and becomes a major part of their universe, is only a small cog in someone else's universe. Users of such a project have a myriad other things to contend with and do not need to spend countless hours to figure out this component. Sad, but a fact of life.

      So if the developers want to gain market share, contributors, and therewith contributions, they should make every effort to make their darling as accessible as possible to every noob - because that noob is bound to quickly become well adept.

    14. Re:Open Source by Anonymous Coward · · Score: 0

      Experience keeps a dear school, but fools will learn in no other

      Mistakes are a great way to learn, but if your primary way to learn is by making mistakes, you are a fool. In this case, I don't consider knowledge learning. Computers are knowledgeable, but cannot act on their knowledge. Some people have very little knowledge or experience, but are still masters because they think ahead. There are programmers who command more foresight with 5 minutes of thought of an unfamiliar problem than someone with 10 years of experience in that specific problem.

      Theory is important, don't skimp on it. Theory without practice is naive, but practice without theory is dangerous unless you're doing the same crap over and over. If you are, I'm about to automate you out of a job.

      I pride myself in my ability to minimize regret for my projects. No project is perfect and there is always room to improve. But the best projects are the ones everyone must use, but no one complains about.

    15. Re:Open Source by allo · · Score: 1

      No hero. A manager. Look how he keeps the drama out. Other projects discuss about Codes of Conduct, the Linux ML discusses about code instead.

    16. Re:Open Source by LWATCDR · · Score: 1

      Might I suggest Minix 3 as a good place to contribute. It is an interesting project but with a small community. It is really hard to make a big difference working on Linux but Minix 3 is place where you can make a big difference. www.minix3.org

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    17. Re: Open Source by Anonymous Coward · · Score: 0

      Linux is a mature product, now, controlled by corporations. 90% of new code is in drivers.

      Try to recreate a 1991 version of Linux, or contribute to a start-up OS. Create your own version of DOS in dosbox. Write your own shell and dispatcher. Write your own malloc() and free().

  4. I feel your pain. by Anonymous Coward · · Score: 5, Funny

    I know how to post a comment, but I don't know what to say.

    1. Re:I feel your pain. by Anonymous Coward · · Score: 1

      Well you did a GREAT JOB anyway, little snowflake!

      You will get a certificate and a trophy to show how completely wonderful you are!!

    2. Re:I feel your pain. by Anonymous Coward · · Score: 0

      Just write some crazy shit like, Donald Trump is only running to get Hillary Elected,

    3. Re:I feel your pain. by Anonymous Coward · · Score: 0

      I just laughed out loud, literally, for the first time ever while reading Slashdot. Thank you.

    4. Re:I feel your pain. by Anonymous Coward · · Score: 0

      I wanted to say something about your comment, but don't know how to get the thought from my head to the keyboard.

    5. Re:I feel your pain. by Anonymous Coward · · Score: 0

      For me,
      I know how to find a good article that ./ readers would be interested but i don't know how to get it accepted to ./

  5. This by just_another_sean · · Score: 5, Interesting

    The author advises these beginners to try rewriting a library which already exists (despite this being considered as a prohibited practice by many).

    This is how I learned a lot about Perl, C, C++ and to a much lesser extent JavaScript. I wrote (crappy) web frameworks in Perl, front ends for MySQL in C and even tried reinventing concepts from the STL in C++. Not one of my pet projects ended up in production systems for very long, if ever. I simply did them to scratch an itch and help myself understand the underlying principles. My understanding of Perl and PHP frameworks improved immensely and I learned it wasn't nearly as hard as I thought to get under the hood and learn when something wasn't behaving the way I expected it too. Implementing STL dupes help me actually be able to parse Bjarne Stroustrup's books on C++ and in general gave me a much deeper understanding of programming in various languages. Was I able to make better tools than a team of experts working on something together for years? Hell no! Just improved my ability to understand and use their work.

    It's like learning assembly to understand how computers work, you're probably not going to do much of it in the real world but it will help you more than you think when you develop that level of understanding.

    --
    Creationist Textbook Stickers Declared Unconstitutional by CowboyNeal
    1. Re:This by Anonymous Coward · · Score: 0

      I was going to say this also: it's actually a good idea to reinvent the wheel, especially when starting out. K&R even mentions rewriting a standard small UNIX program or two as practice.

      I.e., first try to nail all of the functions of something like ls, wc, cp, top, tar etc. Then read the source from the one installed in your system and see how similar or differently you did things. Then write additional options into yours if you can think of some.

      Will they get used in a production environment? Probably not, but that's ok. Will you learn something? Hopefully. This can apply to any language too- no reason why you can't re-implement something like cp in Python, Java, Ruby, Rust or whatever is your language du jour. It doesn't have to be optimal, just has to work and teach you something. Meanwhile, there is at least one project I know of where a guy is creating a Minecraft clone in C++...

    2. Re:This by Obfuscant · · Score: 1

      What I want to know is who thinks rewriting a library is prohibited. Who is spreading that kind of misinformation?

    3. Re:This by unrtst · · Score: 4, Informative

      Another slight twist on this is to manually port a library or solution to a different language (which I think the GP hinted at with his work with the STL).
      There are loads and loads of options here:
      * take something from CPAN and bring it to Python or Ruby or PHP etc
      * take small-ish C / C++ programs and port them to Rust
      * take any well known algorithm and try to write it from scratch, maybe in a language where it doesn't fit so well (so there are no existing dupes)
      * update/upgrade/port features from "standard" libs in more popular languages to less popular languages (ex. I brought most of the latest greatest features for memcached libs to the perl library - though I don't think they ever made it to CPAN, they're on github). This can actually help multiple communities if those are now more feature compatible.

    4. Re:This by pr0fessor · · Score: 1

      This is why there are boat loads of arkanoid and space invaders clones all over the internet someone learning for the first time or breaking in a new language.

    5. Re:This by just_another_sean · · Score: 1

      Well, again Perl, I read as much of Larry Wall''s writing as I could over the years. The three virtues of programming he espouses are hubris, laziness and impatience.

      I think this one falls under the laziness category. Don't spend time solving problems others have already solved. Modern Perl and CPAN really emphasize too. And of course it translates well to other languages and even everyday things that may not even be related to programming.

      On the other hand I believe this oversimplifies things a bit. If a library is getting long in the tooth or has some functionality that is still relevant but a lot of legacy baggage that is obsolete then a rewrite is not necessarily a bad thing. Case in point - OpenSSL -> (LibreSSL | Boring SSL)

      --
      Creationist Textbook Stickers Declared Unconstitutional by CowboyNeal
    6. Re:This by XxtraLarGe · · Score: 1

      The author advises these beginners to try rewriting a library which already exists (despite this being considered as a prohibited practice by many).

      This is how I learned a lot about Perl, C, C++ and to a much lesser extent JavaScript

      This was my second course is computer science after the introductory C++ course. We basically had to rewrite the STL, implementing vectors, linked lists, double-linked lists, etc. It was a very good exercise and really made you have to think about memory management, the proper order to do things in, etc. Assembly was a real grind though. I have tons of respect for anyone who can write assembly. It was interesting learning how to tweak your programs with it, taking advantage of how much time certain operations take, so you could reorder them to make them more efficient.

      --
      Taking guns away from the 99% gives the 1% 100% of the power.
    7. Re:This by Obfuscant · · Score: 1

      Don't spend time solving problems others have already solved.

      First, it is a great learning experience to rewrite a library or parts of it. If you have the source you can compare what you did and what kinds of error checking etc. you didn't think of. Even without the source, getting what you write to reproduce the results is good practice at reverse engineering.

      But second, how does this in any way relate to the idea that rewriting a library is PROHIBITED? It doesn't. Larry Wall's (and the general perl idea of not recreating the wheel when it isn't necessary) isn't a prohibition. And I hate to tell you, there are many CPAN modules that could use rewriting. In any case, writing your code and comparing it to "the experts" is a good learning experience.

      If a library is getting long in the tooth or has some functionality that is still relevant but a lot of legacy baggage that is obsolete then a rewrite is not necessarily a bad thing.

      Rewriting a library doesn't mean trying to create a replacement production version of what already exists. It means learning the concepts of, say, numerical conversion and writing your own version of printf or scanf.

    8. Re:This by Anonymous Coward · · Score: 0

      I like to add a slight twist to this as well.

      Frequently, there are similar, related tasks that require unrelated and/or disparate methods of working with them. Write an abstraction wrapper that gives a common, unified means of working with these slightly different interfaces. I did it with database access when I started out, because each database library is slightly different. And databases are low-hanging fruit in this sort of endeavor. What I learned helped me when I was working through tougher issues with database connections later.

      Another good one is payment processor API's, geocoding API's, weather data API's, or other similar web-accessible data feeds that all represent the same type of data in slightly incompatible ways. A façade for these things can be a stepping-stone to a good data aggregation platform.

    9. Re:This by Obfuscant · · Score: 1

      Assembly was a real grind though.

      The best assembly language to learn the basics of optimization was the Cyber 6500 system. It had 60-bit words, and 15, 30, and 60 bit instructions. A 15, 30, 30 sequence would waste at least 15 bits since the second thirty could not occupy the remaining 15 bits of the first word. A sequence of 15, 60, 15, 60 ... would waste 45 bits for each pair.

      And knowing assembly is really good for helping to learn languages like C. I learned 68000 assembly language while learning C -- I would write some C and have the compiler dump the assembly, and then I could compare what I thought the C should do with what it actually did at the machine level.

    10. Re:This by korgitser · · Score: 1

      What he probably means is closer to 'reinventing/NIH considered harmful'. If you start from scratch, you are bound to make many of the same mistakes the original developers made. Also you will only have a vague idea of the actual requirements of the project, which will waste a lot of your (time) budget on redesign. Even if you are the author of the original, once some time has passed you most probably don't have any idea what most of the code does - weird corner cases and bugfixes everywhere, with no recollection of the reasons thereof.
      The devil is in the details, and once you take a few steps beyond a 'hello world' program the accumulative domain knowledge and experience embedded in the code of a mature project become pretty much invaluable, making up most of the costs sunk into it.
      Rewriting such a project should therefore, within reason, be avoided if at all possible - once you actually start with it, you really don't know where it will take you. While the English language knows about reinventing the wheel, my language (Estonian) talks about reinventing the bicycle. That gives you a very good perspective of the work you would have ahead - think about all the little details, dead ends and improvements the bicycle has had in it's 200 years - would you be willing to do it again?
      Exceptions, of course, do exist. Sometimes you just cannot make the existing code work for you. Sometimes you do not have the source or the rights to change it. Sometimes you want to do it for fun, for excercise, for experience. Sometimes it is the crapfest that is OpenSSL and you just need to take it behind the barn and shoot it. Just don't make a habit of it I guess:)

      --
      FCKGW 09F9 42
    11. Re:This by Obfuscant · · Score: 1

      If you start from scratch, you are bound to make many of the same mistakes the original developers made.

      Where better to make those mistakes than in your own attempt at duplicating a library? You learn from those. That's why rewriting a library can be a very good learning experience.

      Rewriting such a project should therefore, within reason, be avoided if at all possible -

      Like I said, rewriting a library doesn't mean trying to produce a new, production version of a library, it means writing your own version. Even if you never use it for your own projects.

      - once you actually start with it, you really don't know where it will take you.

      It will most likely take you to a place of better understanding of the programming language you think you know, and a much better understanding of the kinds of things that library writers have to consider. Isn't that a good thing?

      And NONE of this has anything to do with the claim that many people think it is prohibited. Where did that nonsense come from? Who is telling people that it is prohibited to write your own libraries, or to rewrite existing ones?

    12. Re:This by Anonymous Coward · · Score: 0

      I went through a bit of an assembly language obsessions a few years ago and implemented a z80 emulator using x86 assembler (nasm because I like the "spit out *precisely* the code I asked for, down to the very last detail" philosophy). It was a hell of a lot of fun and I learnt a *lot* about both CPUs - I started with a good working knowledge of z80 and ended up knowing the z80 inside and out to the last tiny undocumented detail and proficient on the x86, with a newly acquired knowledge of linking assembler to other languages. I did maintained the emulator for a while but in the end I ran out of spare time to deal with bug requests and such so I let it slide.

      I would class knowing assembly as useful and potentially enjoyable but not essential.

    13. Re:This by Anonymous Coward · · Score: 0

      I can vouch for this approach.

      Ten years ago, after having 'book-learnt' Ruby, I rewrote a lengthy console PHP script in the language, and included some design changes in it (threading, mostly). The end result was pretty messy, not much better than the original, but I learnt a lot about Ruby in the process.

    14. Re: This by Anonymous Coward · · Score: 0

      Why is Oracle all pissy with Google about java? I don't know the specifics, but wasnâ(TM)t that some library copying shit?

      Or you're saying rewriting is exactly why it's OK? (as opposed to straight up using the same library).

    15. Re: This by Anonymous Coward · · Score: 0

      Forth is a twisted language, but fun to learn, and beautiful in principle. Learn how to assemble Forth in dosbox, then learn how to add words to the vocabulary. You'll end up with your own dialect of Forth.

  6. A basic law of learning... by SeattleLawGuy · · Score: 1

    This is a basic practice of learning. You can try to make a couple of great works in a lifetime but take forever to finish a work, or you can be prolific and learn how to make lots of works, including a bunch of great ones. A few people get away with the "a couple of great works" thing. (IIRC, Picasso did this). But most people learn more by jumping in.

    The study I remember on this involved learning to make pottery. If group A tries to make every bowl perfect and group B makes a lot of bowls, then after a few weeks group B produces much better bowls.

    There are obviously limits and variables on this--a master builder cares more about his product and may build more slowly than your average builder, for example. And in rare cases, maybe jumping into the wrong software project is worse than learning nothing at all. But in general, working is better than not working.

    --
    Real lawyers write in C++
    1. Re:A basic law of learning... by pjt33 · · Score: 1

      Your memory is very faulty. Picasso produced thousands of works.

    2. Re:A basic law of learning... by Hognoxious · · Score: 1

      And what's more, a fair proportion of them were shite.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    3. Re:A basic law of learning... by ArhcAngel · · Score: 1

      He's using Rambus technology.

      --
      "A person is smart. People are dumb, panicky dangerous animals and you know it." - K
    4. Re:A basic law of learning... by Oligonicella · · Score: 1

      If by "fair proportion" you mean most, you are correct. After he became renown, he cranked them out by the handful daily just for the bucks.

    5. Re:A basic law of learning... by SeattleLawGuy · · Score: 1

      Your memory is very faulty. Picasso produced thousands of works.

      So maybe he was the example on the other side of the story I read. Either way, the point stands.

      --
      Real lawyers write in C++
    6. Re:A basic law of learning... by justthinkit · · Score: 1
      And even that is an understatement.

      IMDB:

      Picasso produced over 13 thousand paintings or designs, 100,000 prints and engravings, 34 thousand book illustrations and 300 sculptures, becoming the most prolific artist ever.

      --
      I come here for the love
    7. Re:A basic law of learning... by brantondaveperson · · Score: 1

      Ah slashdot, the home of art criticism...

  7. Try an internship by schneidafunk · · Score: 3, Interesting

    For me, I've learned more from on job experience than I did studying computer science at college. You get paid to learn and it also eliminates the "I don't know what to program" question.

    --
    Some people die at 25 and aren't buried until 75. -Benjamin Franklin
    1. Re:Try an internship by Opportunist · · Score: 1

      Dude, get with the times. Nobody today gets paid on an internship. And you don't learn jack. Essentially, you're a slave and in return you can write something on your resume.

      Not that it does jack for you, since what you learned can be done by the next poor idiot who needs an internship, just for free.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    2. Re:Try an internship by schneidafunk · · Score: 1

      Except the intern I am paying and teaching, but maybe I am getting old. I can't justify having someone work for me and not pay them, especially since I am making money off him and expect deadlines to be met.

      For the record, I had two paid internships while I was in college and both were above minimum wage in computer science industry. I found them through my college, which offered a co-op program: https://en.wikipedia.org/wiki/...

      --
      Some people die at 25 and aren't buried until 75. -Benjamin Franklin
    3. Re:Try an internship by phishybongwaters · · Score: 2

      Actually, there are these CRAZY things called "paid internships" I know I know, since you didn't have one they can't exist. But, my friend, they do exist. And yes, the menial tasks you'll be doing anyone can do..... The internship is not about getting hired on to do that job, it's about getting practical experience and moving forward. It's not even about resume fodder, it's about on the job experience.

    4. Re:Try an internship by Anonymous Coward · · Score: 0

      We pay our interns enough for them to afford room, board, food, and a bit of fun, and we're teamed with the local state uni to be considered an accredited "class". Plus they get pair with a middle-tier programmer who reviews their code and consults them, and they get to talk to senior programmers during a few key times, like designing the architecture.

    5. Re:Try an internship by Anonymous Coward · · Score: 0

      I have worked with interns. I don't know if they were paid, but I always assigned them work to do coding. I don't need people to fetch coffee on my teams. I do need code written. Of course the work I'm doing is super boring. Perform these validations on this new data. You are also going to get whatever part of the lifecycle your internship period happens to fall on. With Agile your likely to at least see one whole sprint of work.

    6. Re:Try an internship by bluefoxlucid · · Score: 1

      It's funny everyone is responding to the implicit flaw, but nobody is calling it out: "I know how to program, but not what to program" no, you're at a point where you know something about programming, but not how to program.

      I know like 30 programming languages; I know about C#; I know design patterns; I know architecture; I know how to decouple my code and why; and I've developed lots of targeted strategies to solve specific implementation problems in a game I'm programming in Unity 3D. I don't know *how* to program; I know a lot *about* programming, and I'm spending an inordinate amount of time trying to connect one small problem to another small problem. Every little thing is a massive undertaking, because I have an enormous warehouse of tools and I'm not certain how to properly apply any of them or which to use, even though I know what every single one of them is for.

      Even the summary is like, "You know how to program, so you should program little things so you can figure out how to program."

    7. Re:Try an internship by Anonymous Coward · · Score: 0

      You're right, there are probably one or two remaining software companies that pay interns and offer useful experience to new hires. Too bad there are thousands of software companies out there, and corporate monopolies are an ethically reprehensible thing to support (especially ones that position themselves beyond reproach).

    8. Re:Try an internship by Opportunist · · Score: 1

      How many decades ago was that?

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    9. Re:Try an internship by AuMatar · · Score: 2

      What planet do you come from? I've never even heard of an unpaid internship in programming. Hell the interns make better money than juniors in some companies- they work fewer hours and generally have housing paid for in addition to almost as much cash.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    10. Re:Try an internship by Anonymous Coward · · Score: 0

      You know that using IDEs and shovelling javascript and Node.js and doing Agile and Shiny aren't the same as "computer science" right?

  8. Solve someone else's problem by anyaristow · · Score: 2

    If you're looking for a project to demonstrate your ability to do the work for a living, don't write a game. Not that a game won't demonstrate useful coding skills, but the bigger skill you want to demonstrate is that you are able to solve problems. A game is a self-directed problem. You have not demonstrated that you can take someone else's requirements, communicate with them, and solve their problem. You haven't shown that you can work with or for other people.

    Unless the game is for someone else, but then it still looks like you have to be entertained to be motivated.

    1. Re:Solve someone else's problem by Anonymous Coward · · Score: 3, Interesting

      If the game is in Java, then it's the opposite! We seek out Java devs with game experience since they're typically better at performance, multi-threading, and memory management than even corporate Java devs with over a decade of experience. Since hiring a team of five former game developers in Oct 2013, the 90% response time for our backend has decreased by nearly 50%. Our customers have been very happy with the performance improvements.

    2. Re:Solve someone else's problem by Narcocide · · Score: 0

      Interesting, compelling even, if true. Deserves to be at least 1 not 0.

    3. Re:Solve someone else's problem by Anonymous Coward · · Score: 0

      THIS

    4. Re:Solve someone else's problem by Anonymous Coward · · Score: 0

      Surely it can't be, though?

    5. Re:Solve someone else's problem by Anonymous Coward · · Score: 0

      My problem is that there isn't a remake of interstate '76, so it could be played with modern machines and would have a better graphics engine.

    6. Re:Solve someone else's problem by pjt33 · · Score: 2

      As a former professional Java game developer myself I'm loath to cast doubt on your anecdote, but I do have to ask: how much of that speedup was due to hardware upgrades?

    7. Re:Solve someone else's problem by GuB-42 · · Score: 1

      If you like games, then write a game, do it!

      Actually doing a playable game from start to finish is a lot of problem solving.

      For example, let's say you are making a simple Touhou style shoot'em up. It is the kind of game that can be made by one person. In fact, all Touhou games are made by one person. You need to manage inputs, sprites, collisions, manage timing, etc... Without this there is simply no game at all. You will probably want to make the game interesting too, it means diversity in enemies and pattern, and sooner or later you will need some kind of data model. And once you have an interesting gameplay, you will probably want the little extras that make the game look finished, like menus, which are more time consuming that you might think. And thing do not always go smoothly and you will soon learn about the various pitfalls and your own limits.
      Now, that's for the development part, but you can also learn teamwork and stay in the game theme. If you are like many coders and suck at graphics and music, it is time to find an artist to help you, ripped graphics, geometric shapes and what was your favorite mp3 only go so far. Artists typically work differently from coders and there is a lot to learn from this cooperation. Also, unless you actually hired the artist, he is likely to be just like you and actually want something from the project, even if it is just for fun, so now you work for him almost as much as he works for you.
      And of course, nothing stop you to work on a game as part of a large team, but while it teach you a lot about cooperation you lose the valuable lessons of doing something by yourself from start to finish. Both are good I would say.

      As for the "be entertained" part, if you start writing a game, you will soon realize that it is totally unlike playing the game. It is definitely fun but that's the point, right? In fact the only trouble with games is what the HR guys who know nothing about game programming or even programming in general think. But I'd like to say "fuck them", you probably want a better company anyways.

  9. Think about the future by corychristison · · Score: 3, Interesting

    I have the opposite problem. I have a dozen good ideas (and many more simple/fun ideas), just not the time to do it. I program for work and for fun. I find it stimulating and exciting to solve complex problems through programming.

    Learning to start from scratch is a hard thing to overcome. Many of the students studying CS are given a task, and a bit of direction on how to complete it... typically given a framework to work with. They are never pushed to think outside of the box and build something from scratch.

    Once you get past the very basic fundamentals of how to manipulate data the world is your oyster. You can build anything if you put your mind to it, even in high level languages like Python, JS, PHP, etc. whatever the kids are learning these days.

    1. Re:Think about the future by Anonymous Coward · · Score: 0

      Really not trolling, would you mind to share some of you ideas here?
      I mean, seriously. OP or others might pick up some.

    2. Re:Think about the future by slapout · · Score: 1

      Maybe you could make a website to sell your ideas to other programmers...if you had the time.

      --
      Coder's Stone: The programming language quick ref for iPad
    3. Re: Think about the future by corychristison · · Score: 2

      - an open, unified, encrypted/secure communications protocol and reference implementation to replace SMS/IM/E-mail (xmpp is broken by design, email is a disaster of old insecure protocols and incompatible servers/clients with hacks to make them talk together... poorly)

      - reverse engineer the Accu-Chek bluetooth glucose meter protocol

      - build a multi-platform diabetes management app that syncs your data across devices (my 6 year old son is a Type 1 Diabetic.. I can't find anything that syncs across multiple devices. Sometimes my son is with me, or my wife, or his grandparents, I want the data up-to-date everywhere so everyone knows what's going on)

      - a new web based, DOM only (no contentEditable) WYSIWYG editor with a contextually aware interface (unless something has come out recently, this didn't exist last I looked. Would have to be cross browser, and written in JavaScript without dependency on monolithic libraries like AngularJS or jQuery)

      Unfortunately I've run out of time to go on... sorry. If I get some time later I will add more.

    4. Re: Think about the future by corychristison · · Score: 1

      I'll add it to the list!

      Haha

    5. Re: Think about the future by Anonymous Coward · · Score: 0

      One of mine:
      Reverse-engineer and fix playback of all LucasArts game video formats (in FFmpeg).
      I'm sure it would keep anyone busy for months.

  10. No, you don't really know how to program. by Anonymous Coward · · Score: 1

    If you did, you'd have no problem finding problems to work on. What you got is the mere basics and now need something to chew on, something to build foundation with, something to strengthen the beginnings of the skill you've barely reached journeyman level with.

    Go and try the exercises at codingbat, and once you've done them all, suggest at least one new problem plus test coverage dataset.

    Disclaimer: No relation except having done most of the problems (a few have been added since).

  11. Another suggestion by DFDumont · · Score: 4, Insightful

    Find a problem and solve it. Your first (few) programs don't have to be full on applications or games. They just have to solve a simple problem you or someone else is having. Case in point, I am a networking professional (CCIE #12981). I run into things like, "what is the current inventory of devices on the network?" So I wrote a 'script' which does what I would do manually. It logs into a 'seed' device using provided credentials, downloads information like serialization and addressing, and then figures out connected devices from there. Newly discovered devices are then submitted to the same task. Problem solved. In another effort, I was working for a firm that sold a particular service and our back-office documentation to fulfill the order was so cumbersome that the probability for error was a statistical certainty. So I wrote some VBA inside a spreadsheet that took the metrics form the customer, and produced the requisite documents directly.
    Find a problem. Solve it; simply, directly, efficiently. That will give you experience AND provide a useful output.

    1. Re:Another suggestion by Anonymous Coward · · Score: 0

      Amen. Do some *user research*, e.g. talk to a few people you know who have phones, and chat to them about the apps they use, and what they like and don't like about those apps. Before you know it, you will have ideas for new apps, or add-on features - well, first, you will find yourself going out and searching to find out what is in those areas already, but you will be sliding down the slope to becoming an app developer.

  12. Well... by Black+Parrot · · Score: 4, Funny

    we need new Hello World! programs for all those recently discovered planets.

    --
    Sheesh, evil *and* a jerk. -- Jade
    1. Re:Well... by Anonymous Coward · · Score: 0

      Ah, this sounds like a problem that can be solved with Enterprise Java! Let's start with designing an AbstractGreetPlanetFactoryFactory.

    2. Re:Well... by Krishnoid · · Score: 1

      That's a *HORRIBLE* idea. You start thinking you can write that program, then generalization takes you down the internationalization/localization route, then you learn about character sets, font design considerations for new scripts, the political/international/interplanetary aspects of character encodings, and ... down that way lies madness. I think I need to lie down now.

    3. Re:Well... by Anonymous Coward · · Score: 0

      Hello solar system, followed by Hello Galaxy, followed by Hello Local Cluster, followed by hello universe, followed by hello multi verse followed by ...

    4. Re:Well... by Tablizer · · Score: 1

      outerspace.write("Goodbye Pluto, you're STILL not a fucking planet!");

    5. Re:Well... by alexandru_preoteasa · · Score: 1

      It's turtles all the way down, Mr. Vimes!

  13. I'd like to do something creative... by Anonymous Coward · · Score: 0

    I'd like to do something creative, but I don't know what to create.

    I'd like to make music, but I don't know what to play.

    I'd like to make art, but I don't know what to make.

    Seriously. If this is you, go and do something else. You're not an independent developer. You're going to need ideas for that.

    1. Re:I'd like to do something creative... by phishybongwaters · · Score: 1

      See that's a perfect example of how not to be a programmer. Programming is NOT about spotting problems to fix, it's about creative problem solving. Just because coder A can't imagine something that needs to be coded, does not mean if he/she FINDS a project to work on, they wouldn't knock it out of the park. You want real coding/programming advice? Don't listen to a god damn thing other "coders" are going to tell you, because they don't want you in their special club. because they would be less special. Get some books, hunker down, and learn. Everything else will come after.

    2. Re:I'd like to do something creative... by Anonymous Coward · · Score: 0

      Programming is NOT about spotting problems to fix, it's about creative problem solving

      Which is great advice for those who are creative problem solvers. Cognitive studies have shown time and time again, that the more creativity a profession needs, the less useful practice and to a lesser degree experience become, up to the point of near uselessness. Can't go wrong with reading up to improve your understanding, assuming you're a person who actually gains understand and not just knowledge. Otherwise you turn into someone who has a ton of knowledge but are unable to use any of it. A waste of time or worse, dangerous. Applying knowledge without understanding can turn wrong, quickly.

  14. help organize knowledge by lcall · · Score: 1

    I'm not doing a great job with it at the moment, but it's worthwhile and needed: http://onemodel.org/

    --
    A Free, fast personal organizer for touch typists: onemodel
  15. Necessity is the mother of invention by Anonymous Coward · · Score: 0

    I have the exact problem. I am very proficient at programming but between projects I really have no idea what I should do. My current strategy is to just program what I need, even if that need is basic and can be covered by something non-programming (like managing directory structures). My first ever GUI project with python was a simple calculator that could convert between bits/bytes/Kb/KiB/etc. Just find something that pisses you off, that you could improve on or do better, and have at it!

  16. Just make something you want by i_ate_god · · Score: 2

    I wanted better music for a video game I play, but I wanted that music to be context sensitive. I found a log file in the game's directory. Figuring that cross platform would be useful as well, I now had the motivation to learn C++ via the Qt framework.

    I wanted my living room lights to dim when I play a movie automatically. I use kodi. I now know how to make Kodi plugins.

    I wanted something that reports the vitals of my various computers to a central message queue. While I wrote a linux reporter in python, I wrote the windows reporter in C# and was a great avenue to learn c#. As well I learned all about the amqp protocol.

    Don't solve problems that already exist, don't try to make the NEXT GREAT THING, just identify things you want personally, figure out how to make it, and worry about trying to market it later.

    --
    I'm god, but it's a bit of a drag really...
  17. Common question by Anonymous Coward · · Score: 0

    This question will be increasingly common, as the powers that be push relentlessly to turn everyone into a 'coder'.

    Obviously if you don't know what to do with your skills, you're in the wrong profession.

  18. Games by Anonymous Coward · · Score: 1

    If you can't think of a game to make. Buy a board game and make a digital version of it.

    1. Re:Games by XxtraLarGe · · Score: 2

      If you can't think of a game to make. Buy a board game and make a digital version of it.

      I would recommend starting out with simple games and then increasing in difficulty. See if you can write a text version of Black Jack. After you get a working version, try to do a GUI based version. Then try something like Pong, Breakout, Tetris, etc. Now try expanding them. Maybe Breakout with power-ups! Other people have done it. Once you pick up techniques to make these games, you'll have a much better idea of what to write on your own.

      --
      Taking guns away from the 99% gives the 1% 100% of the power.
    2. Re:Games by pjt33 · · Score: 1

      A friend of mine is doing almost exactly that. He's signed up at boardgamearena and is working on one of the titles they have a licence to produce.

  19. I know how to program but I don't know how to IDE by Anonymous Coward · · Score: 0

    I'd stop trying to program and start trying to unravel the maze that is today's modern development environments. Correct usage of tools like git, gradle and Eclipse are frequently the largest barriers between new programmers and the projects they want to contribute to.

  20. Inverse problem by war4peace · · Score: 1

    I know exactly what to code, but I have no idea how.
    Seriously.

    During my free time, I design a game. Background, lore, game mechanics, formulas, skill forest, greater universe, etc. Implementing it? THE showstopper.
    So... anyone who can code but has no idea what, come to me and I'll give you plenty to code - and it's gonna be fun.

    --
    ...gis sdrawkcab (usually not responding to ACs; don't bother posting as AC)
    1. Re:Inverse problem by Scarred+Intellect · · Score: 1

      I have the other side of your problem: a (beginner) team together that wants to make a video game, but no good ideas of what to make!

    2. Re:Inverse problem by Noughmad · · Score: 1

      Make a modern Transport Tycoon or Railroad Tycoon. You know, with 3D graphics, something like the latest SimCity or Cities:Skylines, but with the Tycoon gameplay. There are at least two good Rollercoaster Tycoon variants coming out this year, but nothing for transport enthusiasts.

      --
      PlusFive Slashdot reader for Android. Can post comments.
    3. Re:Inverse problem by Krishnoid · · Score: 1

      Well, there you go:

      • Get in touch with parent poster
      • Get in touch with your team
      • Charge each of them to put them in touch with the other one
      • Profit!
    4. Re:Inverse problem by Scarred+Intellect · · Score: 1

      Wait, you're not charging for this, are you?

    5. Re:Inverse problem by Anonymous Coward · · Score: 0

      Make some kind of MMORPG like World of Warcraft, but instead of a pre-built world, have the world be randomly generated and enable the players to build and construct their own cities. Make the building process really customizable but expensive so that it takes actual large group efforts to build something sizable like a castle, but not absurdly difficult to build something smaller like your own house. As cities get bigger, have different buildings designated as shops that will automatically populate with NPCs.

      This may be a bit ambitious for a beginner team... lol

    6. Re:Inverse problem by war4peace · · Score: 1

      Let's get in touch, then.
      My e-mail address is my nickname at gmail.

      --
      ...gis sdrawkcab (usually not responding to ACs; don't bother posting as AC)
  21. I know how to program, I know what to program... by Arkh89 · · Score: 3

    But I don't have the time to program...

  22. Just write something by nzpap · · Score: 1

    I remember another problem I encountered as a beginner, I had ideas of what I wanted to program, but they seemed impossible for me to complete at my skill level. This was a major hurdle at first. Eventually I just said, "Screw it" and dove in, and my skills started to increase almost exponentially. Sure, I have a lot more half-finished toy projects than successfully completed ones, but they were just stepping stones to where I am and where I want to be.

  23. Re:You dont know by Anonymous Coward · · Score: 0

    In other words, one does not program in a vacuum. If one finds oneself in a backwoods or somewhere that technology is monopolized by state actors, it is very difficult to find anything that "needs done" because the technical infrastructure to support such endeavors either does not exist or is tightly controlled.

    Doesn't mean you can't find a niche anyway, but it could take years of poverty first.

  24. Copy an existing game type by Anonymous Coward · · Score: 1

    How about games of chance: blackjack, poked, or craps?

    How about a text-based RPG?

    How about a strategic city building game a la Civilization?

    How about an RTS?

  25. I've a somewhat adversary problem. by Qbertino · · Score: 2

    I can program too and I'm no n00b.

    But I have ideas for roughly 200 Projects and programs in store. Definitely enough to keep 10 teams of 5 to 10 people going for a few years. I've got ~30 Projects started and only one or two are the real biggies.

    Here are some ideas, if you're struggling with that phase:

    - Successor to Email. The world needs it. (Hard Crypto and discussions built in of course)

    - zero-fuss x-plattform namecoin dns GUI

    - zero-fuss x-plattform namecoin Server

    - Web gl FOSS distributed Eve Online ripp, cheat-proof cryptocurrency integrated

    - total WordPress redo with clean architecture, webbased ide and CASE Tool/object Modeler built in

    - FOSS Tribes 2 ripp

    - FOSS MechWarrior ripp

    - FOSS x-plattform Git GUI that doesn't suck

    - Rebranded Gimp with single window mode and others sane default configs

    - non-shitty FOSS distributed Facebook replacement Server + non-shitty Web gui (hard crypto auth and anonymity built) ... Please do NOT build this with some bizar scripting PL or LAMP contraption - this is NO place for LAMP!

    - While we're at it: All webappserverstacks are shite. We need a LAMP Killer. Some neat x-plattform appserver in C++14 with an all-out Web Admin UI built in, Modeler included.... Build the WP replacement from above with that.

    - zero-fuss x-plattform Crypto Chat Messenger. Like Xabber but in finished. And for Desktops too.

    I could go on and on but you get the idea. Not knowing what to program is a Problem I don't understand ... Seriously.

    --
    We suffer more in our imagination than in reality. - Seneca
    1. Re:I've a somewhat adversary problem. by Scarred+Intellect · · Score: 1

      Tribes and Mechwarrior. Yes. Haven't played Eve Online much but that could be tons of fun, too! Also the Wordpress without LAMP.

    2. Re:I've a somewhat adversary problem. by Anonymous Coward · · Score: 0

      A problem you don't understand doesn't mean it isn't a problem, it means your understanding is limited. Everyone knows GIMP has offered a single window mode for a long time now.

    3. Re:I've a somewhat adversary problem. by Anonymous Coward · · Score: 0

      And even with single window, it still sucks a dick.

    4. Re:I've a somewhat adversary problem. by Anonymous Coward · · Score: 0

      Tribes yes, Tribes 2 no.

      Let's forget Tribes 2 was ever created. It was a horrible sequel to a great game. Not as bas as Moo3 was to Moo2, but not much better.

    5. Re:I've a somewhat adversary problem. by ntipouan · · Score: 1

      I suppose the problem of not knowing what to program occurs to people that don't have generally problems.

      Pretty much non Linux users with not much interest in science or maths. Because if one's interested in the last two, boy there are many problems to program.

      Also, another class of people I can think of that are having this problem are those that think knowing the basic syntax of a language is what programming is all about. Shit, I was on that level once, but got used to the idea that I'll have to get acquainted with a dozen of libraries, APIs and frameworks if I want to solve real life problems by creating modern cool web (or not) applications.

      My hypothesis is that more or less most of the people have had this issue, but soon solved it, when they discovered how to create problems to solve bigger problems. In the end, there are always problems. But one will have to know stuff to be able to see them.

      --
      deltaS>=0 (c.s.)
    6. Re:I've a somewhat adversary problem. by Lotana · · Score: 1

      - Web gl FOSS distributed Eve Online ripp, cheat-proof cryptocurrency integrated

      - FOSS Tribes 2 ripp

      - FOSS MechWarrior ripp

      What is "ripp" you are referring to?

  26. Mine your own experiences by Anonymous Coward · · Score: 0

    If you have some process that you do a lot, or that you do particularly well, then write a program which enables you to do it better, If you need to keep track of who you are meeting, and who you want to date, then write an app that helps you to accomplish that

    The list is endless, just remember that whatever you are dealing with, there are probably a few million other people facing the same challenges

  27. Go Scratch an Itch! by Anonymous Coward · · Score: 0

    I bet you have a lot of itches you want to scratch. The first thing is to identify some of the itches.

    I like playing games, why not try to make a simple one. You quickly realize how much content is needed even for a simple game, but it isn't about creating the game, it is about learning.

    I decided I wanted to take some of the tables from AD&D 2nd Edition and automate them. I didn't just want random numbers, I wanted to "roll" the dice. This is how I found out that Rand() isn't so random. I actually spent quite a bit of time getting a more random random number generator. This investigation of random in the context of computers has served me well in my work. I've fixed quite a few programs that were supposed to be random, but were not seeming random enough.

    Maybe stats is more your thing, well get your information into a database and start playing with ways at looking at it. Maybe you want to figure out some cool way of looking at the information.

    The trick is to find an itch and start scratching it. Don't worry if you don't complete it. Don't try to get it absolutely perfect the first time. Build something that kind of works. If you are still interested after that, refine what you have built and add more functionality. If you loose interest in it, drop it and move onto something else. You can always come back later if you get interest again. Maybe you end up with something you are really happy to share.

  28. It's in front of your nose by Hognoxious · · Score: 4, Funny

    Rewrite slashdot to either support unicode properly, or (preferably) not support it properly.

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    1. Re:It's in front of your nose by Anonymous Coward · · Score: 0

      They guys at soylent already did it.

      https://github.com/SoylentNews...

    2. Re:It's in front of your nose by Anonymous Coward · · Score: 0

      There would be a lot of shhxxxit for rewriting slashdot...

    3. Re:It's in front of your nose by Anonymous Coward · · Score: 0

      For which value of "it"?

    4. Re:It's in front of your nose by Anonymous Coward · · Score: 0

      Done. visit soylentnews.org.

  29. Re: Write your own version of openssl by Anonymous Coward · · Score: 0

    I was going to suggest making your own self driving car, but that's just as good!

  30. No surprise this is an issue by ErichTheRed · · Score: 3, Insightful

    I'm a systems guy, so most of my development is automation focused (scripts, really simple programs, etc.) The thing that I've noticed about _application_ development is that it's much harder these days to get something functional going right off the bat. Back in the old BASIC days with simple console output it was pretty easy to write a program that both did something tangible and was simple enough to be instructional. Now we have the twofold problem of massive abstraction and having to write against huge SDKs and frameworks so that we don't constantly reinvent everything. That line between writing actual instructions and just connecting huge Lego pieces is getting blurrier every day.

    I've always wanted to expand my knowledge of software development, but the problem in this article is very real. There's tons of backstory required to write simple Windows desktop applications, for example, even in the managed languages.

    1. Re:No surprise this is an issue by Anonymous Coward · · Score: 0

      Then start by writing a console program.
      Also, use Qt Creator to write a GUI program (if it needs to run on Windows and can't be full of security holes: bad luck. That's at least 50 lines of code to just fix up the insecure/broken defaults like disabling loading DLLs from the current directory, sending crash reports to MS by default, creating a model dialog that hangs if you happen to read from a CD drive that recently had a disc in it etc.)

  31. Get a job by gnu-sucks · · Score: 3, Interesting

    Seriously, get a beginner-level job. Write some code for cheap, even for free. Maybe meet a mentor or two while you're at it.

    Or if you're a student, march into some department's office that needs programmers (not comp-sci, but something like aerospace engineering where they need programmers and they can't program that well). Offer to help with some professor's project and see where it takes you.

  32. Write programming tools by Comboman · · Score: 1

    In learning programming, you had to use a bunch of programming tools (like text editors for example) and discovered they were not optimal to your way of working. So write your own. A quick Google search will show there are almost as many text editors out there as there are programmers. 99% of them have an installed base of exactly one; the person who programmed it. But that's OK, you created a tool that works exactly the way you want it to. Now move on to the next problem. Sometimes the solution suits only yourself, and sometimes it's useful to others as well.

    --
    Support Right To Repair Legislation.
    1. Re:Write programming tools by Oligonicella · · Score: 1

      Or like I've done, develop tools that help you do things that are outside of the programming craft. Not only gives you the satisfaction of designing and programming something ~unique, but also something very personal.

  33. I know how to type but I don't know what to write by LQ · · Score: 4, Interesting

    You might as well say you know how to touch type but are staring at a blank sheet of paper. Programming is a tool for solving problems. You need to have a problem domain you're interested in (or somebody is paying you to be). Everything else is reinventing the wheel for practice.

  34. Re: Write your own version of openssl by phantomfive · · Score: 1

    Yeah, or robotics. Make a self-flying drone or something.

    --
    "First they came for the slanderers and i said nothing."
  35. Get a Job by Rob+Riggs · · Score: 2

    Write what your boss tells you to write.

    --
    the growth in cynicism and rebellion has not been without cause
    1. Re:Get a job by Scarred+Intellect · · Score: 1

      This isn't a bad idea. I just took an Applied Aerodynamics course where the instructor gave us some software he created...he kept touting it's user-friendliness and whatnot...

      To solve different systems, you have to change the values in the code, and recompile. This is not a user interface. To top it off, he didn't know how to begin a Visual Studio project without precompiled headers, and several class sessions were spent troubleshooting this for various students.

      I took the code, rewrote it in Java, am building a frontend, and will try to make an Android interface for it. Should be fun.

      But our course wasn't about coding or editing source code; it was about changing some values, hitting "Go" and interpreting the results returned in text files. Because of this terrible setup, I was required to have a laptop during the exam and I don't even own a laptop! If there were a proper interface, it would have saved 3 or 4 class period, and we could have spent more time on aerodynamics.

      Long story short, I completely agree with parent; talk to the engineering instructors, especially the higher-level courses. I also recall seeing, in several textbooks, end of chapter problems that ask to write a program to solve a system; most of these were in Thermodyamics. Maybe ask students if they've seen anything like that and code some of those up.

    2. Re:Get a Job by Pascoea · · Score: 1

      Write what your boss tells you to write.

      This. (Slightly adjusted) Write what your boss will let you write. I learned to code in college, got an IT/Sales job at small company that ran multiple "arms" of business. They had a small intranet that their IT guy had wrote, but didn't have a decent scheduling application, so I suggested they let me write one. It was a great learning experience. Same thing in the next job. Got hired as an IT guy/Project Manager, they were still using paper time sheets to collect time so I suggested they let me write a time keeping application.

      My only add to the OP's comment is that you shouldn't wait for your boss to tell you what to write. Find a problem, suggest a solution. (And make sure you are damn good at rapid prototyping, because most paying positions aren't going to wait 6 months for you to show some progress)

    3. Re:Get a Job by Anonymous Coward · · Score: 0

      This??? Are you serious?

      One of the problems with getting a job is demonstrating experience, so no projects done, no boss for you.

      It's not just about the first job either. I stopped coding in C++ maybe six years ago but continued as an architect, keeping in close touch with the developers and getting them to adopt STL and doing code reading and bug analysis, so I still know what you should and should not do. I know my C++11. And I haven't convinced any employers so far.

    4. Re:Get a Job by Pascoea · · Score: 1

      Yes, I'm serious. My first paying gig out of college started at $8/hour. (2003) I was a retail bitch + IT guy. The position I was hired for didn't even include programming in the job description. I did the job I was hired to do well, and was driven to improve myself and learn new skills. I identified a need within the company, taught myself PHP (that's what my boss used to code their Intranet, my formal education was in Java, C++, and VB5) and used it to write some useful applications. Had I not taken the initiative, learned something new, or just had been too snobby to take a job with shit pay, I wouldn't be making decent money today.

      Can't get a job as a programmer? I'd suggest applying for whatever position you can find within a company that needs programmers, then work your way over there.

  36. Re:You dont know by halivar · · Score: 5, Interesting

    WTF kind of solipsistic zen bullshit is this? In the real world, real programmers write whatever the fuck their boss tells them to write. We're fuckin' code monkeys. When I get a spare moment on my weekends to do hobby coding, I get coder's block. I'm not an idea guy; that's for marketroids and designers. I just want to be pointed in a direction and I'll code my ass to it. Any creativity I have is spent on figuring out solutions, not problems.

  37. Automate a common task or "interesting data need" by Anonymous Coward · · Score: 0

    Start with automating a common task you do, or something you'd like to do in an automated way. E.g. scrape EBay for interesting listings, or make a Slashdot post-counter or a script that compares the price of Toilet Paper across various outlets ... whatever tickles your fancy. Best way to get going.

  38. I know English by Anonymous Coward · · Score: 0

    I have a pencil, but I don't know what to write.

  39. what to program by Anonymous Coward · · Score: 0

    New encryption !
    Give the TLAs extra work!
    if not good enough to stop them, make them get overloaded with new algorithms!

  40. I'm the opposite. by Anonymous Coward · · Score: 0

    I can't program at all, tried to learn still am slowly, yet I have multiple ideas that I wish I could actually make happen. Creative mind with no real outlet.

  41. Why? by Dcnjoe60 · · Score: 1

    Most people in America know how to write, but that does not make them novelists. Many know how to use a hammer and a saw, but that does not make them a carpenter. Likewise, knowing how to code does not make one a programmer, nor will it guarantee success in life.

    With this push on programming, we will simply turn what was once a respectable profession held by those with a real aptitude into the next classification of menial labor. That might be good for business, but not for the individual if they are trying to support a family.

    I'm not saying that people should avoid learning to program. However, it isn't the solution for future success like it is being portrayed. Besides, regardless of what programming is taught to the masses, it will be outdated before their studies are completed.

    1. Re:Why? by Anonymous Coward · · Score: 0

      With this push on programming, we will simply turn what was once a respectable profession held by those with a real aptitude into the next classification of menial labor. That might be good for business, but not for the individual if they are trying to support a family.

      You think this isn't already inevitable?

  42. Here's an Idea by oakgrove · · Score: 1

    Find a hot selling app for the iPhone that doesn't exist on Android and port it over. Or vice versa. You might even make some money in the process!

    --
    The soylentnews experiment has been a dismal failure.
    1. Re:Here's an Idea by tepples · · Score: 1

      The hard part of porting a popular app from one platform to another isn't the programming part as much as the negotiating a license part.

    2. Re:Here's an Idea by oakgrove · · Score: 1

      I hesitate to comment sometimes since I unfortunately lack the wherewithal to spell everything out in excruciating detail but I'll leave the exercise of "port the app without cloning it to the point of requiring the negotiation of a license" to the gentle reader.

      --
      The soylentnews experiment has been a dismal failure.
    3. Re:Here's an Idea by Anonymous Coward · · Score: 0

      uh....there's this thing called open source. amazingly, there are open source games.

      there are also games in this nice thing called the public domain.

      sigh.

    4. Re:Here's an Idea by tepples · · Score: 1

      amazingly, there are open source games.

      I can think of a couple practical problems with porting such a game.

      1. First, a lot of these "open source games" have only the program available under a free software license, with the assets remaining under "all rights reserved" terms. Doom (1993) is in this position, as shown by the DMCA notice that Id Software's parent company sent to Mozilla Corporation about a JavaScript port thereof.
      2. Second, on the whole, a game with both a free program and free assets is likely to be less attractive than a comparable proprietary game due to the lower production values associated with a project that had to be done in spare time due to lack of revenue. Gratis without libre is easy; libre without gratis is not solved to my knowledge.

      there are also games in this nice thing called the public domain.

      True, but these games aren't video games. The copyright term in Slashdot's home country is 95 years for pre-1978 works and works made for hire, and any game that old would have been developed before the invention of microprocessor-driven video games in the mid-1970s. But if the intended suggestion was to port a classic board game to Android, I can accept that.

  43. How does this happen? by MobyDisk · · Score: 1

    I am confused.

    How does one learn to write software without first enjoying it? Are there people out there who can play the violin, but don't know what to play? Why did they pick it up in the first place? If anyone out there knows woodworking but doesn't know what to build, or can do electronics but doesn't know what they want to wire - please email me and I will put you to good work.

    How does someone learn a skill, particularly a fairly academic one, without having a desire to do so? Is this some kind of generational thing because everyone I know who can write software does it because they wanted to build something. Same goes for any other skill or trade. The exception would be a few "dot bomb" progarmmers who took CS because they thought it would make them money. Few of them survived beyond a few years in the trade.

    1. Re:How does this happen? by Scarred+Intellect · · Score: 1

      For myself, The Project I want to create is currently beyond my skills. I've done a R/C car programmed in assembly to not be R/C and to keep itself away from walls. I've done serial communication to monitor temperature of a brewery bright tank in C. I've done a single-seat car with self-driving capability in C++. I did a text-based adventure game in C. I'll need other projects to build me up to where I want to be, but I'd like them to be something interesting.

      I'm currently working on putting a team together to build Something that can hopefully work us towards my Project...but ideas of WHAT to actually create are few and far between for us, something interesting that won't bore us to death. Certainly one could break down each component and learn that: I need graphics editing, network communication, user interface, social network integration, data analysis, mobile...

      I know I really should just sit down and code stuff; do some smaller boring projects, but again I find myself: do what? I know the ends I'm working toward, it's the path there that I'm unsure about. I've noted a handful of good ideas and advice in this thread that I'll undoubtedly take up.

      Some people are definitely in the "dot bomb" category and picked it up to make money. I know of 3 I met at school who quit CS because they couldn't hack it. I think the majority that are learning because they are interested might be in a similar situation as me: knowing we have to build up, and needing these intermediate projects to continue. But WHAT intermediate projects. Maybe the key is to create small projects to mimic components like I stated above, or like re-writing a library for practice. Again though, boring.

      Suck it up, buttercup (as my wife loves to say)!

  44. And that's how php got created (nt) by allo · · Score: 1

    no text

  45. Get a job by jdavidb · · Score: 1

    I started learning to program around 1987, and got my first job in 1998. After about a month of real work a light came on and I realized I enjoyed having somebody else who knew what I should program. That doesn't keep me from still writing programs I really want, but it is very rewarding for me meeting people's needs by writing the programs they envision.

  46. Re:You dont know by Anonymous Coward · · Score: 0

    As a software developer myself, I mostly work off user stories and within sprints. Someone else spec's the the project and I turn it into code. As a living / breathing human with interests outside of programming, I often find ways code can make my life easier. I never have a chance to actually build these applications though, since I program 40 hours a week and just want to do nothing when I go home

  47. Re:You dont know by Krishnoid · · Score: 1

    We're fuckin' code monkeys.

    Damn straight.

  48. Get a job! by markhb · · Score: 1

    Particularly in a non-technology company, like insurance. They'll give you LOTS to program, probably in PL-SQL.

    --
    Save Maine's economy: write stuff down. All comments are exclusively my own, not my employer.
  49. Ask your manager by mi · · Score: 1

    Ask your manager and quit bothering the rest of us here. Keeping you productive is his responsibility, not ours.

    --
    In Soviet Washington the swamp drains you.
  50. Add a simple feature to an opensource program by jgfenix · · Score: 1

    Find an use case in a program that you use and dimple/improve it.

  51. Common in all creative fields.. by wbr1 · · Score: 1

    See writers block, blank canvas syndrome, musicians block... Sometimes it is intimidating to take that first creative step. Just jump. Once you start you often find you cannot stop.

    --
    Silence is a state of mime.
    1. Re:Common in all creative fields.. by Anonymous Coward · · Score: 0

      See writers block, blank canvas syndrome, musicians block... Sometimes it is intimidating to take that first creative step. Just jump. Once you start you often find you cannot stop.

      No, it's common among amateurs who want to get into those fields and think they have what it takes.

  52. My advice by jgotts · · Score: 1

    I have been programming since 1987.

    My advice to you is to find a free software project and start fixing bugs.

    [Aside from poor communication skills] fixing bugs is the skill that programmers are the worst at, and help with fixing bugs will make you well liked. Just be nice about it. All software has bugs, and no malice is ever intended by buggy software. All software is buggy, and the most experienced programmers will own up to their bugs and be happy that you're volunteering your time to help fix them.

  53. Find someone with a problem a program can solve by Anonymous Coward · · Score: 0

    Find a not for profit organization. Find out what they need. Build it for them. You get problems to work. They get something they need. Win-Win.

  54. Make it better by rsimpson · · Score: 2

    It doesn't matter what it is, or how it fits into anything, just identify something which annoys you and make it better.

    Curtains don't open when you wake up...
    Traffic Lights seems I'll times...
    Having to specify times on the microwave when it can easily measure weight...
    Windows wants to update to latest version...
    KDE doesn't integrate with Office 365...
    Your Company is using Office 365...
    The Digital Sign-age at the Airport has a brief 0.5s black frame between videos...
    I can get a lift anywhere I want by pressing a button on my phone, but I need to wait 20min before a waitress takes my food order...

    ... I'm sure I can make this process better!

    Then just sit down and learn enough until you know how to make it better. Then make it better.

    The reason you became a programmer is because you see patterns in the world, and can imagine a way to make those patterns more efficient. You don't need to revolutionize the pattern, just make it better. Linus Torvolds never revolutionized operating systems, he just made the development process around them better.

  55. Re:You dont know by jshazen · · Score: 1

    Replying to undo moderation mistake. But, I tend to agree with this. I have so many little things I'm curious about, and write little solvers for. The Monty Hall Problem simulator, A program to find the best possible Words with Friends word given certain letters, etc.

  56. Alternative OS's by Anonymous Coward · · Score: 0

    If you want to write FOSS, but are too scared of screwing up someones code, check out some of the alternative OS's out there. Haiku-OS, MenuetOS, Plan-9, etc all need even the most basic programs. Be it system or client code. GUI or non GUI. In many cases this allows you to "reinvent" the wheel which is a good way to learn, while at the same time not being unproductive by working on yet another text editor or what have you.

  57. Read Naom Chomsky's book by zakeria · · Score: 1

    "Syntactic Structures" then design a compiler for your own language..

  58. Re:You dont know by Anonymous Coward · · Score: 0

    That's why I became a DBA. I am truly a programmer, but because I enjoy it and it's my hobby, I was getting burned out doing it for a job AND a hobby. Now I love it again, as a hobby and side business.

  59. Agreed it's tough for all the people I know by Hevel-Varik · · Score: 2

    I'm self taught and have the same problem. My solution was and is to keep reading. I rarely do exercises and I can't bring myself to code to no end, because of
    opportunity costs, I've done some stuff here and there as I needed (scripting mostly) and just kept reading. Read textbooks, OS stuff, computer architecture, algorithms and math. The problem is that the stuff I need has been done and is at my fingertips, and though I could re-invent a wheel or re-implement a library, I learn well through reading books, and books open up new vistas and raise my ceiling. I've always thought, that when the time comes, I'll have a good enough background to go deeply into what ever I'm being paid to do.

    If you are looking do it for a living, this method can if fact work. I didn't know that until recently.

    I had been working in app support when started learning this stuff, after a couple of years I got access to the code base and would read it to solve bugs that hit the help desk or answer obscure questions about how things worked when we got them, at some point I felt confident to ask for some write access and a mandate to spend time working on stuff. It took a long time to get that but at some point it happened and now, guess what, I am professional programmer. I am still reading though. Now I see that the lack of practice didn't hurt me at all. Sure I had look up syntax, but the IDE either writes or reviews all that stuff for you and unless you are thick it seeps in after a while.

    Learning by doing is critical but if you only learn by doing you will end up learning very little (unless you have much more time than I do). You'll get the practice when you'll need it and you'll get good quickly if you have the right background.

    so if my experience speaks to anyone out there, try to get a job in support, a stones throw away from the development. As soon as you can read code, try to get read access to the code base. When you are comfortable, agitate appropriately for some write responsibilities in down time, even for no extra pay.

    1. Re:Agreed it's tough for all the people I know by sydneyfong · · Score: 1

      Hate to break it to you, but if you even had to look up syntax regularly, you're not a professional programmer.

      Seriously, you need practice.

      --
      Don't quote me on this.
    2. Re:Agreed it's tough for all the people I know by Hevel-Varik · · Score: 1

      I may not or not be a professional programmer. I am whatever you call someone who gets paid to program computers. But I can read in good faith...thought experiment: what might "if you're not thick in sinks in after while" mean in this context...(hint: I know syntax)

  60. Re:You dont know by Grishnakh · · Score: 3, Interesting

    As the old saying goes, "necessity is the mother of invention". So most non-work programming I end up doing is writing short scripts to automate or simplify things I'm already doing on my computer at home. Any serious project will require a serious time commitment, and I have too many other things I really want to spend my free time doing, such as going outside and hiking.

    Honestly, I wish I did have one day a week where I could get paid to spend it doing some self-directed programming, such as working on an interesting open-source project, instead of the boring crap I usually have to do for a paycheck.

  61. Re: Write your own version of openssl by Anonymous Coward · · Score: 0

    Or make a bot to troll ./. Like everyone else apparently...

  62. Help people by Anonymous Coward · · Score: 0

    Programming is a valuable skill. Think of applications you could create that would help the disadvantaged.

    A web app that let's low income people locate inexpensive local produce.

    Web beacons for the elderly that trasmit a url containing contact and health information.

    An easier way to donate money to the homeless electronically.

    Every hour you spend on completing personal projects like these is more valuable than random anonymous cash donations to charity.

    Completing them is the key word here though.

  63. Don't know what to program... by paulxnuke · · Score: 2

    (Comment) For all the predictions of AIs taking over programming, this is about where they are, and will be, for the foreseeable future.

    If you want to rewrite a library, then you can gather lots of attention for yourself by recreating a GPL library (with mods/improvements, of course) and making it BSD: readline would be a good example. The best part is that the ones who won't be wanting to tar and feather you are also the ones who might actually pay you.

  64. You're a digital construction worker. by Anonymous Coward · · Score: 0

    Get over it and find a good architect.

  65. Clone Asteroids by Anonymous Coward · · Score: 0

    The same dilemma arises though. "I want to make a game, but I don't know what to make."

    Are you fucking serious?!? *sigh* Sorry I lost my temper there. Ok, let's assume you really meant the above.

    [Nearly] any time you are working in a new programming environment, or trying out a new graphics library, or learning a new language, or if you're just plain a new programmer, do this:

    Clone Asteroids. (Or Space Invaders or Pac Man or Tron-ish lightcycles / snakes. Or some other ancient classic. Whatever floats your boat.) You don't need to invent a game, just sort of copy some fairly simple one as an exercise. Spend 3-4 hours on it.

    I don't mean to trivialize the question, but .. wow. This one is just too easy. I bet I have made at least a dozen totally-shitty semi-functional Asteroids ripoffs over the decades (nearly all of them lost to time, but don't worry, nothing of value was lost) on various platforms in various languages, and I just sort of assumed that everyone does that. No?

    Wait, maybe that's it: you're not worried about it being totally shitty, are you? Don't. Just do it. Let your game be shitty. You're just learning (and looking for API surprises), not trying to create a product or anything serious. Better ideas can come later.

  66. Have a Job by Anonymous Coward · · Score: 0

    I messed around a lot before having paying work (you know a 9-5 job) but frankly it was a waste of time. Having actual goals and extrinsic motivation (food) makes a lot of difference and without that (food ... I had no trust fund!) you get into a cycle of need that is tough to exit.

    I understand that the current fad for employers is that you must be magically in the top 5% of programmers before you can get hired but this is really stupid and likely impossible for normal folk.

  67. Dark Souls Infinity by Anonymous Coward · · Score: 1

    You Died

  68. I wish I had this problem by LDLar · · Score: 1

    Pair up with me. I've got tons of things I'd love to program but can't dev them.

  69. Pick something else you want to learn about by wyattstorch516 · · Score: 1

    and write code that implements it. For example, if you want to learn more about cars write some classes that describe the car components. Start off with a very basic, high-level operation and then get more detailed. As you learn more about cars you can enhance your code to better describe them. Eventually you will become smarter in two areas.

  70. Re:You dont know by TsuruchiBrian · · Score: 2

    So let's say you where born a long time ago when it was customary to write code in assembly. You're bosses tell you to write a shit ton of assembly code for a bunch of different types of computers. If you had some imagination, you might come up with the idea to create a programming language and compilers that turn programs written in that language into assembly understandable by any number of different computers.

    Or you might just keep writing assembly code. And if everyone had such a lack of imagination, then not only would we never have invented compilers and programming languages, we would have probably never invented computers or any sort of automation at all.

    If you are going to wait for marketing people to come up with these kinds of ideas, you're going to be waiting a long time. It doesn't take a marketing genius to recognize the utility for a tool yet to be invented. All it takes is the ability to recognize when you want something that doesn't exist and realize that you are capable of making it exist, and a little motivation and pride of workmanship.

  71. Make something U need & "if you build it..." by Anonymous Coward · · Score: 0

    "... they will come" & You'd be surprised who else needs it too.

    When I did APK Hosts File Engine 9.0++ SR-4 32/64-bit http://www.bing.com/search?q=%...

    I created it originallly in 3 parts in 1999-2003 in charactermode/tty term/DOS console work & then put it into a GUI app as that IS what users really want including me!

    I kept it to myself circa 2003-2011 out of respect for webmasters making a buck as 1 part of how it speeds you up is adblocking!

    Then I released it in mid 2012 after "malware explosion 2011" & due to ADVERTISER NEGLIGENCE in 'malvertising' infecting millions worldwide!

    It's gotten SO MUCH DEMAND Malwarebytes' hpHosts site had to create mirroring servers + AMAZON servers for its downloads + data draws daily!

    See subject: Many here mention "solve a problem" - that's key to it.

    APK

    P.S.=> Some wares I've done since are parts of successfully sold commercial ware via certified Microsoft partners - If I can do it? So can you all... apk

  72. Intersect your coding with an interest like music by shmorhay · · Score: 2

    Once comfortable with your programming language of choice (for example, Python) seek out API libraries for the language that are geared to a second interest, such as graphics, user interfaces, math, maps, needlepoint patterns, or whatever. My limited knowledge of (but great interest in) music has been enhanced by digging through the PythonInMusic wiki, plus studying the excellent book (with associated code library) "Making Music with Computers" by Bill Manaris ISBN-13 9781439867914. Rummage around on the net to find the intersection of your personal area(s) of expertise or a nascent interest with your coding language. The things you find interesting outside of computers all generate some sort of data. Work with it.

  73. Learn basic probability theory, stats, and operati by Anonymous Coward · · Score: 0

    ... and then write software that solves a problem that needs solving. Maybe throw in a little graph theory while you're at it. I learned this stuff in grad school and it really opened my eyes to what can be done with software and algorithms.

    The subjects in the title teach you how to model "constrained optimization problems under conditions of uncertainty". In other words, mathematical models implemented in software that helps an end user or the software itself find the "best" of something according to their needs.

    The subjects require basic algebra, super basic calculus, and a little matrix math -- nothing too heavy -- and many cheap dover books can be found on the topics. wikipedia is also your friend here.

    Saying all that, the code monkey comments are spot-on. When you do it for a living you are going to implement what your boss wants you to implement.

  74. Re: Learn basic probability theory, stats, and ope by Anonymous Coward · · Score: 0

    ugh. the title got chopped off. it should read:
    probability theory, stats and *operations research*

  75. Re:You dont know by Anonymous Coward · · Score: 0

    I agree, but the weekend should not be about work.

  76. non-profits, FreeCodeCamp, by AnAlchemist · · Score: 2

    Some of the advice here seems pretty bad. Download a CS paper and implement the algorithm??

    SHORT ANSWERS:
    * https://www.freecodecamp.com/
    * http://thecommunitycorps.org/
    * meet-ups
    * internships / apprenticeships

    LONGER ANSWER:
    Find a real project, and try to pair with someone. Best way is via the websites above, unless you know someone.

    e.g., You find out a local soup kitchen needs a website. They could also use an app to register incoming folks (one soup kitchen I volunteered at asked for name, age, and number of kids). So you build a WordPress site and write an Android tablet app or something.

    BENEFITS
    * You learn the whole SLDC, especially users and requirements gathering
    * There's so much more to programming than code. Databases, testing, etc.
    * Might get a job out of it.

  77. author eaten by grue. by Anonymous Coward · · Score: 0

    auditing existing spyware would be more useful

    google analytics and windows 10 global mother fucking spyware for example

  78. Get rid of systemd by ChrisMaple · · Score: 1

    Rewrite gimp using the Qt libraries.

    --
    Contribute to civilization: ari.aynrand.org/donate
  79. wow by Anonymous Coward · · Score: 0

    I know how to write, but I don't know what book to write.

  80. Write a raytracer by AnontheDestroyer · · Score: 1

    Assuming there's already years worth of work done by the "giants" you'll be standing on to make colors appear on a screen using your language environment.

    Then, if you're of the libertarian bent, claim superiority over mankind. If you're more liberal, don't pull the ladder up behind you like the fuck face libertarian.

  81. Implement Dynamic Relational (DRDBMS) by Anonymous Coward · · Score: 0

    http://c2.com/cgi/wiki?Dynamic...

    I always wanted one.

  82. P = NP or not by Anonymous Coward · · Score: 0

    These fuckers have no business being programmers if they can't figure what to program.

    P (!)= NP is a good start
    Computer Vision
    How about Artificial General Intelligence?

  83. Write a small utility that works better by rklrkl · · Score: 1

    Why not write a small utility that may do something similar to sometrhing that already exists (let's face it, almost everything has been thought of already!) but does it a better/easier way?

    For example, I always hated the syntax of sed (regexp's aren't easy either) and it missed quite a few features I'd like, so I wrote "replace" instead:

    http://hpux.connect.org.uk/hpp...

    I also find "bc", "dc" and "calc" completely unfathomable, so I wrote my own "calc" (without knowing about the other one until well afterwards!) which actually has an expression evaluator based on BASIC (i.e. "obvious"):

    http://hpux.connect.org.uk/hpp...

    Neither utility is large and both were fairly straightorward to write and I use both quite regularly to this day, many years after writing them.

  84. Not technically true by eWarz · · Score: 1

    Knowing 'how' to program isn't knowing syntax, etc. It's knowing how to apply that syntax to real life problems an scenarios. Many people seem to forget this. To put another way, if i ask you to build a bridge, it doesn't matter that you have all of the tools to build a bridge and know how to use those tools, can you actually build the bridge is the problem at hand.

  85. Too many programmers? by jandersen · · Score: 1

    Sorry to take the negative corner here, but perhaps at least part of the problem is that there simply are too many programmers in the world. Or perhaps I should say, too many people who only know how to code - all the real problems that could be solved relatively easily with a naive approach, have already been solved. We are now into design patterns, frameworks, artificial intelligence and so on, and they all require university level education to really understand. And another problem with this technology is that it evolves so fast - if you are at the start of an education and are interested in one of the current big things, by the time you're ready to get a job, it may already be dated.

  86. Indeed what to program... by Anonymous Coward · · Score: 0

    I'm in the same position. Challenges are just games and I've done them all in different languages I tried to master. Open Source projects are nice but are often just a step in the learning process and I've nothing to learn at those levels I'm allowed to contribute.

    It takes too much effort to become one of the leading programmers/designers of an open source project and even then, it's not really 'your child'. I would love to start my open source project, but what should I make?

    My creativity in computer science has faded away. I'm fed up with computer science. There isn't any science in programming and software architecture. I'm a scientist at hearth and would like to do scientific research. The degree computer science is misleading. I think 99,9% of the computer scientist become just glorified programmers.

    I've lost connection with the computer world. I don't see any real progress in: "main frame program but on a desktop", "desktop but in a write once run many language", "desktop but on the web", "desktop but on mobile", "desktop but in the cloud", ... And with every iterative boost in processor power, computer programs become less and less efficient. With every increase in processor power, the bloat and amount of errors increased. I would have loved to be able to work as a scientist to try to make programs error free, use less resources, optimize algorithms. But it is all wasted time because the time to make software more efficient is a lot larger than the time to double the processor speed.

    The software crisis is still real, but circumvented by the fabulous increase in process power.

  87. Skills, but no inspiration? by Sir+Holo · · Score: 1

    If the OP does indeed have the chops to be a good programmer, but lacks any inspiration for any type if 'new thing' to create, the answer is simple.

    Get a job.

    Get a job where someone with an idea or inspiration has defined what they want, and has out-sourced the actual coding to make the thing a reality.

    Inspirational genius is rare. Uber-skills in programming are rare. A single person having both is ultra-rare––when it happens, it is always the product of a great deal of hard work and incremental education in the two areas. It is only then that one can even think that they might be capable of creating a master-work.

    How is this not obvious to everyone?

  88. Re:I know how to program, I know what to program.. by Anonymous Coward · · Score: 0

    I have the time, but I don't have the health to program... Can't lead the sedentary lifestyle anymore.

  89. Re:I know how to type but I don't know what to wri by Jesrad · · Score: 1

    I know how to write but I don't know what to write

    I know how to walk but I don't know where to go

    --
    Maybe we deserve this world ?
  90. Re:You dont know by halivar · · Score: 1

    You're bosses tell you to write a shit ton of assembly code for a bunch of different types of computers. If you had some imagination, you might come up with the idea to create a programming language and compilers that turn programs written in that language into assembly understandable by any number of different computers.

    Well, yeah. That's what programmers do, right? They come up with elegant solutions. That's where all my imagination goes. But who provided the task? In your example, "bosses" provided the problem domain.

  91. Re:You dont know by Captain+Ramage · · Score: 1

    When I get a spare moment on my weekends to do hobby coding, I get coder's block. I'm not an idea guy; that's for marketroids and designers. I just want to be pointed in a direction and I'll code my ass to it.

    I don't see why you are so WTF about this. This is what the guy is saying. He's a "codemonkey" and doesn't have an idea about what to code in his free time. It sounds like he wants to solve problems with is code but can't figure out what problem to solve. It's like the mechanical engineer thinking he'd like to invent something, but just figure out what to invent.

  92. Get involved by FrozenGeek · · Score: 1

    Assuming you're not working as a programmer, get involved in an open source project or a charity. I've come up with all sorts of ideas for programs as I've worked on other programs. "Gee, this task would be so much easier if I could..." Working with a local non-profit in my spare time, as I got to know their work more in depth, I came across several programming needs that I could and (have/am) filled. "We really need a program to do ..."

    --
    linquendum tondere
  93. Re:You dont know by halivar · · Score: 1

    That's what the submitter is saying. I agree with him. I am WTF'ing about the (-1, Flamebait) GGP saying you're not a "real" coder if you're not just brimming to full with ideas of what to code.

  94. Rule 1: Don't touch Tetris by tepples · · Score: 1

    Then the hard part becomes affording a lawyer to find where "without cloning it to the point of [infringement]" is likely to lie. For example, the featured article recommends porting Tetris, but The Tetris Company is known to patrol Google Play Store and has successfully sued a cloner (Tetris v. Xio).

  95. Necessity is a REAL mother... by Anonymous Coward · · Score: 0

    If you really need it and no one else will do it, then you gotta do it yourself. So you gots to learn how to get it done.

    Kind of backwards, isn't it?

    But when everyone else is "too busy" getting by and it needs to be done--what choice have you got?

    1. Re: Necessity is a REAL mother... by Anonymous Coward · · Score: 0

      First, you answer > the problems in Kernighan and Richie. Then you write programs to demo algorithms in Robert Sedgewick's book. Then you either write games for amusement, or you follow the "necessity is the mother..." principle to write something that no one else has ever written. But first you need the data structure tools that Sedgewick and others give you. You need a hammer and a saw before you can build a house. So you learn how to build and use trees and linked lists to your advantage. If you are a Visual Basic jock or something easy like that, then you have a long way to go. Implement Kernighan and Richie problems using linked lists instead of arrays, and you will have some fun.

    2. Re: Necessity is a REAL mother... by Anonymous Coward · · Score: 0

      Solve a sudoku puzzle by brute force heuristics. Then learn how to create solvable sudoku puzzles. They're easy 9x9 matrices. Harder than tic tack toe, but not that much data at 9! permutations.

  96. A Solution in Search of a Problem by tmjva · · Score: 1

    This old adage comes to mind.

    --
    Tracy Johnson
    Old fashioned text games hosted below:
    http://empire.openmpe.com/
    BT
  97. You want a project? by dataspel · · Score: 1

    Here's a project. Model how any small part of the Interplanetary Transport Network works. Then please send it to me. Here is a paper to help you get started: http://www2.esm.vt.edu/~sdross... Have fun coding!

  98. Re:You dont know by TsuruchiBrian · · Score: 1

    Providing tasks is easy. I don't go to work to have tasks provided to me. I go to work because that's where I can get money from. I am perfectly capable of providing myself with tasks (and I do), but those tasks don't come with a salary.

  99. Thus showeth forth the infinite wisdom of Gates by Anonymous Coward · · Score: 0

    When the Lord created Cyberspace he filled it with programmers who know how to create software and managers who know what software was needed and then he sent his only son Jobs to teach mortals what software should look and feel like.

  100. Re:You dont know by silentcoder · · Score: 1

    > then not only would we never have invented compilers and programming languages

    Except that this is not at all how we got compilers and programming languages. Hell cross-platform support was a benefit to these concepts that wasn't realized or deemed important until well into the second generation of compilers and languages. The original motivation was pure marketing. To get businesses to see the value of computers, they would need to be able to use those computers for their specific needs. There wasn't a huge stack of available generic software yet - nobody knew what an "office suite" may contain or even conceived of the concept. So how do you get businesses to want a computer ? By making it so the owner of the business can use it for whatever he specifically needs. To do that - you have to lower the barrier of entry for applications programming. The person who came up with a solution was Grace Hopper and she wrote the compiler. And no surprise the language she invented to compile with it was COBOL - a language designed so executives used to filling accounting and HR-style forms could write code in a familiar environment.

    Most later programmers would hate COBOL but it survived for decades due to it's executive-friendly nature. It also proved that the concept of high-level programming worked, and that's when the hacker types started writing their own compilers for languages designed to fit their own needs better.

    The idea of compilers as a way to avoid rewriting machine code over and over didn't truly hit home until 1969 when K&R invented a high-level language close enough to machine code to write operating systems in and used it to create the first Unix.

    Your point is perfectly valid, don't get me wrong, but your choice of example was terrible. I agree that solving personal problems and making your own work-life easier is a hugely important source of ideas for what to code - it is also where by far the most rewarding and fun part of programming as a career happens. But the other side is paying the bills. Getting people to pay you means solving THEIR problems which they already identified and which may be something that YOU would never experience. That's often where the worst part of our job lies, it's often drudgery (not always - some clients/bosses will present you with truly interesting challenges but often). And compilers and programming languages were solidly born from the latter. Hopper's lifelong passion for computers led to many breakthroughs but she invented THOSE two to ensure that computers would survive post-war. They were created to turn war-machines into business-machines - to open up new markets so that the industry she loved to work in would thrive and people like her have would be able to get PAID for working with computers.

    A better example of what you describe is actually Kernighan and Richie - but they came rather later.

    --
    Unicode killed the ASCII-art *
  101. Re:You dont know by TsuruchiBrian · · Score: 1

    My example was hypothetical.

    No single person invented the programming languages/compiler. According to wikipedia, Grace Hopper wrote the first compiler in 1952, but it was for the A-0 language, not COBOL.

    Also according to Wikipedia:

    At the University of Manchester, Alick Glennie developed Autocode in the early 1950s. A programming language, it used a compiler to automatically convert the language into machine code. The first code and compiler was developed in 1952 for the Mark 1 computer at the University of Manchester and is considered to be the first compiled high-level programming language.

    and

    The FORTRAN team led by John Backus at IBM is generally credited as having introduced the first complete compiler in 1957

    Like most advents in computer science, this one seems to be furthered by a lot of different people over a long stretch of time, especially if we include the people like Turing, Von Neumann, etc. I am not trying to say that business people did not help to foster this field/industry where these big (not and not so big) names in computer science could thrive. But I credit the people who came up with the solutions to the problems as being the "idea people" , and not the people funding them.

  102. Re:You dont know by silentcoder · · Score: 1

    Every major invention in human history appears to have been simultaneously and independently invented by at least 3 people at the same time. I personally maintain that invention is a natural consequence of the state of human knowledge at any given moment. Once the next step becomes possible - multiple people will take it.
    Though I was not aware of the other claims to the compiler - their existence does not surprise me in the least.

    --
    Unicode killed the ASCII-art *
  103. Re: You dont know by Anonymous Coward · · Score: 0

    Yeah, learn Assembler to appreciate how a CPU really thinks. But do it first in dosbox, with 16 bit assembler. Learn the read/write commands with DOS or BIOS interrupts. Then learn how to use the program stack and the status register to your advantage. Learn to do shift with carry or rotate with carry, add with carry, all that jazz. Learn how to write pixels on your screen by going into graphics mode, and trying to write a slanted line, pixel by pixel. Write a random walk in graphics mode, pixel by pixel. Enjoy.

  104. Learn SECURE coding by Wolfrider · · Score: 1

    --Take a look at the OpenBSD codebase and learn how to code without leaving a bunch of security holes.

    --
    .
    == WolfriderV6 == I'm willing to admit that *I just might* be wrong... Are you??
  105. Make a social politics game. by PortHaven · · Score: 1

    Create a game that simulates our present mess of politics. A social structure game, in which goals are established. In which one can propose a law to achieve such goals. But others will attach riders, and amendments to alter aspects.

    Replicating aspects of our present congress. You vote for Bill 123, but your constituents are told you voted for a tax cut for the wealthy. But hey, that was attached to a bill funding renewable energy research. Etc.

    Such a game could create really fun social structures. While at the same time educating Americans on how screwed up the political system is. Oh, and how to make it fun???? How to separate it from reality?

    Make it take place in space...... "Galactic Senate"......you're given an alien race, perhaps a single planet, perhaps many planets. You have resource needs, political boondoggles, crisis, etc. Every player's race has different variables.

    Such a game would be a blast. It might replace "You've died of dysentery." with "Your bill died in committee."

    So there is an idea....if you a few of you dedicated coders want. Message me....I can expand this, and hey....we can have some fun.

  106. Yet, .... by PortHaven · · Score: 1

    Some of the best authors and story tellers are atrocious writers. While some are amazing editors but can create a story. And often these work together and give us some of the best books we've read.

  107. Sheesh,.....these comments are silly. by PortHaven · · Score: 1

    Write..."clone" of existing tool. See this is the problem with our industry. Those who are best at programming are often introverts, very focused, task oriented. Those of us with ideas, are often challenged to follow through and complete. The result is numerous products, by small to billion dollar companies that suck. (EXAMPLE: Amazon Kindle Fire kid management tool allows you to set different time for weekdays (M-F) and weekends (S&Su). Problem, that is NOT what parents need. Parents want to allow their kids to use their tablets later on Fridays and Saturdays, Sunday while being a weekend day is in fact a SCHOOL NIGHT. How do billion dollar companies with crap ton of developers miss these things? Why did it take Apple years to implement location based alerts. Etc.

    The problem is that our engineering and development is tied to our innovation paths. But innovators often make poor engineers and developers. Steve Jobs is renown as an innovator, but he was rather sub-par as an actual engineer/programmer. He had Steve Wozniak by his side, Wozniak was a good engineer. Steve would have an idea, he would see the need, the presentation the means of accomplishing. Wozniak would engineer Steve's solution into existence.

    Sadly, most companies fail to recognize this need. And the result, a lot of crappy sub-par products and innovations coming out decades later than they should.

    I remember a great example of this was me sharing ideas I had with two physicist friends of mine, who were quick to dismiss my idea as not being feasible or correct to the laws of physics. But then my ideas and concepts spurred them to consider how my idea's concepts could be applied correctly to physics. Essentially, I had an interesting concept, but you can't get there from here. But gee, he could use that instead to get there and that might just work.

    These are the dynamics that are lost in our modern workspace environments. Those with skills lacking inspiration, those with inspiration not being wired with the focus and constraint needed to complete a project on their own.

    Yet, when there are pairings, Steve + Steve....you get jobs and wowz!

  108. vice-versa by peawormsworth · · Score: 1

    Most people have the opposite problem. They know what they want, but don't know how to make it.

    The problem described doesn't exist. I think everyone knows something they want, but most of us also know that we don't know how to make it. I think the primary problem with beginners is knowing the limits of the competence with the tools available. I agree with the post on this: "you will write LOTS... not just one!" Because those who write just one are not programmers and probably made something nobody wants anyways.