Page 1 of 1

What can I do with coding skills?

Posted: Mon Apr 04, 2011 3:05 am UTC
by NuclearTide
I'm in my second semester of college and I'm currently taking an intro Java course (I never programmed before college, and I started with C last semester). So I know the basics of programming, but something that's really been bothering me is that I don't know how this applies in the real world. What do you actually do with Java? I have a vague idea of programmers writing programs that do cool stuff (like games), but how do you get to the point where you can use your knowledge to write programs that matter? And to be honest, I don't really know much of the inner workings of a computer. Does anybody have any recommendations for books I should study or programs I could write?

Re: What can I do with coding skills?

Posted: Mon Apr 04, 2011 4:38 am UTC
by transient
Computer science applies to, essentially, every other field of study. Seriously. Google "[field you are interested in] computer science" and you'll probably get something interesting.

The cool thing about computer science / programming is that it's an extremely powerful creative tool. It's akin to painting; with enough time and skill, you can paint anything; with programming, you can create practically anything.

Writing programs that matter? In what sense? You could contribute to an open source project, or work at a company like Google where your software will be used by many millions (billions?) of people. The cost for mistakes is extremely low in programming, so you can become a valuable asset by just programming something that interests you (be it a game, image editor, whatever captivates you).

If you want to know more how a computer works, learning assembly (NASM, etc) will prove extremely helpful. Look into compilers, virtual machines, .... Wikipedia has a wealth of information regarding computers.

Re: What can I do with coding skills?

Posted: Mon Apr 04, 2011 4:44 am UTC
by sourmìlk
You can do anything. See every piece of software on your computer? All the dynamically generated data being displayed on every webpage? Only through coding.

Re: What can I do with coding skills?

Posted: Tue Apr 05, 2011 2:51 am UTC
by squareroot
While of course it's valuable professionally, like transient said, it's a tool you can apply to just about anything. If you use Facebook, you might've seen the script circulating to select all your friends; if you're well versed in HTML/Javascript, you might be able to write that kind of thing yourself in 10 minutes. Have a bunch of files that need to be renamed or something in a certain way? (say, "photo_001"-"photo_193" turned to "Vacation '11 1"-"Vacation '11 193") Bash/Command-line scripting will do you well. Have some specific set of numbers you need to quickly process, and don't have a calculator function or piece of software for it? Write a program to do it for you. On a more fun basis.... want to make your own image transforms (like turn blue into red,vice versa, and then invert the green)? Want a poker calculator, using as much data as possible? Make them! :D Case in point: This week I wrote a tiny program to load a file, pixel-by-pixel, into a drawing program on Facebook. Pixel-perfect image or Rick Astley, hit "send"... :lol:

Re: What can I do with coding skills?

Posted: Tue Apr 05, 2011 8:18 pm UTC
by khakipuce
Java is one of the most widely used languages in business these days. Everything from financial apps to CAD tools to some pretty heavy weight modelling software is written in Java (I know because over the last 10+ years I have coded all those things in Java for real commercial applications). Add to that the fact that Andriod uses it (or something very, very similar :wink:) and you have a pretty major language.

The thing is that you don't really see much Java on your desktop, it tends to be serverside.

Re: What can I do with coding skills?

Posted: Tue Apr 05, 2011 8:40 pm UTC
by Yakk
Computer Science is the automation of intelligence.

This doesn't mean it is "artificial intelligence". What I mean is that it lets someone make the kind of decisions that an intelligent person would do, and automate it.

Much like how a car automates travel, a jackhammer automates using a sledgehammer (or other tool) to break something, a fan automates waving a piece of paper to cool yourself (or someone else) off, a dishwasher automates washing dishes, etc.

Renaming files: the simple way to rename files consists of interacting with each file, working out how you want it renamed, and then typing it in manually.

With code, you can encapsulate your decision into some code, hook the code up to some API for file manipulation, and let'r'rip.

Now, you'll notice that jackhammers and sledgehammers are actually different things -- there are applications for sledgehammers that jackhammers are not all that good for. This gap in the world of computer science is called the field of "artificial intelligence" or "the kinds of intelligent actions we haven't figured out how to automate yet".

Even if the jackhammer is the better tool, sometimes what you have is a sledgehammer. While a competent computer scientist can create a "jackhammer" out of random parts, the effort to make the jackhammer might be greater than the saved effort from using it over the sledge. So you use the sledge. This refers to the fact that making code that automates an intelligent decision might be much harder than just making those decisions manually.

As it happens, it is far far easier to automate intelligent decisions that are "repetitive". In that case, you can set'er up and let'er rip.

Re: What can I do with coding skills?

Posted: Wed Apr 06, 2011 4:15 am UTC
by sourmìlk
khakipuce wrote:Java is one of the most widely used languages in business these days. Everything from financial apps to CAD tools to some pretty heavy weight modelling software is written in Java (I know because over the last 10+ years I have coded all those things in Java for real commercial applications). Add to that the fact that Andriod uses it (or something very, very similar :wink:) and you have a pretty major language.

The thing is that you don't really see much Java on your desktop, it tends to be serverside.


CAD? Seriously? That seems like it could get rather heavy duty for something like Java. The most resource-intensive Java program I've seen is probably minecraft.

Re: What can I do with coding skills?

Posted: Wed Apr 06, 2011 12:12 pm UTC
by khakipuce
Java just ain't that slow, often it's as fast as C and it's an awful lot cheaper to chuck more processing power at the problem than it is to spend weeks optimising. Especially when you consider that the out come of optimistion is uncertain.

Re: What can I do with coding skills?

Posted: Wed Apr 06, 2011 1:06 pm UTC
by Steax
Not always. Optimizing certain things (like complex calculations) can result in things running up to a couple magnitudes of time faster; you can't just latch on more processing power. Also, optimizing is free (hardware-wise). It's a "why not?" kind of thing. Then, of course, you could chuck in more processing power and optimize code, getting you a lot further then either option alone.

I've never seen a complex CAD version use Java though, and honestly I'm not sure I'd want to use one. I've always felt that Java is significantly slower than other languages.

On the topic itself, one important aspect some people miss while learning to program is that programming isn't the whole deal. It's the underlying technology that makes it possible, yes, but it's not going to magically come up with solutions. Like any "useful" invention, solutions grow from problems. So find problems you find in the world around you and try finding a way to make it easier with your new powers. It's tempting to find something to make and churn out code, but without a clear concept (and problem to help!), you'll get nowhere. This is why some people prefer to start with games, where the problem is more open and there are more options, but I think it's not always a good choice.

Go find things you can improve on. And here's the key: if you ever find yourself thinking "but I don't know how to do (.+?) yet", be quick to turn that into "I need to learn $1!" You'll soon want to learn all sorts of nifty new things. "How do I manage all my belongings? A file?" can lead you to learning to use a database. "How do I manage things by location?" can help you learn geolocation. "How do I update my data online?" leads you to setting up networking functionality. That kind of stuff lets you grow.

Re: What can I do with coding skills?

Posted: Wed Apr 06, 2011 1:29 pm UTC
by headprogrammingczar
Java only gets as fast as C if you give it enough time to run. The JRE has significant startup costs, and it has optimizations that require watching the code run for a while.

Re: What can I do with coding skills?

Posted: Wed Apr 06, 2011 4:18 pm UTC
by tipo test
NuclearTide wrote:What can I do with coding skills?


Shitloads of money.

Re: What can I do with coding skills?

Posted: Wed Apr 06, 2011 8:09 pm UTC
by sourmìlk
NuclearTide wrote:I'm in my second semester of college and I'm currently taking an intro Java course (I never programmed before college, and I started with C last semester). So I know the basics of programming, but something that's really been bothering me is that I don't know how this applies in the real world. What do you actually do with Java? I have a vague idea of programmers writing programs that do cool stuff (like games), but how do you get to the point where you can use your knowledge to write programs that matter? And to be honest, I don't really know much of the inner workings of a computer. Does anybody have any recommendations for books I should study or programs I could write?


To address your second part of the question: you can learn to write programs that matter as soon or as late as you like. You can spend a lot of time on simpler command line programs learning good programming techniques and skills, or you can jump into complex graphical APIs and have fun figuring it out as you go along. I mostly chose the latter option and I'm rather enjoying it.

If you want to do some programming with more immediate and tangible results, I recommend doing a bit of web development.

Re: What can I do with coding skills?

Posted: Thu Apr 07, 2011 6:01 am UTC
by NuclearTide
Hey thanks for the replies everyone! It seems that I have a lot to learn.

