I am not a very experienced developer, so naturally I don't know many fundamental things. My thinking around a lot of the necessary things is that the answer should come to me according to the need. So an oversimplified example could be, say I'm solving a Dynamic programming problem, I should not need to know the algorithm beforehand I can maybe invent it. This thinking stops me learning a lot things because I feel like then when I learn a pattern I will restrict my thought process within the knowledge I have and not think beyond it. I feel like that I am doing the dumb mistake of learning things bt heart and not understanding.
Does anyone felt the same? What your experience says about this?

  • 0
    You don’t need the algorithm, just learn the how and why. For design pattern just keep code clean following clean code standards.

    Don’t go into computer science of it
  • 2
    From my own experience I can say that 'inventing it myself' I rarely came to a conclusion as good as has already been invented. I also didn't realise I didn't know the underlying reasons for those existing patterns especially, and so I didn't know a lot of what I needed to invent things myself.

    Just my opinion - but I used to yell myself things like 'ill learn it when I need it', 'books are too boring for me to learn so they're not even an option', 'i haven't needed it until now so I don't need to learn it'. It was all just an excuse to be lazy, when I woke up and started putting in the effort my career really took off and the stuff I build became several levels better.
  • 0
    @Crost Yeah actually. I joined as junior level engineer and recently started studying up for interviews, so I'm learning system design. Thinking through the problems has helped me in work as I have started understanding the overall architecture.
  • 0
    @inawhile "most of the time it is bullshit" want to know more about it.
  • 1
    @true-dev001 it's only mostly bs because most devs / architects don't put that effort in and progress through years spent in a job and promotion from someone that doesn't know better. So unless you're lucky a lot of what a senior tells you can be complete BS. Personally I gave up after the third company where again I eventually found out the senior had no clue. That's what started me on books from robert Martin, Martin Fowler, Eric Evans, that sort of author.
  • 0
    @Crost For me, I am still not a good developer. I was lucky enough to have good developers around me for more than a year. They have great communication skills and the ability to take responsibility is great. I hope I could become like them.
    One was very much like what I want to be. His way of communication is clear and quite close to what actually goes in the mind. His arguments were good and always wanted to solve problems. I recently read his blogs and for him, system architecture is a craft. I kind of gave up long time back on finding my passion but I have started to find it now and I want to become like him. Not caring about the finance(basically getting from investments etc. and not depending on the job to achieve it) and working for your passion, which is problem solving :)
    I feel bad that I cannot be in contact of him because I never really talked to him 1:1 and feel quite shy approaching him now as he has left but man, he was great.
    I think I'll needing books in future :)
  • 1
    90% of the time, someone else has already solved whatever your current problem is - they have already hit all the snags and worked them out, and left their conclusion and working out for you to use. If you're being paid to solve a problem, you owe it to the person paying you to look for a pre-existing solution rather than invent your own. I don't know how much time and money I've seen wasted because of vanity legacy code, and I include my own.

    However, you also owe it to yourself to have a crack at devising your own solution, even if it means doing it in your spare time - so that in those 10% of cases where there isn't a precedent you can half-inch off SO, you have the problem-solving and creative skills to take it and run.

    PS Don't think of yourself as not being 'good' for lack of experience, the two are in no way correlate.
  • 2

    Hm, I'll try to give an example.

    When you fry something, eg. potatoes, you might be like me and like them crunchy and brown. Many people think that the brown color of a fried potato stems from it being "burned" and don't like it for the sole reason of having this association.

    If you like it, you more or less automatically try to achieve the effect by cooking.

    Does it help to know that the result is created by the Maillard effect?

    Not really, you just do what you like. You might look it up if you're curious, but all in all, you will just fry the potatoes to your liking.

    It's experience - you're replicating what you know to try and achieve a result that you like. It might not always end well, as e.g. you won't have the same potatoes every time.

    Quite the opposite is learning by heart...

    When you just follow blindly a recipe, you'll most likely end in burning the kitchen down.

    Not joking. Best reaction I've witnessed as a cook was a special idiot throwing a burning pan with charcoal potatoes in water.

    Not a good idea. Never ever do this.

    Blindly learning by heart means that you don't reflect on what information you're given, you just accept it and follow it en point without any kind of critical thinking.

    I doubt that you really do this... Because your last post is reflection - you seem to have gotten the "nudge" of life to find your own passion.

    Don't be shy, don't be afraid.

    There's tons of stuff to learn, and as long as you learn from a mistake, you have won something.

    (The story of the guy who created the spectacular bonfire btw is not made up. Luckily it was while camping... Inside of a building this would have been desastrous)
  • 2
    Computer Science as a whole is an insanely broken field. With a plethora of things that can go wrong when building something. You have the theoretical aspects of something in terms of computer science, and then you have the practical side of things. Mix in everything else you need to know that might be beyond your field (e.g you might now how to build a RoR app, but try and find the resources to deploy it on an internal server, everything is for the cloud and all docs point to heroku or aws bullshit) and you have many different points of failure to tackle.

    Don't be afraid, if you think you don't know something, there are many others building a career of software with little to no consideration of algorithms etc. The good thing: you know where your faults might be and you are willing to correct them. Push forward with that learning as much as you can, the rest will come with time and practice, but don't let it consume you.
  • 0
    @IntrusionCM Amazing words said. It was a great story and I like that you gave your answer a proper thought before posting :)
    I recently read somewhere that 'eff up is your only job'. Committing mistakes but putting your best efforts is what leads to good judgements in future. Other thing is to be comfortable with the vulnerability that comes with this mindset which is I am still struggling with but I think I can do it :)
  • 0
    @GeorgeBool I think I'm more leaned towards a properly researched, 'intuitive' perfect solution. I think I am compromising with deadlines and the opportunity to learn by not time boxing the investigation on each.
  • 1
    @AleCx04 Yes like someone pointed out on thread that there is a difference between the knowledge that needs to be gained with experience and then there is intelligence. Both seem similar and someone can give up thinking that they don't have intelligence when they are faced with the problem coming up with experience based knowledge.
Add Comment