Self-Study Programming - Programming - HWzone Forums
adplus-dvertising
Skip to content
  • Create an account
  • About Us

    Hello Guest!

     
    Please note - in order to participate in our community, comment and open new discussions, you must join as a registered member.

    Our members enjoy many advantages, including the ability to participate in discussions, enjoy raffles and promotions for members of the site, and receive our weekly content directly by email.

    Do not like being harassed by email? You can register for the site but do not submit your registration to the weekly email updates.

Self-study programming


tnewgame
 Share

Recommended Posts

Hi I am currently serving in the Army and my departures are week - week

I have a year and 8 months left for service and I want to take advantage of this week to study programming so that by release I can already find a job 

 

I am reading the book python crash course and I am currently at the stage of projects in the book.

People who have studied on their own and managed to find a job I would love tips, when to move to a new language ??, which projects will improve my programming skills?

 

In addition, a question for those who know the field, the salary of a programmer without a degree is the same as a programmer with a degree?

Link to content
Share on other sites

In my opinion when you feel you master Python, you will move on to languages ​​that make better use of other paradigms (such as functional programming and object-oriented programming). But even before you do that, you will learn C. I think it will make you a better programmer, and make you better understand how a computer works.

 

As for the other questions I do not really know how to answer. But ... unless you go to very specific fields, I think a degree in this field is a good thing if you already have an interest in the subject. Being a programmer is not just about knowing how to write in programming languages. Of course it is possible to learn everything not through academia, but it is more complex for most people. The degree will open your eyes to areas you did not think of or did not think you needed to know, and will cause you not to skip steps you would otherwise probably have skipped.

Link to content
Share on other sites

No C !!!

Unless you want to work in developing real-time operating systems or caves (you are not).

Unfortunately C is still taught in academia.

 

As for moving to a new language - well, it really depends on what you plan to program. Python is a great language, not sure you will have to go through at all.

 

About the title:

@Tokadon Is right that there are important things that the degree teaches, like data structures. but:

There are also a lot of unimportant things he teaches. And even more important things he does not teach.

In any case, 99% of high-tech careers employers prefer degree experience.

I studied alone. In my opinion, those who are able to learn on their own can learn from the internet in an excellent way, and also gain a more modern programming style. Academics tend for some reason to teach what was valid 20 years ago.

In any case, it is always possible to complete. But I understand that there are people who are unable to study on their own. In this case, a degree is definitely an option (although there are others).

You should decide which area you want to focus on. Not that it is impossible to change, but it greatly affects learning.

After all, study in an orderly fashion. A collection of blog articles will not teach you to program properly. Book, however (as an example), yes, provided you read in order And does not skip any exercise.

I do not know the book, from what I checked the content matters (in a nutshell, so ... 😉) Is a basic to moderate python reviewer (inclusive). This means that you (when you finish the book) are at a great point to prepare your own projects, of medium size. But you will not understand any REAL-WORLD project, which usually uses more advanced techniques (not always), and libraries (almost always) like DECORATORS, METACLASSES ... I do not know enough advanced learning sources, so I can not recommend you. , Topics I can give:

  • FUNCTIONAL-STYLE PROGRAMMING:
    • HIGHER ORDER FUNCTIONS
    • MAP, FILTER and REDUCE (and COMPREHENSION)
    • OPERATOR AND FUNCTOOLS (Important modules in the standard library)
  • DECORATORS
  • METAPROGRAMMING - Probably will not meet, but there are libraries that use it extensively. It is transparent to the user (in the library), but not to its programmers ...
  • Take the Python documentation, and go through all the built-in modules one by one. This will help you later on to a level you can not even imagine. You do not know how much it sucks to write code for five hours, only to find that the standard library provides it and better ...

 

In addition, and this is very important, anyone who has graduated courses or read books and tutorials Do not know How to work in the real world. There, what to do, do not work as in the book. TESTING, VERSION CONTROL, CI / CD ... these are things every code writer needs to know. My recommendation - you will learn GIT. An excellent guide (in Hebrew!) Can be found on the Israel website at https://internet-israel.com/category/מדריכים/git/. Highly recommended after working a few months with Git - invest the time and study it in depth, how it works, all the commands. It has more tools than you can imagine, and a thorough acquaintance with them will save you hours of wandering in STACK OVERFLOW or, worse, writing code you wrote and lost.

TESTING, especially UNIT TESTING. It is very important to learn. The problem I encountered when I started was that it is very difficult to understand what it is theoretically. I have yet to come across a book that explained this well. So after you have learned the principles - open your browser, look for projects in GitHub, and write tests for them (tests, but I like Hebrew ...). Submit PULL REQUEST. And that brings me to the last recommendation -

 

Everyone wants developers with experience. But how do you gain experience if you are accepted because I have no experience? ???? The best answer is to contribute to open source. Take projects you know and love (and use), and donate. Your code editor, your programming language, .... a lot of projects contain ISSUES that are marked GOOD FIRST ISSUE or something like that, and you will find talented developers who will be very happy to guide you through the depths of the project. This is the best way to understand REAL WORLD programs - to work with them.

Link to content
Share on other sites

@af db creid I almost disagree at all. Yes, when you get a bachelor's degree you have to learn a lot of new things, and it may seem like the degree is irrelevant. From my experience, very quickly find that the title helps a lot. You say you studied on your own, and certainly well done, but not sure anyone could do it. There are areas that require knowledge in many areas and a strong mathematical foundation, which is very difficult to acquire in a self-taught way. But that everyone will do what they see fit, I just wrote down my opinion.

 

The reason taught in Academy C is mainly pedagogical, which is also the reason I recommend it. From code C you can almost directly understand what the "machine" is going to run, and you learn a lot from it. That is, its true value is primarily educational. It could be argued that one may not have to know how things work, but again, here comes the matter of personal aspirations and interests.

 

Besides, what's so terrible about operating / real-time operating systems? A domain like any other domain ... : )

Link to content
Share on other sites

Areas that require a strong mathematical foundation? few. is very. This may be a common belief, but unfortunately, throughout my years as a programmer I have not encountered them (except for data structures as a slight exception, although even there you can easily download the math - at the expense of less understanding what complications are).

 

I am aware that not everyone is self-taught, and I agree. This is exactly why I have also listed options for people who are unable to study on their own : )

But you will have to acquire this ability anyway. Even if you are taught the basics by lecturers, in most areas (not all, there is more and there is less) there are always innovations that you will need to learn. And keep up to date. Whoever does not ... becomes a dinosaur (operating systems really do not belong in this category : )).

 

I am fully aware that the academy does not teach C so that you can program it. Although I have seen people who fell in love with C ++ and did not even agree to try Python (Grrrr !!! and more C ++ of the cheerful eighties ...), and also in places where C is the first language more modern languages ​​are taught later. And yet I stand behind every word I have written.

 

Do you know Assembly? I am. And I must point out, that all these arrogant C programmers, who think they know what's going on inside ... 😉 What is the difference between C CALLING CONVENTION and PASCAL and what are the differences between 32 and 64? you did not answer? Even C you do not know! And wait, the structure of the computer also needs to learn, and do you even know how a transistor works? (I do not). So you will learn electronics first!

 

I hope the intention is understandable. Once upon a time (as I said, the cheerful 70s-80s ...) there was really a benefit in knowing what was going on behind the hood. Not at all today. Upper languages ​​save us this need, and in my experience - it is only harmful. I learned C at first, and fell in love with it. She has a warm corner in her heart to this day : ). But years later I found myself unable to focus on the readings of the code if it came at the expense of performance. Knowing that somewhere behind the scenes the RUNTIME of whatever it is would add another 4 bytes (complete !!!) to each roaming object (how to say) It's for God's sake?) My year. After years I got rid of it, but to this day I fight with myself over it in C and C ++ code. , I did not change my behavior ... I'm still looking at the code of my compilers ... well, lost case).

 

I can not imagine cases where this knowledge really helped me. In the very very rare cases of VERY VERY PERFORMANCE CRITICAL CODE, yes. But even there I always searched on Google, so anyway ...

 

What's terrible about developing operating systems? Nothing! It's a real fun area. That is, if you are willing to crash your computer twice a day ... 😉 The only problem is that not many people work on it, and I have a feeling that the likeable borrower is not aiming there yet ... and besides, I'm willing to bet that all those who work on the LINUX kernel or Did not start from there ...

 

And finally, I would love to hear a list of degree courses that have helped you and what. see you! I have one (data structures are not considered because I studied it before): . He helped me when I listened to the podcast "Making History" on EEG brain tools, I already knew what a fertile transformation is !!

Link to content
Share on other sites

I agree with you that Git needs to be studied. Haha just ... I agree with you on all sorts of things. Like the fact that high code is usually not interested in what is below, because that is the reason why we go for this abstraction. The classic computer is not at all interested in how things are realized below. I still think that for a beginning programmer it's great for all sorts of reasons, but I admit that the standard programmer usually does not get to these things. And more, in my opinion - how can you learn these things without Understand at least on a general level how things look down, just out of interest.The majority may not be like that, but I can only testify about myself ...

 

It's a matter of some wanting to be a specialist. I mean, for "just" programming you can also get by with almost nothing. But I think it's terribly limiting and boring.

 

