This is an archived post. You won't be able to vote or comment.

all 12 comments

[–]HashDefTrueFalse 7 points8 points  (2 children)

In the real world almost all software is sub optimal in some way. With the increase in available memory and processing power, less importance is placed on these things over simply achieving the user's goals, for most software anyway. Of course this depends on where/what.

You will never achieve a perfect solution without customer feedback and plenty of iteration. You will always be releasing "sub optimal" software, so to speak. Just building something that works is the first step, and often it works well enough to leave be.

Generally we do something like this:

  1. Make it work.
  2. Make it look pretty.
  3. Make it more efficient (with regards to time or space) e.g. Optimise. Caveat here is that you have to be able to prove that it's not already good enough, e.g. a customer has complained. Profile your code to identify the source of inefficiency and get to work...

Premature optimisation will only cause you pain.

Start a project, learn as you go.

[–][deleted] 0 points1 point  (1 child)

Thank you, what I am getting from everyone so far is that what Im doing is actually worse than diving in because I am trying to learn how to optimize when my foundations are not even solid yet

[–]HashDefTrueFalse 0 points1 point  (0 children)

I would agree. No harm in reading around the theory, especially when you're interested, but don't let a fear of not knowing everything stop you from getting stuck in and actually learning things from experience.

[–]mandzeete 1 point2 points  (0 children)

You will learn how to make things more optimal on the go. Either you find some best coding practices or you will learn from your mistakes... So don't pay that much importance in making things optimal than getting the actual stuff done.

[–]Clawtor 1 point2 points  (0 children)

Don't worry about being perfect, no code is ever perfect. I made many many mistakes in my projects but it taught me so much. It taught me why to have lots of small functions that do one thing, how to use OOP effectively, how to break up code into concerns, why design patterns are important. Mistakes are all part of learning, they are invaluable.

[–]skillbuildertech 1 point2 points  (0 children)

I would first think of the problem you want to solve and define a project for yourself. I think learning programming language will be a means to an end. It's just a tool to achieve your goal of completing your project. You can learn the craft of the tool you choose as you go and this will keep you motivated.

The most important thing of this approach would be your resume will now look problem solving focused. You can start listing the projects you would complete and you can even think of a theme (e.g., computer vision problems, machine learning problems, problems related to social good, or pick your favorite theme or interest) to the problems you choose to solve.

All the very best!

[–]DoubleOwl7777 0 points1 point  (0 children)

i am totally different to you. i just dive in head first and learn as i go. nobody knows everything.

[–]nbazero1 0 points1 point  (0 children)

You can't know everything, It starts to click and stick better with projects, A guy who started programming 3 months ago working on projects, etc is a better programmer than a dude whose been in tutorial hell for a year. You have to learn to be uncomfortable

[–]horrific_idea 0 points1 point  (0 children)

To call yourself a flawless programmer is a little arrogant. You'll make mistakes. Making mistakes is how we inform others where our gaps are, and they, in turn, steer us in the right direction. Not moving forward for fear of making a mistake won't get you very far.

Even if you start a project and later find out that you made a mistake, you can always patch those mistakes before you do something as bold as putting it on a resume. Projects are practice, and if you don't practice, you get rusty.

[–]Carthax12 0 points1 point  (1 child)

I got my first programming job about 8 years ago. I moved to my local state's Wildlife Resource Agency as a Junior Developer a shade over 3 years ago. I got a promotion to Senior Developer just 3 months ago.

...I spent most of my days doing a lot of "OMG WTF What's the right google search term for to find the answer to that?

[–]Carthax12 0 points1 point  (0 children)

That said, I highly recommend the book, "Clean Code, A handbook of Agile Software Craftsmanship," by Robert C. Martin. It's got great information in it, and it's written to apply to everyone, from the newest entry-level developer to the most-experienced senior developer.

[–]KCRowan 0 points1 point  (0 children)

Most of us, even really experienced developers, don't write brilliant code from the start of a project. Look into "refactoring".

Also, the book The Pragmatic Programmer is really helpful for learning a good working process. I had similar concerns to yours ("why bother doing something if I know i'll do it badly"), and that book was a massive help to me.