7 ms·
I have a 15 year-old brother who shows some knack for programming. I've been thinking about what kind of career advice I would give him related to programming.
by sofal 18y ago
I have a 15 year-old brother who shows some knack for programming. I've been thinking about what kind of career advice I would give him related to programming. I might say something like, "Being a software developer is awesome, but being a corporate software developer is awful."
Sometimes I wonder if I should just tell him to keep it as a skill but eschew it as a career.
- gaius 18y agoI think (and I discovered this far too late :-( ) that the most interesting programming is done by people who aren't really programmers. People who apply software to knowledge domains. A biochemist can learn Python a hell of a lot more quickly than a programmer can learn about protein folding, for example. A friend of mine is an astrophysicist and writes programs to model stellar events (then goes and checks his results with uber-telescopes). Me, I can connect interfaces to apps to data, I do a pretty good job of it (tho' I say so myself!) but what am I really adding to the sum of human understanding? Hmmm.
- dreish 18y agoWell, I would argue that much of what has emerged on the Internet in the last 15 years has been novel. And a biochemist can learn the basics of Python about as easily as a programmer can learn how to operate basic lab equipment. A biochemist could no more easily add to human knowledge about compiler optimization than a programmer is likely add anything to protein folding. If anything, I would say the opposite of what you claim is true -- programmers are more likely to be interested in leading-edge science as a hobby than the other way around.
- jmzachary 18y agoExcept that a biochemist learning Python to solve problems he/she has in protein folding research (or whatever) is a useful skill to get things done in his/her field. A programmer learning about basic lab equipment probably isn't going to help too much in developing software (although it might help him/her get more attractive dates). And protein folding is much more useful to humanity than compiler optimization. Does anyone even work on compiler optimization anymore?
- timr 18y agoAs someone who has published research on protein folding, trust me: compiler optimization is about a thousand times more useful. Protein folding is the biochemical equivalent of string theory. It's fun to talk about, but the practical applications are perpetually 20 years away.
- jmzachary 18y agoThen we are in the same club. I've published research on global optimization algorithms for protein folding. I'm not a biochemist, but I understood that protein folding actually has immediate application in understanding disease and drug design. As a computer scientist, I also understood that compiler optimization is a mature field with most of the low-hanging fruit already picked. So, I guess I'm confused and will ask respectfully what problems in compiler optimization make it a thousand times more useful than protein folding and associated medical problems?
- timr 18y ago"I'm not a biochemist, but I understood that protein folding actually has immediate application in understanding disease and drug design....what problems in compiler optimization make it a thousand times more useful than protein folding and associated medical problems?" Short answer: Compilers are used for real work, every day. Nobody is using protein structure prediction for anything practical, and they likely won't be for decades more. At this point, it's blue-sky research. Long answer: "Immediate application" is one of those bits of academic-speak that really means "is related to", but sounds better to grant review boards. While it's true that protein folding is important (after all, most biological processes are mediated by folded proteins), it's not true that protein structure prediction is important. It would be great if we could predict protein structures accurately, but we can't, and until we can, it's not a practically useful discipline. Even the very best, crystallographically determined protein structures are barely sufficient to do rational drug design, and predicted structures don't come close to that level of quality. For example: we can sometimes (very rarely) predict very small (<150 residue) protein structures to within 1 angstrom RMSD of their experimentally determined shapes (i.e. >2 angstrom resolution, in the best case). However, the interactions important to drug binding, protein design, etc., don't start until a tenth of that (scales of ~0.1 angstrom). Throw in the fact that the vast majority of proteins are much larger than 150 angstroms, and that we keep creating cheaper, faster, more automated ways of getting actual experimental information on structure, and the role of protein structure prediction looks increasingly marginalized. It's definitely a cool, fun problem -- just not a very practical one. For whatever it's worth, my first papers were on applying the state-of-the-art method (you've heard of it...I think you're paraphrasing the lab's PR) for protein structure prediction to genome annotation. To call the approach useful was/is a stretch, and that's for a much easier application than drug design (in fact, we were trying to find a practical application for protein structure prediction, and it was the most likely thing we could think of!)
- Tichy 18y agoCan you show me how I can learn biochemistry in two days? I would be really interested!
- deleted 18y ago[deleted]
- dreish 18y agoNo. But if you haven't learned anything new about programming since two days after you started, you're doing it wrong.
- Tichy 18y agoWell I remember learning Python in one day. If I could do the same for biochemistry, it would be fantastic. Maybe it is only the lack of hands on tutorials that is the problem, though. There are tomes of biochemistry books, but I suspect after reading them you are still not sure what to do.
- rplevy 18y agoYou learned the rules of chess in one day, but how many chess games will you win with only one day of experience?
- cowmoo 18y agoComing from someone who has been involved in Biochemistry research and software development - I prefer software development. Here's why: in both fields, you get to explore and break new grounds, but you move much faster in software development. To do anything interesting self-directed work in the life-sciences, you have to get a PhD and by then, your hands are still tied down to the government because you have to write grants to NIH. Unlike programming, where you hatch a idea, Google sample code-sources, dive into a hackthon and build a prototype after one evening of intense programming. Biochemistry takes months of patience, where you micropipette and shake test-tubes, use the PCR machines. It is hard to deciper the details, you can't step-through the codes of DNA (at least yet) or trace the memory stacks of the cells that you are studying. Coming from a programming background, I was so frustrated in Biochemistry. Also you should know that the life sciences is slowly being transformed into a information sciences (Bioinformatics). There's a movement in the field called System Biology, that treats the body/a cell/macromolecular as a finite automata, the DNA the source code, and the protein products it makes the output. Sounds familiar?
- davi 18y agoFriends of mine in neuroscience, who do electrophysiology, love the instantaneous gratification of it: patch onto a cell. Watch/listen to it fire. Treat it with chemicals. Treat the cells innervating it with chemicals. Make them fire with external electrodes. Etc. Do this multiple times, over a period of months/years, until you have dissected some local circuitry properties. Pretty cool, if you get off on listening to neurons fire, day in and day out. I think the key in science is to do something that is interesting and pleasurable in both the long and short term. My electrophysiologist friends like it day-to-day, and also like the long term agenda of it. Sounds like you liked the long-term agenda of biochemistry, but not the day-to-day. Probably similar lessons apply to hacking. For me, I got out of it: I didn't like how I felt after looking at a glowing monitor for 12+ hours a day, week after week. I like programming this intensively when I feel like it, but not when I'm pressured to do so for some business goal.
- plinkplonk 18y agoUpmodded for "I think the key in science is to do something that is interesting and pleasurable in both the long and short term." I discovered that this (the hard way, after a decade buildng enterprise software) is true for software dev too. Now I do algorithm intensive work and there's more to do than I have time in this lifetime to do.
- swombat 18y agoTell him to keep programming as a hobby. If he truly enjoys programming, he'll keep on doing it and getting better and better at it no matter what else he does. Above all, I'd suggest avoiding a CS degree, since most of the stuff he'll learn there will be stuff that he would learn on his own time anyway. If you're going to go through the effort of going through university, might as well learn something that you wouldn't have otherwise (I did Physics). Please note that keeping programming as a hobby doesn't mean it won't turn in a job if he needs it to (as it has for me) - only that he will always be a well-rounded person rather than just a tech-only programmer.
- pmjordan 18y agoMy take on this situation: At 15, I'd say he should try a few other things he finds interesting or thinks he might find interesting. Pursue them enough to actually get pretty good at them, it's hard to judge early on. When the time comes to choose a university subject/career, he should go wherever his heart lies. Why? At school I was (really) good at physics, (I got through to international level at the Physics Olympiad) but I never really fell in love with it, and actually didn't go to the international event a second time, as I hated the people there. (I made a couple of friends on the national level though) Programming in my spare time was what I loved most. I ended up doing physics at university based on advice from the people around me. About 2-2½ years in, at the stage where I could no longer get away with minimal work and still get decent grades, I first consciously realised that my heart was just not in it. I finished my degree but haven't touched physics since. Oddly enough, with all my focus being channeled on physics at school and by my parents, I kind of missed out on really getting to know maths beyond what everyone was taught at school. At university it turned out I most enjoyed the maths modules and consistently got the best grades in them, although I unfortunately wasn't permitted to choose many maths electives. Also, my university wouldn't let me switch subjects and carry over any credits, so I didn't. My girlfriend studied maths so I managed to learn quite a bit from helping her out, although I can't help but think that doing a joint CompSci/Maths degree would have brought me more joy. I've stopped taking advice from family now by the way, and I'm a lot happier. :)
- jmzachary 18y agoThat would be good advice to your brother. Programming as a career seems like a dead end going forward, for whatever reasons. However, if he is in some other seemingly unrelated occupation (law, medicine, education, etc.), then programming skill could be a competitive advantage.
- asimjalis 18y agoTo answer the original question: I have been a programmer for 11 years and love it. There are ups and downs, but mostly ups. Also being a corporate developer is not awful at all. It is great. It might depend on the environment and the corp that you are talking about. The big factor that I have noticed in my enjoyment is working in an Extreme Programming environment, specifically pair-programming.
- demallien 18y agoYup, corporate work is not necessarily as evil as it sounds. Take my situation for example. In theory, my company sells a library that is embedded into set top boxes. It's written in C, as that is the only language available for many platforms in the embedded space. But in reality, I spend most of my time hacking in Ruby, doing tools. For example, a while back, to stuff up pirates, I transferred the lib to run inside of a virtual machine. I wrote a tool that took a relatively short description of an existing processor, parsed the file, and generated the C code to emulate the processor. Then, in testing we found that asynchronous cryptography was just too slow in the VM, so we needed to move it back out to native. I then wrote a tool that could examine the two that were compiled (inside the VM, and native), identify the missing functions, and then parse the header files for each lib to automatically generate the code that serialised the parameters crossing the interface of the VM. Right now I'm working on a tool that is very similar to distcc, to speed up our compile times - when we prepare a delivery of the software, we have to verify that everything compiles correctly without warning on about 30 different platforms, with about 6 different options being available. that makes nearly 200 builds, with each build taking about 10mins. You can get old checking for compile errors, and then correcting them. We're hoping, with the help of a server farm and my tool to get that time down to about 10 mins. In fact, I can't remember the last time I actually worked on the actual problem domain at my company. I spend most of my life working with binary files, compilers, simple parsers and other pure computer sciencey stuff. So much for corporate work being boring. That said, I'm working hard on an application for the Mac that I'm hoping to sell, as I'm over having to play politics to convince PHBs that there are improvements that can be made to the product.
- tc7 18y agoMy perspective: I've wanted to be a developer since I was like 11, and first started using HyperCard on the Mac. I liked being able to create stuff and share it with people (via AOL shareware libraries, back then :P). I've been out of school and working for a big company in the InfoServices dept. for 2 years, and it sucks. Great pay, benefits, really boring support work with lots of vendor management and semi-incompetent peers. So tell him not to do that. But if he likes development, I'd definitely encourage him to be a developer. I'd just strongly encourage him to start writing his own stuff now. Don't get bogged down with the coursework in college, but start a few personal projects and finish them. Sell them if you can, but don't focus on Big Money, just do fun stuff. And when school's over, at least try doing your own thing before taking a job somewhere. I didn't try; never really thought it was an option, and now I have to do my project on the side. Definitely doable, but when you're young, it's a great chance to give it a try fulltime. I think PG's mentioned this kind of thing in his essays ;). Uh, I'm rambling, but it boils down to: Encourage him, but let him know that the real fun of software development comes in an environment where you have some control/responsibility, and lets you use some creativity without going through the bureaucracy. So get good early, do some fun stuff, get a job somewhere cool or start your own thing. Programming is fun, but I wouldn't recommend the big company path.