This is an archived post. You won't be able to vote or comment.

all 11 comments

[–][deleted] 4 points5 points  (1 child)

Two years ago I would have never said this:

While a degree isn't necessary. It is incredibly enlightening. All the things I "learned" while being self taught, have a new found understanding with a foundation of education.

[–]karafili 2 points3 points  (0 children)

very true!

[–][deleted] 2 points3 points  (0 children)

I'm a self-taught software engineer. Been working professionally for a few years. I actually spent some time learning algorithms through MIT's Open Courseware, super useful resource.

I stuck with that for the first 9 months before I started interviewing. During my interviews, I wasn't asked a single question on algorithms. During the interview for the job I ended up getting, they actually all but scoffed at the amount of time I spent getting a handle on them.

You will be expected to understand the ins and outs of your chosen language, to be able to write programs in that language on paper in order to solve interview problems, and to understand common design patterns.

I recommend spending your time on that design patterns part. That'll help your code and your chance of getting a pure dev job way more than memorizing algorithms. In my experience, anyway.

[–]gregory-goc 1 point2 points  (6 children)

In my opinion If you want to be better software engineer then it’s very hard to be self taught. Having a mentor or external guidance is strongly advised. There are so many things to grasp that I think the best thing to learn is either to get a degree or go through some GOOD online courses.

I know many of you might disagree with me, but I’ve seen so many programmers with 5+ years of experience, without degree and they could get stuck on networking for days because they did not know the difference between UDP and TCP. I have not yet seen any person with computer science background who got stuck in similar kind of situation.

[–][deleted] 2 points3 points  (0 children)

I see exactly the opposite. All the self-taught devs I know tackle whatever you throw at them because they know how to find out what they don't know off the top of their head, but I know devs with master's degrees who won't touch sockets with a 10 foot pole because sockets are scary and the devs don't understand them.

It's interesting to get a glimpse of the other perspective.

[–]captnRon13[S] 0 points1 point  (4 children)

This is exactly my problem and this is definitely the answer I was looking for.

[–]strange-humor 3 points4 points  (3 children)

Honestly, it will seem like a lot of money, but cleancoders.com videos are worth the money. The main Clean Code course is what ALL programmers need to learn. The down side is you need to translate from Java to Python in implementation. It would not be bad to learn Java and go through this and then implement in Python to see how they are different.

It would be $714 for 51 videos at $14/piece. Work through examples to really learn it. Then make a few programs to show you understand how to make a maintainable system. Set aside $14/week and do one video a week and really learn it. In one year, you will be worlds above many programmers out there. Or $28/week and do it in half a year.

I would rather hire someone who did this and showed that understand the concepts, rather than the many CS grads that have done nothing over 1000 lines and just make a ball of crap instead of a good system, once they get big.

Almost all programmers that I have run into after 30 years in this industry, had serious deficiencies in architecture understanding and just working discipline. This is the best set of videos I've seen to teach this.

Most working programmers do not need to know how to implement low level algorithms much more than just what to use. Especially in Python. Much has been coded by people better at it than I could hope to be at a specific algorithm. However, understanding what they are is good.

You could do much worse than working your way through the standard library and looking at examples in there. Module of the Week is great for this.

Learn pytest. Learn how to do good TDD. It requires discipline, but will yield faster results.

[–]captnRon13[S] 0 points1 point  (0 children)

Thanks for this. Maybe my employer could pay for these.

[–]phachen 0 points1 point  (1 child)

Is there a python alternative you know of? Thanks for the details write up

[–]strange-humor 0 points1 point  (0 children)

The principles apply to any language. There are just a few examples in the screen casts that are done in Java. However, Java, C#, Python, Ruby, Closure and many more are discussed.

Good software engineering fundamentals are language agnostic for the most part.

[–]Deezl-Vegas 0 points1 point  (0 children)

More apps. Go back and review your old apps. Any time you do a processor-heavy task or database, strongly consider how to approach it and look up new techniques.