I have no idea how to do any of those things. I would assume that they involve applying the rules of a given domain more rigorously than when you are, say, working on a novel or composing a piece of music. Which for sure would make them harder.
Also, I think I misunderstood your comment. You mean “damage” as in bad coding that you’ll just have to redo later? As opposed to damage to your own motivational framework that will make it harder for you to motivate yourself in future? The latter is the way I understood it.
Regardless, is it not true that anyone who works as a programmer has deadlines, and can’t afford to leave a project for later because they’re not in the mood to be productive?
You mean “damage” as in bad coding that you’ll just have to redo later?
Yes, though it is worse than that. Bad code can contaminate otherwise good code that interacts with it, if the interface is not right.
Regardless, is it not true that anyone who works as a programmer has deadlines, and can’t afford to leave a project for later because they’re not in the mood to be productive?
No, not necessarily. Usually the closest I have to a deadline is my own declared estimate of when I will be done. Sometimes it is an effort just get the relative priorities of my concurrent projects.
If you are working full time programming, you should manage to get in the productive zone at least once a day. “Not being in the mood” is not an excuse to put a project off indefinitely.
If I wasn’t already halfway through my undergrad, I would consider programming as a career solely on that basis!
Your existing undergrad experience is a sunk cost. Do you want to be a programmer, or a whatever-you’ve-already-started-learning-to-be? (For that matter, do you have spare time? You could learn to program therein.)
I am studying nursing and for various reasons, that’s where I want to stay. (There’s actually a lot of appeal for me in a field where I’ll never be out of work, can travel and work pretty much anywhere, and can easily branch out into many, many related fields.)
I took programming as one of my electives and I’ve tried to continue the learning process by giving myself extracurricular projects, but spare time is a limiting factor. Thanks for the advice though. If you have any advice for good books/online tutorials to read, or challenging projects I could assign myself, I would really appreciate that.
“Bad code can contaminate otherwise good code that interacts with it, if the interface is not right.”
Coding is dealing with abstractions and the way that things relate to one another. You’re not just constructing the pieces, you are constructing how they will be put together. If you set it up wrong, it can be tricky to change later, if other people are relying on the parts that you’d like to change to keep working the same way they have been working from the beginning. And creating new software is usually a process of discovering requirements and uses for the software as you go along, so it is often difficult to know how to approach something at the beginning. Also, working with other people on the code means working with people who set up abstractions differently and have a slightly different, or wildly different understanding of what the code is meant to do, and the assumptions that underly it.
Working on a software project is a good way to see how people think differently, and how errors and assumptions affect the project and how people work together.
I like Frederick P. Brooks’ books on software design, and design in general. They are classics: “The Mythical Man-Month” and “The Design of Design”.
f I wasn’t already halfway through my undergrad, I would consider programming as a career solely on that basis!
Then learn to programme and see if you like it enough to do it as a job, or if it could be helpful in the field you’re doing your degree in. Being an X who can programme can be a powerful force multiplier of your effectiveness in quite a few fields. An assume very little intro to programming is Learn Python the Hard Way
I did take a class in programming last semester as one of my electives. My major is in nursing, and my father made the comment that “you’ll be the only nurse in Canada who can program.” I learned it pretty effortlessly (that class was the easiest A+ I’ve had in years) but it was a huge time sink, and I think I drove the TA insane by starting projects at home and then sending him emails at 2 am asking why my program wasn’t working.
Also I’m sure you’re right and it could be very helpful just to know programming as a nurse. At one of my part time jobs, the software we use to keep track of dialysis patients was actually written BY a dialysis patient, who I guess worked as a programmer and saw a need that wasn’t being filled. (I’m not QUITE at the level where I can write big, complex, useful programs.)
I have no idea how to do any of those things. I would assume that they involve applying the rules of a given domain more rigorously than when you are, say, working on a novel or composing a piece of music. Which for sure would make them harder.
Also, I think I misunderstood your comment. You mean “damage” as in bad coding that you’ll just have to redo later? As opposed to damage to your own motivational framework that will make it harder for you to motivate yourself in future? The latter is the way I understood it.
Regardless, is it not true that anyone who works as a programmer has deadlines, and can’t afford to leave a project for later because they’re not in the mood to be productive?
Yes, though it is worse than that. Bad code can contaminate otherwise good code that interacts with it, if the interface is not right.
No, not necessarily. Usually the closest I have to a deadline is my own declared estimate of when I will be done. Sometimes it is an effort just get the relative priorities of my concurrent projects.
If you are working full time programming, you should manage to get in the productive zone at least once a day. “Not being in the mood” is not an excuse to put a project off indefinitely.
“Bad code can contaminate otherwise good code that interacts with it, if the interface is not right.”
That’s kind of fascinating, but I can see that it would be really irritating as well having to deal with it every day.
“Usually the closest I have to a deadline is my own declared estimate of when I will be done.”
Really? If I wasn’t already halfway through my undergrad, I would consider programming as a career solely on that basis!
Your existing undergrad experience is a sunk cost. Do you want to be a programmer, or a whatever-you’ve-already-started-learning-to-be? (For that matter, do you have spare time? You could learn to program therein.)
I am studying nursing and for various reasons, that’s where I want to stay. (There’s actually a lot of appeal for me in a field where I’ll never be out of work, can travel and work pretty much anywhere, and can easily branch out into many, many related fields.)
I took programming as one of my electives and I’ve tried to continue the learning process by giving myself extracurricular projects, but spare time is a limiting factor. Thanks for the advice though. If you have any advice for good books/online tutorials to read, or challenging projects I could assign myself, I would really appreciate that.
Here are a few websites:
Software Carpentry: Getting Scientists to Write Better Code by Making Them More Productive http://software-carpentry.org/
Invent Your Own Computer Games With Python http://inventwithpython.com/
“Bad code can contaminate otherwise good code that interacts with it, if the interface is not right.”
Coding is dealing with abstractions and the way that things relate to one another. You’re not just constructing the pieces, you are constructing how they will be put together. If you set it up wrong, it can be tricky to change later, if other people are relying on the parts that you’d like to change to keep working the same way they have been working from the beginning. And creating new software is usually a process of discovering requirements and uses for the software as you go along, so it is often difficult to know how to approach something at the beginning. Also, working with other people on the code means working with people who set up abstractions differently and have a slightly different, or wildly different understanding of what the code is meant to do, and the assumptions that underly it.
Working on a software project is a good way to see how people think differently, and how errors and assumptions affect the project and how people work together.
I like Frederick P. Brooks’ books on software design, and design in general. They are classics: “The Mythical Man-Month” and “The Design of Design”.
Thank you, those look interesting.
Then learn to programme and see if you like it enough to do it as a job, or if it could be helpful in the field you’re doing your degree in. Being an X who can programme can be a powerful force multiplier of your effectiveness in quite a few fields. An assume very little intro to programming is Learn Python the Hard Way
I did take a class in programming last semester as one of my electives. My major is in nursing, and my father made the comment that “you’ll be the only nurse in Canada who can program.” I learned it pretty effortlessly (that class was the easiest A+ I’ve had in years) but it was a huge time sink, and I think I drove the TA insane by starting projects at home and then sending him emails at 2 am asking why my program wasn’t working.
Also I’m sure you’re right and it could be very helpful just to know programming as a nurse. At one of my part time jobs, the software we use to keep track of dialysis patients was actually written BY a dialysis patient, who I guess worked as a programmer and saw a need that wasn’t being filled. (I’m not QUITE at the level where I can write big, complex, useful programs.)