One question though: what's Project Euler for? I solved the four easiest problems using Java. Do you guys view it as an effective way for learning a programming language?

Re: What can I do with coding skills?

Posted: Thu Apr 07, 2011 9:23 am UTC
by sourmìlk
NuclearTide wrote:Hey thanks for the replies everyone! It seems that I have a lot to learn.

One question though: what's Project Euler for? I solved the four easiest problems using Java. Do you guys view it as an effective way for learning a programming language?


I haven't looked at it too much, but it teaches you how to think about control flow and such. Although you probably want to use something simpler like python: there's no need to overcomplicate things. Also, python handles large numbers really well.

Re: What can I do with coding skills?

Posted: Thu Apr 07, 2011 5:32 pm UTC
by Berengal
NuclearTide wrote:One question though: what's Project Euler for?

It's for exercising your algorithmic, mathematical and creative problem solving muscles. The problems are complicated enough that you need to be able to reason about them mathematically to reduce the problem space to something that fits inside our universe, and even then still large enough that you need a computer to solve them, which means you need to be able to translate your (often not trivial) mathematical reasoning into a program.
NuclearTide wrote:I solved the four easiest problems using Java. Do you guys view it as an effective way for learning a programming language?

When I learn a new language I solve some PE problems with it. It helps in mapping out certain parts of the language's model, as well as getting the syntax into my fingers. If you only solve PE problems however, you'll be sorely lacking in other areas. I'd say it's a good way to get into programming as such, forcing you to invent new algorithms and programming techniques. All of them will probably have been invented before in some form or other, but the important part is learning how to come up with them yourself. Reinventing the wheel is only bad if there's nothing to learn from doing so (or the wheel in question is important enough to require a quality one).

Essentially, to learn programming, do at least one of [read tutorials and blogs, join a programming community, take a class] and program a lot. There are worse ways to learn programming than just searching for "programming" and start from there. Question everything and spend a few minutes on wikipedia whenever a new topic comes up.

Re: What can I do with coding skills?

Posted: Thu Apr 07, 2011 6:15 pm UTC
by Yakk
It is probably a better introduction to Computer Science than to Programming.

Computer Science is to Programming as Materials Physics is to Structural Engineering.

Re: What can I do with coding skills?

Posted: Fri Apr 08, 2011 1:38 am UTC
by NuclearTide
Thanks for the replies again! Everyone here seems so knowledgeable, I think I'll hang around these forums from now on.

Re: What can I do with coding skills?

Posted: Sun Apr 24, 2011 2:27 pm UTC
by Parsifal
I wrote my first professional Java code in late 2003 and have been coding in Java almost daily since then. The barrier to entry is really a lot lower than you might think. I could probably teach anyone with a decent math, science or technical background to write web or client-side applications in Java in less than a month. Of course, writing *good* code takes a lot of practice since there are so many factors involved: web standards, design patterns, source control, domain-specific languages, client-side eye candy and so on.

The hardest part of making your skills translate into a paycheck is the same as any field - getting your first 'real' job. Fortunately, you can program in a free/open source version of nearly any language on virtually any computer. I suggest reading an introductory book on programming (outside of class), working programming problems until the syntax itself becomes second nature, and volunteering to collaborate on a software project at your university. Math, biology, chemistry and of course computer science professors often hire out various projects to willing novice coders.

Re: What can I do with coding skills?

Posted: Sun Apr 24, 2011 7:29 pm UTC
by Ptolom
I too have this issue. I know C, C++ to an extent, python and a smattering of haskell. I've written a huge number of small programs to demonstrate something mathematical or create some graphical effect, along with simple games.
Starting by writing a game probably isn't the best idea for someone who just wants to further their coding, but I'm also interested in the art, music and writing involved, so a game is what I'm doing.
Set in a future world where the whole planet is covered in ocean, you're a pirate who has to work his way up to greatness by capturing vessels and swashbuckling. I think you'd call it an action rpg, if you needed a genre. top down 2d graphics. I haven't the time or aptitude to make decent 3d art.
So far I have basic graphics, running around, collision detection and chopping stuff up with a cutlass mechanics, plus a few character sprites. I took a couple of months off from it for exams, and I'm just coming back to work on it. The code is messier than I realised, but I have high hopes of actually achieving something with it.

