Can "for fun" coders weigh in on the What Now stage of learning to code?
March 16, 2016 5:52 PM   Subscribe

You all know what this is - the brief high of learning the basic concepts of data structures, objects, etc, is followed by a devastating realization that you have no idea how to put these concepts together to do anything useful. Can someone who doesn't take this too seriously recommend a next step after the infancy stage?

I ask here because I'm just doing this for fun and personal growth and a lot of professionals get very territorial, condescending, insulting, or a combination of all three. Oh, and I'm doing Java and Python by the way (not necessarily at the same time).
posted by FakeFreyja to Computers & Internet (16 answers total) 26 users marked this as a favorite
Find a project to work on. There's something called Code4America or something like that that could be helpful.
posted by kevinbelt at 5:59 PM on March 16, 2016 [3 favorites]

Make something that will be useful to yourself, whether it's a web app that reminds you to buy eggs or something equally simple and inane. Then add a feature to it. Then another. Then go back to the start and see if you can re-implement those features all at the beginning instead of incrementally. See which version of the program runs faster or has more bugs. If you started in Java, try to do it in Python, or vice versa. And so on.
posted by infinitewindow at 6:10 PM on March 16, 2016 [7 favorites]

Since you mentioned Python, I think you should check out the Django Book since it is free. Note that the book is out of date with respect to modern Django but hey it is free. It also does a nice job of slowly building up concepts in the sample application that you are building such that you will start to learn how contemporary web applications work. In particular the book has you taking the easy way to solve a problem initially and then in later chapters reworking those parts using capabilities that will back your solution more robust, more elegant and more future proof.

Even if you don't intend to be a Django programmer, the concepts you learn can be easily applied to other web frameworks that you will encounter.
posted by mmascolino at 6:16 PM on March 16, 2016

I am in the same boat. I did a bit of Ruby then got into Javascript as a result of doing Team Treehouse's front end tracks. After I finished those and full-stack Javascript, I did JavaScript: Understanding the Weird Bits on Udemy. But I'm in a "where do I go now" rut. I have a small project that I made, and then tried to optimize. But the other project ideas I have I feel like will require a lot more learning (in my case of NodeJS, Express, and Angular). Like you, I don't have plans to make this a career or anything like that; it's just a hobby.

So I don't know if I have any advice but I do have sympathy.
posted by synecdoche at 6:23 PM on March 16, 2016

My standard advice here is to find an itch and scratch it. If you're making something that's useful or fun, then you're much more likely to stick with it (and you'll have something yo show for all your work at the end of the day!)
posted by chrisamiller at 6:23 PM on March 16, 2016 [4 favorites]

You're at kind of a fork in the road: should you dive into more knowledge or apply what you now know?

If you want to level-up in your programming there are code katas and algorithms to learn, but if you want to see how other people have worked with the stuff you've learned there are projects to which to contribute (or at least familiarize oneself by following bug reports through the process), and charity type sites.
posted by rhizome at 6:30 PM on March 16, 2016

I was a 'for fun' coder for a long time before I ever considered making it a profession. The best thing I can tell you to do is build something you think would be neat to build. Doesn't have to be useful, doesn't have to be fully thought through, just make something. I don't care if someone else did it better, or cleaner, or has more features, or integrates with your raspberry pi and your toaster and your nest... just build something! Build lots of little things! Figure out what you like to play with, and then see if you can do it (better // more professionally // using all the neat data structures and algorithms you've learned). But make stuff.
posted by isauteikisa at 7:21 PM on March 16, 2016 [3 favorites]

Follow tutorials that have you build things. or books like learn python the hard. Go step by step through and build it and deploy it. Seriously, one of the hardest parts of learning on your own is figuring out how to get your computer to do the thing outside of an interactive browser window.
posted by gryftir at 10:07 PM on March 16, 2016 is great for learning (new languages, clean code best practices, etc.)
@yourfirstpr tweets newbie-friendly issues in open source projects you can contribute to.
But I recommend starting new projects more often than contributing to others' projects :)
posted by floatboth at 7:18 AM on March 17, 2016

