20+ years of IT experience, 15 of them in Development. Worked across the globe (US, NZ, AU, Malaysia) . There are still a lot (never ending) things to learn
I think the difference between a good programmer and a bad one, is that the good one is willing to admit that they're crushingly insecure about their work, the one with the ego is also crushingly insecure, they just hide it with bluster 🤣
Always love your content. I'm 8 years into my career and have always struggled with this very topic. I recently moved from a position as a senior engineer into a new position at a consultancy company very large one at that well at least in terms of the team sizes I'm used to. The best trick I've learnt is to remain humble and understand that I will never be good at every part of my job. There's just too much out there. I don't let job titles, age or experience get in the way of learning from my co workers. With that mindset I think I'll be alright.
What a great thing to have this mindset when entering a consulting role! I definitely did NOT, and it was a rough adjustment. The people you work with will be blessed by your outlook!
A lot of programmers I've met, online and in real life, tend to project superiority over the human race. You don't hear sensible talk like this enough. Thanks for sharing.
Damn, puts things into a different perspective, lifted up my mood and self worth a little bit. I guess I'm really comparing myself way too much to other team members that are better than me. Thanks man, keep up the good stuff.
As someone pushing 25 years in the business, my observation is that what makes a good programmer is extremely subjective. In some environments a script kiddie who can band aid a fast solution looks like a genius. In other environments it takes the training and experience equivalent of a PhD in Java to even be considered. Also every 5 years a particular skillset starts to decline in usefulness (with every language and platform having very long tails after becoming less popular). Cloud Native and Client Server might be a huge joke 10 years from now in a Quantum Computing world. Things change. Skills change. What is valuable in one era fades in the next. Code is much less important than the decisions and philosophies that led to its creation. Influence the decision making process and you become the best coder in the room by default. Win.
Awesome video! I wish you had made this 10-15 years ago -- it took a while for me to come to the realization (and then believe it) that someone else who I was impressed with did NOT know everything I did AND what they were great at. Pretty humbling when you see all these people who are better than you (in some aspect) and think they are as good or better than you are in ALL aspects.
I joined a team of three senior developers. They taught me quite a bit and I taught each a few tricks too. We all have good traits that make us good as a team. Your video is awesome and bang on.
I am not a good developer and used to go through phases of thinking I got it, then realising I really didn't get it. The current job really put me in my place, they have a guy there (although he is leaving) that just blows me away every time. He seems to have all the answers to all the questions all the time, even when put on the spot in meetings. In planning and refinement sessions it's astonishing, he seems to be thinking of hundreds of factors with tasks that would never cross my mind. Almost every time he finds several things I've missed on PRs and I graciously heed his advice and try to incorporate the knowledge behind it on the occasions that it's not due to lack of diligence. He seems to complete double or triple the amount of story points I do per sprint. All of that and he has about the same number of years experience as I do (about 9, he's been in the job maybe 24 months and I have coming up on 12). It's amazing and I learn a lot from him, but also feel he's just on an entirely different level cognitively that I can't imagine ever being able to match. It's intimidating and when I'm having a bad day I worry deeply that the questions from PO/squad lead/devops and the answers coming from me that need correcting will result in the people that make decisions comparing and as a result viewing me as an inept or bumbling clown and wanting to fire me. In the awe I can't help but think he could basically walk into an office of Google or Microsoft or any other household name tech company and get a job like it's nothing, but to me he might as well know everything. But knowing that it surely can't be true, a terrifying thought surfaces of what if he's not even a good developer, he's just an average developer? If I can't even imagine being close to him that would surely mean I'm a BAD developer! If, in all of his knowledge, he still only knows 10% of what there is to know, then that means I likely only know 1% or less! And that's rather sobering! Regardless I think he deserves to go very far because it almost seems like I don't deserve to have encountered someone with such a vast difference in capability, like he shouldn't be working in this same company as I am that doesn't give a competitive salary, but if I can somehow fake it this far then with his real skills he ought to have a very bright future ahead. I guess that's why he's leaving though! I do worry for what it means after he's out, likely they will be too short on developers to fire me right away, but if they find a comparable replacement to him then perhaps they'd consider it seriously...
10% of what there is to know in development is a staggering amount of information. no one on earth is reaching that level, be sure of that. think about it like this: not even the guys actually developing .net for example don't know 10% out of .net ALONE (not the whole development realm). they only know properly the modules they are working on and stuff related. so if you haven't already, you will realize in the future how much less than 1% you actually know, and you have to accept it. BUT! don't quantify so much the stuff you know VS how resourceful you are in finding out what you need to know to do the job. this skill is much more important, but much harder to quantify in a technical interview that's why in interviews you are assessed on stuff you know because that is much easier to measure. so your self worth should not be reflected based on interview evaluations or by comparing yourself to others. in comparison to others you should only look after stuff they have/know that you would also like to have and shoot in that direction
I had this problem for many years and one thing that helped me a lot was Cognitive behavioral therapy. Especially Feeling Great book. If you find your self thinking I'm not good enough, I could do it faster better, other ppl better - this book will help.
Are you stressing yourself out by comparing yourself to other programmers? I hope this video shows you see how unrealistic that is, and helps reduce your anxiety a little bit. ►► Know your options! Access my FREE data hub for the top 25 software industry roles, TechRolepedia → jaymeedwards.com/access-techrolepedia/
It was really around the 10 year mark where I started to actually feel like I could call myself “a good programmer”, and that was built upon 10 years of making decisions good and poor and, more importantly, reflecting on those decisions. The most distinct step up in ability during that first 10 years came not from any programming tricks themselves, but actually from starting that habit of reflection on both the work I needed to do and upon the decisions I was making, not just outlining tasks but actually trying to explain them back to myself. And of course as you note, you can’t know everything, or as I tend to state it, “the human brain is finite and lazy” with the implication that the world is effectively infinite and ceaseless in its goings-on.
What's exciting about our industry is that it's always evolving. I was once a senior ActionScript developer creating games and apps for top companies. I had to start over, but I still write cleaner and more concise code than almost anyone I know. The biggest hurtles in my knowledge haven't been about coding. It's been about systems and tooling especially cloud development. Just dig in and attack anything you feel insecure about. AND Make the most of what you DO know.
Great video Jamie. The human aspect is greatly disregard, in general, by the IT content creators. This is very relatable, specially among those who count years of xp by the tens. I had interesting experiences as a manager, being part of the hiring process, once I got zero applicants to pass the early stages of the selection process, so I required the paper bin from HHRR... they didn't like the idea, but I ended up getting two great coders for the company. I implemented my own tests, taken from problems we actually had in the company before. The test was at a desk in a real office, with the chance to ask others if there were doubts, like a real job. Time limit: 5pm, take your time. Well, all of them ended fairly quick and in good shape. So, yes, the strainers are to be handled by people that aren't quite sure of what they're looking for. Keep it up!!
"You just can't know everything..." You're story that preceded that statement really spoke to me. I had an identical situation a few years ago. That was the same conclusion I came up with. Jt was one hell of a journey. Thanks for the great videos. I just found your channel today and am currently binging your content!
I'ld say a good programmer (or "software developer" or "software engineer") combines a sensible set of technical skills (programming languages, libraries, frameworks, services, ...) with a set of skills in thinking about problems and different approaches to solving them (analysis & design, modelling, ...). A good programmer combines the mindset of a scientist with that of an engineer: don't be dogmatic. Be open to different solutions, weigh them against each other, make controlled experiments, i.e. tests, prototypes, some R&D, to verify your hypothesis before actually settling for a solution. And know when it's good enough :)
Off topic, but as you said you’re experimenting with the background guitar, take a look at J and L cuts ;) Letting the audio appear first for a second and then the video makes a ton of difference in the smoothness of the cuts (like at 11:15).
It's exactly the same with code itself: good clean structured but good enough. You can always restructure i.e. refactor later on, always go pure MVC or MVVM from say a Messaging model later on (I like messaging and events), Always add more unit and integration tests later on. As long as it is good clean maintainable code base upon which you can actually build and not an utter mess of spagetti and of course it actually works in a modular way. In any case there is always another new library, framework, or language and your original code may ultimately prove to be only a model or prototype for yet another rewrite in the end!
«Refactor later on» is the biggest lie as most businesses just don’t care about the state of their code base as long as it works. Mostly they are just looking to add new features rather than improving existing ones.
Thank you, this was awesome. Jordan Peterson always says comparing yourself to others is not beneficial because they have a completely different skill set than you. It's better to compare yourself to your previous self!
Jordan Peterson says a lot of shit that sounds nice taken at face value, but when you start considering his personal beliefs and putting different things he says together, starts to sound REALLY bad.
Thank you for starting a channel like this. The kind of environment software engineers work in are unnecessarily competitive where people are looking down at each other in order to feel superior because that's what the culture has always done to them too. I think your channel promotes healthy conversation about this toxic environment. Thank you!
Good self-assessment which helped you to grow. The longer I've been in tech, the more I realize how much I don't know. Constantly working to fill knowledge gaps. Learned about continuous improvement manufacturing techniques a long time ago. It really changed my mindset. Recommend anyone check into the teachings of Denning. It's all about quality. 😀
What I value in programmers who I manage is firstly the ability to communicate, this includes being able to say when the instructions are not clear or if they think they will struggle to complete the task. Second is how long it takes to complete a task and how close the result is to what I wanted, what extra ideas they came up with outside the instructions and whether or not they communicated those to me. Knowledge and experience are important but less important than good communication and the ability to either get a job done or let your superiors know in a timely manner that you cannot do it or require certain prerequisites to get it done etc. In the modern world with the internet at our finger tips, a GOOD programmer can get a job done in a language they have never used before. Sure it will take longer than someone who is proficient in that language but a good programmer will let you know that they will take longer and let you know upfront how confident they are with the results etc.
Alright dude, damn, you give good advice. I’ll sub, I’ll sub. I’m in my mid-40s, been programming 12 years. I thought of myself beyond the point where I would get anything out of “software development career advice” youtube but here we are.
Excellent video and very good points were made. I think what makes me frustated is not the comparison aspect in itself, but the fact that so many new things are popping up all the time, and it just becomes exhausing (frankly impossible) to keep up with all the new developments. And then it feels like you are not making any progress at all because by the time you dedicated some time at focusing on one thing (a new library, framework, etc), a bunch of new stuff has come up, and you feel like you are not good at anything because you cannot stay on top of everything.
I have spent 40 years learning software development, electronics and IT. The subject of computing has grown massively since the 1980's. You can't know it all.
Absolute enjoyed the insight. In the 25+ years of being a professional developer, I've never had the benefit of learning from someone else. I learned COBOL and Fortran in college, but never obtained a degree. Ironically, I now work for a higher ed institution (past 15 yrs) and absolutely enjoy it. But in that environment, as flexible as it is, I know that I don't know a whole lot. Git, package managers, REST, etc are dabbled in but never thoroughly understood. I sometimes wonder if I'd make it in a business / commercial / consulting environment. I do enjoy learning from the "junior" developer (he's been there 10+ years) as he often implements best practice and stays on top of newer technologies. In the back of my mind, I am always waiting for the hammer to fall in someone telling me my code or data design, or apps are crap. But hopefully I'll retire before then.
As a consultant or architect, you can delegate a lot, find domain experts within the structure you're working with. Odds are there are people who have been thinking about things and they've got pertinent thoughts that you've got to bring together. If you're working alone, you're going to make mistakes, and have to re-do things. This is fine, as you gain insight into the domain as you chip away at it. This is the process. And you still want to see how others have approached similar things before, so it's really not so different - conference talks, open-source projects, etc. And i don't know i have seen 300 programmer teams, and an average programmer... well, puh. Sometimes you see patterns that make you despair for humanity - the bugs where a person works on one thing and the same bugs keep coming back over and over and over again, to be fixed and broken in a 2-week cycle, because they can't figure out for a year what's actually wrong, so don't sell yourselves short you lot.
This reminds me of an episode of Changelog episode 388 discussing the "10x developer myth". The study used data from years of teaching the Personal Software Process at CMU/SEI.
Cool, I had no idea a study was done on that! I always felt this to be true. It’s funny how people quickly dismiss anecdotes. Often an anecdote is a fact yet to be proven. Of course that doesn’t mean they always are! ☺️
Hi Jayme, I've been a professional software developer for over 20 years. I've watched quite a few of your videos and I relate to an awful lot on what you've said, not just on this video, but on many of your videos. When it comes to knowing how "good" you are, it's always been a source of anxiety for me, because things can move so fast in the industry. I work with Microsoft Visual Studio/C#/.NET, and there is a history of technologies and APIs being introduced, hyped up and then abandoned, and complexity that is difficult to keep up with and comprehend. In recent years, I have become increasingly frustrated with the pace of change and it has led to a feeling of cognitive overload, because MS has a much more rapid release schedule and puts out a lot of products in Beta. It feels like there is an expectation to learn it all, when it's absolutely impossible to do so. And then, when you don't know "the latest thing" because there simply hasn't been the time to learn it, it can then leave you feeling inadequate. However, over the years I would like to think that what I've built has for the most part pleased end users, so I guess that is where I have to take my satisfaction from.
Sounds reasonable to me. Most of my experience was .NET too. I had to go on my own and network with people to start growing again. I found most MS shops are somewhat closed minded, resistant to open source, and swallow up whatever MS tells them. Now don’t get me wrong MS has some fantastic technology and for the right problems they sometimes have the perfect tool. I just don’t like that the “embrace and extend” culture where they reinvent the wheel under their name is so deeply rooted. It does seem to force us to constantly learn new crap to keep up with whatever non-MS fad they’ve decided to introduce as their own.
The simple ting is that programmers like others, extent there personality in to there code, with the result that criticizing there code is criticizing there personality. I've been a software developer since 83, more or less, and I don't have the number of times where I my self felled in to this kind of stupidity. It's so easy when you are proud of the code you wrote :-)
This is great, as I try to get a civilian job as a developer I've been feeling all kinds of ways. So hearing this is really great. I will say though that I realized I can't know everything a while ago. I have a TBI from my service so my brain doesn't work as well as it used to, I had to learn that I can't know everything so I keep lots of notes on stuff. I have definitely felt like I'm not good enough a lot lately, working in the military is a whole different ball game. And it can be a tough transition.
I think the essence of Dunning-Kruger effect is not that do not be over confidence than actually what you can do but the over confidence stage must be came to become a better person. That thought helped me quiet lot because I can acknowledge 'Oh I am at the summit of the not knowing and soon my confidence will be broken into pieces. I should be prepared.' And The summit of not knowing never come once. It visits me during my whole life.
I think switching jobs was my best action in my career. I worked for 10 years in one company and was the fastest and most efficient programmer, which boosted my confidence too much. I switched job and i learned i was just good in architecture and less in consultancy. So this was an eye opener. I switched again but now the knowledge i gained at both jobs got me a lead developer position within a month working there.
I feel like my confidence ebbs and flows. I’ll gain experience and rise to the top of a confidence ridge and then encounter the next mountain and realize “oh shit. I’m still in the foothills”. Then I’ll climb again, get to the too of the next ridge, and have the same experience. After a while, I realize that at the end of the day I may not be a mountaineer but I’m a pretty ok hiker.
This resonates with me. I think I'm in the 95th percentile of developers, 95th percentile of software architects, and 30th percentile of solution architects. In dating I'm in the single digits percentile.
i think how good of a programmer you are depends on your job. ie different companies expect different things from their devs. eg company 1 only expects back end code and you are good, but then company 2 requires you to do frontend, backend, devops, testing, architecture, cloud, project management, client relations, and then you are "bad" because you dont have all the skillsets in the world.
I am 13 years into my career and was writing code for fun 7 years before starting my career. This is something I have struggled with multiple times over the years and I suspect, will continue to be a struggle. Some days you feel unstoppable and other days you question if you still have what it takes. You have to stay humble or you'll just be frustrated all the time, which is unhealthy for you and your loved ones.
A good developer is creative. A good developer is lazy (do more with less code… but without getting complicated). A good developer is able to adopt fast and isn’t afraid of doing and learning new stuff … it must be a pleasure to learn new stuff. And coding must be in a developers blood. A good developer can code any language… if he wants to (I refuse to code Phyton 😂) I’m 48 now and I’m coding stuff since I was 10. It always has been a part of my live.
Nice. I'm a fan of Jordan myself, I forgot he's an advocate for the big 5. I plan to do some videos about some of the things he's said and how they can help in a software development context. I don't always agree with him, but he's got a lot of very insightful advice for sure.
my experience is most people really don't know that much and think they do which is worse than not knowing. the term imposter syndrom is way over used. it means you underestimate your talent which frankly is very rarely the problem.
Me neither. There is only endless dark. i don't even know what to do after learning python, what the hell am i supposed to do? i just need money from programming. what are people even paid to do? do people just write code from nothing? is it all fated to fail?
Also, every time you change jobs, you've got a different culture, different people, different management style, different company values, different competitive landscape. It's not just keeping up on technology. A decision that may have been the right decision at your last company may now be the wrong decision at your current company. My current truth now is "I'm gonna do exactly what my manager tells me to do." But now that I'm there, I know exactly what is going to happen. My next manager is going to tell me he wants me to think and problem solve and drive creative outcomes and he doesn't want me to do exactly what he tells me to do. It seems like whenever i zig, the world zags.
I'm the only developer in our IT dept, so I don't have any colleagues to compare myself against and this cause me to question myself. Having no senior developer to mentor and guide me is also not helping.
Is there really such a thing as a "good programmer"? I suspect there are really just varying degrees of competence and an even larger variation in opinion. I gotta admit, I frequently learn from looking at other developer's code but usually let my ego get in the way when I get feedback on a PR. Something I had to work on my entire career (just retired) and never completely conquered. By the way, just started watching your channel, thanks and I wish I'd found it earlier as I'm really enjoying the content/perspective.
After I had logged about 150 hours of flying time after earning my private pilot certificate, my confidence was growing. During a flight review, my instructor cautioned me not to get over-confident. He said that statistics show many accidents happen when pilots get around 400-500 flight hours under their belt because they start to think they have this thing mastered.
A good programmer fixes more bugs than he creates. If he creates new bugs he knows how to fix them. He has a deep knowledge of the framework and project he's working on. If colleagues have questions he can help them. You can easily compare yourself to others if you look at the source code of other projects. You don't have to be ashamed if you don't know all the new tech stacks. If you know one or three ways to solve a problem you don't need to know 10 more. Always keep an open mind, but don't blindly follow every new trend. There are thousands of frameworks and programming languages because ppl can't agree on how to do things.
While I agree with the sentiment of the video, that you shouldn't care as much about being "good" when that quality is very hard to define or assess and likely only leads to stress - I would like to warn about caring too much about psychological concepts like the Dunning Kruger effect when you're not in the field. There are recent studies that strongly suggest that the Dunning Kruger effect isn't real and just a statistical artifact. Usually those studies just found that people that performed some task and were to guess how well they did compared to others (without being given any indicator about their performance or the performance of the others) - were more likely to place themselfes in a middle place. So poor performers would overestimate their rank and high performers would underestimate theirs. Which isn't all too surprising. Also the common 'graphs' with the mount stupid and so on are entirely made up and don't appear in real psychological studies. How confident you are isn't really linked to your "skill level". There are bigger factors like personality, recent successes, mood and so on.
Hey there. I used the Dunning Kruger as a setup for describing how as you progress through a long career, you can go through a dip where at a higher level of skill in software development, you come to awareness that our industry is so complicated you'll never master it. Maybe I should have just left it out if it was confusing people. Appreciate your feedback.
Is there really such a thing as a good programmer? Yes! Of course. But the answer is not a silver bullet, it all depends on : - The situation / project / company - Your team / colleague / manager - Your attitude / experience - Last and probably least: Technical Skills You can be the best programmer, but if you are jerk, it will not matter You can be the best programmer, but in the wrong project / situation / company, and it will not matter You can be the best programmer, but with incompatible colleague / team / peer, and it will not matter Technical skills matter less than all the rest.
Hard to say. No one is perfect and there's too many areas where some can either excel or fail. Good programmer being good at math and solving some complex problems requiring some advanced numerical methods and optimizing them that considers all his colleagues and superordinate dumb and writing code that no one understands (even at interface level) is not a good programmer. If someone is not good at solving complex problem, but can make boring tasks done, he might be very beneficial in the team. If someone can focus at what's important and ignore anything else, he might be beneficial for projects that needs to meet deadline. I think it's good to have mix of people and someone who can recognize their strengths and weaknesses and delegate tasks.
Sometimes I have to change some software that I've wrote ~10 years ago. Half of the time I say "wow, what a good programmer I am", and half I say "it is a miracle that this piece of sh*t still works". My own old programs tell me that I am a very good, badass programmer half of the time. The another half just works, but the program is crap.
This is why I'm skeptical about the job advice that says it's best to job hop for salary every 2 years. I feel like I'm still learning two years in, so why should I interrupt that process to start over unless I am truly, abysmally underpaid?
I agree. If I’m really not getting what I need I can leave but doing it based on some arbitrary period of time for short term cash advantage seems unwise. I’ve learned a lot of valuable things over the years by seeing how teams and company culture changes over longer stays at some companies. Of course that’s just been my experience and in hindsight, I probably should have left earlier in a couple cases!
the dunning kruger effect and the peter principle are two of my favorite copping mechanisms. They have given me staying power in dysfunctional work environments through out my career. Dumb people think they are smart and smart people know they are not as smart as they think they are. I've been in the top tenth percentile sense birth. I've been witnessing the dunning kruger effect in action sense grade school. It is not that I'm so bright. It is that the ones who think they are so smart are really so stupid. Which brings me to the peter principle. Managers don't always rise to the level of their incompetence. Some fail up much farther.
Years ago we hired a new developer. One day she emailed me... she was full of despair... she said "I feel so stupid, I cannot understand this code." I responded, "You're not stupid, the code is really bad, we all go this." After a year, she clearly had become one of our best developers. I was able to empathize with her because time after time I feel stupid because other people cannot write good code, or they cannot explain it. Over the years, I have noticed that people read the Agile Manifesto... they read "Working software over comprehensive documentation" and they take this to mean, it's okay to write crap software with no documentation. I truly believe the Agile Manifesto gives people permission to be lazy and produce more crap...
I love your story. What an encouraging thing to say to a new team member. If we could all just be more like this, I think we'd gel way better as teams.
Wisdom is knowing the extent of ones ignorance. If you are wondering if you are a good programmer you probably are. I look at code written 5 years ago and wonder what I was thinking. The IT learning curve is steep and constant even if it is a bell curve. Wherever you are on the learning curve, good is relevant. Don't beat yourself up. Another year of learning and you will be wondering what the hell was I thinking. It is the nature of the technology beast. I can remember when knowing COBAL made you the smartest guy or gal in the room. lol
"Is there really such a thing as a good programmer?" There used to be. Programmers used to care about writing clean maintainable code. Now everyone just wants to "get it done" and introduce loads of tech debt forcing features to take months/years instead of days/weeks. But From everything I'm hearing, nobody cares about maintainable code anymore. It's just "push bugs out now and maybe fix it later." "Compare yourself to others" Don't. The industry is filled with arrogant jerks. The truth is everyone hits imposter syndrome in their career including senior developers. As you begin learning patterns, you get more comfortable with the unknown and know how to go learn things. The biggest advice I can give you is don't be a jerk. If you learn a skill then don't be rude to someone who didn't learn some xyz framework/language/library. Be humble and kind to others and the work place will be a nice place to be.
At the point where everyone else make obvoiusly flawed design choices, based on "we well reuse it" and "we will expand it" reasoning. Wonder how its still alive and even experienced developers fall into this trap, while it never worked. Same as OOP paradigms. How "inveritance is way to reuse code" lived for so long? Software development is still so immature
Programming tests are a measure of obsequiousness. They filter out people who have a backbone. The amount of time you spend solving any programming problem determines how "good" the answer will be. Give yourself ten minutes and you'll screw up. Give yourself ten years and you will be world's foremost expert on that one problem. You doing poorly on a test just means you spent less time on it than others expected. Making your own products and trying to sell them actually makes you look like a "bad programmer." You only get so many darts to throw at the board. You improve your odds greatly when you throw many rough darts instead of one perfect dart. So you learn to kill your perfectionism. Other programmers will judge you harshly for having such messy unoptimized code. But most of them don't have companies of their own selling products they conceived of themselves. They're playing a completely different game.
Trouble with asking for feedback is that people do not like to give “bad news”. I think one should still do that but just remember about this. About the effect check this out: ruclips.net/video/kcfRe15I47I/видео.html :)
Like I thought I knew a lot about c++ but because the class relatively recently i took doesn’t explain anything about c++11 onwards i see some of this stuff and i am lost. Like wtf are functors and lambdas
Never. I never really liked it and these past years, ive seen than most employers will pay me good money just to be a mediocre home-working developper while essential jobs like teachers or nurses are treated like crap. So i just stop worrying and i took the money. To this day, i still feet pretty good about it.
Well you probably need to "care" about at least trying to live up to your employer or client's expectations. But the degree of care is where the devil is in the details. This video is aimed at people who may have found themselves caring a little too much. And that's certainly been me at some points in my career. If you don't struggle with that, awesome!
If you are an AI Engineer At Square Enix then you are a "Good Programmer" (5 years working with c++ required, Worked on a Shipped AAA Game Title is desirable)
I am just trying to not think how of a bad programmer I am. Yes, I am a stupid, worthless human being and I do deserve to die. Yes, I am reminded of this fact every day a million times, but I have not gave up yet. Maybe I will end my suffering one day, but not today.
Hey there, sorry it sounds like you’re having a hard time. We’re all messed up, you’re not alone. I hope you’re able to find some people who can remind you to find peace in the good things you bring to this world and get you out of dwelling on your shortcomings.
@@HealthyDev I read a blog post named "The Dunning-Kruger Effect is Autocorrelation" that explained that is was just an statistical artifact. But you are right, I guess nowadays there must be a blog post proving or debunking anything. Still, when I saw how different the original graph was from the one that is normally used to describe it, I stopped taking it too seriously.
Hey thanks for sharing that. It’s an interesting article. I’m a bit confused since it sounds like the description of what they found has evolved (unsurprisingly) since they did the test. Using the number of citations as a measure of the validity of the counter argument (with the original results being much older) and having a smaller sample size leaves me scratching my head a bit at both sides to be honest. At any rate, on purely anecdotal experience it seems many of us overestimate ourselves early on and wisdom doesn’t come until overcoming a crisis of confidence much later. I’m no acedemic but a tradesman! So anyone should take my advice (or anyone on the Internet) with huge grains of salt! I appreciate your making me aware of this. It keeps me learning and growing!
20+ years of IT experience, 15 of them in Development. Worked across the globe (US, NZ, AU, Malaysia) . There are still a lot (never ending) things to learn
I really enjoy these videos - it's nice to find a coder without the huge ego! You're very down to earth
Thanks. I wasn’t always this way, trust me. I was the typical elitist developer. I guess some of us just take longer to come around then others! 😊
I think the difference between a good programmer and a bad one, is that the good one is willing to admit that they're crushingly insecure about their work, the one with the ego is also crushingly insecure, they just hide it with bluster 🤣
Always love your content. I'm 8 years into my career and have always struggled with this very topic. I recently moved from a position as a senior engineer into a new position at a consultancy company very large one at that well at least in terms of the team sizes I'm used to. The best trick I've learnt is to remain humble and understand that I will never be good at every part of my job. There's just too much out there. I don't let job titles, age or experience get in the way of learning from my co workers. With that mindset I think I'll be alright.
What a great thing to have this mindset when entering a consulting role! I definitely did NOT, and it was a rough adjustment. The people you work with will be blessed by your outlook!
A lot of programmers I've met, online and in real life, tend to project superiority over the human race. You don't hear sensible talk like this enough. Thanks for sharing.
Damn, puts things into a different perspective, lifted up my mood and self worth a little bit.
I guess I'm really comparing myself way too much to other team members that are better than me.
Thanks man, keep up the good stuff.
As someone pushing 25 years in the business, my observation is that what makes a good programmer is extremely subjective. In some environments a script kiddie who can band aid a fast solution looks like a genius. In other environments it takes the training and experience equivalent of a PhD in Java to even be considered. Also every 5 years a particular skillset starts to decline in usefulness (with every language and platform having very long tails after becoming less popular). Cloud Native and Client Server might be a huge joke 10 years from now in a Quantum Computing world. Things change. Skills change. What is valuable in one era fades in the next.
Code is much less important than the decisions and philosophies that led to its creation. Influence the decision making process and you become the best coder in the room by default. Win.
Awesome video! I wish you had made this 10-15 years ago -- it took a while for me to come to the realization (and then believe it) that someone else who I was impressed with did NOT know everything I did AND what they were great at. Pretty humbling when you see all these people who are better than you (in some aspect) and think they are as good or better than you are in ALL aspects.
I joined a team of three senior developers. They taught me quite a bit and I taught each a few tricks too. We all have good traits that make us good as a team. Your video is awesome and bang on.
amazing channel. Great advice and Guitar playing. Subscribed on a second video of yours.
I am not a good developer and used to go through phases of thinking I got it, then realising I really didn't get it.
The current job really put me in my place, they have a guy there (although he is leaving) that just blows me away every time. He seems to have all the answers to all the questions all the time, even when put on the spot in meetings. In planning and refinement sessions it's astonishing, he seems to be thinking of hundreds of factors with tasks that would never cross my mind. Almost every time he finds several things I've missed on PRs and I graciously heed his advice and try to incorporate the knowledge behind it on the occasions that it's not due to lack of diligence. He seems to complete double or triple the amount of story points I do per sprint. All of that and he has about the same number of years experience as I do (about 9, he's been in the job maybe 24 months and I have coming up on 12).
It's amazing and I learn a lot from him, but also feel he's just on an entirely different level cognitively that I can't imagine ever being able to match. It's intimidating and when I'm having a bad day I worry deeply that the questions from PO/squad lead/devops and the answers coming from me that need correcting will result in the people that make decisions comparing and as a result viewing me as an inept or bumbling clown and wanting to fire me.
In the awe I can't help but think he could basically walk into an office of Google or Microsoft or any other household name tech company and get a job like it's nothing, but to me he might as well know everything. But knowing that it surely can't be true, a terrifying thought surfaces of what if he's not even a good developer, he's just an average developer? If I can't even imagine being close to him that would surely mean I'm a BAD developer! If, in all of his knowledge, he still only knows 10% of what there is to know, then that means I likely only know 1% or less! And that's rather sobering!
Regardless I think he deserves to go very far because it almost seems like I don't deserve to have encountered someone with such a vast difference in capability, like he shouldn't be working in this same company as I am that doesn't give a competitive salary, but if I can somehow fake it this far then with his real skills he ought to have a very bright future ahead. I guess that's why he's leaving though! I do worry for what it means after he's out, likely they will be too short on developers to fire me right away, but if they find a comparable replacement to him then perhaps they'd consider it seriously...
10% of what there is to know in development is a staggering amount of information. no one on earth is reaching that level, be sure of that. think about it like this: not even the guys actually developing .net for example don't know 10% out of .net ALONE (not the whole development realm). they only know properly the modules they are working on and stuff related. so if you haven't already, you will realize in the future how much less than 1% you actually know, and you have to accept it. BUT! don't quantify so much the stuff you know VS how resourceful you are in finding out what you need to know to do the job. this skill is much more important, but much harder to quantify in a technical interview that's why in interviews you are assessed on stuff you know because that is much easier to measure. so your self worth should not be reflected based on interview evaluations or by comparing yourself to others. in comparison to others you should only look after stuff they have/know that you would also like to have and shoot in that direction
I had this problem for many years and one thing that helped me a lot was Cognitive behavioral therapy. Especially Feeling Great book.
If you find your self thinking I'm not good enough, I could do it faster better, other ppl better - this book will help.
Is challenging, you have to keep with the team or getting a job
Are you stressing yourself out by comparing yourself to other programmers? I hope this video shows you see how unrealistic that is, and helps reduce your anxiety a little bit.
►► Know your options! Access my FREE data hub for the top 25 software industry roles, TechRolepedia → jaymeedwards.com/access-techrolepedia/
classroom speak symbol in 2022 / 2023 commonecation software quality utility speak english basic symbol speak 🏛🌍🌎🌏🏛🏪🏫🏬🏭🏯🏰💒🏩🏨🏧🏦🏥🏤🏣
classroom operator skill programmer skill analis skill symbol speak room quality utility year 2022 / 2023 commonecation software 🏛🌍🌎🌏
It was really around the 10 year mark where I started to actually feel like I could call myself “a good programmer”, and that was built upon 10 years of making decisions good and poor and, more importantly, reflecting on those decisions. The most distinct step up in ability during that first 10 years came not from any programming tricks themselves, but actually from starting that habit of reflection on both the work I needed to do and upon the decisions I was making, not just outlining tasks but actually trying to explain them back to myself.
And of course as you note, you can’t know everything, or as I tend to state it, “the human brain is finite and lazy” with the implication that the world is effectively infinite and ceaseless in its goings-on.
Glad you’re back, Jayme!
God I needed this right now…THANK YOU!
Your videos are so helpful. Thank you for your wisdom sir
What's exciting about our industry is that it's always evolving. I was once a senior ActionScript developer creating games and apps for top companies. I had to start over, but I still write cleaner and more concise code than almost anyone I know. The biggest hurtles in my knowledge haven't been about coding. It's been about systems and tooling especially cloud development. Just dig in and attack anything you feel insecure about. AND Make the most of what you DO know.
Great video Jamie. The human aspect is greatly disregard, in general, by the IT content creators. This is very relatable, specially among those who count years of xp by the tens. I had interesting experiences as a manager, being part of the hiring process, once I got zero applicants to pass the early stages of the selection process, so I required the paper bin from HHRR... they didn't like the idea, but I ended up getting two great coders for the company. I implemented my own tests, taken from problems we actually had in the company before. The test was at a desk in a real office, with the chance to ask others if there were doubts, like a real job. Time limit: 5pm, take your time. Well, all of them ended fairly quick and in good shape. So, yes, the strainers are to be handled by people that aren't quite sure of what they're looking for. Keep it up!!
"You just can't know everything..." You're story that preceded that statement really spoke to me. I had an identical situation a few years ago. That was the same conclusion I came up with. Jt was one hell of a journey.
Thanks for the great videos. I just found your channel today and am currently binging your content!
Welcome Thomas!
I'ld say a good programmer (or "software developer" or "software engineer") combines a sensible set of technical skills (programming languages, libraries, frameworks, services, ...) with a set of skills in thinking about problems and different approaches to solving them (analysis & design, modelling, ...). A good programmer combines the mindset of a scientist with that of an engineer: don't be dogmatic. Be open to different solutions, weigh them against each other, make controlled experiments, i.e. tests, prototypes, some R&D, to verify your hypothesis before actually settling for a solution. And know when it's good enough :)
Thanks!
Off topic, but as you said you’re experimenting with the background guitar, take a look at J and L cuts ;) Letting the audio appear first for a second and then the video makes a ton of difference in the smoothness of the cuts (like at 11:15).
You can’t really choose to be good, but you can easily choose to be kind.
Thanks man appreciate the talk :) i feel more at ease diving into the world of programming
Happy to help!
It's exactly the same with code itself: good clean structured but good enough. You can always restructure i.e. refactor later on, always go pure MVC or MVVM from say a Messaging model later on (I like messaging and events), Always add more unit and integration tests later on. As long as it is good clean maintainable code base upon which you can actually build and not an utter mess of spagetti and of course it actually works in a modular way. In any case there is always another new library, framework, or language and your original code may ultimately prove to be only a model or prototype for yet another rewrite in the end!
Problem is that "later on" work almost never happens
«Refactor later on» is the biggest lie as most businesses just don’t care about the state of their code base as long as it works. Mostly they are just looking to add new features rather than improving existing ones.
Thank you, this was awesome. Jordan Peterson always says comparing yourself to others is not beneficial because they have a completely different skill set than you. It's better to compare yourself to your previous self!
Jordan Peterson says a lot of shit that sounds nice taken at face value, but when you start considering his personal beliefs and putting different things he says together, starts to sound REALLY bad.
This is a rare, good piece of advice from Jordan Peterson. I don't recommend watching him.
Screw Jordan Peterson.
This video is underrated. Keep it up, Jayme.
Thank you for starting a channel like this. The kind of environment software engineers work in are unnecessarily competitive where people are looking down at each other in order to feel superior because that's what the culture has always done to them too. I think your channel promotes healthy conversation about this toxic environment. Thank you!
thanks for share this.. I really need to hear it.. greetings from argentina!
Good self-assessment which helped you to grow. The longer I've been in tech, the more I realize how much I don't know. Constantly working to fill knowledge gaps.
Learned about continuous improvement manufacturing techniques a long time ago. It really changed my mindset. Recommend anyone check into the teachings of Denning. It's all about quality. 😀
What I value in programmers who I manage is firstly the ability to communicate, this includes being able to say when the instructions are not clear or if they think they will struggle to complete the task. Second is how long it takes to complete a task and how close the result is to what I wanted, what extra ideas they came up with outside the instructions and whether or not they communicated those to me. Knowledge and experience are important but less important than good communication and the ability to either get a job done or let your superiors know in a timely manner that you cannot do it or require certain prerequisites to get it done etc. In the modern world with the internet at our finger tips, a GOOD programmer can get a job done in a language they have never used before. Sure it will take longer than someone who is proficient in that language but a good programmer will let you know that they will take longer and let you know upfront how confident they are with the results etc.
Alright dude, damn, you give good advice. I’ll sub, I’ll sub. I’m in my mid-40s, been programming 12 years. I thought of myself beyond the point where I would get anything out of “software development career advice” youtube but here we are.
I'm 45. Good to hear you're finding some value from this stuff. We're all still learning!
Excellent video and very good points were made. I think what makes me frustated is not the comparison aspect in itself, but the fact that so many new things are popping up all the time, and it just becomes exhausing (frankly impossible) to keep up with all the new developments. And then it feels like you are not making any progress at all because by the time you dedicated some time at focusing on one thing (a new library, framework, etc), a bunch of new stuff has come up, and you feel like you are not good at anything because you cannot stay on top of everything.
Every developer needs to watch this.
cool to see u uploading again
Thanks man, appreciate your support!
I have spent 40 years learning software development, electronics and IT.
The subject of computing has grown massively since the 1980's. You can't know it all.
Absolute enjoyed the insight. In the 25+ years of being a professional developer, I've never had the benefit of learning from someone else. I learned COBOL and Fortran in college, but never obtained a degree. Ironically, I now work for a higher ed institution (past 15 yrs) and absolutely enjoy it. But in that environment, as flexible as it is, I know that I don't know a whole lot. Git, package managers, REST, etc are dabbled in but never thoroughly understood. I sometimes wonder if I'd make it in a business / commercial / consulting environment. I do enjoy learning from the "junior" developer (he's been there 10+ years) as he often implements best practice and stays on top of newer technologies. In the back of my mind, I am always waiting for the hammer to fall in someone telling me my code or data design, or apps are crap. But hopefully I'll retire before then.
As a consultant or architect, you can delegate a lot, find domain experts within the structure you're working with. Odds are there are people who have been thinking about things and they've got pertinent thoughts that you've got to bring together.
If you're working alone, you're going to make mistakes, and have to re-do things. This is fine, as you gain insight into the domain as you chip away at it. This is the process. And you still want to see how others have approached similar things before, so it's really not so different - conference talks, open-source projects, etc.
And i don't know i have seen 300 programmer teams, and an average programmer... well, puh. Sometimes you see patterns that make you despair for humanity - the bugs where a person works on one thing and the same bugs keep coming back over and over and over again, to be fixed and broken in a 2-week cycle, because they can't figure out for a year what's actually wrong, so don't sell yourselves short you lot.
This reminds me of an episode of Changelog episode 388 discussing the "10x developer myth". The study used data from years of teaching the Personal Software Process at CMU/SEI.
Cool, I had no idea a study was done on that! I always felt this to be true. It’s funny how people quickly dismiss anecdotes. Often an anecdote is a fact yet to be proven. Of course that doesn’t mean they always are! ☺️
Hi Jayme, I've been a professional software developer for over 20 years. I've watched quite a few of your videos and I relate to an awful lot on what you've said, not just on this video, but on many of your videos. When it comes to knowing how "good" you are, it's always been a source of anxiety for me, because things can move so fast in the industry. I work with Microsoft Visual Studio/C#/.NET, and there is a history of technologies and APIs being introduced, hyped up and then abandoned, and complexity that is difficult to keep up with and comprehend. In recent years, I have become increasingly frustrated with the pace of change and it has led to a feeling of cognitive overload, because MS has a much more rapid release schedule and puts out a lot of products in Beta. It feels like there is an expectation to learn it all, when it's absolutely impossible to do so. And then, when you don't know "the latest thing" because there simply hasn't been the time to learn it, it can then leave you feeling inadequate. However, over the years I would like to think that what I've built has for the most part pleased end users, so I guess that is where I have to take my satisfaction from.
Sounds reasonable to me. Most of my experience was .NET too. I had to go on my own and network with people to start growing again. I found most MS shops are somewhat closed minded, resistant to open source, and swallow up whatever MS tells them. Now don’t get me wrong MS has some fantastic technology and for the right problems they sometimes have the perfect tool. I just don’t like that the “embrace and extend” culture where they reinvent the wheel under their name is so deeply rooted. It does seem to force us to constantly learn new crap to keep up with whatever non-MS fad they’ve decided to introduce as their own.
The simple ting is that programmers like others, extent there personality in to there code, with the result that criticizing there code is criticizing there personality.
I've been a software developer since 83, more or less, and I don't have the number of times where I my self felled in to this kind of stupidity. It's so easy when you are proud of the code you wrote :-)
This is great, as I try to get a civilian job as a developer I've been feeling all kinds of ways. So hearing this is really great.
I will say though that I realized I can't know everything a while ago. I have a TBI from my service so my brain doesn't work as well as it used to, I had to learn that I can't know everything so I keep lots of notes on stuff.
I have definitely felt like I'm not good enough a lot lately, working in the military is a whole different ball game. And it can be a tough transition.
I think the essence of Dunning-Kruger effect is not that do not be over confidence than actually what you can do but the over confidence stage must be came to become a better person. That thought helped me quiet lot because I can acknowledge 'Oh I am at the summit of the not knowing and soon my confidence will be broken into pieces. I should be prepared.' And The summit of not knowing never come once. It visits me during my whole life.
I think switching jobs was my best action in my career. I worked for 10 years in one company and was the fastest and most efficient programmer, which boosted my confidence too much. I switched job and i learned i was just good in architecture and less in consultancy. So this was an eye opener. I switched again but now the knowledge i gained at both jobs got me a lead developer position within a month working there.
I feel like my confidence ebbs and flows. I’ll gain experience and rise to the top of a confidence ridge and then encounter the next mountain and realize “oh shit. I’m still in the foothills”. Then I’ll climb again, get to the too of the next ridge, and have the same experience.
After a while, I realize that at the end of the day I may not be a mountaineer but I’m a pretty ok hiker.
This resonates with me.
I think I'm in the 95th percentile of developers, 95th percentile of software architects, and 30th percentile of solution architects.
In dating I'm in the single digits percentile.
LOL! 🤣 Well you dated more than I did so you got me beat there. 😉
i think how good of a programmer you are depends on your job. ie different companies expect different things from their devs. eg company 1 only expects back end code and you are good, but then company 2 requires you to do frontend, backend, devops, testing, architecture, cloud, project management, client relations, and then you are "bad" because you dont have all the skillsets in the world.
Definitely. Context is a big part of that I agree!
I am 13 years into my career and was writing code for fun 7 years before starting my career. This is something I have struggled with multiple times over the years and I suspect, will continue to be a struggle. Some days you feel unstoppable and other days you question if you still have what it takes. You have to stay humble or you'll just be frustrated all the time, which is unhealthy for you and your loved ones.
A good developer is creative. A good developer is lazy (do more with less code… but without getting complicated). A good developer is able to adopt fast and isn’t afraid of doing and learning new stuff … it must be a pleasure to learn new stuff. And coding must be in a developers blood. A good developer can code any language… if he wants to (I refuse to code Phyton 😂)
I’m 48 now and I’m coding stuff since I was 10. It always has been a part of my live.
So happy I came across your channel. New sub 👍
Welcome aboard!
Thank you! 😄
Yes openness is part of the Big 5 Personality traits that Jordan Peterson often talks about and is a really good trait to have.
Nice. I'm a fan of Jordan myself, I forgot he's an advocate for the big 5. I plan to do some videos about some of the things he's said and how they can help in a software development context. I don't always agree with him, but he's got a lot of very insightful advice for sure.
my experience is most people really don't know that much and think they do which is worse than not knowing. the term imposter syndrom is way over used. it means you underestimate your talent which frankly is very rarely the problem.
Technically that's the problem I don't really have anyone to see how good of a programmer I am. I can only say to myself I'm fair or below average.
Me neither. There is only endless dark. i don't even know what to do after learning python, what the hell am i supposed to do? i just need money from programming. what are people even paid to do? do people just write code from nothing? is it all fated to fail?
Also, every time you change jobs, you've got a different culture, different people, different management style, different company values, different competitive landscape. It's not just keeping up on technology. A decision that may have been the right decision at your last company may now be the wrong decision at your current company. My current truth now is "I'm gonna do exactly what my manager tells me to do." But now that I'm there, I know exactly what is going to happen. My next manager is going to tell me he wants me to think and problem solve and drive creative outcomes and he doesn't want me to do exactly what he tells me to do. It seems like whenever i zig, the world zags.
My best skill as a developer, is knowing how to as proper questions on stack overflow and how to use Google XD
Came for the headline and stayed for the guitar 🎸
I'm the only developer in our IT dept, so I don't have any colleagues to compare myself against and this cause me to question myself. Having no senior developer to mentor and guide me is also not helping.
Is there really such a thing as a "good programmer"? I suspect there are really just varying degrees of competence and an even larger variation in opinion. I gotta admit, I frequently learn from looking at other developer's code but usually let my ego get in the way when I get feedback on a PR. Something I had to work on my entire career (just retired) and never completely conquered. By the way, just started watching your channel, thanks and I wish I'd found it earlier as I'm really enjoying the content/perspective.
After I had logged about 150 hours of flying time after earning my private pilot certificate, my confidence was growing. During a flight review, my instructor cautioned me not to get over-confident. He said that statistics show many accidents happen when pilots get around 400-500 flight hours under their belt because they start to think they have this thing mastered.
A good programmer fixes more bugs than he creates. If he creates new bugs he knows how to fix them. He has a deep knowledge of the framework and project he's working on. If colleagues have questions he can help them.
You can easily compare yourself to others if you look at the source code of other projects.
You don't have to be ashamed if you don't know all the new tech stacks. If you know one or three ways to solve a problem you don't need to know 10 more. Always keep an open mind, but don't blindly follow every new trend.
There are thousands of frameworks and programming languages because ppl can't agree on how to do things.
I was recently saying that my days are a sine wave of the Dunning-Kruger effect and imposter syndrome
While I agree with the sentiment of the video, that you shouldn't care as much about being "good" when that quality is very hard to define or assess and likely only leads to stress - I would like to warn about caring too much about psychological concepts like the Dunning Kruger effect when you're not in the field.
There are recent studies that strongly suggest that the Dunning Kruger effect isn't real and just a statistical artifact.
Usually those studies just found that people that performed some task and were to guess how well they did compared to others (without being given any indicator about their performance or the performance of the others) - were more likely to place themselfes in a middle place. So poor performers would overestimate their rank and high performers would underestimate theirs. Which isn't all too surprising.
Also the common 'graphs' with the mount stupid and so on are entirely made up and don't appear in real psychological studies.
How confident you are isn't really linked to your "skill level". There are bigger factors like personality, recent successes, mood and so on.
Hey there. I used the Dunning Kruger as a setup for describing how as you progress through a long career, you can go through a dip where at a higher level of skill in software development, you come to awareness that our industry is so complicated you'll never master it. Maybe I should have just left it out if it was confusing people. Appreciate your feedback.
Is there really such a thing as a good programmer? Yes! Of course.
But the answer is not a silver bullet, it all depends on :
- The situation / project / company
- Your team / colleague / manager
- Your attitude / experience
- Last and probably least: Technical Skills
You can be the best programmer, but if you are jerk, it will not matter
You can be the best programmer, but in the wrong project / situation / company, and it will not matter
You can be the best programmer, but with incompatible colleague / team / peer, and it will not matter
Technical skills matter less than all the rest.
Hard to say. No one is perfect and there's too many areas where some can either excel or fail. Good programmer being good at math and solving some complex problems requiring some advanced numerical methods and optimizing them that considers all his colleagues and superordinate dumb and writing code that no one understands (even at interface level) is not a good programmer. If someone is not good at solving complex problem, but can make boring tasks done, he might be very beneficial in the team. If someone can focus at what's important and ignore anything else, he might be beneficial for projects that needs to meet deadline. I think it's good to have mix of people and someone who can recognize their strengths and weaknesses and delegate tasks.
Sometimes I have to change some software that I've wrote ~10 years ago. Half of the time I say "wow, what a good programmer I am", and half I say "it is a miracle that this piece of sh*t still works". My own old programs tell me that I am a very good, badass programmer half of the time. The another half just works, but the program is crap.
"Perfectly balanced, as all things should be. "
This is why I'm skeptical about the job advice that says it's best to job hop for salary every 2 years. I feel like I'm still learning two years in, so why should I interrupt that process to start over unless I am truly, abysmally underpaid?
I agree. If I’m really not getting what I need I can leave but doing it based on some arbitrary period of time for short term cash advantage seems unwise.
I’ve learned a lot of valuable things over the years by seeing how teams and company culture changes over longer stays at some companies. Of course that’s just been my experience and in hindsight, I probably should have left earlier in a couple cases!
Great channel :)
Welcome!
the dunning kruger effect and the peter principle are two of my favorite copping mechanisms. They have given me staying power in dysfunctional work environments through out my career. Dumb people think they are smart and smart people know they are not as smart as they think they are. I've been in the top tenth percentile sense birth. I've been witnessing the dunning kruger effect in action sense grade school. It is not that I'm so bright. It is that the ones who think they are so smart are really so stupid. Which brings me to the peter principle. Managers don't always rise to the level of their incompetence. Some fail up much farther.
For me a good programmer keeps the functions readable and maybe comments/documents what a function or class even does.
Years ago we hired a new developer. One day she emailed me... she was full of despair... she said "I feel so stupid, I cannot understand this code." I responded, "You're not stupid, the code is really bad, we all go this." After a year, she clearly had become one of our best developers.
I was able to empathize with her because time after time I feel stupid because other people cannot write good code, or they cannot explain it. Over the years, I have noticed that people read the Agile Manifesto... they read "Working software over comprehensive documentation" and they take this to mean, it's okay to write crap software with no documentation. I truly believe the Agile Manifesto gives people permission to be lazy and produce more crap...
I love your story. What an encouraging thing to say to a new team member. If we could all just be more like this, I think we'd gel way better as teams.
Love the video
Wisdom is knowing the extent of ones ignorance. If you are wondering if you are a good programmer you probably are. I look at code written 5 years ago and wonder what I was thinking. The IT learning curve is steep and constant even if it is a bell curve. Wherever you are on the learning curve, good is relevant. Don't beat yourself up. Another year of learning and you will be wondering what the hell was I thinking. It is the nature of the technology beast. I can remember when knowing COBAL made you the smartest guy or gal in the room. lol
great video
i'm a very bad programmer
but i've also never met a developer that is and at the same time wasn't a complete asshole
Reason one is easy: there is no such thing as a good programmer. We all suck. Solved, move on to important problems. ;)
"Is there really such a thing as a good programmer?"
There used to be. Programmers used to care about writing clean maintainable code. Now everyone just wants to "get it done" and introduce loads of tech debt forcing features to take months/years instead of days/weeks. But From everything I'm hearing, nobody cares about maintainable code anymore. It's just "push bugs out now and maybe fix it later."
"Compare yourself to others"
Don't. The industry is filled with arrogant jerks. The truth is everyone hits imposter syndrome in their career including senior developers. As you begin learning patterns, you get more comfortable with the unknown and know how to go learn things.
The biggest advice I can give you is don't be a jerk. If you learn a skill then don't be rude to someone who didn't learn some xyz framework/language/library. Be humble and kind to others and the work place will be a nice place to be.
At the point where everyone else make obvoiusly flawed design choices, based on "we well reuse it" and "we will expand it" reasoning. Wonder how its still alive and even experienced developers fall into this trap, while it never worked.
Same as OOP paradigms. How "inveritance is way to reuse code" lived for so long?
Software development is still so immature
dunning-kreuger wasn’t around 68 years ago bro 😏
Programming tests are a measure of obsequiousness. They filter out people who have a backbone.
The amount of time you spend solving any programming problem determines how "good" the answer will be. Give yourself ten minutes and you'll screw up. Give yourself ten years and you will be world's foremost expert on that one problem.
You doing poorly on a test just means you spent less time on it than others expected.
Making your own products and trying to sell them actually makes you look like a "bad programmer." You only get so many darts to throw at the board. You improve your odds greatly when you throw many rough darts instead of one perfect dart. So you learn to kill your perfectionism.
Other programmers will judge you harshly for having such messy unoptimized code. But most of them don't have companies of their own selling products they conceived of themselves. They're playing a completely different game.
Trouble with asking for feedback is that people do not like to give “bad news”. I think one should still do that but just remember about this.
About the effect check this out: ruclips.net/video/kcfRe15I47I/видео.html :)
Like I thought I knew a lot about c++ but because the class relatively recently i took doesn’t explain anything about c++11 onwards i see some of this stuff and i am lost. Like wtf are functors and lambdas
Right? It never ends!
Never. I never really liked it and these past years, ive seen than most employers will pay me good money just to be a mediocre home-working developper while essential jobs like teachers or nurses are treated like crap. So i just stop worrying and i took the money. To this day, i still feet pretty good about it.
Sometimes I feel like I'm an IQ point away from legally needing to wear a helmet while walking, therefore I must be a genius?
For my definition there are good programmers, but there are no perfect programmers. If programmers are perfect you won't need a lot of them.
What if you just love programming and couldn’t care less about what other people think?
Well you probably need to "care" about at least trying to live up to your employer or client's expectations. But the degree of care is where the devil is in the details. This video is aimed at people who may have found themselves caring a little too much. And that's certainly been me at some points in my career. If you don't struggle with that, awesome!
If you are an AI Engineer At Square Enix then you are a "Good Programmer" (5 years working with c++ required, Worked on a Shipped AAA Game Title is desirable)
I am just trying to not think how of a bad programmer I am. Yes, I am a stupid, worthless human being and I do deserve to die. Yes, I am reminded of this fact every day a million times, but I have not gave up yet. Maybe I will end my suffering one day, but not today.
Hey there, sorry it sounds like you’re having a hard time. We’re all messed up, you’re not alone. I hope you’re able to find some people who can remind you to find peace in the good things you bring to this world and get you out of dwelling on your shortcomings.
Programmers are the worst with comparing themselves to one another.
The Dunning-Kruger effect is fake, lol.
I guess you can find information that’ll confirm a bias of anything being true or not these days. Care to expand on why you believe it to be false?
@@HealthyDev I read a blog post named "The Dunning-Kruger Effect is Autocorrelation" that explained that is was just an statistical artifact.
But you are right, I guess nowadays there must be a blog post proving or debunking anything. Still, when I saw how different the original graph was from the one that is normally used to describe it, I stopped taking it too seriously.
Hey thanks for sharing that. It’s an interesting article.
I’m a bit confused since it sounds like the description of what they found has evolved (unsurprisingly) since they did the test. Using the number of citations as a measure of the validity of the counter argument (with the original results being much older) and having a smaller sample size leaves me scratching my head a bit at both sides to be honest.
At any rate, on purely anecdotal experience it seems many of us overestimate ourselves early on and wisdom doesn’t come until overcoming a crisis of confidence much later. I’m no acedemic but a tradesman! So anyone should take my advice (or anyone on the Internet) with huge grains of salt!
I appreciate your making me aware of this. It keeps me learning and growing!
then dont teach, if you are not perfect, you are guaranteed to mess things up with your teachings
begone from the office
why would I need to serve you in any way, just no
Get back to me when you learn nobody is perfect ;).
@@HealthyDev why a non-perfect teaches anything
@@HealthyDev you lack skill
lol you are just not a good programmer