"question" What do i have to learn to be an software engineer?
#1
Posted 10 January 2023 - 01:54 PM
#3
Posted 11 January 2023 - 03:21 AM
At least in Canada, there's a distinction between Software Engineers and normal developers.
An Engineer has the ability to sign off on official documents in a court of law. This is especially important for stuff like urban planning and development (i.e. a hospital is getting a contractor to install a new software system --> they will need to audit the system extensively and ensure that it works perfectly all the time --> Engineer can sign off and approve the development.)
The only way to get this accreditation is, well, to actually go to school and get an engineering degree.
But, the way you worded the question makes it seem like you don't mean 'engineer', you mean 'developer.'
In which case:
--> Learn a popular language in your current job market
--> Learn whatever frameworks are in-demand in your current job market
--> Learn theory of computer science (algorithms design and analysis, digital systems, some level of math like early calculus and discrete math at the very least and linear algebra if it's applicable to the field of your choosing)
And land yourself a junior position.
After that, you'll figure out what you might need to learn (project management, devops, basic system administration, theory of the systems you're using, for example cloud-native architecture) and all you need to do is learn it.
#4
Posted 20 January 2023 - 10:55 PM
You need to start solving problems, but you are looking at it from the wrong perspective. I started with runescape. Its grindy as f**k and it was boring. So I found a bot, but I did not like how it worked. So I found a script that I could modify and then got it to do what I wanted. You need a lot of curiosity. Just find something that you think needs to be done, and then start looking into how to get it done. Dont try to find the best way to get it done, just how to get it even barely working. Test test test.
#5
Posted 28 January 2023 - 08:22 PM
I googled a lot and all of them talked about python and html and css and JavaScript, but i want to know from seasoned warrior, where can i start? And what are the best places to start in? And what are the best free among the free courses and such to start with? And is there an estimation to how long do i have to wait to get a stable work?
I think you need to master low level programming language like C++ and C# which will make you understand more on how systems work and such
#7
Posted 30 January 2023 - 02:52 AM
#9
Posted 31 January 2023 - 02:42 PM
C++ allows direct memory manipulation which helps you understand systems more
C# allows you to understand .net and Windows applications more
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)
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.
#10
Posted 06 February 2023 - 12:24 AM
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)
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.
Interesting point of view but you still need to manage some of the memory by hand in C++
Users browsing this thread: