14 Jan, 2013, Rarva.Riendf wrote in the 41st comment:
Votes: 0
Well guess your way of explaining is too obscure for me. Mind you I m not a native english speaker.
If you intended to make it a job, why cannot you state it in simple words and not implying it cause you made a job of your previous hobbies
"I intend to make it a job. " See, simple words everyone can understand, clear and not obfuscated.
Maybe you should try to understand why people don't get you, instead of accusing them of trolling at the first occasion.
Mind you it is not a CS course that you should take, but a Leading Project Management, cause you suck at it….
14 Jan, 2013, yue wrote in the 42nd comment:
Votes: 0
I don't intend to make it a job. Right now. That is not the purpose of my learning. That's a long-term possibility. First, and foremost, is developing your chops.

I played drums for a lot of years before I got a paying gig. I assume the same thing applies. I didn't go to drum instructors and say, "I want to get paid to play drums." I said, "I want to improve my drum technique."
15 Jan, 2013, Twisol wrote in the 43rd comment:
Votes: 0
yue said:
@Twisol: thank you so much and best of luck to you in what I'm sure is going to be a prosperous career in computer-something-or-other! :) Tyche has already given me some good book suggestions, so has mangan. What books would -you- suggest?

Let me see what I have on my bookshelf…

Code: The Hidden Language of Compute...
Code explores back to the furthest roots of automation and computing. It manages to be very accessible, but it's also very information-dense. You won't learn a programming language or any particular techniques from this book, but it gives you insight into what your code actually means at a basic level. I enjoyed this book a lot.

Learn You a Haskell for Great Good!<...
I can honestly say that learning Haskell has pervasively changed how I approach programming in general. LYAH is a great book for getting started, but don't expect to understand everything immediately. Haskell takes a lot of inspiration from mathematics, particularly category theory, but the important thing is to learn how to think functionally. Even if you never end up using Haskell in your life, it shapes how you approach problems.

Pragmatic Thinking and Learning: Ref...
Tough to explain. I enjoyed this because it takes a step back and describes the meta-game of learning itself. Learning how to meta-think - how to think about and analyze your thought process - is a really useful and important skill.


Only one of these deals with an actual programming language, and that's not even the main reason I recommend it anyways. As Andy Hunt says in Pragmatic Thinking and Learning, "[…] programming really has little to do with writing software in arcane, cryptic languages (although we have a curious attachment to that habit)." Good programming technique is language-independent; it's not rare to pick up a new language in a short amount of time if and when it's needed, and only have to learn the language's specific libraries.
19 Jan, 2013, Telgar wrote in the 44th comment:
Votes: 0
arendjr said:
Quote
However, no school is going to teach you software engineering.

My Master's degree in Software Engineering seems to disagree.

Quote
In school, you will learn a lot about algorithms, data structures, formal languages, a bit of math, how to build a network stack, an operating system or a compiler, (…)

That provided a pretty decent summary of my Bachelor's in Computer Science.

Quote
(…), but you will never learn how to write a well structured, elegant, and easy to maintain piece of software.

Wrong. That's exactly what the Master focused on. Software Architecture, Software Testing, Software Management, Software Process, things like teamwork, refactoring, design patterns were all covered.

In fact, as with other engineering titles, it's considered disingenuous (sometimes even illegal) to call yourself Software Engineer without having the degree.


Allow me to rephrase - no vocational school or undergraduate institution is going to teach you how to be a Software Engineer. As with all things, this is a skill honed with practice and experience, and the best place to acquire that experience IMHO is working on large, complex software systems. Typically that isn't encountered at University level until graduate level work, and even then, you don't learn it from a book, you learn it indirectly through experience and practice. You can learn an algorithm or a design pattern in a book, but applying it in practice is an entirely different skill.

In many ways, writing an elegant program is more of an art form than a science, and just like painters have to work hard to acquire the skills of their craft, so to do software designers. Some are naturally gifted artists and some are not, but all get better with practice. Also, just like art, to complete a project you have to know when to break the rules and where your time is best invested.
19 Jan, 2013, quixadhal wrote in the 45th comment:
Votes: 0
Just to put my 2 cents in…

Going to an undergraduate school accomplishes two things. First, it gives you a piece of paper that tells employers you are willing to put up with enough bullcrap that they can tell you to do stuff and expect you might actually get it done. Second, it teaches you how to work with other people and THINK more open-mindedly than you did before.

That is actually useful, as it makes you accept that other people sometimes know more than you do.

So, do you need to go to school to learn software engineering? No. But, going to school is a good idea. Knowing what I know now, if I could go back and redo it… I'd get a Bachelor's in Business first, and then perhaps a Master's in Computer Science.
21 Jan, 2013, salindor wrote in the 46th comment:
Votes: 0
I know I am new to forum but since I am a professional in the area and my spare time teach/tutor c++, I figured I would comment.

I started off self-taught like many of you, but I also had classmates who came without having programmed prior to college. We're they behind? Yes. Was it the end of the road? No. It just meant they had to spend 3x the about of time practicing to catch up. But they did catch up.

When I look at the various programmers I have encountered, I split them into three groups: hackers, programmers, and engineers. The difference is the amount of learning and when I question most self-taught people I find they generally fall into either hackers or programmers but calling them an engineer would be a stretch of the imagination. But then again I look at most engineers and delegate them to programmers only.

So what's the difference? Hackers code by finding small snippets and playing with it till it works. They don't really understand what they doing but generally after abit of fiddling they can get something working. Programmers can write code. They generally understand what they wrote but may not have consciencely decided what structures they are using. Finally engineers engineer their program. They understand every data structure chosen is a choice and understand the trades they are making weather they are simply going for speed of writing code, maintain ability, execution speed, memory usage, etc… When I write code every line has a reason behind it. Maybe not a good reason but never the less a reason.

School helps set up a structured environment to make sure every person has at least the same base knowledge. Can you self teach yourself all this knowledge for an undergrad… Absolutely. Is it common? Not really.

A degree program is only what you make out of it and I don't care if you go to MIT or some community college.

Personally from what I have read I would say save your money. A degree is meant to show others that you have the baseline knowledge and if you don't want a career out of it then the piece of paper is useless.

Personally there are only three courses out of cs I think will benefit you:
- data structures
- ai (which is really just advanced data structures)
- software testing

If you learn those three subjects well then there is nothing you can't program. Just as your learning it be sure to think when do I use this. When do I not use this. What are my alternatives to solving this problem. If you do this on every method you learn then you will be capable of engineering your mud and not simply programming it
21 Jan, 2013, plamzi wrote in the 47th comment:
Votes: 0
@OP:
I think that the mere fact you're seeking advice here suggests that you should go to school. Crat was correct to point out that it's unusual for a major life choice to be discussed in an online forum by strangers. It indicates that you will likely benefit from having someone with authority taking the time to transfer it to you. And I wouldn't be so dismissive of Crat's other advise, either. We all have egos, and sometimes they prevent us from hearing helpful stuff (because we ask questions believing we already know the answers).

@salindor:
I've spent most of my life in academia doing humanities, and now I am working as a self-taught software engineer (by your definition). It took me 5 years on the job (and off the job, publishing my own mobile apps) to graduate from hacker to programmer to this, but it had more to do with the demands of the job, as well as the demands I placed on myself. I'm not "there" yet but I can say that I'm well on my way.

What I'm getting at is, if you get someone to give you full ownership of a project without touting a formal degree, and if you are wired for it, then there's "nothing you can't program" regardless of how you got your learning. A job environment is not the opposite of a school environment. If you're lucky, a job is exactly the same as a rigorous school program, with much more stringent delivery deadlines. In fact, as far as software engineering goes, a job goes well beyond the initial coding and into the full life cycle of software.

When you realize how much more there is to a piece of software than creating it, then you can't really believe that someone with a school degree in software engineering is much further ahead than someone who is self-taught. Nothing guarantees that the latter is not in fact closer to becoming a real-life software engineer than the former. For example, the person with the degree could be a literalist in love with documentation and evading responsibility, while the latter can be someone who ran their own Facebook social game (or highly customized MUD server) with some success for many years and who had to deal with customers and with the hundreds of other complexities in maintaining production SaaS.

A smart employer doesn't just look at the degrees on the CV. If they did, I would never have had a shot. Also, a smart and ambitious employee can grow on the job, demand more of themselves, and more responsibility from their employer.

They say the jobs of the future, the ones we're not likely to lose, are the ones we define for ourselves, the ones where we provide something so original and creative that we have made ourselves indispensable. I find that to be especially true in the dynamic tech world. You don't have to sit around and wait for someone to give you a degree telling the world that you can engineer software. You can actually do stuff, and then put it on your resume higher up than any degree. Because that's where it belongs.
21 Jan, 2013, yue wrote in the 48th comment:
Votes: 0
plamzi said:
@OP:
I think that the mere fact you're seeking advice here suggests that you should go to school. Crat was correct to point out that it's unusual for a major life choice to be discussed in an online forum by strangers. It indicates that you will likely benefit from having someone with authority taking the time to transfer it to you. And I wouldn't be so dismissive of Crat's other advise, either. We all have egos, and sometimes they prevent us from hearing helpful stuff (because we ask questions believing we already know the answers).

I don't see it as a major life choice - it will not seriously affect me financially, it will not seriously affect my time/schedule, it will (probably) not affect my "career". So, I don't feel like your analysis is correct. I did not ask this question believing I already had the answer, however, given the responses of a large number of people here, and given my needs and goals, I feel like your advice is even more inappropriate for me than Cratylus'. Especially when the basis for your statement was the "mere fact" that I posed my question here.
21 Jan, 2013, yue wrote in the 49th comment:
Votes: 0
@Salindor:

Thank you so much! :)
21 Jan, 2013, salindor wrote in the 50th comment:
Votes: 0
@plazami
While nothing you say isn't false, in my experience its not common either. I mean I was speaking in generalities and I have met a few like you. But you seem to be the exception and not the norm. Then again the fact your posting about MUDs already sets you apart from most engineers :).

In order for a degree program to be accredited they must certify on a regular basis that they are teaching certain aspects of the chosen field which is general formed by a giant consensus of both academic and industry for what a person with X degree should know. What you are saying effectively is someone who took the time to systematically go through software engineering with experts watching over has no advantage over someone who had on the job training for what that job needed. Sorry I can't buy that. After enough years programming a self taught person can get there. No doubt.
21 Jan, 2013, yue wrote in the 51st comment:
Votes: 0
@Plamzi:

Two things:

#1. "When you realize how much more there is to a piece of software than creating it, then you can't really believe that someone with a school degree in software engineering is much further ahead than someone who is self-taught." I disagree with your statement, not because it's wrong, but because it could be equally right to an opposing statement. A self-taught programmer might not know anything about compiler design, a subject that seems to be a core component of software-engineering/computer-science degrees, etc. There is no way to say for certain one way or the other; some self-taught programmers might be exceptional and some software-engineering students might be terrible - and vice-versa!

#2. "A smart employer doesn't just look at the degrees on the CV. If they did, I would never have had a shot."

I get this. I really do. I have landed quite a few jobs with no formal training or job experience. I have gotten financial backing for start-ups with no business experience or degree. The thing is, with three short-term exceptions, I have been self-employed since I was 13 years old. I don't plan on changing that in the future. I'm not taking any of the advice from this thread in regards to prospective employers - I am my prospective employer in this field and, that said, I don't need the pedigree. I need the skills.

Given that I have ample time and a more than a little self-control, I am leaning heavily toward disciplining myself in the science of software engineering. Granted, I might very well supplement my training with formal classes in University (I have all the pre-req math clases for most of the CS courses already) and just skip the degree.
21 Jan, 2013, Davion wrote in the 52nd comment:
Votes: 0
This may not be available to you yue, but from the sounds of things, pickin up an apple device and downloadings iTunes U might be right up your alley. It's basically a collection of university lectures (via video), text-books and assignments from various universities across the US.
21 Jan, 2013, plamzi wrote in the 53rd comment:
Votes: 0
yue said:
@Plamzi:

Two things:

#1. "When you realize how much more there is to a piece of software than creating it, then you can't really believe that someone with a school degree in software engineering is much further ahead than someone who is self-taught." I disagree with your statement, not because it's wrong, but because it could be equally right to an opposing statement. A self-taught programmer might not know anything about compiler design, a subject that seems to be a core component of software-engineering/computer-science degrees, etc. There is no way to say for certain one way or the other; some self-taught programmers might be exceptional and some software-engineering students might be terrible - and vice-versa!

#2. "A smart employer doesn't just look at the degrees on the CV. If they did, I would never have had a shot."

I get this. I really do. I have landed quite a few jobs with no formal training or job experience. I have gotten financial backing for start-ups with no business experience or degree. The thing is, with three short-term exceptions, I have been self-employed since I was 13 years old. I don't plan on changing that in the future. I'm not taking any of the advice from this thread in regards to prospective employers - I am my prospective employer in this field and, that said, I don't need the pedigree. I need the skills


