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!

44 of 255 comments (clear)

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

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

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

  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.

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

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

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

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

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

  10. 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
  11. 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...
  12. I know how to program, I know what to program... by Arkh89 · · Score: 3

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

  13. 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
  14. 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."
  15. 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.

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

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

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

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

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

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

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

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

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

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