[HN Gopher] Ask HN: What boosted your confidence as a new progra...
       ___________________________________________________________________
        
       Ask HN: What boosted your confidence as a new programmer?
        
       When anyone starts out in a new craft, even after grasping the
       fundamentals of the tools they are quite shaky and low on
       confidence until they have a significant experience in doing
       something that ultimately ramps up their confidence in their
       craftsmanship.  Similar things happen with novice programmers when
       they start out.  Then they read a beautiful codebase which they can
       fully understand and replicate, or build a project from scratch, or
       read a book or take a class on a subject. And their confidence is
       tremendously boosted thereafter.  What was it for you? How did you
       gain this confidence to take the first step from being a tinkerer
       to being a skilled craftman?
        
       Author : optbuild
       Score  : 77 points
       Date   : 2023-07-05 07:17 UTC (15 hours ago)
        
       | hot_gril wrote:
       | Some people like to appear self-made, but honestly college is
       | what did it for me. I did tons of side projects and worked as a
       | part-time SWE while in college. Still needed the full foundation
       | to be confident in arbitrary tasks. I could get through my work
       | without it, but it was narrow experience, and self-tutoring is
       | harder / less reliable than anyone will make it look.
        
       | [deleted]
        
       | tetha wrote:
       | Mh, I'm not new anymore, but there is one thing that's a huge
       | confidence booster.
       | 
       | Someone coming around with a pull request going "Heyjo. I needed
       | new X in your project. And, I looked at it and X and tests for X
       | just slotted right in there. Can you take a quick look if that's
       | right?"
       | 
       | I consider these easily and obviously extensible workhorse code
       | bases my best work, even if after a certain point, I may have
       | built like 10% of the thing and shouldn't consider it my thing
       | anymore.
        
       | JohnFen wrote:
       | As a new programmer? Nothing. Fear of inadequacy was a constant
       | companion.
       | 
       | Over the years, though, as I saw more and more code written by
       | programmers I respect and from companies I respect, I noticed
       | that mine was no worse than theirs -- and I realized that my
       | skills were, at the minimum, just fine. Warts and all.
       | 
       | (Edited to swap "mine" and "theirs" to be what I meant to say)
        
         | jfjfjfjjfjfjfj wrote:
         | [flagged]
        
       | brailsafe wrote:
       | As a novice programmer, getting my runescape guild mining bot to
       | keep working longer than a day was the first step, and possibly
       | still my greatest achievement.
        
       | jrumbut wrote:
       | I think working on a lot of small changes across different areas
       | of a project and starting to feel momentum.
        
       | LarsDu88 wrote:
       | git grep
        
       | saboot wrote:
       | I just worked through making a 2D physics engine via Gustavo
       | Pezzi's course on pikuma.com
       | 
       | Seeing shapes collide, bounce, roll, and understand exactly what
       | was happening in the code I wrote was a huge confidence booster.
        
       | lucasyvas wrote:
       | Time. There was no silver bullet and it just took time building
       | lots of different things at different levels of the stack.
        
       | tootie wrote:
       | Finding that everyone else was fumbling around and googling
       | answers just as much as I was. Also, the first time I saw a big
       | production code base for what I thought was high-level project
       | and seeing how messy it was. Instead of feeling like I was
       | actually good enough, I felt like nobody was actually that much
       | better than me.
        
       | GoodJokes wrote:
       | [dead]
        
       | andyjohnson0 wrote:
       | Leaving my first job /s
       | 
       | and
       | 
       | Demo a wireframe in a gui builder to a visiting suit without him
       | realising that it wasn't a fully-developed application.
        
       | hospitalJail wrote:
       | My first full stack app. Didn't need to be complex, but it
       | worked.
        
       | aldousd666 wrote:
       | I was officially employed as a help-desk tech while I was going
       | to school for CS. I wrote some internal-only software we used to
       | track all of the installed software on all the hosts in our
       | network and catalog them to a database. This was in 2000, so
       | there weren't very many software packages that you could run like
       | that would crawl the entire org and catalog the software
       | installed without installing an agent on people's systems. This
       | worked that way, and my VP came and asked me to help a team
       | package it up so we could sell it as another product from my
       | company. Looking back, what I wrote was crap, but boy was that a
       | boost in the breeches, if you know what I mean.
        
       | VirusNewbie wrote:
       | I dialed in crazy on one single component of a large Open Source
       | project, and at some point......I was the expert. I didn't
       | understand everything in the project, and I didn't know near as
       | much as most people, but for one tiny component, I couldn't find
       | someone to answer my questions on and I became the one people
       | went to for questions.
       | 
       | It kind of puts into perspective how software works.
        
       | User23 wrote:
       | A good mentor.
        
       | mattbgates wrote:
       | It was over 12 years ago now... but before then, I'd only taken
       | up programming as a hobby. I was addicted to gaming and computers
       | during my high school years, either playing a game or coding
       | something.
       | 
       | Went away to college for something completely different,
       | psychology, but when I got home and started applying for jobs,
       | nobody would hire someone with a bachelors in science only.. so I
       | decided to pull out an old trick of mine: I would apply to the
       | programming companies too. Got an interview. Got the job. Even
       | though my math skills were horrendous.
       | 
       | The confidence in my programming skills came a few months after
       | they hired me. Til then, I'd been working on building various
       | little programs that had no real purpose. A ping pong came, a
       | slot machine, etc. My tyrant boss had me go through training to
       | use various functions in Visual Basic 6. Some of the most
       | valuable ones were using arrays and collections, which had helped
       | me understand databases later on when I was learning PHP.
       | 
       | I was developing software for an autobody shop. I really couldn't
       | wait to work "in the main program" but once it was established
       | that I was ready, that's when the confidence started taking off.
       | 
       | About 6 months later, his customer base went from a few hundred
       | to a few thousand. My job was to focus on the UI, making it more
       | user-friendly and easier to use and fix existing bugs in the
       | program. I loved and hated that time of my life because it led me
       | to meet a wonderful woman, yet I was going through hell everyday
       | for that tyrant. Fortunately, I took what he taught me and used
       | it to further establish my career elsewhere.
        
       | hu3 wrote:
       | What boosted my confidence as a new programmer?
       | 
       | 1) Ignorance. Knowing just enough to be dangerous was great
       | against analysis-paralysis.
       | 
       | 2) Positive feedback from clients. Clients didn't care about my
       | spaghetti code. All they saw was a solution to their problem.
       | That was very rewarding and made me confident. Well, at least
       | until a senior dev took a look at my code and rightfully
       | destroyed my confidence with not-so-polite suggestions.
        
       | Izkata wrote:
       | I can't speak for myself (it's been too long and I'm self-taught
       | so I was already fairly confident at my first job), but a former
       | co-worker did have an interesting insight at one point:
       | 
       | They came straight from a bootcamp and for months felt like they
       | weren't getting better, were constantly asking questions about
       | stuff. It only finally clicked and they gained confidence when we
       | got a second out-of-bootcamp developer and the first person was
       | the one that was constantly answering _their_ questions. They
       | hadn 't realized how much they were learning because their only
       | comparison had been those of us who had been there a lot longer.
        
       | yodsanklai wrote:
       | I have the opposite experience. I always thought I was a good
       | programmer (self taught when I was a kid, then studied in a
       | reputable place where I ranked among the best students). Then I
       | confronted myself with the real world where I feel I'm not
       | special, and that coding is only a small part of what we do.
       | Apart from school or programming contests, we rarely get
       | evaluated purely on our coding abilities, and there's always so
       | much we don't know.
       | 
       | That being said, there are things that boosted my confidence,
       | such as getting offers from FAANG. But it was temporary. Software
       | engineering still seems like a tedious and hard activity. And
       | it's getting worse now that everything is distributed.
        
       | [deleted]
        
       | ftxbro wrote:
       | The best hackers I saw learned some turing complete system when
       | they were children without having been taught the concept of
       | programming. I guess for them "take the first step from being a
       | tinkerer to being a skilled craftman" was when they learned that
       | there is a whole field of study for bending those turing complete
       | systems to your will. Then they spend like one day or week binge
       | reading a programming book and understand all of it, because they
       | solved much weirder and harder systems for fun.
        
       | mindfulmark wrote:
       | Realizing that external dependencies are regular codebases just
       | like the one you're working on. That you can open them up in
       | VSCode, look around and figure out any bugs or issues you're
       | having and even open pull requests to improve them.
       | 
       | At that point, you lose the feeling that there are magic things
       | out there that you will never understand and that for the most
       | part everything is just regular old code that regular people
       | wrote.
        
         | activitypea wrote:
         | Whenever I have this situation, it's always with a library too
         | big for my smooth little brain to comprehend.
        
           | d4mi3n wrote:
           | The trick is to dig deeper into those big library's
           | dependencies as well. It's turtles all the way down.
           | 
           | The other thing I find is that big libraries are either
           | mostly dependency bloat (as implied above) or dealing with a
           | hard domain problem. If it's the latter, what you're really
           | struggling with is not the library, but the domain it's
           | trying to represent.
        
         | brvsft wrote:
         | Funny thing was I never even thought to do this until I was
         | working on a very strange bug, and a senior engineer at my
         | company suggested I look at the source code for one of our
         | dependencies. Sometimes really obvious and basic advice can be
         | a big step for people.
        
         | cj wrote:
         | Relatedly, understand the frameworks that you build upon.
         | 
         | For React devs, this means learning how React actually works
         | under the hood.
        
         | whstl wrote:
         | This is indeed a superpower.
         | 
         | I don't really remember when I felt that external dependencies
         | were magic, but thinking about this, it explains a lot of the
         | behavior I see on some developers who are very negative about
         | the more challenging parts of the job.
         | 
         | Some of them don't really believe the research stuff we do at
         | work are even possible. They're constantly surprised when other
         | devs finish those tasks. Some don't believe that other devs can
         | code in C++ or Rust, or write parsers, database modules,
         | implement IQueryable in C#, or develop novel algorithms for
         | novel applications.
         | 
         | To them, if a package exists it must just work, and that
         | package comes from another breed of developer that can't
         | coexist with them. I see a similar thinking with AI: now with
         | ChatGPT and GPT-4, there's a hubbub about there being "no
         | reason for our AI team to exist anymore".
         | 
         | I'm not a big fan of working with those developers.
        
           | JohnFen wrote:
           | > I'm not a big fan of working with those developers
           | 
           | I agree. And it ties into something I often see that puts me
           | on edge: programmers not taking responsibility for the code
           | they put into their projects.
           | 
           | What I mean is that when you incorporate any code, from any
           | source (library, framework, copypaste, etc), then you are
           | responsible for that code and its proper behavior as much as
           | for the code you actually wrote. So you're well-advised to
           | understand it.
           | 
           | That's one of the reasons why I won't include code that I
           | don't have the source code to. I need to understand it and be
           | able to fix it.
        
             | whstl wrote:
             | Good point.
             | 
             | The "out of sight, out of mind" approach doesn't really
             | work for code you're actually responsible for.
        
         | wing-_-nuts wrote:
         | Adding to this, the decompiler built in to many ides really
         | up'd my game understanding underlying libs. How they work, what
         | methods to call, etc. Very helpful! As much as people trash
         | java this is a really nice feature. I'm sure other languages
         | have decompilers as well, but I've never seen anything close
         | for c# for example.
        
           | Tainnor wrote:
           | In the case of Java at least, what helps is that the IDE can
           | decompile the code or, which is often even more helpful,
           | download the source code and allow you to step through it
           | while debugging, at least if a source JAR was published
           | (which is pretty often the case).
           | 
           | In the case of non-compiled languages, of course you don't
           | even need this step since all your libs exist in source form
           | already, so it was pretty simple for me to step through Ruby
           | library code with a simple debugger and no fancy IDE.
           | 
           | I have a habit of sometimes debugging even horribly abstract
           | framework (e.g. Spring) code when I don't understand what
           | it's doing. That's maybe not the most efficient method, but
           | it does usually make me understand why thing X is not working
           | the way I expected it to work.
        
           | DeathArrow wrote:
           | >I've never seen anything close for c# for example
           | 
           | If you highlight a method you call from external code and hit
           | CTRL + F12, Visual Studio will automatically decompile it for
           | you.
        
           | whiskey14 wrote:
           | In python pdb 'breakpoint()' is great
        
           | rjbwork wrote:
           | >I'm sure other languages have decompilers as well, but I've
           | never seen anything close for c# for example.
           | 
           | Dotpeek is integrated into Rider and is a world class
           | decompiler. It also integrates into Visual Studio either
           | standalone, or with ReSharper.
           | 
           | You can also integrate external source symbol servers into
           | your IDE of choice as well that will let you debug into
           | libraries seamlessly.
        
       | emodendroket wrote:
       | I was a self-taught guy largely working by myself. I went to some
       | big Microsoft education conference and met other people and
       | realized most of them weren't smarter than me or doing something
       | much more complicated.
        
         | olzhasar wrote:
         | I have a similar story except the confidence came when I landed
         | my first on-site job. Once I got in the team, the same
         | realization came to me - I am not any worse than these guys
         | here.
        
       | omgmajk wrote:
       | When I wrote my first code that entered production and saw that
       | it worked and produced value for my company, that's when I gained
       | my first real confidence in my craft. And this still holds true,
       | every time I put code into production that works flawlessly and
       | is properly tested it gives me a boost.
        
       | kuon wrote:
       | Shipping to end user. Even if it's a script to rename photos from
       | exif.
       | 
       | There is no glorious or inglorious software. As long as it
       | benefits users it's good.
       | 
       | Good quality code will come naturally as you will be faced to
       | complicated problems.
       | 
       | Also, do not be scared to write things from scratch.
        
       | austin-cheney wrote:
       | My first programming language is JavaScript back when it only
       | lived in the browser. The compile target of the browser is, and
       | always has been, the DOM. The DOM is a tree model. When I learned
       | to appreciate that in my first year of programming everything
       | became simple. Even before JavaScript became fast you could do
       | most things with relatively high performance easily cross browser
       | once you achieved that solid foundation. No frameworks, no
       | unnecessary abstraction libraries for vanity, no bullshit.
        
         | noob_eng wrote:
         | Where did you learn to see it like that?
        
           | austin-cheney wrote:
           | I am self taught. I was involuntarily reassigned from a
           | design to a developer position and just had to learn to
           | program.
        
       | comprev wrote:
       | When experienced developers/colleagues started to use tools I
       | created as part of their workflows. Occasionally they'd submit
       | PRs demonstrating more efficient solutions, which helped me
       | enormously, but overall the tools remained untouched.
       | 
       | It was also a great reminder that "good enough" is just that.
        
       | nailer wrote:
       | Realise it doesn't work the first time for most people. Even
       | really good people.
       | 
       | Also for me (very specific to people starting in late 90s)
       | realising I wasn't the only person that thought forced 'object
       | oriented' programming was bullshit. 25 years later this style has
       | gone out of trend, and a lot of people realise that Alan Kay
       | meant something more like the actor model than Java.
        
       | runjake wrote:
       | Creating actual things. Just reading books or watching videos or
       | reviewing course content isn't going to do that for you.
       | 
       | Start on real projects as soon as humanly possible, even if
       | they're junk to begin with.
        
         | retox wrote:
         | As a cartoon dog once said; being bad at something is just the
         | first step towards being pretty good at it
        
       | jlund-molfese wrote:
       | Working on teams with great functional test coverage, so it's
       | difficult to accidentally break something big. The mindset that
       | if someone makes a mistake and introduces a bug, it's not their
       | fault, it's the tooling/process's fault has stuck with me
       | throughout my career.
        
       | jstanley wrote:
       | I'd been programming as a hobby for years, but I got my first
       | internship at 20 years old and asked one of my first managers a
       | pretty basic question about what I was working on, and instead of
       | telling me what he wanted me to do he said "whatever you prefer,
       | I trust your judgment". That one sentence didn't cost him a lot
       | to say and I'm sure he didn't even remember it the next day, but
       | it meant an awful lot to me.
        
       | lll-o-lll wrote:
       | When you start, you suck. There's no magical "moment of insight"
       | that suddenly takes you from basically worthless to "vital for
       | the success of the company". It's just practice.
       | 
       | For me, I just worked ridiculous hours to compensate for the
       | suckage, read books, listened to podcasts (when that became a
       | thing), programmed at home, read through the code, looked at the
       | code history (code archeology). Eventually you get _good_ and you
       | know you're good because you can compare your output to those
       | around you.
       | 
       | The secret to surviving the early stage is to recognise that a
       | career is a marathon, not a sprint, and gain joy from the small
       | incremental improvements you make. Everyone above should have
       | worked with plenty of juniors and are just looking for people who
       | are getting better.
        
       | OldManRyan wrote:
       | When you find out let me know. Almost 10 years in and I don't
       | know what I'm doing most the time.
        
       | syntheweave wrote:
       | There were two major milestones for me.
       | 
       | One was taking my first college CS course. Just being forced to
       | work in depth with indirection and write algorithms set me up to
       | make all sorts of things, even though I did not go on to get the
       | degree.
       | 
       | The other was to realize, after a few years, that code isn't an
       | edifice - that is, you don't progress through it linearly to a
       | solution, as tends to be the case in school assignments. To solve
       | a production-grade kind of problem, you start by making an
       | incorrect solution that you understand well - the proverbial
       | "start with a hello world". And then you iterate over that to
       | generalize and make it produce more correct answers. The bugs
       | reflect a lack of understanding of the system, and architecture
       | strategies tend to result from knowing that nobody can understand
       | the entire system, thus you design in some constraints and
       | safeguards to enable more complex ideas to build on smaller ones
       | without that understanding.
       | 
       | This process also meant learning to reject "blogpost-driven
       | development", which was a common genre back in the 2000's of
       | people doing some career-making by making a blog about some cute
       | idea they had about best practices. Naive me, I tried testing out
       | every one of them, and eventually, through painstaking reduction,
       | learned that mostly, you have to invent the best practices
       | according to the problem domain. If you can get a direct answer
       | by not writing code, that's a really, really good idea, hence I
       | try to usher more of my work onto paper or into a spreadsheet
       | now.
        
       | serial_dev wrote:
       | After my first internship as an AngularJS developer, I joined a
       | small team that built some pretty cool stuff. Very interesting
       | stack, lots of programming languages, different databases,
       | queues, etc.
       | 
       | I joined as the "person who will teach them how to use AngularJS
       | and rewrite the Ember app with it". This went pretty well as we
       | (mainly myself) rewrote the app pretty quickly after months of
       | them struggling with Ember (I didn't use Ember, so I don't know
       | if Ember was so confusing or they were just lazy to learn it
       | will).
       | 
       | After that, I started looking into the backend and I was able to
       | contribute to the company's success. When I had to use Cassandra,
       | Kafka, Symfony, Ruby, Puppet, etc, I'd watch hours and hours of
       | videos, read documentations until I knew it "well enough".
       | 
       | After some time, I noticed that quite often I knew the subject
       | better than my colleagues and I could come up with solutions and
       | implement then on my own.
       | 
       | This helped me realize that these technologies can be learned and
       | it's only a matter of determination, dedication and patience.
        
       | kentf wrote:
       | Not knowing how to do it and reading and failing until I figured
       | it out. Repeat for 15 years to become a skilled crafts person.
        
       | tezzer wrote:
       | I was working with a decoder for the LD-CELP voice compression
       | algorithm. The machine it was running on was compute-bound and
       | the playback stuttered a lot. I dug into the code, then went to
       | the papers describing the algorithm, then went back into the code
       | and modified a piece of it to be better tuned to the data I was
       | processing. In the average case I probably made the code worse,
       | but in my specific case I sped up the thing by 30x. That gave me
       | confidence in a few things:
       | 
       | 1) I can figure out issues in other people's implementations.
       | 
       | 2) The best solution may not be the best solution for you, and my
       | hunches on optimization might be correct
       | 
       | 3) It's fun to look like a wizard to your peers
        
       | aaronbrethorst wrote:
       | Building a real product that people were willing to pay money
       | for.
        
       | codr7 wrote:
       | For me it was more like the opposite, over time my confidence
       | turned into wisdom, empathy and experience; I feel like
       | confidence is was more of a prerequisite.
        
       | wavemode wrote:
       | Everyone you consider "great" at something had mentors who helped
       | them get there. One of the biggest differences between me now,
       | and me when I was new to software engineering, is that now I ask
       | a lot more questions.
       | 
       | When I was new, I was insecure about seeming like I didn't know
       | certain things and wanted to "prove myself", so to speak, so I
       | would keep my head down and try to figure things out for myself.
       | 
       | Over time I've realized that leaning on others with more
       | expertise than you is how you learn and grow, and asking
       | questions and collaborating with others does not reflect poorly
       | on you as an engineer (quite the opposite in fact).
       | 
       | These realizations are what have boosted my confidence - I know
       | that if I'm ever working on something that I don't know how to
       | do, I can go talk to someone who does know and learn something
       | new. If you don't work somewhere where this is possible (i.e.
       | you're always the "smartest guy in the room", as they say) then
       | your growth as an engineer is going to be limited.
        
       | rdtsc wrote:
       | Someone offering to buy my program. I was 13 or 14 years old and
       | wrote a program in ZXSpectrum BASIC to mange a schedule of
       | upcoming movies for a local broadcasting outfit.
        
       | tboyd47 wrote:
       | Learning the syntax of my language really well.
        
         | munk-a wrote:
         | Eh, I've worked in PHP for more than a decade professionally
         | and I still need to double check the argument order for
         | array_walk. The syntax of how we express ideas abstractly is
         | probably a better thing to focus on than any specific details
         | tied to the language.
        
           | [deleted]
        
       | LesZedCB wrote:
       | since confidence is orthogonal to capability: positive
       | encouragement and uplifting comments from my seniors did the most
       | for my confidence.
       | 
       | if the capability is the question, well i don't have any answers.
       | 10 years in and the imposter syndrome is still strong.
        
       | hkon wrote:
       | Just by reading and reviewing other peoples code and seeing it
       | was pretty similar to my own, or how I would have done it.
        
       | stopthe wrote:
       | Deploying my pet project on a Linux virtual server.
       | 
       | At that time I worked with some enterprise software on Windows,
       | and any particular setup was so fragile, that it caused anxiety
       | to touch anything and learned helplessness preventing
       | experimentation. It didn't help that built-in diagnostic tools on
       | Windows in the XP era were virtually non-existent.
       | 
       | Linux VMs in contrast were (and are) disposable, have all their
       | guts exposed, and CLI is your only way of doing things. You're
       | welcome to experiment, and basically forced to automate.
        
       | agumonkey wrote:
       | A petty one: seeing people interview and bomb on simple
       | questions.
        
       | jconley wrote:
       | The biggest confidence boost as a new programmer was the first
       | time I wrote some software on my own, other people used it, it
       | worked, and they liked it. This happened within about a year of
       | starting out. I suggest everyone try to build products and give
       | them to people. Nothing more validating to me than building stuff
       | people want.
        
       | ChrisMarshallNY wrote:
       | About nine years ago, Lee Hutchinson (Ars Technica) wrote an
       | article[0] that has since become Canon, and is appropriated by
       | everyone and their uncle.
       | 
       | In it, he describes "The Dunning-Kruger Peak," followed almost
       | immediately by "The Jon Snow Trough." After these extremes, our
       | confidence and self-appraisal starts to linearize.
       | 
       | I cannot say enough about being on teams with experienced
       | engineers, and writing stuff that actually _ships_ (as opposed to
       | disappearing into an  "Out" box, and we never see what happens to
       | it).
       | 
       | WFM. YMMV.
       | 
       | [0] https://arstechnica.com/gadgets/2014/10/smartphone-camera-
       | vs...
        
       | [deleted]
        
       | TheCapn wrote:
       | For personal development, it was merely shipping things. The more
       | I published, the better I felt about myself. The more I
       | published, the more I had learned and had to refer to. Now when
       | I'm taking on tasks I can instantly recall how each of the pieces
       | of the problem can be stitched together from things I did
       | previously (or at least know where to look for foundations to
       | build from)
       | 
       | For the confidence? It was working with others. The first job I
       | had I got to sit down with one of the company's programmers as
       | part of my on boarding and watch him work through tickets. After
       | I saw just how flawed everyone was I felt a lot better about
       | myself. I suppose that's a weird thing to say: Oh he was pretty
       | shit, so I shouldn't feel bad about my poor performance...but
       | that's not the point I want to make really. More that, it is
       | wrong to compare your efforts to learn and grow against the final
       | product of others. Once you sit down with the experienced devs
       | and see how they shape and form the product and all the bumps
       | along the way it doesn't feel so bad to struggle on your own.
       | 
       | Ultimately the skills that I honed that gave me the best boost in
       | confidence were not really the direct _programming_ parts where I
       | put letters and numbers in files. It is the debugging.
       | Understanding how things move and where to look for problems
       | makes me feel like I can solve any problem with the right tools.
        
       | [deleted]
        
       | 100011_100001 wrote:
       | My perspective is different than what has been posted, so here it
       | goes.
       | 
       | I knew I could outwork everyone and brute force being a better
       | programmer by a function of continuous improvement through hours
       | of work. (btw I was wrong, there is always someone out there that
       | will outwork you...and they will be smarter than you, but hey it
       | made sense to me).
       | 
       | I didn't realize I made it until
       | 
       | a) People would recognize me in meetings because of my code
       | 
       | b) New programmers started to ask me for advice
       | 
       | ...now I'm in the Sr Devs, Tech Leads, and Lead Architects ask me
       | for advice level. Honestly, I still have the same attitude, if I
       | work effectively, I can keep getting better. Notice that I remove
       | the "work harder" part.
        
       | delta_p_delta_x wrote:
       | I am still a novice programmer, if you call a recent graduate
       | that.
       | 
       | I feel stupid all the time. I don't know anything about almost
       | everything, and the little I do know about, I'm sure it's less
       | than what I think it is.
       | 
       | I don't know how a GAN works. I haven't the faintest clue about
       | machine learning. Someone asked me 'hey, you have a CS degree,
       | tell me how ChatGPT works.' I couldn't answer that.
       | 
       | I never took databases in university either. I am mediocre at
       | algorithms--it takes me 45 minutes to an hour to solve a
       | supposedly 'easy' problem on LeetCode.
       | 
       | I still use Windows and Visual Studio, because that's what I grew
       | up on. I don't know how to use Vim besides hjkl and :wq!.
       | 
       | I don't know HTML and CSS. I've looked at the more popular blog
       | posts in the recent Ask HN thread. Everyone discusses things I've
       | never even thought about. They have custom blog engines they
       | wrote from scratch, that actually work.
       | 
       | I know a tiny bit about computer graphics, but I have hardly
       | written any shaders. I also know an equally inconsequential
       | amount about parallel computing, and even so, I dislike any
       | problem that cannot be easily and embarrassingly parallelised
       | because I don't fully get synchronisation and acquire-release
       | semantics.
       | 
       | I don't know if anything can boost my confidence at all. I have a
       | tendency to ingratiate myself with people a lot smarter than me,
       | and as a result the large majority of my friends from university
       | are now working at HFTs earning five digits a month.
       | 
       | While I certainly have learnt much from all of them, they just
       | makes me feel even more stupid--through no fault of their own,
       | mark my words.
       | 
       | Not sure if this will ever go away, but I believe the feeling of
       | stupidity will only ever increase as I realise just how much I
       | don't know.
        
         | jmfldn wrote:
         | Honestly, what you're describing would be common to almost any
         | software engineer I know at least. The entire world of computer
         | science, programming and software is VAST. You're only going to
         | know about a tiny bit of it. A physicist doesn't know all of
         | physics in depth, a doctor only has a surface level
         | understanding of most things, and deeper knowledge of a few.
         | Our field is the same. You're going to get to know your little
         | niche, and bits and pieces of others.
         | 
         | As for tooling, if Windows and Visual Studio work then great.
         | Vim is just a tool.
        
       | ravenstine wrote:
       | A programmer's confidence can come from a few different
       | directions.
       | 
       | The chief one, I think, comes from simply having achieved enough
       | challenging problems to the point where one knows that, even if
       | their solution isn't perfect, they can figure out basically
       | anything. The overwhelming majority of programmers can get to
       | this point eventually.
       | 
       | Confidence also comes from the eventual realization that, with
       | few exceptions, the majority of programmers you think are
       | "better" than you are really aren't objectively better. They may
       | have a fancier title, a bunch of GitHub stars, have given
       | presentations, or maybe they've written a book, but this doesn't
       | mean they are a better programmer than you. It might be hard to
       | understand as a novice, because virtually every novice is going
       | to feel inferior for lack of experience. After having gained
       | sufficient experience, to the point where there's seemingly no
       | problem one can't solve, it may become obvious that these
       | programmers one once viewed as elites actually just broadcast
       | their craft in a way that gives them higher authority; I stopped
       | viewing most programmers as being better or worse than each other
       | because I've witnessed enough problems caused by the clever
       | solutions of senior and staff developers. It's just much easier
       | to blame a junior engineer's solution when it doesn't work out.
       | This isn't to say that more seasoned programmers aren't worth
       | their salt, but there's almost never something they have that you
       | can't have, and every programmer out there writes bugs all the
       | time!
       | 
       | And finally, seeing the tech hype come and go over a long enough
       | period of time can eventually bring one to the point where they
       | look back on methodologies, frameworks, and design patterns they
       | were once introduced to and come up with the original thought of
       | "You know, I think that X was kinda bullshit to begin with." I
       | think it's really unlikely that a programmer can have a 20+ year
       | career (or even a 10+ one for that matter) and not come to some
       | conclusions like that. Though it's easy for a novice to get
       | caught up in the churn thinking they've got to learn all the
       | things and feel inferior for not knowing it all, experience may
       | someday teach the programmer that most of the churn was hype and
       | that their own ideas on how to program effectively probably would
       | have worked just fine.
       | 
       | I would say that I gained my confidence by just trying enough
       | times and gaining experience.
        
       | web3-is-a-scam wrote:
       | Deploying changes that I've worked on and seeing things working
       | in production. Terrifying at first, eventually it becomes a non-
       | event - which boosts confidence.
        
       | OkayPhysicist wrote:
       | Funnily enough, getting bugged by some random people about a bug
       | in one of my projects. I'd built projects before, mostly for the
       | fun of making them, and occasionally for my own use. The first
       | time someone reached out to me on Discord going "Hey, love your
       | tool, but this feature hangs my machine" was a wake-up call that
       | I had actually succeeded in making something useful.
        
       | kidgorgeous wrote:
       | [flagged]
        
       | swader999 wrote:
       | Not a junior programmer for a couple of decades but of course I
       | still venture into new areas and feel junior! Have to say that
       | Chat GPT gives me a lot of confidence. I can ask it questions,
       | bounce ideas off of it and get it to validate my thinking, design
       | and code before shareing with anyone else. Confidence and overall
       | anxiety has really improved in the last few months.
        
       | foobiekr wrote:
       | Under confidence is extremely rare in new and inexperienced
       | coders.
       | 
       | For me, what really boosted my confidence long term was getting
       | yelled at by people who actually knew what they were doing
       | because I sure didn't. But that ended up being more of a bathtub
       | curve of confidence.
        
         | munk-a wrote:
         | You can always tell a true senior developer by the
         | overabundance of imposter syndrome they carry around with them.
         | Green programmers can see their successes - experienced
         | programmers can see their flaws... the best programmers I've
         | ever met can intuit which parts of a green programmer's system
         | probably have bugs by just listening to them talk about it and
         | focus in on the parts they don't go into detail about.
        
       | poppingtonic wrote:
       | Reading textbooks.
       | 
       | Using a REPL-based language like Lisp (which I learned from
       | reading advanced Lisp textbooks) for several years before I
       | worked professionally as a programmer enabled me to dive into
       | complex, underexplored parts of the (Python, C) projects at my
       | first job, which meant I basically owned some very important
       | parts of the stack.
       | 
       | Reading and applying ideas from Unix sysadmin books enabled me to
       | be comfortable jumping around the OS very quickly, giving me a
       | speed advantage even when the computer I used was pretty
       | underpowered, relative to my colleagues, early in my first job.
        
       | abc_lisper wrote:
       | I can tell you what limited my confidence as a programmer. It was
       | correctness, or knowing how to deal with stuff so I don't have to
       | check every line of code once I implemented something new that
       | uses the old stuff in a novel way. For some people, it was
       | apparent right away, but I had to discover that once you design
       | something that works in all cases, you don't have to check wether
       | it works as a part of newer code flow, or bigger use case. Only
       | then my confidence started to compound.
       | 
       | In the late 90s to early 2010s it was fashionable to think of
       | code as a graph of dependencies, and as long as you honor those
       | dependencies when changing the code you would be ok. This is
       | simplifying but pernicious POV IMO - reinforced by the zeitgeist
       | that code is truth and comments (in code or otherwise) may not
       | be. This is a cul-de-sac.
       | 
       | Unless developers see things as nouns or verbs, they don't
       | acquire the ability to scale and see the bigger picture, because
       | there is nothing to hold these smaller entities and connections
       | between them (O(entities^2)). The concepts are the bags. Wish
       | someone would explicitly teach us these things, because, sure as
       | hell they didn't teach it in college.
       | 
       | May be people who have a liberal arts background are good at
       | seeing these things, because one of the things they explicitly
       | study is perspective, framing etc. Engineering is quite limited
       | because we don't explicitly study about that.
        
       | zwieback wrote:
       | For me the moment was a year or so into my first programming job,
       | this was in the 90s. We were debugging some device driver issues
       | and found that we'd made bad assumptions about the order in which
       | things happened between our interrupt handlers, device driver
       | thread and application threads. Once I took the time really
       | mapping out what all can happen in an asynchronous environment
       | and then setting up long-running stress test with multiple
       | clients it clicked in place that you really have to continuously
       | test your mental model against what could happen in the real
       | world.
        
       | giantbanana wrote:
       | [dead]
        
       | sileom_jv wrote:
       | [dead]
        
       | codeptualize wrote:
       | Build, build, build, and build some more, then build, oh and you
       | should build more.
       | 
       | It's taking on a challenge big or small and seeing it through no
       | matter what it takes. You'll get stuck for hours, days, sometimes
       | weeks, you'll get frustrated, tired, annoyed, but you just refuse
       | to give up and eventually get it done.
       | 
       | Those are the moments that bolster your confidence and you
       | realize you are capable of achieving seemingly impossible things.
       | 
       | That confidence of "sure I can figure it out" is what you need to
       | feed and grow as a programmer and probably in many other
       | professions.
       | 
       | Best way imo is to pick reasonable small contained projects, and
       | slowly ramp up and take on bigger challenges. If you take on too
       | much, shelve it, do something smaller, then return to it later.
       | 
       | It takes a lot of time, effort and perseverance, but as long as
       | you keep going you'll get there in the end.
        
       | PaulRobinson wrote:
       | Shipping and getting to see customers using and enjoying what did
       | not exist before I typed it into being.
       | 
       | A simple CRUD app is magic to the average user, if it does
       | something they haven't seen done in software before - and that
       | could be as simple as some calcs in a custom domain.
       | 
       | The first customer who tells you "this is great", if it's
       | anything like my experience, changes everything.
       | 
       | It also helped that some of my early forays were to clean up code
       | by a guy ten years my senior which was rammed with bugs - fixing
       | those one by one was satisfying and helped me earn trust with my
       | team and in myself.
        
         | whartung wrote:
         | The brutal truth of it is that while there is beauty in the
         | craft, in the end shipping is what matters. Getting things in
         | front of the people that need them.
         | 
         | There's a nice concept in theater that says, effectively, "if
         | you blow a line, don't broadcast it to the audience." The
         | subtext of that is, simply, the audience doesn't know any
         | better and what they don't know, won't hurt them.
         | 
         | By and large, this applies to many fields, and certainly to
         | software development. The users, in the large, do not care over
         | a huge amount of stuff that we, as practitioners, care about.
         | 
         | We're in a results business. The users care that they get the
         | report they want or can update the data they're supposed to.
         | How that's done, in the back end, is filed under "blah blah
         | blah".
         | 
         | The reason this is important is not as an excuse to do crummy
         | work, or to not be passionate about the minutiae that consumes
         | us, but to be cognizant that as long as the end result is
         | functional and capable for the user, it's OK for the processes
         | that get to that point to be a bit messy. Don't beat yourself
         | up over a lot of the things we beat ourselves up, or criticize
         | others over.
         | 
         | Ship. Get your code in front of users, interact with them to
         | make their experience better. We are in a service industry.
         | Strive to be better, but you only get better by shipping, and
         | moving on.
         | 
         | The confidence is that, for the most part, "it's just software"
         | and you can fix it. You can change it later. You can correct
         | mistakes.
         | 
         | Another saying is that you're not a professional until you've
         | lost production data. Thankfully in our work, loss of
         | production data rarely kills people, in contrast to the path of
         | becoming, say, a doctor. If you are in an industry where people
         | can be hurt, then that's going to be more rigid, for obvious
         | reasons.
         | 
         | I have lost data, I have been SCREAMED at by clients, I have
         | stood under the withering "What has just happened here" glare
         | from management. It happens. Ah, the warm camaraderie of being
         | thrown into a data entry pool to help rekey some of the 6
         | months of data you destroyed. A cold truth in our business is
         | that it has to happen, as we only learn through practice, and
         | through practice, sometimes we miss.
         | 
         | But to do that, we have to ship. We have to get the work out
         | there, "I don't test often, but when I do, it's in production".
         | Sometimes you just got to open the firewall up, let the traffic
         | in, and see what happens.
         | 
         | A cynical view is the that the more we ship, the more we learn
         | what we can get away with. There's a truth to that as well.
         | We're all victims of not listening to "you're not going to need
         | it". For all sorts of values of "it". But that doesn't mean we
         | can't keep those concepts close, practice them as best as we
         | can (because, truth is, sometimes you do need it!).
         | 
         | Through the work, and shipping, you learn the balance, and get
         | more comfortable with it.
        
       | pprotas wrote:
       | The confidence really came when I deployed my first few medium-
       | to-large features to production. Positive user feedback, few
       | errors in production and good measured performance made me proud
       | of my work, that's when I realized that I'm going to be just
       | fine!
        
       | samhuk wrote:
       | When I was finishing my internship at around 19 years old, on the
       | last day a few colleagues did the whole card signing business.
       | 
       | A close colleague - a team lead of a different team who I had
       | worked with a lot, went to a couple dev conventions and meetups
       | with, and agreed with on a many facets of software dev and life
       | in general, signed the card as so:
       | 
       | > It starts with a dream. Don't stop.
       | 
       | Many many years later, I still think about it often. Sometimes,
       | all it takes is a little faith.
        
         | intelVISA wrote:
         | Really nice sentiment, make sure you pay it forward; we need
         | more dreamers in CS
        
       | siquick wrote:
       | The day I stopped worrying about not knowing everything, and that
       | if you break a seemingly impossible task down into small enough
       | parts it soon becomes clear on what is actually required.
        
       | amai wrote:
       | Another programmer showed me what he was working on. He tried to
       | implement a driver for some badly documented virtual hardware,
       | but couldn't figure out, why the set of bytes he used didn't
       | work. I knew about big and little endian and suggested to simply
       | turn the order of the bytes around. It worked immediately and I
       | had solved a problem that had him puzzled for some days. This
       | gave me confidence that despite my little coding experience at
       | that time I could still make a positive impact.
        
       | darkclouds wrote:
       | Ask HN: What boosted your confidence as a new programmer?
       | 
       | Naivety!
       | 
       | Ignorance!
       | 
       | Hubris!
       | 
       | And all of that has given me NIHilism!
        
       | em-bee wrote:
       | for me it was (and still is, especially when i learn something
       | new) successfully solving problems. for a novice that means
       | breaking tasks down so that they can be solved in small steps,
       | each step giving the feeling of success and motivating you to go
       | on. it is frustrating to spend a week hunting a problem without
       | making any progress. for a novice that can be crushing their
       | confidence, especially if they get the impression that it their
       | fault that it takes so long.
       | 
       | books or classes didn't do anything for me until i was able to
       | actually apply the new things learned. (for me learning is
       | problem oriented, i take a problem and learn how to solve it)
       | 
       | also as a novice i found building a project from scratch
       | daunting, because there is so much stuff to do before you can get
       | to have some actual functionality. i prefer either to start with
       | something very small but with some usable functionality that
       | doesn't take long to build, and then add features until it is
       | completed, or take something already working, and build upon
       | that.
       | 
       | when i learned lisp i took the example project that was in the
       | book towards the end and built it into the tool i wanted.
       | 
       | though i think test driven development can help here too. as each
       | passing test is a success. so write a test, pass it, continue,
       | until you have something working.
        
       | Zambyte wrote:
       | When I fully understood that impressive code that I was reading
       | online was written by a real person, and that as a fellow real
       | person, I should be able to learn to understand and write similar
       | code. I experienced this when I was doing DailyProgrammer
       | challenges from Reddit in highschool. I was doing most of my
       | programming in Java at the time, but much of the Java solutions
       | that I saw were using Java 8 features that looked alien to me.
       | Realizing that it was not alien, and would just take time to
       | learn, was a massive confidence boost for me for some reason.
        
       | munk-a wrote:
       | I started in the dirtiest ugliest codebase imaginable. I worked
       | on a MUD descended from DikuMUD (and originally written by native
       | danish speakers). Seeing code that ugly that _worked_ and making
       | it better, faster and more readable gave me the confidence that I
       | can make a significant impact. Moving into the professional world
       | I found that corners are constantly cut and I can always clean up
       | shoddy implementations and make them cleaner. I 've gone on to be
       | a developer, data architect, lead and manager and it's always
       | great to find new experiences.
        
       | dieselgate wrote:
       | For me it was reviewing code and seeing a ton of diffs - to help
       | realize the incremental change nature of coding and seeing small
       | pieces of code in relative isolation
        
       | andrewstuart wrote:
       | There's no "right way" when you're a learner.
       | 
       | You'll gain confidence when you realize you can just hack away
       | until it works and that is OK.
        
       | specproc wrote:
       | I'm a self-taught one-man show, and just in the process of
       | onboarding a new, more experienced colleague.
       | 
       | In some ways it's terrifying, as I know a lot of my work is
       | trash.
       | 
       | On the other, recapping everything I've achieved myself, with no
       | CS degree and nothing but Google to guide me has made me feel
       | oddly proud.
       | 
       | From doing the recruitment and chatting to my new colleague, I've
       | really gotten an understanding of how small a role most devs in
       | "serious" set ups have. I've learned a really broad range of
       | skills because I've had to.
       | 
       | There's always going to be more things to learn, but looking back
       | every once in a while can put things in perspective a bit.
        
       ___________________________________________________________________
       (page generated 2023-07-05 23:01 UTC)