If you like DNray Forum, you can support it by - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 and more...

 

Insights on Junior Programmers' Skills and Future Language Choices

Started by aaricevans, Sep 06, 2023, 12:21 AM

Previous topic - Next topic

aaricevansTopic starter

Greetings, everyone! I'm 29 years old and have made the decision to begin learning programming. In the past, I had an interest in computer-related topics, but unfortunately, I foolishly abandoned it and went down the wrong path. Now, I want to assess the opportunities and give it a try. Consequently, I have a number of questions divided into sections for easier navigation.

B1: JOB MARKET AND PROSPECTS.

B1.1. Which programming specialty is the most accessible and welcoming to beginners? What are the prospects for growth in these fields?

B1.2. Which specialties can be learned at an accelerated pace before entering the junior level?

B1.3. At a basic level, what knowledge and skills should a junior programmer possess? How extensive should their studies be?

B1.4. What are the chances of obtaining a junior position in the field of C++? Considering the language's complexity, should I consider pursuing this area given my age?

B2: FUNDAMENTALS OF PROGRAMMING.

There is often advice to begin with the fundamentals of computer science, yet the lists of topics can vary. Some include only a few disciplines, leaving uncertainty about whether they are sufficient, while others contain numerous topics, making it unclear if there is too much to study. This leads me to the following questions:

B2.1. Could you provide the most comprehensive list of truly essential computer science topics and disciplines? Additionally, I would appreciate recommendations for the best sources (courses/books) to gain knowledge in these areas. Ideally, it would be beneficial to have all the information in one place.

B2.2. Do the Introduction to Computer Science courses offered by MIT and Harvard cover the necessary theoretical background? Is it worthwhile to complete these courses?

B2.3. Besides the basics of computer science, what other theoretical knowledge should a programmer possess? For instance, should I study topics such as "introduction to programming" and "software development," or are they already covered in computer science?

B2.4. Could you provide a comprehensive list of essential mathematical disciplines for a programmer? Additionally, which courses/books would you recommend to study these subjects?

B3: PROGRAMMING LANGUAGES.

As far as I understand, after grasping the fundamentals, it will be necessary to focus on learning programming languages directly. Consequently, I have a few questions related to this area:

B3.1. How many programming languages should a junior programmer be proficient in?

B3.2. Which language is the best starting point? I'm looking for a language that is versatile (used in various fields and specialties), easy to learn, and offers promising future prospects. Additionally, what other languages should be considered for future learning?

B3.3. Can you suggest well-developed courses/books for learning the recommended programming languages? They can be in English and I am willing to pay for them.

B3.4. How much do different versions of the same programming language differ from each other? Furthermore, how long does it typically take to learn a new version of a language?

B3.5. What are your thoughts on Treehouse courses?

B3.6. Should I begin learning C++? I've heard that it is quite complex, which suggests that it may require a significant amount of time to become proficient in.

Thank you in advance to everyone who provides assistance! Additionally, if anyone has any personal recommendations or insights related to these questions, please feel free to share them.
  •  


soconsult01

B1.1. For beginners, some of the most accessible and welcoming programming specialties include Python, JavaScript, and Java. These languages have extensive documentation, a large community of developers, and are used in various industries. The prospects for growth in these fields are promising, as they are widely used and have a strong demand in the job market.

B1.2. Python and JavaScript are great examples of programming languages that can be learned at an accelerated pace before entering the junior level. Both have simple syntax and offer a wide range of libraries and frameworks that can help you build applications quickly.

B1.3. At a basic level, a junior programmer should have a solid understanding of programming concepts like variables, loops, conditionals, and functions. They should also be familiar with common data structures and algorithms. Ideally, their studies should cover the fundamentals of at least one programming language, version control (such as Git), and basic problem-solving skills.

B1.4. While C++ has a reputation for being complex, it is still possible to obtain a junior position in the field. However, it may require more time and effort to become proficient compared to some other languages. Assess your interest and passion for C++, and consider the job opportunities available in your desired location before making a decision.

B2.1. A comprehensive list of essential computer science topics may include algorithms, data structures, computer architecture, operating systems, databases, networking, and software engineering principles. Some recommended sources for learning these topics include online platforms like Coursera, edX, and Khan Academy, as well as textbooks like "Introduction to Algorithms" by Cormen et al., "Database System Concepts" by Silberschatz et al., and "Operating System Concepts" by Silberschatz et al.

B2.2. The Introduction to Computer Science courses offered by MIT and Harvard are highly regarded and cover many of the necessary theoretical foundations. Completing these courses can be worthwhile in gaining a solid understanding of the basics.

B2.3. In addition to computer science fundamentals, it is beneficial to study topics like software development methodologies, software testing, and user experience design. While some aspects of programming are covered in computer science, dedicated courses or resources on "introduction to programming" and "software development" can provide practical guidance and best practices.

B2.4. Essential mathematical disciplines for programming include discrete mathematics, linear algebra, and probability theory. Some recommended courses/books include "Discrete Mathematics and Its Applications" by Rosen, "Linear Algebra and Its Applications" by Lay et al., and "Introduction to Probability" by Blitzstein and Hwang.

B3.1. It is not necessary to be proficient in multiple programming languages as a junior programmer. It's more important to have a strong understanding of the fundamentals and one or two languages that can be applied effectively in different scenarios.

B3.2. Python is often recommended as a versatile and easy-to-learn language with promising prospects. It is widely used in web development, data analysis, machine learning, and scripting. Other languages worth considering for future learning include JavaScript, Java, and C#, depending on your interests and career goals.

B3.3. Some highly regarded courses/books for learning Python include "Python Crash Course" by Eric Matthes, "Automate the Boring Stuff with Python" by Al Sweigart, and online platforms like Codecademy and Python.org's official documentation. Similarly, for learning JavaScript, resources like "Eloquent JavaScript" by Marijn Haverbeke and MDN Web Docs can be valuable.

B3.4. Different versions of the same programming language may introduce new features, syntax changes, or improvements, but the core concepts remain largely the same. Depending on your existing knowledge, it may take a few weeks to a couple of months to become familiar with a new version of a language.

B3.5. Treehouse is a respected online learning platform that offers courses on various programming languages and related topics. It can be a valuable resource for beginners, providing a structured path to learn programming skills.

B3.6. Learning C++ can be a challenging yet rewarding endeavor. It is a powerful language used in areas like game development, embedded systems, and high-performance computing. If you have a keen interest in those fields and are willing to dedicate the time and effort required, it can be a worthwhile choice. However, consider your long-term goals, the demand for C++ developers in your desired job market, and the availability of resources for learning the language effectively.

additional insights and recommendations related to your questions:

B1.1. In addition to Python, JavaScript, and Java, another programming specialty that is accessible and welcoming to beginners is web development using HTML, CSS, and JavaScript. This field offers a lot of opportunities for growth, as websites and web applications are in high demand.

B1.2. React and Angular are popular JavaScript frameworks used for building web applications. Learning these frameworks can help accelerate your entry into the junior level, as they simplify the process of building interactive user interfaces.

B1.3. In addition to technical knowledge, a junior programmer should possess good problem-solving skills, the ability to work in a team, and effective communication skills. These soft skills are equally important in the workplace.

B1.4. The chances of obtaining a junior position in the field of C++ can vary depending on the job market and location. While it may require more effort to become proficient, if you have a genuine interest in C++ and you find opportunities that align with your career goals, it can be worth pursuing.

B2.1. Some additional computer science topics worth considering are artificial intelligence, machine learning, data science, and cybersecurity. These areas are experiencing significant growth and have promising prospects. Good sources for these topics include online platforms like Udacity, Coursera, and edX, as well as specialized textbooks and research papers.

B2.2. The Introduction to Computer Science courses offered by MIT and Harvard are comprehensive and cover the necessary theoretical background. They provide a solid foundation, but it's also important to supplement your learning with additional resources and practical projects.

B2.3. Topics like software development and introduction to programming are covered to some extent in computer science, but studying them separately can provide a more practical understanding and teach you industry best practices.

B2.4. In addition to discrete mathematics, linear algebra, and probability theory, studying statistics can be beneficial for data analysis and machine learning. Some recommended resources for statistics include "Introduction to Statistical Learning" by Gareth James et al. and "The Elements of Statistical Learning" by Trevor Hastie et al.

B3.3. Learning additional languages like SQL (for database management), Bash scripting (for automation), and MATLAB (for numerical computing) can broaden your skill set and make you more versatile as a programmer.

B3.5. Treehouse courses are known for their interactive and project-based approach to learning. If this style of learning suits your preferences, they can be a valuable resource to enhance your programming skills.

B3.6. If your primary goal is to become job-ready in the shortest possible time, C++ might not be the best choice due to its complexity. However, if you have a specific interest in C++ development or fields where it is heavily used, such as game development or embedded systems, then investing time in learning C++ can be beneficial.
  •  

jacoblin

Your current objective is to secure employment as quickly as possible. While you can endlessly dedicate yourself to studying programming, you will never be fully prepared for real-world coding. Genuine growth can only occur through actual projects and collaboration with experienced colleagues. This leads to the conclusion that any popular language will suffice. However, there are certain nuances to consider. For instance, I strongly advise against choosing Python due to potential difficulties in finding a job. Instead, I recommend PHP. Those who criticize it simply lack knowledge about the language, like the aforementioned junior developer. His subjective judgments tend to discourage others without offering anything objective. Modern PHP is actually a fast and robust language that supports full object-oriented programming (unlike older versions), and it continues to improve with each iteration. PHP is used to develop both simple websites and complex enterprise projects, offering numerous job opportunities. The second option is Java, which excels in mobile development and enterprise projects. However, proficiency in Java alone is insufficient, as you must also grasp related frameworks or enterprise editions. This may make it more challenging for beginners to find suitable positions.

Ultimately, our main objective is to start working professionally as soon as possible. If you have confidence in your abilities, perseverance, and patience, your efforts will be rewarded. To summarize, PHP and Java are two reliable choices, but it's important to remember that whichever path you take, the language itself will require less preparation time. In conclusion, I urge you to stop worrying about making the right choice and cease searching online for guidance. Instead, start programming right now and utilize your time effectively.
  •  

AllenSays

Programming is a form of cognitive thought. Are you capable of thinking? - this will determine if you can guess. This is the fundamental principle. Prepare yourself for the fact that you will need to engage in extensive thinking. There are numerous connections within programming. It is necessary to cultivate the ability to envision the final outcome and your role in achieving it. Without this skill, you will struggle to perform effectively.

I will share a secret that is rarely discussed, but if you have a passion for programming, you will grasp its significance (not every secret can be comprehended right away) - error management. Users always expect programs to alert them when they make mistakes. As a result, a significant portion of programming time is dedicated to error handling. In my opinion, approximately 90 percent of a programmer's work revolves around error management. Network programming is no exception to this rule.

Just like any other field, no one will provide all the answers or clean up after you. Learn to solve problems independently and maintain a technical diary (I highly recommend it). Include screenshots and detailed descriptions: problem, screenshot, solution - screenshot with accompanying text, additional screenshots (include a high-quality screenshot). Periodically review your entries.

Set a goal for yourself - to learn something new every day that will astonish you. If I am surprised, I make sure to document it! That makes the day worthwhile. If I am surprised multiple times, even better - I document each instance. Over the course of a year, this practice will lead to a solid foundation of knowledge.

Enhance your tools, but avoid becoming fixated on them; instead, continue acquiring new skills. Perhaps, one day, you will develop your own set of tools.

Personally, I find programming appealing because it allows me to interact with individuals from various professions.
  •  


If you like DNray forum, you can support it by - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 and more...