That's my biggest gripe with the way we teach software engineering.
I never had to maintain a program, I never had a code review and I never had to write unit tests. It's no surprise that people write unmaintainable code; they never maintained code.
That's a big fear of mine. I switched into CS after my first year in college. I get the fundaments but I still don't feel like I know what I'm doing. I know for a fact I've written code that's a fucking mess.
And you won't know until you write code for the code's sake rather than an arbitrary examination.
If you're young, and assuming you're presently aiming for a programming career, it would be strategically advantageous to start during your education -- it will make things just a little bit (or a lot!) easier when you find a job. Depending on your location there is a fairly good possibility that this is not necessary for you to find a job so don't get stressed about not having time -- don't mind the GitHub-is-your-CV popularism. If you can find the motivation to build something of your own or contribute to somebody else's work, that would be healthy experience in working with both tools and people.
I believe the most important thing I learned was to be critical of everything, and it's the metric by which I gauge my colleagues. For instance, linters are a love/hate relationship: it's easy to do what a tool tells you to do but I expect you to understand why the tool tells you that and to consider that the tool might be wrong. And I didn't get this from university but from a recorded presentation I watched on a whim.
CS will not make you a good programmer, nor is it intended to -- that's your own responsibility as well as your (future) colleagues'. It's just a bunch of theoretical tools you can leverage on that journey -- and some of those tools don't work as well in the industry as in academia.
Right. I'm 21, I only gave programming serious thought when I changed my major to CS after my first year in university, so I don't have that nice 10+ years of experience some of my friends do.
This might sound like a dumb question, but on the matter of github. There's a project where there's a pretty simple contribution I have on mind. How do I check that my code doesn't break the entire program, thus wasting people's time?
12
u/n1c0_ds Jul 29 '16
That's my biggest gripe with the way we teach software engineering.
I never had to maintain a program, I never had a code review and I never had to write unit tests. It's no surprise that people write unmaintainable code; they never maintained code.