I'm not coming to argue with you. Mathematics is important in every field of engineering, especially in software engineering. Algorithms, considered a coveted field by many, are mastered at a high level by mathematics. So does (Probability), graphics (linear algebra, and other surprising areas sometimes), cryptography (you name it ...), Etc. etc'. You can often get by using existing libraries, but they also have programmers (and these are particularly equal jobs), right? And maybe what the library does is not exactly right for you?

 

There are many degree courses that have helped me. As Fermat said when he apparently wanted to evade the proof of "Fermat's Last Theorem": "I discovered a wonderful proof of this theorem, but  Margins  These are too narrow to contain. "But seriously, at this point I think it's unnecessary to say what helped me from the degree. Since you seem to have already done your research, if you're not convinced by now, you probably won't be convinced ... and really that's not my intention.

 

(And I also really like making history)

Link to content
Share on other sites

Look. I am also from the same specialist. You will never convince me not to go deeper ... but I do think that at least for a start, it is better to be conventional.

 

Networks - Well, I agree that it was fascinating to hear about all the issues in familiar protocols like TCP and to understand that for the sake of the name it's not that simple. But between us, when was the last time you even wrote RAW SOCKET? 😉

Graphics, today done with a GPU. He does the calculations : ) And it's true that there are libraries, and so on about ML, that need this knowledge. But it's really, really not for someone starting his career. He's the one I said: choose which field to focus on. And like I said, once you have the foundation you can always complete by I'm really not opposed to the fact that if you decide to become a programmer at NVIDIA you will have to do a degree, maybe even in math : )

Cryptographer I really am not (and do not plan to be), but I do know that this is a field that belongs much more to mathematicians than to programmers. That is, they are the ones who design the algorithms, and anyway if I have to I will hire a cryptographer and not program myself. Otherwise, I would understand information security like these from the government (hope you are not a programmer in the government ...) : )

And algorithms - I agree and disagree. That is, you need math (who is more and who is less) to shape them. But pen cases where you need new ones. You usually program BUSINESS RULES, and do not reinvent binary sorting. It's not just libraries - you can just read And touch what to write.

 

And you're right, you can 't convince me ... 😜 And not me you (but it's fun to argue, thanks) c

Link to content
Share on other sites

  • 2 weeks later ...
Quote by af db creid

No C !!!

Unless you want to work in developing real-time operating systems or caves (you are not).

Unfortunately C is still taught in academia.

 

As for moving to a new language - well, it really depends on what you plan to program. Python is a great language, not sure you will have to go through at all.

 

About the title:

@Tokadon Is right that there are important things that the degree teaches, like data structures. but:

There are also a lot of unimportant things he teaches. And even more important things he does not teach.

In any case, 99% of high-tech careers employers prefer degree experience.

I studied alone. In my opinion, those who are able to learn on their own can learn from the internet in an excellent way, and also gain a more modern programming style. Academics tend for some reason to teach what was valid 20 years ago.

In any case, it is always possible to complete. But I understand that there are people who are unable to study on their own. In this case, a degree is definitely an option (although there are others).

You should decide which area you want to focus on. Not that it is impossible to change, but it greatly affects learning.

After all, study in an orderly fashion. A collection of blog articles will not teach you to program properly. Book, however (as an example), yes, provided you read in order And does not skip any exercise.

I do not know the book, from what I checked the content matters (in a nutshell, so ... 😉) Is a basic to moderate python reviewer (inclusive). This means that you (when you finish the book) are at a great point to prepare your own projects, of medium size. But you will not understand any REAL-WORLD project, which usually uses more advanced techniques (not always), and libraries (almost always) like DECORATORS, METACLASSES ... I do not know enough advanced learning sources, so I can not recommend you. , Topics I can give:

  • FUNCTIONAL-STYLE PROGRAMMING:
    • HIGHER ORDER FUNCTIONS
    • MAP, FILTER and REDUCE (and COMPREHENSION)
    • OPERATOR AND FUNCTOOLS (Important modules in the standard library)
  • DECORATORS
  • METAPROGRAMMING - Probably will not meet, but there are libraries that use it extensively. It is transparent to the user (in the library), but not to its programmers ...
  • Take the Python documentation, and go through all the built-in modules one by one. This will help you later on to a level you can not even imagine. You do not know how much it sucks to write code for five hours, only to find that the standard library provides it and better ...

 

In addition, and this is very important, anyone who has graduated courses or read books and tutorials Do not know How to work in the real world. There, what to do, do not work as in the book. TESTING, VERSION CONTROL, CI / CD ... these are things every code writer needs to know. My recommendation - you will learn GIT. An excellent guide (in Hebrew!) Can be found on the Israel website at https://internet-israel.com/category/מדריכים/git/. Highly recommended after working a few months with Git - invest the time and study it in depth, how it works, all the commands. It has more tools than you can imagine, and a thorough acquaintance with them will save you hours of wandering in STACK OVERFLOW or, worse, writing code you wrote and lost.

TESTING, especially UNIT TESTING. It is very important to learn. The problem I encountered when I started was that it is very difficult to understand what it is theoretically. I have yet to come across a book that explained this well. So after you have learned the principles - open your browser, look for projects in GitHub, and write tests for them (tests, but I like Hebrew ...). Submit PULL REQUEST. And that brings me to the last recommendation -

 

Everyone wants developers with experience. But how do you gain experience if you are accepted because I have no experience? ???? The best answer is to contribute to open source. Take projects you know and love (and use), and donate. Your code editor, your programming language, .... a lot of projects contain ISSUES that are marked GOOD FIRST ISSUE or something like that, and you will find talented developers who will be very happy to guide you through the depths of the project. This is the best way to understand REAL WORLD programs - to work with them.

Have you noted that you need to carefully choose the field you choose to focus on, can you please expand on the areas that are there and their difficulty?

Link to content
Share on other sites

There is a wonderful article on why it is important to study C and what the problem is when you do not teach in academia 😄

https://www.joelonsoftware.com/2005/12/29/the-perils-of-javaschools-2/

 

Quote by af db creid

Do you know Assembly? I am. And I must point out, that all these arrogant C programmers, who think they know what's going on inside ... 😉 What is the difference between C CALLING CONVENTION and PASCAL and what are the differences between 32 and 64? you did not answer? Even C you do not know! And wait, the structure of the computer also needs to learn, and do you even know how a transistor works? (I do not). So you will learn electronics first!

And, yes, I realize I'm the billionth person to make that joke. Not that I suggest a guy who wants to study independently in his free time to start from that. In fact - I'm really against it. In academia it is taught in parallel with other courses, and then you get both worlds.

 

By the way, I do not know anyone who has studied C properly who does not know the difference between 32-bit and 64-bit. :) 

 

Learning how a transistor works - does not matter unless you are thinking of becoming a hardware engineer. The separation between hardware and software engineers is sharper than between software engineers in different fields.

 

Quote by af db creid

Once upon a time (as I said, the cheerful 70s-80s ...) there was really a benefit in knowing what was going on behind the hood. Not at all today. Upper languages ​​save us this need, And in my experience - it's just harmful. I learned C at first, and fell in love with it. She has a warm corner in her heart to this day : ). But years later I found myself unable to focus on the readings of the code if it came at the expense of performance.

I think you are wrong in throwing your experience on the rule. I firmly believe that proper learning can make it clear to people in which cases performance is critical and in which cases they are not.

 

In the end I also somewhat agree and somewhat disagree with you. Disagree - because someone who has an understanding of the basics (which is a C, small assembly and computer structure) can more easily move to more superficial areas, but the opposite is not true. Yes agree - because when someone is learning on their own and wants to focus on something specific - it is definitely better for them to start with something more elaborate like Python.

 

So we will conclude that I accept your practical advice, even if not the whole theory behind it. :D 

Link to content
Share on other sites

I read the article, and I really disagree.

First of all, I do not agree with the claim that the purpose of universities is not to prepare for industry. But it's small.

His contention is that high-end languages ​​are "not hard enough" to filter out incompetent programmers. I do not agree for two reasons:

 1. LOW-LEVEL languages ​​(how for God's sake am I supposed to translate this ??) filter out too many programmers. Also talented. I personally know people who hate C ++, but are excellent programmers (and mostly want to learn and get better) in other languages. I even know someone whose degree at the academy made him want to study programming, until he accidentally came across Python.

 2. These languages ​​filter out the wrong people. There is a wonderful and important article (regardless of which you should read if you have not already done so) called No Silver Bullet - Essence and Accident in Software Engineering Which was groundbreaking.

The principle is that there are two types of difficulties in software development: accidental and understandable. Working with voters is an accidental difficulty. Such difficulties can be solved through more modern languages. But the real difficulties of programming are the understandable ones.

Not many people have the power to mess with SEGMENTATION FAULTS. But that does not mean that they do not have the analytical mind needed to program.

 

post Scriptum. There is one claim of the writer with whom I actually agree: JAVA is a problematic language. He says he will elaborate on this in a separate article. Do you have a link? 😜

Link to content
Share on other sites

Join the discussion

You can then join the discussion and then join our community. If you already have an account with us, please Log in now To comment under your username.
Note that: The comment will appear to the surfers after approval by the board management team.

guest
Add a comment

×   The content pasted is with formatting.   Remove formatting

  Only 75 emoji are allowed.

×   Your link has been automatically assimilated.   Show as regular link

×   Your previous content has been automatically restored.   Clear all

×   You can not paste images directly. Upload or insert images from URL.

 Share

  • Latest news

  • Buzz-Zone: Everything hot on the net

×
  • Create new ...

At the top of the news:

new on the site