What can/should I learn?

  • (2 Pages)
  • +
  • 1
  • 2

24 Replies - 2514 Views - Last Post: 03 January 2014 - 06:18 AM

#16 suppiral  Icon User is offline

  • New D.I.C Head

Reputation: 4
  • View blog
  • Posts: 24
  • Joined: 21-September 13

Re: What can/should I learn?

Posted 30 December 2013 - 12:24 PM

Rather than learning a specific language, The important thing is to learn how to program well. That means how to write modular, readable, efficient and effective code.

You should learn how to write modular code, about data structures and basic algorithms, how to debug a program, how the memory of a computer works and what goes behind the hood and most importantly, how to solve problems and make any software you want to make.

If you already started learning python, I recommend you to keep learning the "Programming Basics" while learning it and not try to juggle two languages at the same time. If you can't find a course that teach programming basics, read a good book (or many!) on the subject. after you got that figured out, go, explore, learn and experiment.

Good luck!
Was This Post Helpful? 1
  • +
  • -

#17 Endalth  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 11
  • Joined: 16-December 13

Re: What can/should I learn?

Posted 31 December 2013 - 09:44 AM

First of all, thank you both for your answers.

View Postsuppiral, on 30 December 2013 - 12:24 PM, said:

Rather than learning a specific language, The important thing is to learn how to program well. That means how to write modular, readable, efficient and effective code.

You should learn how to write modular code, about data structures and basic algorithms, how to debug a program, how the memory of a computer works and what goes behind the hood and most importantly, how to solve problems and make any software you want to make.

If you already started learning python, I recommend you to keep learning the "Programming Basics" while learning it and not try to juggle two languages at the same time. If you can't find a course that teach programming basics, read a good book (or many!) on the subject. after you got that figured out, go, explore, learn and experiment.

Good luck!


