The Site That Teaches You To Code Well Enough To Get a Job
HughPickens.com writes Wanna be a programmer? Klint Finley reports that software developer Katrina Owen has created a site called Exercism.io where students can learn to craft code that's both clear and efficient and get a lot of feedback on what they're doing right and what they're doing wrong. Exercism is updated every day with programming exercises in a variety of different languages. First, you download these exercises using a special software client, and once you've completed one, you upload it back to the site, where other coders from around the world will give you feedback. Then you can take what you've learned and try the exercise again. The idea was to have students not only complete the exercises, but get feedback. Exercism.io now has over 6,000 users who have submitted code or comments, and hundreds of volunteers submit new exercises or translate existing ones into new programming languages. But even Owen admits that the site is a bit lacking in the usability department. "It's hard to tell what it is just by looking at it," she says. "It's remarkable to me that people have figured out how to use it."
>> the site is a bit lacking in the usability department
Yep, that'll get 'em ready for a job in coding. You really don't need any of that new-fangled usability crap to win customers or support people anyway - if it was hard to write, it oughta be hard to use.
Who is giving away their time to code review the work of thousands of neophyte programmers?
Sounds to me more like the blind leading the blind.
using a special software client
Doesn't anyone else find this suspicious? Why in the world do I need to install a special client just to download an assignment? Why would anyone who knows anything about computers agree to this? How long before we start reading the stories about what this special client was doing behind users backs, that supposedly no one suspected?
I'm an American. I love this country and the freedoms that we used to have.
If you have the discipline to write good code, you can write good code in PHP.
Recruiters are idiots. You're going to have to do some coding for free to prove your mettle. Open source projects are always looking for coders if you can't think of anything that you'd like to write. Something like http://code.google.com/p/kerne...
Sure, it looks like it, and there are plenty of people with jobs out there that can lash something together. I worked with somebody at a startup would was struggling to get a web page working. After a few minutes, I realized the problem. She had no idea that you could loop through an array backwards.
We don't need more "coders". We need more software engineers and computer scientists.
Actually, maybe not. Maybe we need a workforce that is organized and that would stand against employers who insist on completely devaluing our field in a search for easy money, tossing aside qualified people in search for exploitable labor. That's the problem. I think we should be defending our industry and those that have the proper skills to do it well. Just because the latest, most visible trend is to hack together a mobile application or web site for a quick buck doesn't change the need for fundamentals.
Things like data structures, algorithms, discrete mathematics, computer architecture, etc. do matter. Not having a basic understanding of computers and computation leads to an astonishing amount of bugs, security holes and wasted effort. Some people have just accepted this as the cost of business. I say it's past time that we really stood up and say, no, things should be better. But since we can't collectively bargain, we are stuck.
I know, who cares, the money is awesome. It'll be like that forever, right? What does it matter that nobody can count on having a career after ten years because they are seen as too old with an outdated skill set.
This isn't about school, although I think a proper CS education is still the best way to learn this stuff. But you can get it with diligent self study and experience as well. In the end, real programmers have the conceptual understanding to adapt and excel in the long term. That's what we need more of. Real careers, not just jobs.
Looking at their example conversation, I had no choice but to face palm. Having never looked at Ruby code before, I was able to deduce perfectly well what the first iteration was doing. Do we really need to expand a function that can accomplish its task in one line into a function that may be a little more readable?
I wonder how today's programmers would make do with resources that were available in the early days of computing, or even when the IBM PC came out. Having to deal with small amounts of RAM caused programmers to be extremely creative in their programming. Granted that we do not have to go to such extremes today to write programs, reading about such practices is still very inspiring.
Is that a roll of dimes in your pocket or are you happy to see me?
I can't see a button to reply to the article as AC so I'll just reply here.
"Yep, ready for a job in coding"
- It would be more convincing (for a job, atleast if I was hiring) if the exercises were along the lines where you'd really need one of deques, ring buffers, sliding windows, tries, classification/sorting/statistics on streaming data. Because atleast personally I find those really important/widely useful yet rather tricky to get right. So for my own projects I'm shamelessly borrowing known working code. But if I was hiring I'd be more impressed if the candidate atleast had some experience using these.
I've done my stint as a "Staffing Coordinator" for a temp agency, and I learned the most about how to apply for jobs at that position. What mythosaz said is absolutely correct. For the longest time I was doing it wrong. Worked in a Toy Store and as a data entry clerk for a medical office while I was going for my computer science degree before I transitioned over to a Networking Specialist degree and got a job in a computer shop. I made the mistake of focusing mostly on my employment in my resume and not enough on what I actually knew.
This is the mistake most people make. So many applications came across my desk where the resume had the same employment history information as the application, with possibly a couple more bullet points for additional irrelevant details, and that was it. When you fill out your application for what you hope will be your career, you need to bring three things:
Finally, when you do get called for an interview or interview series make sure you have several copies of each item above with you that you can hand out to everyone who will be conducting the interview. My last interview series I went through, I kept 10 copies of each. I wound up with one to spare after everything was done.
Try these techniques and at the very least you should get more interest and call backs. If you go into the interview with everything prepared and in order with confidence in your posture and tone, not only will you be getting the interest, but it will also help improve your standing in the salary negotiations.
You're not a coder at all. And there's nothing wrong with that, you just need to start at the absolute beginning. Start by learning some algorithms in pseudocode (Quicksort, trees, linked lists, graphs, etc.) so that you become familiar with the programming mindset (logic and visualization).
Then pick a language that you can starting implementing them in (Python, done). All you'll need is Linux distro like Ubuntu and Ctrl-Alt-T to get a bash shell and vim. Or a Mac since it's BSD-based. No Windows.
Once you've broken through the mental wall you're currently stuck behind, then start reading more detailed articles around that single language. In parallel, read and practice the bash command line and develop an understanding of the underlying OS.
Don't get overwhelmed by the huge number of frameworks, libraries and languages out there, getting your arms around them comes with time. The point is that everything blossoms from building up from a solid base, and if you're truly motivated to stick with it.
But most important of all...don't just read. You must type, run and debug constantly. There are way too many hipsters that call themselves programmers because they read some Ruby articles on the interwebs. Don't be one of them.
Best of luck.
I'm an experienced programmer (for almost 30 years). I first read about the site about four months ago. I like Ruby a lot, but haven't used it as much as I'd like, so I thought that exercism.io would be a fun place to get some feedback. I submitted my first program that very first day. Today, four months later, my submission has two views and zero comments. Wow, that's going to help a lot. I guess there has to be some minimal mass of developers to actually look at the code and make comments. But for now, the site is far, FAR, from being anything close to helpful to teach you to code.
Really, learning to code real things well takes a gift and at the very least several years of experience.
Go ahead and say whatever you need to believe to maintain your ego. You're only deluding yourself.
Here in reality, it's nothing special.
Required reading for internet skeptics
Maybe this will change in the future, but for now, low-quality software is generally not "good enough". If your website is vulnerable to SQL-injection, you're going to find out, and the results will be catastrophic. If your UI looks like it was designed by a chimpanzee on LSD, it is not going to pass muster. And if your developer doesn't understand complexity theory very well, the software will quickly become unusable from a performance standpoint.
Photography is fundamentally different, due to digital photography, but not in the way that you mentioned. Let's rate photos on a scale from 1-10, and let's assume that the photos taken by an experienced professional like your wife are going to average a 9. Let's further assume that the photos taken by our chimpanzee on LSD are going to average about a 4. In the days of film, each time you pressed the shutter button, it cost you money. For a pro who bought and processed film in bulk, it might have been $0.20/frame. For an amateur, it might have been $0.50/frame. Given the costs involved, it was important to be taking 9s and not be taking 4s! But with digital, our chimpanzee can easily take 1000 photos of a wedding, at a marginal cost of zero per frame!
Now of those 1000 photos, most of them will be trash, but you really only need 30 or so frames to make an album. What do you want to bet that 30 of those 1000 will be 7s or above? I'd say it's highly likely, and that's why your wife isn't getting as many calls as she otherwise would have. Digital has changed the game. An amateur really can achieve acceptable results by brute force!
The software equivalent is to keep writing more and more code until the system works. I'm sure you've seen systems that fell victim to that paradigm. Sure, release 1.0 may work acceptably well, but release 2.0 will never happen, because nobody can so much as breathe wrong on the codebase without breaking something.
They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock