DEV Community

loading...

How should a total beginner to the field of CS and Programming get started?

Yash Dave
I develop awesome WebApps based on React.js, Gatsby and Pure HTML+CSS+JS. Also, an upcoming Data Scientist currently pursuing Python Proficiency.
・2 min read

Hey DEV community! I have recently come across a situation that has put a great sense of responsibility on me. I come from a family where even the cousins like to stay in touch and meet regularly and I have turned out to be the eldest in my generation of cousins. πŸ˜²πŸŽ‰

Now the time has finally come where I have a younger cousin who has finally reached the age of selecting what career she wants to pursue in the future. The awesome part is that she is interested in looking into the field of computers as a future. The catch is that I am the first person in this giant household/family to have ever pursued the field of Computers as a study choice and I still am pursuing my masters. πŸ‘¨β€πŸŽ“

A baby trying to read hard

Her family would like me to help her out on checking out the field and decide whether she wants to fully commit or not! How do I do that?

She has never had any computer subject as a study course in her school and high-school tenure, so one can assume she is a total newbie to the field.

  • Should I introduce her to the concepts of computer science like logical thinking, algorithms, basic data structures initially?
    OR
  • Should I go for a basic programming language like C/Python?
  • Should I find and introduce her to some of those no-code drag and drop tools which I have seen in news articles help children of much younger age than her learn too? (Do recommend if you have used any and loved it!)
    OR
  • Should I introduce here to a get started with XYZ Language?

I would love to hear from people more experienced in the field, both computer science, and the elder brother ones πŸ˜†, on what they think should be a sound option. Thank you for your time and help!

Discussion (10)

Collapse
maniflames profile image
Maniflames • Edited

Try to figure out what she would like to build and start from there!
It's a lot more interesting to learn about some concepts if you feel like they're relevant to your problem.

That approach could also help with selection of language, frameworks, tutorials, etc. If it turns out she wants to make iphone apps she might want to look into swift, if she wants to build robots (circuit)python would be a great start.

Collapse
amorpheuz profile image
Yash Dave Author • Edited

Whoa! Somehow this never came up in my mind. Great point, that would greatly help in deciding how she wants to get introduced.

Thank you for the input!

Collapse
ahferroin7 profile image
Austin S. Hemmelgarn

First things first, figure out why she wants to become a programmer, and make sure her expectations are consistent with reality. It's unfortunately a rather common case that people who want to be programmers and have no experience have very low expectations for how difficult it is to actually be a programmer (this is common in any field, but especially in engineering disciplines, and even more so for programming).

Once you've gotten past that, use that information to figure out where to start. Some particular examples:

  • If she wants to do web development, point her at HTML/CSS and then at vanilla JS, and only after that at stuff like TS and application frameworks. This kind of staged learning approach helps a lot with understanding how everything actually fits together in a modern web app.
  • If she wants to do game development, point her at C# and Unity or C++ and Unreal Engine, they're the two most widely used pairs of language and game engine in the world and have both good documentation and good communities surrounding them. Make sure she understands in this case that game development is seriously difficult to the point of being one of the hardest types of software development for most people.
  • If she's interested more in the back-end stuff that provides the basis for modern network services, Go and Elixir/Erlang are great starting points, they're widely used and very good for this type of thing, as well as being solid starting points for learning to code.
  • If it's stuff like AI and machine learning, Python is a solid starting point, and C/C++ are a great way to expand on this through things like OpenCV. Eventually, all three provide a solid transition point into things like TensorFlow and CAFFE.

The important thing is to figure out not just what interests her, but also how she wants to apply that interest. Few people want to program for no reason at all, and even if her interest is just in the fact that it's a high-demand career that pays well, that still gives you something to work with.

Beyond that, encourage her to actually code. The old aphorism 'practice makes perfect' applies just as much to coding as to anything else, and it really is the best way for many people to learn to program.

Collapse
amorpheuz profile image
Yash Dave Author

Point noted! Definitely will ensure she is up for the challenge.

Will also discuss the 'Why?' behind the interest too and that she is up for the grind.

Thank you!

Collapse
codefinity profile image
Manav Misra

Is she interested in web at all? If so, JS is a great first-language if it's taught more as a programming language rather than as a 'tool' for the browser.
And, no need to install any special compilers, etc.

Collapse
amorpheuz profile image
Yash Dave Author

Yup, base Javascript is very easy to get running. Will ensure to make her approach it as a language rather than an augment to a website.

Thank you for the suggestion!

Collapse
uminer profile image
Moshe Uminer

There are some suggestions here already, but I'll add my two-cents, since the following point hasn't been addressed.

Generally, in any specialized field, there exists the field itself, and the "raison d'Γͺtre" (the reason for the field's existence).

As an example, let's take advanced mathematics. Arguably, the field of mathematics exists because it is useful for every field in engineering (for example) and they are important for their usefulness in building (whatever that field is for). However, in the mind of the mathematician, dealing with mathematical theorems is an activity for itself, not relegated to being immediately practical.

The same is true of technology and of software. Technology exists to serve a purpose - originally, computation, though now it serves many others, like business, gaming and communication purposes - but to one who is studying the field, advancing in the field is a exciting and a purpose for itself, regardless of whether the technology really solved an unsolved business problem.

Technically, Computer Science is theory, and Software Engineering is practice, mirroring the distinction between the field and the purpose made above (and they of course both benefit from each other).

However, especially for someone new to the field, it is exciting to build something that works (like when learning a programming language) - but then, it is easy feel like the effort was worthless, since "no one will use a command-line app", or "who needs another todo app". On the other hand, a beginner may not be up to the task of building or contributing to a "real" useful project.

For this reason, I think it is important to have a curriculum, even a loose one. And to not judge ones progress before a set time. This way, one can judge oneself after getting used to the initial jolt and the continuos learning of computer programming. And since there is a curriculum, judgement can be made based on how well one acclimated to the curriculum, how hard or exciting it was then, etc.

So, I would recommend (for programming):

  • freecodecamp.org (the first course there is html/css, and styling can be hard to get right, which may not the best for a beginner to deal with, perhaps starting with the javascript section would be better?)

  • alternatively, try to go through a book that teaches programming (when I started out, I liked this python book, but unlike freecodecamp, it's not free. However, that website has many tutorials for all levels, as well as learning paths).

  • trying to go through the projects here may also be a good idea.

  • for those who like music, perhaps sonic pi music programming would be a good idea.

(As for computer science concepts, I personally feel that it's better to begin with those after one feels more comfortable with code).

Collapse
amorpheuz profile image
Yash Dave Author
  • Very true, following a curriculum with set goals will surely help gauge the progress.

  • Freecodecamp is a resource I have personally used and love too, will recommend if she wants to follow the web route.

  • Will definitely go through the App Ideas repo with her gauging if there is anything she likes and it is a good beginner challenge.

Thank you for your input!

Collapse
jwp profile image
John Peters

Start them in Javascript/Typescript, CSS or SCSS/Less, and possibly React or Angular. You can forego Angular and React for pure HTML5 Web development.

The nice thing about Angular, is you can create a fully runnable project by typing in "ng new projectname" then followed by "ng serve" takes literally 2 seconds to do. Have a built in server, uses typescript, which can handle pure javascript...

They'll enjoy doing the web stuff. After a while teach them C# and ASP.NET core for back end.

Just an idea....

Collapse
amorpheuz profile image
Yash Dave Author • Edited

Hmm, an interesting route truly! Web Development is something I definitely feel is enjoyable to learn and something that can truly intrigue by allowing one to see results immediately. JavaScript will help also help her experience basic programming fundamentals like variables, conditions, loops and OOP concepts.

Thank you for your input!