Well, I can't say if I am progmming well but I can say that I always try my best while programming something. I keep the code as short,readable and clean as I can. Like, I know some programs that I wrote with 2 or even 3 different ways just to find the best way. If I write a long code I use explanation lines so when I look at the code again or when someone else look at my code, that person or me can understand the code without any trouble. Also, I use explanation lines to determine some codes beginnings and endings like for code clusters that's doing one job like a code cluster that's finding a factorial number's result(Yeah I know that's a pretty easy example) or sorting, searching algorithms for arrays.I hope I was able to explain good enough what I tried to say in that last sentence. And If you mean functions by modular code, I know how to define a function in Python and C# but I never wrote a program that long so I never used the exact same code twice so I never used functions. For debugging program, I believe I have very good eyes for errors. Though, Python and C# are both showing the errors. :) Also, I will check that "Programming Basics". And, can you answer my 2 questions?

View Postsuppiral, on 30 December 2013 - 12:24 PM, said:

how the memory of a computer works


Why do I need to learn this exactly?

View Postsuppiral, on 30 December 2013 - 12:24 PM, said:

what goes behind the hood


And what did you mean with that part? I mean what kind of things?
Was This Post Helpful? 0
  • +
  • -

#18 Curtis Rutland  Icon User is offline

  • (╯□)╯︵ (~ .o.)~
  • member icon


Reputation: 4577
  • View blog
  • Posts: 8,019
  • Joined: 08-June 10

Re: What can/should I learn?

Posted 31 December 2013 - 10:15 AM

I may be a bit late to this thread, but I'll throw my opinions in the ring.

I am like you, in a way. I'm not satisfied with learning just one language. I want to learn many, because it's interesting. However, I've been in the industry long enough to know to focus myself, because knowing a bit about 10 languages isn't nearly as useful as being a deep expert in one or two. That's not to say I don't dabble with other technologies (just a month ago I started spending time with Node.js and Express, for example). I just make sure I'm the best damn C# developer I can be; then I worry about other things.

Why C#? Well, that's just the way the sequence of events went for me. My first job gave me enough flexibility to choose what to work with, so I chose ASP.NET and VB, and quickly transitioned to C# because it was more like the Java syntax I knew from school. After that, it's all history. All my jobs have been with .NET, so I focused hard on being a great C# developer.

Now I could give you an impassioned argument on why C# is awesome and how much you'll love it when you get deeper into it, but I'm not going to. Because the language you choose is almost incidental, really. I learned so much more than how to use a language. I learned to think like a programmer. Once you understand logic and how computers process that logic, then learning a language is just that; learning syntax and commands, because under the covers they all work pretty much the same way.

What I'm suggesting is that by choosing one well-rounded language to focus your efforts on, you will naturally become better at learning new languages, because the skills you gain are more universal than syntax is. And to be honest, you have some experience in the two languages I recommend most for learners: Python and C#. Stick with one; become excellent at it. Then branch out, and you'll find that it's vastly easier. Like learning Italian after you already speak Spanish. Different, but familiar.

Now, how to get really good? Hard to say. It depends on how you learn. Personally, I don't like sitting down and reading a programming book cover to cover. I don't believe that gives you a good feel for the language. But it works well for others, so to each their own; do whatever makes things work for you. However, I will share my "secret". It's answering forum posts. Seriously. When I see a new question pop up in C# that I don't know the answer to, I start searching. I use my research skills (which I'm believing more and more is an actual skill and not just everyone else being too dumb to use google properly) to try to solve someone else's problems. I mock up examples and test out my solutions, if possible. Sometimes I even write up tutorials on what I've found, if I think enough people will benefit from it. But that's how I've gotten good at what I do: experience. Both from work, and from helping others. By learning a topic well enough to help/teach others how to do it, you cement the concept in your mind and will remember it and its lessons much better. At least, that's how it works for me. Not everyone learns the same.
Was This Post Helpful? 3
  • +
  • -

#19 jon.kiparsky  Icon User is offline

  • Pancakes!
  • member icon


Reputation: 8028
  • View blog
  • Posts: 13,740
  • Joined: 19-March 11

Re: What can/should I learn?

Posted 31 December 2013 - 10:15 AM

View PostEndalth, on 31 December 2013 - 11:44 AM, said:

View Postsuppiral, on 30 December 2013 - 12:24 PM, said:

how the memory of a computer works


Why do I need to learn this exactly?


When you write a computer program, all you're doing really is manipulating the state of the computer's memory so that it will represent the piece of the world you're interested in and ultimately emit some series of electrical signals that tell you something about that picture of the world.
It's worth knowing how that memory works.
Was This Post Helpful? 1
  • +
  • -

#20 Curtis Rutland  Icon User is offline

  • (╯□)╯︵ (~ .o.)~
  • member icon


Reputation: 4577
  • View blog
  • Posts: 8,019
  • Joined: 08-June 10

Re: What can/should I learn?

Posted 31 December 2013 - 10:21 AM

View Postjon.kiparsky, on 31 December 2013 - 11:15 AM, said:

View PostEndalth, on 31 December 2013 - 11:44 AM, said:

View Postsuppiral, on 30 December 2013 - 12:24 PM, said:

how the memory of a computer works


Why do I need to learn this exactly?


When you write a computer program, all you're doing really is manipulating the state of the computer's memory so that it will represent the piece of the world you're interested in and ultimately emit some series of electrical signals that tell you something about that picture of the world.
It's worth knowing how that memory works.


And on top of that, it's good to understand what goes on under the covers of a high-level language. It will help avoid lots of misunderstandings and pointless "bug hunting". Just an example, but if you already understand how pointers work, you won't be confused by passing objects by reference in a high-level language. You'll understand what C#'s ref keyword can do (pointer to a pointer, etc...). It'll make interop easier with low-level APIs (for example, using unmanaged C DLLs in the Win32 API from managed .NET code). It'll help you write more efficient code, because when you understand all the steps that an abstracted algorithm can take, you will know the best way to use them.

You could go your whole career without understanding these topics, but it will make you a better programmer to actually know them.

Edit: and I say this as someone who doesn't work with low-level languages. I've never written a single line of assembly, and I only know as much C as I've needed to solve problems in the past. I've never built anything important in C or C++, but the basic understanding I have of them has seriously aided me in my higher-level work.
Was This Post Helpful? 2
  • +
  • -

#21 suppiral  Icon User is offline

  • New D.I.C Head

Reputation: 4
  • View blog
  • Posts: 24
  • Joined: 21-September 13

Re: What can/should I learn?

Posted 31 December 2013 - 02:26 PM

can you clarify which two questions would you like me to answer? I'm not sure I understand.
Was This Post Helpful? 0
  • +
  • -

#22 jon.kiparsky  Icon User is offline

  • Pancakes!
  • member icon


Reputation: 8028
  • View blog
  • Posts: 13,740
  • Joined: 19-March 11

Re: What can/should I learn?

Posted 31 December 2013 - 02:31 PM

View PostCurtis Rutland, on 31 December 2013 - 12:15 PM, said:

However, I will share my "secret". It's answering forum posts. Seriously. When I see a new question pop up in C# that I don't know the answer to, I start searching. I use my research skills (which I'm believing more and more is an actual skill and not just everyone else being too dumb to use google properly) to try to solve someone else's problems. I mock up examples and test out my solutions, if possible. Sometimes I even write up tutorials on what I've found, if I think enough people will benefit from it. But that's how I've gotten good at what I do: experience. Both from work, and from helping others. By learning a topic well enough to help/teach others how to do it, you cement the concept in your mind and will remember it and its lessons much better. At least, that's how it works for me. Not everyone learns the same.



I find this is very useful as well. A good problem is a great way to learn something, and it's hard to come up with enough new problems on your own. The forum is an endless source of problems for you to learn from.
Was This Post Helpful? 2
  • +
  • -

#23 Endalth  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 11
  • Joined: 16-December 13

Re: What can/should I learn?

Posted 31 December 2013 - 02:47 PM

View PostCurtis Rutland, on 31 December 2013 - 10:15 AM, said:

I may be a bit late to this thread, but I'll throw my opinions in the ring.

I am like you, in a way. I'm not satisfied with learning just one language. I want to learn many, because it's interesting. However, I've been in the industry long enough to know to focus myself, because knowing a bit about 10 languages isn't nearly as useful as being a deep expert in one or two. That's not to say I don't dabble with other technologies (just a month ago I started spending time with Node.js and Express, for example). I just make sure I'm the best damn C# developer I can be; then I worry about other things.

Why C#? Well, that's just the way the sequence of events went for me. My first job gave me enough flexibility to choose what to work with, so I chose ASP.NET and VB, and quickly transitioned to C# because it was more like the Java syntax I knew from school. After that, it's all history. All my jobs have been with .NET, so I focused hard on being a great C# developer.

Now I could give you an impassioned argument on why C# is awesome and how much you'll love it when you get deeper into it, but I'm not going to. Because the language you choose is almost incidental, really. I learned so much more than how to use a language. I learned to think like a programmer. Once you understand logic and how computers process that logic, then learning a language is just that; learning syntax and commands, because under the covers they all work pretty much the same way.

What I'm suggesting is that by choosing one well-rounded language to focus your efforts on, you will naturally become better at learning new languages, because the skills you gain are more universal than syntax is. And to be honest, you have some experience in the two languages I recommend most for learners: Python and C#. Stick with one; become excellent at it. Then branch out, and you'll find that it's vastly easier. Like learning Italian after you already speak Spanish. Different, but familiar.

Now, how to get really good? Hard to say. It depends on how you learn. Personally, I don't like sitting down and reading a programming book cover to cover. I don't believe that gives you a good feel for the language. But it works well for others, so to each their own; do whatever makes things work for you. However, I will share my "secret". It's answering forum posts. Seriously. When I see a new question pop up in C# that I don't know the answer to, I start searching. I use my research skills (which I'm believing more and more is an actual skill and not just everyone else being too dumb to use google properly) to try to solve someone else's problems. I mock up examples and test out my solutions, if possible. Sometimes I even write up tutorials on what I've found, if I think enough people will benefit from it. But that's how I've gotten good at what I do: experience. Both from work, and from helping others. By learning a topic well enough to help/teach others how to do it, you cement the concept in your mind and will remember it and its lessons much better. At least, that's how it works for me. Not everyone learns the same.

First of all, thank you so much for writing all of this. You are awesome. Seriously.

I understand what you mean. If you know one language good you can do something with it but if you know a bit from 10 languages you can't do anything, right. I have to say it seems you were really lucky with your job. I want to be like you and with that I mean I want to focus on C# and find a job that I can program on C#. Because, C# was my first language, I loved it from the very beginning and I want to work on it. And, I don't like reading books too. I guess I will search what I should know from the internet first and then search topics one by one. And I will try to learn more about how computers and memory work. Also, I am searching for people to help on the forum too. Until now, I was passing the topics if I don't know anything about them but from now on I will search and try to answer them.

I will answer both of you below. jon.kiparsky and Curtis Rutland.

View PostCurtis Rutland, on 31 December 2013 - 10:21 AM, said:

View Postjon.kiparsky, on 31 December 2013 - 11:15 AM, said:

View PostEndalth, on 31 December 2013 - 11:44 AM, said:

View Postsuppiral, on 30 December 2013 - 12:24 PM, said:

how the memory of a computer works


Why do I need to learn this exactly?


When you write a computer program, all you're doing really is manipulating the state of the computer's memory so that it will represent the piece of the world you're interested in and ultimately emit some series of electrical signals that tell you something about that picture of the world.
It's worth knowing how that memory works.


And on top of that, it's good to understand what goes on under the covers of a high-level language. It will help avoid lots of misunderstandings and pointless "bug hunting". Just an example, but if you already understand how pointers work, you won't be confused by passing objects by reference in a high-level language. You'll understand what C#'s ref keyword can do (pointer to a pointer, etc...). It'll make interop easier with low-level APIs (for example, using unmanaged C DLLs in the Win32 API from managed .NET code). It'll help you write more efficient code, because when you understand all the steps that an abstracted algorithm can take, you will know the best way to use them.

...


jon.kiparsky: That was kind of an poetic post in my perspective and a good one. Thank you. :)

Curtis Rutland:
In this post by "passing object by reference in a high-level language", did you mean using low-level language codes in high-level languages or something like that? Sorry, I don't know anything about pointers and ref keyword yet so I can't say that I understand this post completely.
Was This Post Helpful? 0
  • +
  • -

#24 Endalth  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 11
  • Joined: 16-December 13

Re: What can/should I learn?

Posted 31 December 2013 - 03:08 PM

Seems like I can't edit my own post yet. Sorry I hadn't seen these posts.

View Postsuppiral, on 31 December 2013 - 02:26 PM, said:

can you clarify which two questions would you like me to answer? I'm not sure I understand.


View PostEndalth, on 31 December 2013 - 09:44 AM, said:

View Postsuppiral, on 30 December 2013 - 12:24 PM, said:

how the memory of a computer works


Why do I need to learn this exactly?

View Postsuppiral, on 30 December 2013 - 12:24 PM, said:

what goes behind the hood


And what did you mean with that part? I mean what kind of things?


These two :)

View Postjon.kiparsky, on 31 December 2013 - 02:31 PM, said:

View PostCurtis Rutland, on 31 December 2013 - 12:15 PM, said:

However, I will share my "secret". It's answering forum posts. Seriously. When I see a new question pop up in C# that I don't know the answer to, I start searching. I use my research skills (which I'm believing more and more is an actual skill and not just everyone else being too dumb to use google properly) to try to solve someone else's problems. I mock up examples and test out my solutions, if possible. Sometimes I even write up tutorials on what I've found, if I think enough people will benefit from it. But that's how I've gotten good at what I do: experience. Both from work, and from helping others. By learning a topic well enough to help/teach others how to do it, you cement the concept in your mind and will remember it and its lessons much better. At least, that's how it works for me. Not everyone learns the same.



I find this is very useful as well. A good problem is a great way to learn something, and it's hard to come up with enough new problems on your own. The forum is an endless source of problems for you to learn from.


Yeah I noticed that when I read Curtis Rutland's post. I joined this forum to learn things from tutorials and that kind of things and help people but I never thought I could learn things by searching people's problems.

And I noticed that I forgot to thank you for sharing this. Thank you Curtis Rutland.
Was This Post Helpful? 0
  • +
  • -

#25 suppiral  Icon User is offline

  • New D.I.C Head

Reputation: 4
  • View blog
  • Posts: 24
  • Joined: 21-September 13

Re: What can/should I learn?

Posted 03 January 2014 - 06:18 AM

It looks like jon and Curtis have already answered these questions, maybe better than how I could've answered them :)
Was This Post Helpful? 0
  • +
  • -

  • (2 Pages)
  • +
  • 1
  • 2