Let me be blunt for a moment. When someone is genuinely in need for advice, they sit and listen, and take notes (hint: we don't care which advice, if any, you actually consider good). Your responses so far seem to suggest that you're in need of attention and validation much more than advice.
22 Jan, 2013, yue wrote in the 54th comment:
Votes: 0
plamzi said:
Let me be blunt for a moment. When someone is genuinely in need for advice, they sit and listen, and take notes (hint: we don't care which advice, if any, you actually consider good). Your responses so far seem to suggest that you're in need of attention and validation much more than advice.

It's a shame you feel that way, but that's simply not the case. I have sat, I have listened, I have taken a bunch of notes, I have done research as a result of what I have learned in this thread, I have acquired materials suggested in this thread, I have begun working on said material, etc.

What I don't need is advice that a) isn't relevant, b) isn't accurate in the first place. Now let me be blunt: Your response looks defensive and insecure. I don't care if you don't care if I don't care about your advice: I care about making it clear what exactly I am looking for, so people who do care to share advice and experience are able to do so. You don't speak for everyone here - not on software engineering, not on advice giving/taking. I think you're reading more "ego" into what I am writing than is actually there. Typically, that sort of misunderstanding is the result of internal projection, but now we're really getting off track. You stated something, I remarked on parts of it I consider to be untrue. If you aren't capable of discussing your claims, ignore my response. If you don't want to hear what I have to say about it, don't contribute anything to the thread. As was pointed out to me: "Welcome to the internet."

Davion said:
This may not be available to you yue, but from the sounds of things, pickin up an apple device and downloadings iTunes U might be right up your alley. It's basically a collection of university lectures (via video), text-books and assignments from various universities across the US.
Nifty! I'll look into this. Thanks.
22 Jan, 2013, Cratylus wrote in the 55th comment:
Votes: 0
yue said:
What I don't need is advice that…


Plamzi is plenty capable of clarifying his intent, and I don't feel especially compelled to support my advice to you at this point, nor Plamzi's.

However, what I think I hear Plamzi saying, and it really, really is worth bearing in mind, is that if you're asking questions, you should be open to the possibility that you are asking the wrong question…no matter how dead damn certain sure you are.

-Crat
http://lpmuds.net
22 Jan, 2013, yue wrote in the 56th comment:
Votes: 0
I don't know - from the PM's and the (positive, informative) responses in the thread by all the people who don't spend most of their time trying to convince people that cynicism is a proper substitute for maturity, I get the impression that I asked the correct questions.

..In fact.. I'm pretty dead damn certain sure I did.



Still, we can't rule out the possibility that I actually did not ask the right questions. At least, not until I invest heavily in the training materials, the time spent studying, practicing, designing, coding, testing, re-factoring, distributing, supporting, maintaining, analyzing, and updating for 15+ years without ever achieving the level of success I had hoped for and deciding that ultimately, the work was still meaningful, enriching, and overall worth it anyway. Then we'll know for sure that I didn't ask the wrong question. (Jan 21st, 2028 - mark your calendar! :)
22 Jan, 2013, Rarva.Riendf wrote in the 57th comment:
Votes: 0
And then again it will all depends on how you define success. The most beautiful mud engine without users is an engineering success. Still is a failure if its goal was to be actually used. Define your measurable goals first. Then you will be able to define if you reached them.

It will help people giving you more meaningful answers as well.
22 Jan, 2013, yue wrote in the 58th comment:
Votes: 0
Rarva.Riendf said:
And then again it will all depends on how you define success. The most beautiful mud engine without users is an engineering success. Still is a failure if its goal was to be actually used. Define your measurable goals first. Then you will be able to define if you reached them.

It will help people giving you more meaningful answers as well.
Good point.

"Write software that is elegant, efficient, and easy to maintain."
That's essentially my goal; my standard of success. If I could learn to do that, I would be very happy indeed.
22 Jan, 2013, Cratylus wrote in the 59th comment:
Votes: 0
yue said:
all the people who don't spend most of their time trying to convince people that cynicism is a proper substitute for maturity


!!!

I'm glad you're getting what you want. Best of luck.
09 Mar, 2013, Nathan wrote in the 60th comment:
Votes: 0
arendjr said:


Quote
(…), but you will never learn how to write a well structured, elegant, and easy to maintain piece of software.

Wrong. That's exactly what the Master focused on. Software Architecture, Software Testing, Software Management, Software Process, things like teamwork, refactoring, design patterns were all covered.

In fact, as with other engineering titles, it's considered disingenuous (sometimes even illegal) to call yourself Software Engineer without having the degree.


That last bit seems kind of unfair. You can be a software engineer (I'm de-emphasizing the first letters on purpose here, the diminutive sense), without having a degree. That's only "illegal" because we have a problem now where people assume certain things about engineer as a category. So, in order to protect other people from people claiming the title who aren't adequately trained and ethically minded, you now have to fit in some box and follow rules so that you can call yourself a Software Engineer.

Really any good programmer ought to be employing at least some software engineering methodology.
40.0/89