HACKER Q&A
📣 hx781

How do I become a competent engineer?


How do I become a better engineer? I ask this looking back on my four years as an undergrad…and realizing that I sucked at pretty much every single lab class I had. I’ve done okay on homeworks and tests where I could read a textbook and see how a certain kind of problem was to be solved; and yes, sometimes I could take a new novel problem, sort of break it down, and then solve it with the tools/concepts I had learned. But the fact remains that in any lab class or homework, I am completely lost at what to do. Nearly every group member (though some won’t admit it) does the majority of the work at the end of the day, though I wish I could do more. When they ask me for help on how to debug something, I almost never can figure out a strategy of how to even identify the problem, much less figure it out. When they ask me for help to design something, I end up constructing either something that misses the requirements/specifications completely, or I end up with an overcomplicated mess which does poorly. I just feel intensely frustrated because I cannot seem to “figure out” what I am doing wrong – it feels like everyone around me has some sort of natural inclination, some sort of innate reasoning, which enables them to solve problems.

I don’t mean to suggest that I think they’re geniuses – I know I watch them struggle for hours to fix things at times – but I feel that if I were in their shoes, I would never be even able to do that much. I’ve tried asking them for advice, but almost all of them just try to make me “feel better”, or claim that they do not know what they are really doing as well – that I am “reading too much” into their actions, as it were. I agree that this is perhaps true for some, but there’s no way that they can be so successful without there being some sort of strategy, though they are perhaps unaware of it. So I want to ask you, how does one actually solve problems, in a systematic and clear fashion? How does one solve novel problems without the luxury of being able to read a textbook and learn how to solve them? I legitimately feel so lost and confused, and frustrated with engineering as a discipline – part of me just wants to give up and quit engineering altogether. Should I just accept that it is not my calling, that if I don’t think naturally in a certain way, it is not meant for me?


  👤 ilrwbwrkhv Accepted Answer ✓
You become a competent engineer by making sure that you understand cause and effects.

If you are currently not able to identify the cause for a small effect, start with something really small.

Maybe something like hello world.

What happens when that program runs? Who reads the file? Who compiles it? How does the processor run it? How does the output come back and get printed to the screen? These are the chain of thoughts that you need to go through.

Great programmers are built through only one path that is trial and error.

By trying new things and seeing what happens. After you have been burnt enough number of times because you followed something which other people said was good, maybe clean code or maybe React JS for example, only after that will you become a great developer.


👤 paktek123
The main thing here is practice makes perfect. Try doing a bunch of leetcode problems and see how you fare. Most of us flop it first time then keep practicing.

Although I feel like you seem to have a low opinion of yourself, try asking others on what they think how you did in your course and your result will speak for itself.

Becoming a good engineer is a career long achievement I wouldn't expect you to achieve this milestone until you've completed a few professional years.

Also what do you enjoy? Is engineering something you legitly enjoy?


👤 raxxorraxor
For me it was working with other engineers, especially those outside my domain as well. You have to get a bit lucky for such opportunities sadly and the scope will still be limited. You cannot know everything, not even about the topics you specialize in.

If you haven't any unofficial tutors, start some projects. Exchange about a topic on the net can help too. Still remember that you cannot know everything and everyone had to learn how to solve certain problems. You get better with more experience.


👤 DamonHD
I had someone working for me once who was hard working, pleasant, willing, but just not apparently able to do the sort of logic that programming needs. We spent many many hours working together on trying to change this, but to no avail. He's subsequently done well for himself on the management side I think.

It is just possible that your brain isn't wired for this kind of work, and to my mind there is no shame in that.

You're clearly a decent communicator, so maybe work on that.