Do me a favour, write an abstract class in C++, then make an actual class that inherits from it. Whatever is in that class doesn't matter, so long as there is one property and one method. And of course, use that method somehow (e.g. print the data with std::cout)
Thanks for the help, i really appreciate it very much
Now, after compiling it, throw it into x64dbg, and try to make ANY sense of it.
(Easy mode: use whatever additional tooling you want, but that would prove that it's not understandable at low-level.)
(Hard mode: compile without symbols, like an actual release-version of any software.)
As for C#, yeah you learn the .NET framework, which is, well, a runtime. It's inherently high-level since it's a compatibility layer between the OS and your code. That's like saying Java is low-level.
inb4: "I can call a native DLL with C#!" Yeah, Java can do that too through JNI. The native DLL isn't written in C# or Java though since the bytecode is completely different.
Learning winternals is learning Win32. Not learning .NET
Low-level access does not mean low-level language. You need to already have a good grasp of low-level fundamentals before you use low-level access in a language, and low-level access is still mostly optional in both those languages.
"question" What do i have to learn to be an software engineer?
#11
Posted 20 October 2023 - 12:07 AM
#12
Posted 11 November 2023 - 10:07 PM
To become a software engineer with a focus on
and , you should acquire a combination of technical skills, knowledge, and practical experience. Here's a roadmap to guide your learning:Programming Languages:
Learn a programming language commonly used in software development. Python, Java, JavaScript, or Go are popular choices. Proficiency in scripting languages (like Python) is particularly beneficial for automation tasks.
Version Control:
Master version control systems, especially Git. Understand branching, merging, and pull requests, as version control is fundamental to collaborative software development.
Operating Systems:
Gain a solid understanding of operating systems (Linux, Unix, and Windows). Learn how to navigate the command line, perform basic system administration tasks, and troubleshoot issues.
Networking:
Acquire knowledge of networking principles, including TCP/IP, DNS, HTTP/HTTPS, and load balancing. Understand how networks operate to troubleshoot and optimize application performance.
Cloud Platforms:
Familiarize yourself with cloud platforms such as AWS, Azure, or Google Cloud. Learn how to deploy, manage, and scale applications in the cloud. Understand key cloud services and concepts.
Infrastructure as Code (IaC):
Learn IaC tools like Terraform or AWS CloudFormation to automate the provisioning and management of infrastructure. Understand the benefits of treating infrastructure as code.
Containerization and Orchestration:
Master containerization technologies like Docker and container orchestration tools like Kubernetes. Understand how containers streamline deployment and enhance scalability.
Continuous Integration and Continuous Deployment (CI/CD):
Implement CI/CD pipelines using tools like Jenkins, GitLab CI, or Travis CI. Learn how to automate testing, build, and deployment processes.
Monitoring and Logging:
Gain expertise in monitoring tools (e.g., Prometheus, Grafana) and logging solutions (e.g., ELK stack - Elasticsearch, Logstash, Kibana). Understand how to analyze logs and metrics to troubleshoot and optimize.
Security Practices:
Understand security best practices and integrate security into the DevOps pipeline. Learn about container security, network security, and secure coding practices.
Site Reliability Engineering (SRE):
Familiarize yourself with SRE principles, which focus on reliability, scalability, and performance. Understand concepts like Service Level Objectives (SLOs), Service Level Indicators (SLIs), and error budgets.
Automation and Scripting:
Develop strong scripting skills for automating repetitive tasks. Use tools like Ansible or Puppet for configuration management.
Collaboration and Communication:
Enhance your communication and collaboration skills. DevOps emphasizes teamwork and communication between development and operations teams.
Soft Skills:
Develop soft skills such as problem-solving, adaptability, and a continuous learning mindset. These are crucial in dynamic and fast-paced DevOps environments.
Certifications:
Consider obtaining relevant certifications, such as AWS Certified DevOps Engineer, Kubernetes Certified Administrator, or others, to validate your skills.
Remember that hands-on experience is crucial in the world of DevOps and SRE. Practice what you learn by working on real-world projects, participating in open source contributions, and experimenting with different tools and technologies. Stay updated with industry trends and be proactive in adapting to new technologies and methodologies.
#13
Posted 20 November 2023 - 12:01 AM
Users browsing this thread: