As a beginner, is looking too "in-depth" a bad idea? [closed] - language-agnostic

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I've recently attempted to start learning the C programming language, this question isn't specific to that one language though, or any language for that matter. I've found that I regret asking for information/best practices as early in the learning process as I have, simply because I'm receiving too much information.
As an example, I asked a question related to arrays in C:
Is defining the length of an array with a macro "excellent practice"?
What I found was, I received the answer I was looking for; but, I also received a slew of other information, that, as a beginner was absolutely over my head. I then regretted asking in the first place because I found myself worrying about things that I probably shouldn't know/care about at this stage in the learning process.
I guess what I'm asking is: do you think worrying about best practices and language caveats when I'm a beginner will be harmful to me, or is it encouraged? I find myself getting lost reading questions under the 'c' tag, of which I was trying to use to improve my knowledge, but now I'm bogged down and not making any real progress because of all the little details in comments/answers etc.

It's certainly not a bad thing, per se, as learning of advanced matters ahead of time can really help you along the road. This isn't even confined to computer science; I, for example, find myself in this position all the time when cooking a new dish or studying relatively advanced mathematics. Of course, if all the little details and super-technical stuff are stressing you out, by all means, take a step back and breathe, try and focus on the task at hand. You can always return to the more advanced topics later!
On the specific question of learning the standard practices and caveats of a given language, I personally recommend it. First of all, doing so can keep you from developing bad habits. Knowing the strengths and weaknesses of a given language are rather important, and can influence you later on. If you have one or two things you really hate about C, you can try another language in the future that addresses those issues. The sooner you acquaint yourself with such matters the sooner you can make a decision.

Related

the advantage of reading open source code [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I know there is no clear answer to this question. I still wonder to know whether Reading open source code can improve myself rapidly? how and why?
ps:I keep reading open source code every day for months.
Well, many of the bigger open source projects are collaborations between many people: Thus you do have a chance of finding a project written by good developers, and therefore improve your own coding style. Of course, it all depends if you actually memorise the stuff you read or not - But I guess you wouldn't really read that much code if you didn't.
In my opinion, you can learn the following from well-written projects:
Coding conventions
Solutions to common problems (Of course, this depends heavily on the "type" of the project)
How to document code properly - If multiple people work on something, and the project is well-written, it probably also has a good documentation.
Of course, all of this is opinion-based, so you need to see for yourself.
Possible answers (this is highly subjective)
Because working with someone else's code is more difficult than working with my own code. It forces me to adapt to some else's thinking ("If all I have is a hammer, every problem looks like a nail")
Because open-source code is often not written under a deadline, by people who enjoy what they are working at, and can provide high-quality real-world examples
Because open-source code tends to have less of an agenda to push vendor XYZ's proprietary pet technology
Because the world might become a slighly better place, if people wouldn't code for the CPU as their main audience, but a human reader :)

Language: How to explain someone not to use the word "command"? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
It's been a while I posted a question. Maybe this one belongs to Programmers or Meta, not sure.
Right now, I'm at university in my first year civil engineer. We have some programming courses where we learn Java in order to acquire the basic concepts of programming and train algorithmic thinking. Almost all my fellow students are unfamiliar with programming. I'm experienced and people do ask questions from time to time to me about their programming problems. While explaining their problem or while asking for solutions, they really often use the word "command". I noticed that, in most cases, they are referring to what we call statements. My problem is that the word command really sounds bad and is in my opinion wrong as well, in this context. So, my question is: how do I explain them not to use commands, but rather something like instructions, statements, expressions, declarations, operations? How to explain that you do not program commands?
Sentences I hear frequently:
Which commands do I need?
What does this command do?
Or am I the only one that thinks command is wrong? If so, please explain.
You could ask them to be more specific for sake of professionalism.
A car is not a truck or not a van - and there are also bikes and bicycles and other things you could drive...
I would ask for being more specific EVERY time until they change their behaviour. You can lead them to the specific expression, but they should make the step to say it from their own. Otherwise they don't make an effort, because they count on you to help them.

Teaching and making programming exciting to the novice [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I wanted to teach programming to a complete novice ( somebody who has a bachelor's degree in arts but never into programming).
I tried to introduce python but the response was something like, " Okay, it prints 1,2,3,.....or yes, it does fibonacci series but what is a use, I can do it easily, or my calculator does it, how is it useful". I tried to sell the grand idea with saying that, "Hey, you see the MS Office you use, it uses the same concept." but it did not work. Simply speaking, I could not create or show anything to appeal the novice into getting interested in programming. I showed the GUI I created using wxpython but was horrified to see that the code I wrote gave the novice nothing but horror.
Can anybody suggest a programming teaching approach or something related to programming or even some easy code that will make the novice believe that programming is cool, easy and fun to learn?
Well, unless you're a natural born math-head, recurring patterns of numbers aren't cool.
There's a reason why the canonical thing to start children off with is either turtle graphics, or games programming: it's at least vaguely concrete, and it is open-ended.
Other things people like to make are websites. Some kind of widget-based website framework might appeal.

If one has an aim of being a good programmer, what should one prefer, contributing to open source projects or solving codechef.com problems? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I am a college student keen to improve my Programming skills. I have two pathways to follow:
Contributing to OpenSource Projects
Solving puzzles at codechef.com
Which one should I follow?
A good programmer is one who cares about his or her ACE - Accuracy, Clarity, Effectiveness.
A good programmer cares about the Accuracy of code. The easy part is coding the "happy path" because this is always in the forefront of our minds when we design and write the code. But what about potential the exception paths that exist when presented with unexpected input and edge case behaviours of the chosen implementation provided? Care is shown by taking the time to think through all the code paths, investing time in testing, submitting the code for peer review, and having the willingness to accept other's suggestions and make changes when appropriate.
A good programmer cares about the Clarity of code. Whether the code is well structured, expressive, adheres to the Open-Closed Principle, the Single Responsibility Principle, the executing machine doesn't care one bit. But, these are all very important to the next programmer, or yourself, who has to read and understand your code at a later date in order to fix bugs, modify behaviours, or add features.
A good programmer cares about the Effectiveness of code. Does it satisfy all the constraints imposed on it? Not only performance and space constraints, but also aspects that make it acceptable to the end user, the demands on the development and testing timelines by your clients, boss, family. Professional software development is not a precise circumscribed task, like "calculate the determinant of an NxN matrix". It has many constraints and demands, and good programmers are mindful of all of these, and will do their best to manage the them, especially when there is not enough time to satisfy all constraints completely.
So! To answer your immediate question, Open Source or codechef, I'd say that being involved in an Open Source project provides much greater opportunities to practice being a good software developer. So go choose an Open Source project that you care about, and ACE it!

What is a code-kata and what is it good for? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
in the past few weeks I have heard about a phenomenon called 'code-kata'. When I get it right, it means coding an exercise again and again. What is its point? Does it improve your abillity to design better software? If yes, why does it do so?
This was the first time I've heard of this, so after a quick google, here's my gut reaction:
Code Kata is not repeating an exercise over and over again. Rather it's about constantly expanding your "comfort zone" so you can grow as a developer.
Simply working on projects that you know how to do won't help you. You need to try and tackle projects that you would most likely fail at on your first attempt.
The end goal is that if you continuously try, fail, try again, fail again, etc, sooner or later you will succeed. When you do, you've mastered some new knowledge, and become a better developer.
Enough repetition of this will obviously improve your skill.
(Sorry if it's a bit of a brain dump)
I collected a bunch of references here: http://slott-softwarearchitect.blogspot.com/2009/08/code-kata-resources.html
The most important of these is http://codekata.pragprog.com/
It's not primarily to improve your design skills, rather it is a way to improve your productivity in your chosen IDE.
Repeating a familiar task over and over again allows you to watch out for and take advantage of IDE shortcuts and features that you were previously unaware of to shave seconds from your time. It will also help you find any unnecessary steps you take out of habit so you can cut them out of your routine.
We tried a few of these at my company, our thoughts were to develop a simple game (obviously something with a bit of logic we'd not know how to do). We'd all have a go at doing it, then we'd keep improving it as much as we could until we thought we had the best way to do things, then we'd meet up again maybe a week later and compare our results. It's interesting to see how different people come up with different solutions, and everyone learns from the experience. Maybe not a proper kata, but we always try and bend these things to something we'd find useful :)