Re: What can I do with coding skills?

Posted: Mon May 02, 2011 3:04 am UTC
by NuclearTide
I've been going through a bunch of random Wikipedia articles lately, and I think I'm beginning to understand what CS/programming is all about. To my knowledge, programming is a means for creating software that does something important (the act of which requires a level of skill to do efficiently), and computer science explores the vast variety of cool "things" that can be implemented or programmed.

My new question is how does someone get from the level of a Java noob to the point when (s)he can code something like Facebook/Twitter/foursquare? What do you need to know/learn?

Re: What can I do with coding skills?

Posted: Mon May 02, 2011 4:18 am UTC
by TheChewanater
NuclearTide wrote:My new question is how does someone get from the level of a Java noob to the point when (s)he can code something like Facebook/Twitter/foursquare?

After spending years learning about web design, databases, security, etc...

Don't start out programming with the goal of replicating some other piece of software. Also, keep in mind that those websites are run by very rich corporations with hundreds of programers, most of which haven't been "Java noobs" in a long time. You're setting yourself up to fail, which is especially bad if you don't learn anything from it. Instead, try smaller challenges that you can actually use to build up your knowledge of programming concepts.

Re: What can I do with coding skills?

Posted: Mon May 02, 2011 3:01 pm UTC
by Steax
You can be the world's most amazing programmer, but actually making quality products takes so much more. You'll need design and marketing skills at least. There are subjects like User Experience and smaller design elements like User Interface Design that contribute a lot towards making really good products. This is a big reason why programmers can't just take a complete product and try to recreate it with pure code. There's a lot that goes to making something successful, and programming is just one path there.

Instead, learn to do meaningful stuff with your code first. If you'd like, you can also learn those, but it's a long road that you have to learn with hard work, tears and failures.

I, personally, am what I simply call a "website maker". It doesn't sound as cool as "designer" or "developer", but that's what I do. And from my experience, it's sort of like the ultimate crash course. If you're interested in making web apps and the sort, this is a good way to start. You'll learn a piece of everything, and you'll see from many points of view.

And, as said previously, be careful not to confine yourself to Java or any single language. Learn, learn learn learn.

Re: What can I do with coding skills?

Posted: Tue May 03, 2011 2:17 am UTC
by sakekasi
after spending a long enough time programming, you can pick up a language in about 1 hour. The rest of the time spent coding in the language makes you more alert to the nuances of the language, so be sure to learn as many programming languages as you can. Also, because project euler expects you to have your code run in less than a minute, you can use it to get a feel for how to make your programs run faster.

Re: What can I do with coding skills?

Posted: Tue May 03, 2011 10:53 am UTC
by Parsifal
My new question is how does someone get from the level of a Java noob to the point when (s)he can code something like Facebook/Twitter/foursquare? What do you need to know/learn?


An important point to remember is that most large applications like Facebook are coded by teams which consists of specialists in several areas. Most of them can do several things well, but few if any are experts on enough topics to write the entire application themselves. Compounding the issue, most of those people have years of experience and are architects/team leads who actually write little code at all. My advice would be to pick one area and write a good solid demo program, then branch out to related topics.

For example, I learned basic Java coding while working on a desktop application. Then, I learned a desktop UIs in the same language, then web UIs, then more comprehensive back-end web coding. Next, I learned to write database queries, then more general database topics, then non-Java related scripting and web page design. At this point, I've done just about every kind of Java web app coding there is, but I didn't start by thinking "I'll just learn everything".

Re: What can I do with coding skills?

Posted: Tue May 03, 2011 2:18 pm UTC
by Steax
I'm a fan of the learn-as-you-go method, but only because I'm the kind of person who needs proper motivation before getting anything done (knowing I'm learning X to be able to do Y is much, much better than just "uh, lets learn Y").

Creating software is kinda like summer school you get to pick when you were little. You could take anything from "Bees" to "Treehouse Construction", it really depends on what you want, and what you're interested in.

Re: What can I do with coding skills?

Posted: Tue May 31, 2011 4:35 am UTC
by OOPMan
Varsity is mostly about theory...

Real-world development is something else entirely...

If you manage to complete a CS degree then employers will assume that you have the mental muscle to pick up the real-world
layer as you work in your first job.

This is also true even if you don't have a complete CS degree like me...