Choose a program you have done before, and re-program it using the new tools. That way you can focus on the programming and not on the problem to be solved. I must have programmed 5 or 6 yacht racing scoring programs over the years, and my son wrote more Mandelbrot programs than that.
posted by SemiSalt at 7:50 AM on March 17, 2016

Due to the "putting [data structures] together to do something useful" part of your question , I suggest that you work through SICP. This book teaches how to go from problems to data structures to solving problems. It shows how a problem maps to a data structure and how to use algorithms on that data structure to answer specific questions about your problem.
posted by bdc34 at 8:52 AM on March 17, 2016

One thing that perked me up was getting cheap hardware to code practical things on. A Raspberry Pi that uses a Python script to measure room temp via sensor, gets info from a Nest thermostat via API, sends it to Google Sheets via IFFFT. Lots of fun connecting basically off-the-shelf pieces.
posted by cameradv at 12:12 PM on March 17, 2016 [1 favorite]

As a self-taught programmer, my understanding is that SICP is basically impossible (or at least highly unenjoyable) to go through on one's own and is mostly promoted outside syllabi by people who had to go through it themselves.

Faced with the choice of next-step books, I went with The Algorithm Design Manual, which is more practical and a bit more friendly to non-classroom guidance.
posted by rhizome at 12:25 PM on March 17, 2016 [1 favorite]

I find myself encountering small inconveniences from time to time, and sometimes the next thought is, "I can write some code to make this easier." Some examples:

We wanted to play bingo during lunch at work for money, of course. I wrote a standalone page with javascript.

I wanted to know the current temperatures, today's high & low, and what to expect tomorrow. I wrote a small python script to snag data from Wunderground's web API to run periodically, and dump it to an HTML file that's my browser's home page. I don't have to type a URL, deal with ads, etc.

The WeightWatchers app used to be horribly slow, so I found their algorithm online, and put together a lightweight web/python app to do the points calculations in my phone's browser. It gave me what I needed without having to deal with all the other cruft of their official app.

Personal wine ratings app shared with my wife (before such an app existed).

I created a calendar app for work where employees can view and claim tickets for Washington Capitals hockey games.

I guess the upshot is: a bit of time invested in the code eventually saves me lots of time over the long haul for everyday tasks.
posted by xiix at 8:20 AM on March 18, 2016

Scratching an itch, basically any itch, is really the best way here. When I was learning PyQt (already knew Python reasonably well, but wanted to learn a decent graphical toolkit), I wrote a replacement for HyperSpin on my virtual pinball machine that didn't require the configuration HyperSpin did.

When I wanted to learn Django, I wrote a proof of concept for a website idea a client had been thinking about and ended up taking on the paid work of implementing it for reals, which led to a nice extra income for around half a year. That also ended up making me familiar with a whole bunch of related technologies. Turns out, I actually enjoy being what amounts to a plumber.
posted by wierdo at 1:19 PM on March 19, 2016 [1 favorite]

I'm pretty meh on scratching itches or "following through". That sounds like a fucking job.

Start and don't finish a bunch of shit. Eventually you will come across _your baby_. When you have a _your baby_, you'll be able to ask questions on how to be a _good parent_ to _your baby_.

If you're doing java, grab something like JPad (if that's still a thing). If you're on Winders, purchase a version of Linqpad. Or jump onto jsfiddle (or one of the many sandboxes) for tinkering. They're the doodle pads of programming.

Lot's of programmers will tell you that they started painting by attending a gala in honor of their first achievements at the Louvre. They didn't.

Start doodling. Don't get bogged down on hard problems. Don't worry about other languages, writing systems, or time zones.. Come up with a thing. Write software to do the thing. Don't worry about security or making it right.

Some "I take this seriously" person is going to scoff at something you've done. That's what programmers have instead of clown shoes. Mock surprise is the punch line of all their jokes.

Go slow. Have fun.
posted by garry.smith at 8:32 PM on March 20, 2016 [1 favorite]

« Older How can I keep conversations fun/ stop being so...   |   How can I get a handle on this bike? Newer »
This thread is closed to new comments.