TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Things I’ve learned in my 20 years as a software engineer

1605 pointsby D_Guidiover 3 years ago

93 comments

boffinAudioover 3 years ago
40+ years of experience here, and I&#x27;ll tell you the #1 thing I&#x27;ve learned:<p><pre><code> * Software is a social service. Its for other humans. </code></pre> Incredibly, it doesn&#x27;t matter how educated the developer, they still seem to have to learn this lesson themselves, over and over, until it sinks in...
评论 #28799270 未加载
评论 #28802291 未加载
评论 #28798445 未加载
评论 #28798005 未加载
评论 #28803367 未加载
评论 #28799396 未加载
评论 #28797738 未加载
评论 #28798056 未加载
评论 #28801217 未加载
评论 #28799493 未加载
评论 #28799412 未加载
评论 #28797706 未加载
评论 #28797888 未加载
评论 #28800661 未加载
评论 #28804984 未加载
评论 #28798214 未加载
评论 #28798221 未加载
评论 #28799418 未加载
评论 #28800258 未加载
评论 #28799177 未加载
评论 #28799252 未加载
评论 #28798973 未加载
评论 #28797712 未加载
评论 #28797805 未加载
Sohcahtoa82over 3 years ago
&gt; “if they ask about time off in the first interview then they are never going to be there!”<p>The fact that this attitude is common scares me when I&#x27;m doing interviews.<p>Time off is incredibly important to me. What&#x27;s the use of making a great income if you can&#x27;t get the time off to enjoy it?<p>The culture about the use of PTO varies wildly between companies. A friend of mine worked somewhere that supposedly gave 20 days PTO per year, but trying to actually use more than a single day at a time was always met with denials, and even if you did take a Friday off, you were expected to work 10 hours&#x2F;day the other 4 days of that week to make up for it.<p>So yeah, when I&#x27;m interviewing, I want to know how much time people are taking off, but I don&#x27;t want the interviewer to think I&#x27;m lazy and will be trying to avoid work as much as possible.
评论 #28801123 未加载
评论 #28803558 未加载
评论 #28800779 未加载
评论 #28800654 未加载
评论 #28801802 未加载
评论 #28800998 未加载
评论 #28800931 未加载
评论 #28803839 未加载
评论 #28803520 未加载
评论 #28800637 未加载
评论 #28801629 未加载
评论 #28800906 未加载
评论 #28809722 未加载
评论 #28800772 未加载
评论 #28802068 未加载
评论 #28855119 未加载
评论 #28801765 未加载
评论 #28807423 未加载
评论 #28801339 未加载
评论 #28800693 未加载
评论 #28801576 未加载
quadcoreover 3 years ago
<i>The 10x programmer is a silly myth. The idea that someone can produce in 1 day what another competent, hard working, similarly experienced programmer can produce in 2 weeks is silly.</i><p>You know, 10x is an optimistic number here. Some programmers will do in 1 day what you wont achieve in a life time. And not understanding that makes you a bad programmer by my book simply because this is the foundation of the job.<p>So let me give one advice: you are not producing code, you are engineering code. Some will find solutions that the others will not find. Thats where the 10x programmer thing come from. The guy who wrote bittorrent said something like the following: &quot;I&#x27;ve written bittorrent in a way you would never have thought about&quot;.<p>You think John Carmack was the only one trying to make 3d games when Doom came out? Thousands of programmers where trying to. Does that make him a 10x programmer in your opinion? Or more like a 1000x?
评论 #28798386 未加载
评论 #28801921 未加载
评论 #28799723 未加载
评论 #28800348 未加载
评论 #28800546 未加载
评论 #28801447 未加载
评论 #28801054 未加载
评论 #28799987 未加载
评论 #28800511 未加载
评论 #28798464 未加载
评论 #28800407 未加载
评论 #28803681 未加载
评论 #28803444 未加载
评论 #28799567 未加载
评论 #28803837 未加载
评论 #28800508 未加载
评论 #28801178 未加载
评论 #28800315 未加载
评论 #28800541 未加载
评论 #28808733 未加载
评论 #28801332 未加载
评论 #28801028 未加载
评论 #28816001 未加载
评论 #28805587 未加载
评论 #28801134 未加载
评论 #28805834 未加载
评论 #28805028 未加载
pjc50over 3 years ago
This is a very insightful list. But there is one thing I&#x27;d quibble with: while it&#x27;s inherently a super-subjective metric, I would say that 10x programmers do exist. Both in the &quot;can support a company by themselves&quot; sense and the &quot;mad lone genius&quot; sense. Not all the 10x programmers are good at working with other people or on other people&#x27;s ideas.<p>0.1x programmers are often lost or afraid, although they may just be unimaginative. The real risk of fear is introducing 0.1x <i>processes</i>. People are often willing to sacrifice any amount of development velocity to avoid being seen to make mistakes.<p>Sometimes this makes sense, sometimes it doesn&#x27;t. Arguably the reason for the success of SpaceX is that they were willing to fly, crashland, and improve a dozen rockets in the time that a conventional company would spend agonizing over whether to launch at all. On the other hand, nobody wants to be on the same roads as the &quot;move fast and break things&quot; self-driving car.
评论 #28797923 未加载
评论 #28797871 未加载
评论 #28797947 未加载
评论 #28797896 未加载
评论 #28797673 未加载
评论 #28797747 未加载
评论 #28798165 未加载
评论 #28800052 未加载
评论 #28799358 未加载
评论 #28798418 未加载
评论 #28800110 未加载
评论 #28797817 未加载
评论 #28797786 未加载
评论 #28810337 未加载
scottiousover 3 years ago
&gt; I’d rather someone give me opinions that I violently disagree with than for them to have no opinions at all.<p>I&#x27;ve been a developer for 15 years... anybody else feel like the further they get into their career, the more they want to keep their opinions to themselves?<p>I feel like as a junior dev I had way stronger opinions and I was a lot more vocal about them. Now, I still have opinions, but I&#x27;ve learned that nobody gives a damn about my opinions so I just keep them to myself.
评论 #28800404 未加载
评论 #28799482 未加载
评论 #28799861 未加载
评论 #28798424 未加载
评论 #28799659 未加载
评论 #28800251 未加载
评论 #28798479 未加载
评论 #28799480 未加载
评论 #28800037 未加载
评论 #28799752 未加载
评论 #28800941 未加载
评论 #28814671 未加载
评论 #28800308 未加载
评论 #28799960 未加载
评论 #28799419 未加载
wccrawfordover 3 years ago
&quot;Interviews are almost worthless for telling how good of a team member someone will be&quot;<p>Just like &quot;avoid the 0.1x programmers&quot;, interviews are for weeding out the really bad team mates. They aren&#x27;t for finding the best ones.<p>For instance, I and a female programmer do the interviews. During one interview, my coworker kept asking questions of the candidate, and he would not look at her when he talked. He would actually talk to <i>me</i> instead while answering her questions.<p>My first through was that he was misogynistic, which is an automatic disqualification. But even if he was just shy, he&#x27;s going to have to work with her <i>daily</i> for the first few months, and be in meetings with her for the entire time he worked there.<p>That&#x27;s an extreme example, but there were plenty of instances where we were looking for the best candidate, and the interview made the decision easier when the code hadn&#x27;t. We can only hire 1 candidate, and we have to do what we can to pick the one that will do the best work and get along best with the team.<p>That&#x27;s what interviews are for.
评论 #28850487 未加载
taylodlover 3 years ago
I&#x27;ve been developing software for decades and here&#x27;s the most important thing I&#x27;ve learned: systems will be around running for <i>far longer</i> than you ever thought possible, even when you allowed for systems being around for far longer than you thought possible!<p>Keeping that in mind, I&#x27;m continually amazed at the number of developers who just <i>love</i> complexity. Don&#x27;t get me wrong, they all profess to strive for simplicity but their work betrays them. They just love intricate dances carefully coordinated across several components, never minding how anyone 5, 10, 15 or 20 years down the road will ever comprehend this madness or how it will ever be maintained without incurring exorbitant costs.<p>I religiously adhere to the KISS principle - Keep It Stupid Simple. Once you think it&#x27;s simple look for ways to make it even more simple. Think about operations failing at the worst time of day possible on the worst possible day of the year - how will you <i>quickly</i> find and resolve the issue? What if it&#x27;s a new hire who gets the call? I&#x27;m just amazed at how developers gloss over this, all while bitching about the &quot;spaghetti code&quot; they inherited. It boggles the mind.
评论 #28804268 未加载
RNCTXover 3 years ago
Speaking of iteration, iterating over the most popular replies to this tells me that the points which hit home enough to drive engagement are replies to the effect of:<p>1) &quot;No, my 37 day interview process is good, actually.&quot;<p>2) &quot;Rails sucks&quot;<p>3) &quot;Making a thing people would want to use is a bad idea.&quot;<p>4) (two long threads) &quot;The 10x programmer exists, I saw him once at a con.&quot;<p>5) &quot;No one cares what anyone else thinks.&quot;<p>HN really does represent the finest that the largest corporations have to offer. The proof is in the pudding.
评论 #28805819 未加载
vishnuguptaover 3 years ago
&gt; 13. Your data is the most important part of your system<p>+1. Most (including me) internalise, if at all, this lesson the hard way through trial and error.<p>I wish this is was taught in colleges. Software is mostly about manipulating data and it&#x27;s a pity that not much is taught in a structured manner about building systems around data.<p>I expected Domain Driven Design (DDD) would address this but it doesn&#x27;t.
评论 #28799513 未加载
评论 #28797905 未加载
评论 #28798223 未加载
mrpotatoover 3 years ago
&gt; 1. I still don’t know very much<p>&gt; “How can you not know what BGP is?”<p>I learned a while ago that answering someone who asks you &quot;What is X?&quot; and replying with a phrase similar to the above is probably one of the worst ways to broach the subject. It comes off as questioning the person&#x27;s intelligence&#x2F;knowledge.<p>Instead try to see it as a teachable moment. If it is something you think is cool and&#x2F;or you are passionate about, you should be excited that you can show your friend&#x2F;coworker something really cool. ie: &quot;I&#x27;ve never seen Rick and Morty&quot;, &quot;You are absolutely going to love that show. I know what you will be binge watching this weekend!&quot;<p>Anyhow, to put it bluntly, don&#x27;t be a dick about it.
评论 #28799241 未加载
crypticaover 3 years ago
Amazingly, I agree with every single point.<p>&gt;&gt; Nobody asks “why” enough<p>This point is the most important IMO. It&#x27;s so common for people to do things without asking themselves why they&#x27;re doing it. Every line of code should fulfill a clear purpose. You want to avoid writing code which is difficult to explain to a non-technical person.<p>&gt;&gt; People don’t really want innovation... If you believe in what you’re doing, and know it will really improve things, then brace yourself for a long battle.<p>This sounds ridiculous at a glance, but it 100% matches my own experience in pretty much every company and project I&#x27;ve ever worked on.<p>It applies to everything; jobs, getting funding. Nobody wants to see real innovation and nobody wants to see real talent. If you&#x27;re too good as a developer and innovate too much, developers who work for big companies will get jealous and they will reject you. If you&#x27;re very good, you need to pretend to be mediocre and above all; compliant.
评论 #28797846 未加载
评论 #28799465 未加载
评论 #28798809 未加载
sporedroover 3 years ago
I feel like once you’ve worked on a few projects the desire to “reinvent” the wheel is quickly destroyed. The main thing they never teach in school and you really can’t understand until your doing it is maintenance.<p>Projects are like a balancing act where you need to weigh the pros and cons of every choice and choose the best one. The hard part is being able to do that and do it in a reasonable amount of time.
评论 #28799763 未加载
debarshriover 3 years ago
One of the things I have noticed lately is that people who change jobs often have completely different perception of the industry as compared to people who don&#x27;t change that often. Both of the strategies have pros and cons. For instance people who change jobs quite often don&#x27;t seem to care alot about the business per say they seem to emphasis on the technology more as compared to people who stick to one org. However, people who have changed job quite often, seem to have seen broad variety to problem sets and always bring fresh new pair of eyes to existing business. People who stick to the same org, do tend to become very conservative but it often good for the business as people not quitting brings lot of stability. Again, it really depends on situation, person to person. In general this is my observation.
评论 #28800284 未加载
评论 #28805906 未加载
StatsAreFunover 3 years ago
5. Software is a means to an end<p>Yes, yes and yes. Many times we lose sight of the fact our job is to support the business (money-making) functions of the company. The software itself isn&#x27;t the end-all-be-all point of what the organization does unless you write open source software all day long and survive off donations. My gut tells me that most departments are like this and sees themselves as the core of the company but I think software engineers think of themselves more highly than most (and more highly than they should). A bit of humility would really help - myself included more than most probably.<p>I agree with a lot of what he says... A few points are a little off IMHO but I&#x27;ve only been doing this for a few more years than this gentleman. Perhaps I&#x27;ll feel differently in a few more. :)
winternettover 3 years ago
In my 22+ years of work as an Engineer&#x2F;Architect, I&#x27;ve found that:<p>1. Software development skill means nothing if the power goes out, always cultivate other skills and passions, those passions will drive you to develop more meaningful, functional, and well informed tools.<p>2. My resume never parses correctly on the job application, no matter how big the company is, and I&#x27;ll always have to retype it over again.<p>3. The level of functionality on each company&#x27;s web site job application tool tells you everything you need to know about the development quality and talent within each company.
评论 #28799390 未加载
chownover 3 years ago
&gt; No one is going to tell you in an interview that they are going to be unreliable, abusive, pompous, or never show up to meetings on time. People might claim they have “signals” for these things…<p>I had a great interview with one of the FAANG companies. The technical interviews, 6 of them in a row!, felt more like they were wanting to see me fail spectacularly rather than focus on my approach of solving whiteboard problems. Still, I did more than average to get &quot;pass&quot; from them. But HR dropped me because she didn&#x27;t like the answer to &quot;what&#x27;s your weakness?&quot; question along the lines of - &quot;I focus too much on job at hand to an extent that I struggle with work-life-balance and working on it. If I can overcome that and learn how to take breaks timely I might be more productive.&quot;. HR didn&#x27;t like it because it was not one of the canned responses she was expecting ¯\_(ツ)_&#x2F;¯
评论 #28803744 未加载
评论 #28808908 未加载
elihuover 3 years ago
&gt; &quot;The only way someone can be a 10x programmer is if you compare them to 0.1x programmers. Someone who wastes time, doesn’t ask for feedback, doesn’t test their code, doesn’t consider edge cases, etc… We should be far more concerned with keeping 0.1x programmers off our teams than finding the mythical 10x programmer.&quot;<p>I think I would add to that that 0.1x programmers are to some extent a product of their environment. Maybe there are people who are inherently 0.1x programmers and there&#x27;s nothing anyone can do about it, but I think it&#x27;s also the case that the local engineering culture can turn people into 0.1x programmers. So, the important thing is to figure out how that happens and don&#x27;t do it.<p>Some examples: make people do arbitrary repetitive tasks. Hide information. Make infrastructure changes frequently to the point where people regularly have to ask &quot;how do I do this important job function today?&quot; Create domain-specific languages and don&#x27;t document them. Use build systems that don&#x27;t work reliably. Have CI systems that require users to wade through megabytes of errors to find the one line that failed. Invent new words for things, or use old words in creative new ways. Speak in acronyms. Create technical documentation (if at all) that never explains &quot;why&quot;. Don&#x27;t set aside time for training. If a question warrants a one-sentence answer, filibuster for ten minutes to prevent follow-up questions from being asked. If it warrants a ten minute answer, reply with a sentence. Especially if you&#x27;re in a very different time zone, and every follow-up question adds 24 hours to task completion time. Treat &quot;programming ability&quot; as some immutable attribute that is conferred on developers by completion of a bachelor&#x27;s degree in a computer-related field, and that these programmers are interchangeable and their skills always current and directly applicable to the task at hand. Create Byzantine labyrinths of web-based tools that none can navigate without first having been shown the way through.
jartover 3 years ago
&gt; The 10x programmer is a silly myth. The idea that someone can produce in 1 day what another competent, hard working, similarly experienced programmer can produce in 2 weeks is silly.<p>The only thing about the 10x programmer saying that&#x27;s a myth, is the assumption that it&#x27;s a quality inherent to the person. You can absolutely accomplish the same level of impact in a week that might take a competent respectable colleague a year, and you don&#x27;t have to be a genius to do it.<p>You just have to have a good idea at the right moment. It doesn&#x27;t even have to be a constant thing. In my career, sometimes I&#x27;m just a normal programmer and sometimes I do some bona fide 10x work. A lot the times the 10x work I get the most kudos for will be some absurdly simple low-effort yet impactful thing, like sending pull requests to projects that change a single line of code to bump up a version number in an xml file that has 0days. But because the idea is so simple and almost silly, I can do it a few hundred times and have more impact. Then I can take into consideration that many of these projects I&#x27;m fixing are libraries or frameworks, so I&#x27;m not only rescuing the project but rescuing their users too.<p>That kind of transitive impact is what makes 10x possible. Programming isn&#x27;t like a 19th century assembly line where labor had a very static measurable and manageable impact. Our culture is still catching up in fully understanding and internalizing the enabling impact that computers make possible.
quickthrower2over 3 years ago
The main thing I’ve learned is there is a glass ceiling of pay as a SWE and although it seems to pay well, once you have a family to support its pretty much working class. Trying to make money in side hustle is futile for most (You are the commodity compliment to FAANG etc.). Investments are the way to go to increase comfort of living.<p>Why all the money focus and not about craft and blah blah? Because you are a worker for a business. You will unlikely get to build your magnum opus at work and probably won’t have the energy to do that at the weekend (for most of us). So programming as a job is heavily about earning a living. Work hard, do a great job. If you are 10x then what are you doing working for someone else anyway? Are they paying you 1M a year?
khazhouxover 3 years ago
Anyone who denies the existence of the 10x programmer has either simply not encountered one, or is blinded by their own ego. In my 20 years in industry, I can think of maybe 10 engineers I&#x27;ve directly worked with who were an order of magnitude above all their peers in terms of both code volume AND quality.<p>These are people who will implement a feature with clean code, well commented, well thought-out and meeting the exact need, correctly structured, in the time that the entire rest of the engineering team would still be scratching their head and debating what to do. One guy years ago who refactored the entire backend at a startup in 2 days, then asked &quot;OK, what can I work on now?&quot; Another guy who wrote an IPC system we needed, which I&#x27;d expected would take us 6 weeks, and he did it over the weekend (and it worked perfectly). Another who debugged and patched a critical infrastructure problem in a very complex system, in about 2 days... and would do this time and again, just cranking out features and fixes, week after week.<p>* &quot;Oh, but their code must have been rushed!&quot; It was fast but not rushed. Some of the best code I&#x27;ve seen.<p>* &quot;Oh, but they didn&#x27;t consider user requirements.&quot; They did.<p>* &quot;Oh, they must have been insufferable to work with!&quot; For the most part, super friendly and great teammates.<p>And so on.<p>So, sorry if it offends, but some people are just <i>much</i> better developers than everyone else around them (including, possibly yourself). I was much happier after I realized and accepted this fact!
评论 #28803170 未加载
评论 #28803163 未加载
wallace01over 3 years ago
Thanks, love the post. I agree with everything you said. Recently, I was in an interview for a company and they gave me three requirements for a versioning tool I should design conceptually. I started with the data models and then the backend &#x2F; frontend communication. I wasn&#x27;t told who this versioning tool should be for, how many people would use it and other important domain related things, so I said I&#x27;ll concept a simple solution that would work fine for a group of people but would have to be refactored if we&#x27;d want to scale up and support thousands or more connections simultaneously, I was told &quot;sure, go for it&quot;.. Once I finished I said that I was confident that a versioning tool has way more complexity and requirements than described initially within those three sentences and that 60 minutes to design such system in a stable way is optimistic.<p>A week after the interview I was told that they don&#x27;t want to continue with me because I didn&#x27;t ask enough questions and that my solution wouldn&#x27;t work if millions of people would use the system at the same time. I think I avoided a bullet
steve_taylorover 3 years ago
<i>12. People don’t really want innovation</i><p><i>People talk about innovation a whole lot, but what they are usually looking for is cheap wins and novelty. If you truly innovate, and change the way that people have to do things, expect mostly negative feedback. If you believe in what you’re doing, and know it will really improve things, then brace yourself for a long battle.</i><p>Ain’t that the truth. I’ve come up against this my entire career.
agomez314over 3 years ago
&quot;We may be the culmination of our experiences, but we view them through the lens of the present.&quot;<p>This is so important. I think a lot of the advice given out there comes with the bias of having been successful doing it. There are countless others who have tried to scale the same ladder, doing the same things even, and still did not achieve the same success.
brabelover 3 years ago
&gt; You can design the most technically impressive thing in the world, and then have nobody want to use it. Happens all the time.<p>Very true... just yesterday someone posted about the Pony language main user switching to Rust:<p><a href="https:&#x2F;&#x2F;www.wallaroo.ai&#x2F;blog-posts&#x2F;wallaroo-move-to-rust" rel="nofollow">https:&#x2F;&#x2F;www.wallaroo.ai&#x2F;blog-posts&#x2F;wallaroo-move-to-rust</a><p>Despite Pony being an impressive programming language, technically, with a lot of promise, pretty much only one company ever used it and now that it&#x27;s moved on, Pony is pretty much in the camp &quot;no one uses it&quot;.<p>And much of it is serendipity. A few tiny things could&#x27;ve happened differently, and now everyone would be talking about Pony, not Rust. Similarly, perhaps, happened with Ceylon (anyone remembers that??) VS Kotlin.
goodpointover 3 years ago
20 years of experience here. My little contributions:<p>21. Do not mistake hype and popularity for quality.<p>22. The best code is no code, but configuration is worse than code. Maintaining 1000 lines of YAML is worse than 9000 lines of code.<p>23. The best code is no code, but replacing a script with a zoo of tools and libraries is often worse.
评论 #28799106 未加载
评论 #28799461 未加载
new23dover 3 years ago
A relevant and a fascinating read is this recent paper by Barry M. O’Reilly titled The Machine in the Ghost: Autonomy, Hyperconnectivity, and Residual Causality [1].<p>&gt; This article will examine the unnamed and potentially devastating constraining effect of software on human autonomy. I call this concept residual causality, where software design decisions made long ago in different circumstances for different reasons constrain human action in an unknown future. The less aware the designers of software systems are of complexity in social systems, the more likely they are to introduce residual causality.&quot;<p>[1] <a href="https:&#x2F;&#x2F;www.mdpi.com&#x2F;2409-9287&#x2F;6&#x2F;4&#x2F;81&#x2F;htm" rel="nofollow">https:&#x2F;&#x2F;www.mdpi.com&#x2F;2409-9287&#x2F;6&#x2F;4&#x2F;81&#x2F;htm</a>
ozimover 3 years ago
I think I agree with every point on that post.<p>Only thing that I would add to the context:<p>If someone is a junior developer and has position where he has to &quot;just write code&quot; don&#x27;t worry much about that advice. Yes you should understand what this advice is and look for ways to grow into that mindset but as junior dev such person still has privilege to fully focus on coding stuff as quickly as possible to learn have their movements worked out.<p>Then as such junior gets to 2 or more years of experience this advice should sink in and such person should start working as those points guide. After 2 years of being code monkey and having the feel for the code one can start looking at bigger picture.
apiover 3 years ago
I’ve been into it about 25 years. Here’s a few of mine.<p>1. This industry is very faddish, and many fads are designed to make money for the people driving them or lock you into someone’s ecosystem. Avoiding those is a superpower. A ton of today’s cloud native trends fit into this category. They are gateways to a paradigm where you buy a lot of things as a service at a massive markup that are relatively easy to do locally or obtain at much lower rates.<p>2. Simplicity is harder than complexity. Managing complexity is merely clever while eliminating it is intelligent. Eliminating it without sacrificing coverage of the problem domain is genius. There is some very interesting academic literature on the idea that intelligence is or at least heavily involves data compression (and that this is what &quot;learning&quot; is), so this has some basis beyond the field.<p>3. Unfortunately re: #2 more complex less elegant solutions often win. Many argue that this is because they capture more of the problem domain, but I often disagree. I think it&#x27;s a mixture of sophomore developers being impressed by complexity (having not yet learned #2) and the fact that complexity creates industries where money can be made on adjacent software, services, and consulting. As a result of the latter complex clunky solutions can be better at building an ecosystem full of self-interested evangelists. Recent example: Kubernetes vs. the Hashicorp stack.<p>4. If you make something work, you are only maybe a quarter of the way to making it a product. UI&#x2F;UX is the rest of the journey. UI&#x2F;UX tends to not be fun, so people have to be paid to do it. This is why open source and open systems almost always fail to achieve wide adoption beyond developers and IT people. They have no economic model, so they can&#x27;t hire people to make the product usable for people other than nerds.<p>5. Infosec people are usually afraid of the wrong things. Most breaches involve social engineering or a passive mode of entry. Infosec people like to obsess about things that are sexy like cryptography but will happily type &quot;npm install&quot; as root on production and pay far too little attention to security against social engineering vectors.<p>6. There are 10X (ish) developers just like there are 10X athletes, 10X mathematicians, 10X writers, 10X salespeople, 10X musicians, and so on. The reason many people don&#x27;t believe in 10X developers is that it&#x27;s so hard to objectively measure developer productivity, especially at scale.
DrBazzaover 3 years ago
21. is that management cannot, will not, and will never understand why open plan offices are the worst for reducing productivity. You don&#x27;t want the plebs to also have their own offices.
评论 #28800796 未加载
ChrisMarshallNYover 3 years ago
I like the advice (and the &quot;context&quot; caveat, at the start).<p><i>&gt; The best code is no code, or code you don’t have to maintain</i><p>I always say &quot;The best code I write, is the code I don&#x27;t write.&quot;
评论 #28798129 未加载
sunnyday1337over 3 years ago
I have seen many similar posts what people have learned but not once have I seen:<p>&quot;Don&#x27;t assume anything&quot;.<p>So many times when shit hit the bricks because someone assumed something about some other thing they clearly don&#x27;t know everything about. Which eventually lead to the system failing.
评论 #28797998 未加载
评论 #28797869 未加载
评论 #28797881 未加载
UncleOxidantover 3 years ago
&quot;1. I still don’t know very much&quot;<p>I&#x27;ve been in the game for almost 30 years. I often feel like I know less than I thought I did 25 years ago, and that I know less as time goes by. I&#x27;d also have this as my #1 on the list because it just feels so surprising. I think most of us start out in our 20s thinking that in 30 years we&#x27;ll have mastered the field, but it definitely doesn&#x27;t feel like that, not even close.
评论 #28803210 未加载
Tade0over 3 years ago
10. I don&#x27;t think the bottom end of the scale is zero. I&#x27;ve seen people being actively harmful to the project.<p>That being said where you lay on the scale depends on context.<p>In my previous project I was a [-0.25;0.25], so I quit, because I was miserable and so were my teammates who had to work with me.<p>Now I&#x27;m doing great and even helping others be more productive.
agentultraover 3 years ago
<i>Avoid the word &#x27;just&#x27; and be suspicious of those that use it</i>: It&#x27;s <i>just</i> a new model and a few pages, how hard could it be? It should take <i>just</i> a couple of weeks. When people use this word they are being overly optimistic about something they&#x27;re not sure of.<p><i>It&#x27;s harder than you think</i>: The name of the game is to avoid fooling yourself and you&#x27;re the easiest person to fool (that&#x27;s from Feynman). If the problem seems hard it probably is harder than you think. Be ruthless and don&#x27;t settle for unsatisfactory, hand-waving solutions to these problems. Most people can&#x27;t detect deadlocks or temporal properties of concurrent programs in their heads.
maerF0x0over 3 years ago
&gt; 19. Interviews are almost worthless for telling how good of a team member someone will be<p>I&#x27;ve been pondering the wisdom of having engineers do interviews at all. Interviewing, and getting someone to reveal their hand to you, is a massively specific skill, one that few get good at, let alone software engineers. Why is it that we think a 2 hour course on ethics and STAR can make someone capable of telling the difference between a con artist and a genius?<p>I do wonder if having a professional hiring team to dig into who the person is, and then just trial them for competence would be a superior strategy?
评论 #28803293 未加载
khalilravannaover 3 years ago
This is a great list. My two from 10 years of experience would probably be:<p>- Simplicity is everything. Complexity is fun but business is not about fun. It’s about solving problems. It’s about having other people be able to read your code and quickly understand it. Or having a system that can be debugged without a PhD in the specific tool you’re using.<p>- Everything is a tradeoff. If something feels too good to be true it probably is. If it’s easy up front, it’s probably hard in other ways. If you want to make something faster you’ll probably need to make it more complicated.
n_timeover 3 years ago
Wish there was more philosophy of science and exploration into what &quot;technology&quot; means in CS programs. Maybe get undergrads to read Crime and Punishment by Foucault. Not saying he&#x27;s the be-all end-all but just that perspective of seeing technology as subjective and situated in historical contexts.<p>Technology in CS ends up instead being taught to be magical progress fuel that brings us towards the inevitable future rather than tools built by people with access to capital in order to achieve specific ends
评论 #28798988 未加载
Arjunaover 3 years ago
<i>”The 10x programmer is a silly myth.”</i><p>Incredibly high performers exist, but are rare.<p>For example, the following quote is from a talk given by Gabe Newell.<p>(Unfortunately, I do not have the URL to the source video for this quote.)<p><i>“At IBM in the 1980s, typical productivity would be 1,000 debugged, shipped lines of code per year. That was the metric that they used for their median employee. Where as, when we were shipping Half Life 1, one employee, Yahn Bernier, was shipping 4,000 lines of code per day.”</i>
评论 #28800307 未加载
评论 #28800296 未加载
评论 #28800285 未加载
everybodyknowsover 3 years ago
&gt; Good written communication is one of the most important skills for any software engineer to master.<p>But there is no &quot;mastery&quot; -- lifelong effort is required from all of us, especially to avoid falling into fashionable bad habits of the moment propagated so vigorously by our social media.<p>&gt; ... good of a team member ...<p>&quot;The word &#x27;of&#x27; often intrudes where it does not belong, as in &#x27;not that big of a deal&#x27;&quot;<p>- Garner&#x27;s Modern English Usage, 4th edition, page 647.
austincheneyover 3 years ago
Point 12 is objectively the most true in practice.<p>In my 20 years of experience quality of software engineer comes down to personality, the ability to make decisions based upon evidence more than intuition and the ability to make decisions in the face of insufficient evidence. There is a certain vision of systems that cannot be taught as many people are incapable of accepting concepts of economic abstractions outside what they can put their hands on.
wallflow3rover 3 years ago
Thanks for taking the time to share your experience. I appreciate you starting with context and the sections about innovation and data had me laughing.
the_only_lawover 3 years ago
&gt; “How can you not know what BGP is?” “You’ve never heard of Rust?” Most of us have heard these kinds of statements, probably too often.<p>My problem is I’ve heard of it, probably even know a bit about it but never used or worked with it. Meanwhile it seems like everyone around me is both an insane domain expert in their own thing while also a pretty damn good generalist having worked across everything.
Buttons840over 3 years ago
&gt; 4. The best code is no code, or code you don’t have to maintain<p>&gt; 17. Keep your processes as lean as possible<p>&gt; 20. Always strive to build a smaller system<p>He stops just short of saying it, but IMO a program with fewer lines of code is almost always better. You can write your Java in Python and have it be 1&#x2F;5th the lines. You can drop the classes and use functions and save some lines.<p>Exceptions to this rule only happen because lines of code isn&#x27;t an infallible measure of &quot;size&quot; or complexity.<p>&gt; Project size is easily the most significant determinant of effort, cost and schedule<p><a href="https:&#x2F;&#x2F;blog.codinghorror.com&#x2F;diseconomies-of-scale-and-lines-of-code&#x2F;" rel="nofollow">https:&#x2F;&#x2F;blog.codinghorror.com&#x2F;diseconomies-of-scale-and-line...</a><p>This comes to mind after having written some short pieces of code which get &quot;improved&quot; by others. But all they did was move things into different files and turn some functions into classes. As though what makes good code is trivially wrapping everything in a class. I can&#x27;t understand it.
评论 #28799641 未加载
评论 #28799561 未加载
SergeAxover 3 years ago
&gt; We should be far more focused on avoiding 0.1x programmers than finding 10x programmers<p>Exactly my words two weeks ago: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=28640661" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=28640661</a><p>We as an industry really should put a lot of effort into helping 0.1x coders improve their skills to 1x level.
shantnutiwariover 3 years ago
Agree with most of this.<p>&gt; 1. I still don’t know very much<p>Same here, Im still realising how much I dont know.<p>&gt; The 10x programmer is a silly myth.<p>Yes it is. It&#x27;s a stupid harmful myth. Everyone on HN and Reddit think they are the &quot;10xers&quot;, and its used as an excuse to be rude and insufferable.<p>Some time ago, I decided I&#x27;d be happy being a 1x programmer[1]<p>&gt; Don’t mistake humility for ignorance<p>Very true. Some of the best engineers I worked with, those who would never get job at these 10x companies, were quiet and reserved. But when you actually talked to them, you realised it was humility and a willingness to learn.<p>&gt; Interviews are almost worthless for telling how good of a team member someone will be<p>Yes, interviews are just a form of hazing. The survivors are those who can stand the hazing, not the best programmers<p>1. <a href="https:&#x2F;&#x2F;new.pythonforengineers.com&#x2F;blog&#x2F;confessions-of-a-1x-programmer&#x2F;" rel="nofollow">https:&#x2F;&#x2F;new.pythonforengineers.com&#x2F;blog&#x2F;confessions-of-a-1x-...</a>
评论 #28800791 未加载
评论 #28806339 未加载
unobatbayarover 3 years ago
The sad realisation that I&#x27;m the 0.1x software engineer.
评论 #28801666 未加载
jimt1234over 3 years ago
The one thing I&#x27;ve learned in software&#x2F;computers: The more I learn, the less I know.<p>To survive in this field, one has to accept the fact that everything he&#x2F;she&#x27;s worked so hard to learn and master is gonna be replaced by something new in a few years. Don&#x27;t fight it. Embrace it.
mooredsover 3 years ago
I loved a lot of this list, but the best part was the disclaimer in front. I&#x27;ve given talks about software development in the past and usually start with a similar disclaimer.<p>If I am giving you advice, you should know my context. It&#x27;ll help you determine if my advice is useful in yours.<p>Bravo!
nicholastover 3 years ago
If you try to wait for the money making opportunity in order to build something it may never come. Just start building. Keep building. There are more ideas at the end of a long path than there are at the start. If you don’t keep building they will remain unseen.
tomxorover 3 years ago
&gt; Software engineers, like all humans, need to feel ownership<p>I&#x27;ve always found this to be very true personally. Unfortunately fear often directly opposes it, i.e concepts like &quot;what if that guy gets hit by a bus&quot; which are valid but sometimes taken too far to the point of attempting to make everyone easily &quot;replaceable&quot;... i&#x27;ve a saying to warn of this that has helped me alleviate such fears in others so far:<p>If you make your entire developer team replaceable, they will create code and products that are equally replaceable and hold no value. People are the company, they need to be valued as such.
cbovisover 3 years ago
Excellent advice. I would add:<p>Showcase your work as much as possible and refine your ability to do so over time - Not only does regular showcasing of things you&#x27;ve built improve your reputation within a company but also allows you to disconnect from the implementation and focus on how something will be used. You&#x27;ll often find bugs, shortcomings, or opportunities for improvement that you may otherwise have overlooked. Look for opportunities to showcase wherever possible and advocate for opportunities if they don&#x27;t exist already.
dragonwriterover 3 years ago
&gt; The 10x programmer is a silly myth. The idea that someone can produce in 1 day what another competent, hard working, similarly experienced programmer can produce in 2 weeks is silly.<p><i>N</i>× programmers for <i>N</i>&gt;1 are mostly not <i>N</i>× cowboy solo code slingers, lots of gains are in enabling other members of the team.<p>The idea that programmer contributions to output are all in solo code slinging is a close cousin of the myth “programmer contributions can meaningfully be measured in lines of code”.
评论 #28801861 未加载
mixmastamykover 3 years ago
&gt; Sometimes the noisiest people are the ones we want to listen to the least.<p>Yes, especially umm... everywhere in life. `s&#x2F;sometimes&#x2F;most of the time&#x2F;`<p>&gt; Sharks, not dinosaurs<p>Gonna remember that one, thanks.
agonmonover 3 years ago
&quot;People talk about innovation a whole lot, but what they are usually looking for is cheap wins and novelty.&quot; This rings true from being at a Fortune 100 going through &quot;digital transformation&quot;. So much jabber about &quot;innovation&quot; and AI &#x2F; machine learning this and that, when what they really wanted was just to do what everyone else was doing, and just implement similar systems to what Amazon had done a decade+ ago.
lukaslalinskyover 3 years ago
I&#x27;d say the top lesson I learned is that when you get a list of requirements from someone, most of the time they are not 100% set on them and if they agree to change something very minor, it can allow you to create significantly simpler solution and all parties will benefit from that.<p>Junior developers often get lost while trying to design a super complex system, which satisfies all the requirements, while it doesn&#x27;t really need to be that complex.
hhyndmanover 3 years ago
An excellent article. Thank you for your insights. I used to run a software engineering practice and I must admit that almost all of your points resonated with me.<p>I&#x27;d like to add that one should catch oneself when falling into the &quot;Perfect is the enemy of good&quot; trap. As engineers, we would like things to be perfect, but sometimes at the peril of late delivery, little feedback, and development of features not required.
l2clusterover 3 years ago
&gt; 11. One of the biggest differences between a senior engineer and a junior engineer is that they’ve formed opinions about the way things should be<p>I found that another thing which separates a junior from a senior is tendency to give up and cut corners. Stuck a wall making that integration test work? get back to it after the current task, don&#x27;t settle on manual testing.<p>But maybe that&#x27;s a trait of bad developers, rather than junior ones.
评论 #28799312 未加载
评论 #28799145 未加载
journey_16162over 3 years ago
&gt; The 10x programmer is a silly myth. The idea that someone can produce in 1 day what another competent, hard working, similarly experienced programmer can produce in 2 weeks is silly.<p>I think the 10x programmer myth was never about productivity. The idea is more about creativity. I.e. one creative programmer can create a product that would have never existed otherwise.
评论 #28801071 未加载
RayVRover 3 years ago
The 10x programmer discussion feels a bit silly partly because it’s on the wrong scale. The real scale is more like this:<p>In a specified amount of time, N, what is the conditional probability that the engineer, e, can design and code a solution which is (relatively) error free?<p>This shifts into [0, 1] and is really asking the more important question.
papitoover 3 years ago
# 20 - Always strive to build a smaller system, is probably the most important one. The new generation of engineers have yet to learn (again) that complexity kills. The amount of resources spent maintaining unnecessary complexity is staggering. <i>Your small thing does not have to be a distributed system</i>.
yoyarover 3 years ago
It was alluded to in the list but I like this great quote:<p>&quot;the best way to deal with complexity is to remove it&quot;
mandeepjover 3 years ago
&gt; We should be far more focused on avoiding 0.1x programmers than finding 10x programmers<p>I disagree here. A 10x programmer (or whatever other metric you want to use) brings a high level vision and uses that to turn around things faster like building Dynamics UIs, automation, or other tools.
begueradjover 3 years ago
&quot;If you don’t have a good grasp of the universe of what’s possible, you can’t design a good system&quot;<p>That is what the &quot;old&quot; models such as waterfall say: as a first phase, complete and accurate software requirements list to be captured in a product requirements document
评论 #28799485 未加载
protomythover 3 years ago
Enterprise Software is at the mercy of every bureaucracy that the enterprise must deal with and the interactions between bureaucracies can create incredibly complex non-logical logic.<p>Just remember, at one point every gallon of biodiesel in the US had its own serial number.
ipaddrover 3 years ago
&quot;Nothing worries me more than a senior engineer that has no opinion of their tools&quot;<p>Nothing worries me more than the opinioned. Open your mind. You shouldn&#x27;t have deep opinions on your tools because they change, your need and understanding of them changes.
评论 #28875440 未加载
jjiceover 3 years ago
I liked 8 a lot<p>&gt; Every system eventually sucks, get over it<p>I&#x27;m a fresh recent grad developer, and this is good to know to calm me down from over architecting. I&#x27;ll do my damnedest, but it&#x27;s to know it&#x27;s not awful if things get a bit messy eventually.
评论 #28799417 未加载
mherrmannover 3 years ago
&gt; Software engineers should do anything that requires them to keep their written communication skills sharp.<p>In my opinion, code is nicest when it <i>is</i> written communication. When it is almost the same as teaching someone about a problem domain.
评论 #28875414 未加载
spionover 3 years ago
&gt; they’ve formed opinions about the way things should be<p>I feel the opposite. I&#x27;d rather have no opinions rather than have strong opinions that prevent me form seeing new possibilities. Infact, I work hard on keeping my opinions under control.
aehlsfover 3 years ago
Reinventing the wheels lol it’s everywhere. Not just in software engineering field. Some people do it to look busy and others do it to keep employed! Thanks for sharing your wisdom. I have enjoyed reading your writing.
johanneskanybalover 3 years ago
Similar experience and life path, agree with each one of these really, very valuable. The silly 10x argument which is quite prevalent around here especially, probably says a bit about the audience.
kevmo314over 3 years ago
&gt; &quot;6. Sometimes you have to stop sharpening the saw, and just start cutting shit&quot;<p>Yeah no kidding. I learned how to write code in notepad but now it&#x27;s like what happened to me :(
wnevetsover 3 years ago
There are so many items on this list that I&#x27;ve internalized over the years and this has done a great job breaking them down into a paragraph of text.
johnmatoover 3 years ago
This is an interesting perspective. As a developer, I already realized that there&#x27;s too much to learn as our technology is progressing rapidly.
nevesover 3 years ago
As Very nice advice. I really like this phrase: &quot;I’ve seen a lot of systems where hope was the primary mechanism of data integrity. &quot;
sas224dbmover 3 years ago
Learned: software that you write will ALWAYS be for other people to pick-up, and that is hard. Keeping things simple is a tool to that end.
JackFrover 3 years ago
30 years of experience, 2 more:<p>* You don&#x27;t know what the hard part was until the software is in production.<p>* If you know the right way to do it, do it the right way.
codedeadlockover 3 years ago
Great advice.<p>One of the things that I have learnt is how important effective communication is for software developers. It can make or break the products.
progxover 3 years ago
Expect always the worst case.<p>Don&#x27;t assume anything.<p>If it is not the worst case, be happy, it saves you work. If it is the worst case, be happy, you expected it.
brightballover 3 years ago
It’s rare that I see a post where I agree with it enough that I probably could have written it, but here we are.
SMAAARTover 3 years ago
Not a Software Engineer here, but in Operation here:<p>1. This is great advice<p>2. The overall spirit applies to any and all roles across any company.<p>3. YMMV
husamiaover 3 years ago
from 15 years experience. The best code is no code. I learned to say no 99% of the times. it works
tshanmuover 3 years ago
4. The best code is no code, or code you don’t have to maintain<p>5. Software is a means to an end<p>these x1000!<p>Thanks for a very succint, distilled list.
legoheadover 3 years ago
most valuable lesson I&#x27;ve learned in 20 years:<p>* companies and&#x2F;or owners don&#x27;t care about you. take everything you can get and don&#x27;t be shy about it. don&#x27;t listen to them when they continually tell you that you&#x27;re &quot;highly paid&quot;
revskillover 3 years ago
Programming to an interface rather than the implementation is the only rule to me.
Graffurover 3 years ago
&gt; 11. One of the biggest differences between a senior engineer and a junior engineer is that they’ve formed opinions about the way things should be<p>I don&#x27;t like this one. IMO it tells you nothing and assumes everyone shares the same culture of pushing opinions.
评论 #28875497 未加载
ctrlpover 3 years ago
This is a great list. Really appreciate all the experience.
pizzaknifeover 3 years ago
this one got me &quot;10. We should be far more focused on avoiding 0.1x programmers than finding 10x programmers&quot; - preach
dom96over 3 years ago
This is a great list, I often wonder how people come up with such lists. Is it a long-term conscious effort to write down points like these as they come to you or do they sit for a few hours and these points come to their mind. I can&#x27;t imagine being able to compile such a good list in a day.
ravenstineover 3 years ago
I have some comments as a software engineer of 8+ years of professional experience.<p>&gt; 1. I still don’t know very much<p>Yep.<p>&gt; 2. The hardest part of software is building the right thing<p>That&#x27;s definitely hard but I&#x27;d say it&#x27;s the <i>people</i> that are the hardest part.<p>&gt; 3. The best software engineers think like designers<p>I&#x27;m not sure I entirely agree. It&#x27;s also in total conflict with the growth economy the employs many of us; properly designing stuff takes <i>time</i>. No matter what, I always end up in a situation where &quot;they want this as soon as possible&quot;. Being able to take the time to actually design something seems more like the exception than the norm. The only way around it is experience so that something resembling good design can occur by knee-jerk.<p>&gt; 4. The best code is no code, or code you don’t have to maintain<p>&gt; 5. Software is a means to an end<p>&gt; 6. Sometimes you have to stop sharpening the saw, and just start cutting shit<p>Yes.<p>&gt; 7. If you don’t have a good grasp of the universe of what’s possible, you can’t design a good system<p>Honestly, I don&#x27;t that any of us have a good grasp of the universe of possibilities. A &quot;good&quot; system is highly subjective. Bad code is at least somewhat measurable if it doesn&#x27;t work, isn&#x27;t efficient, or takes a long time for engineers to understand.<p>There may be no such thing as good code. There&#x27;s <i>working code</i> and there&#x27;s code that fails to do its job.<p>&gt; 8. Every system eventually sucks, get over it<p>I&#x27;d put an asterisk in front of &quot;every&quot;. Many &quot;good&quot; systems turn out to suck not only because people <i>ruin</i> them but because engineers learn, grown, and change. While I tend to hate codebases more over time, there are some that I come back to years later and am still impressed by.<p>&gt; 9. Nobody asks “why” enough<p>Yes. This has to be part of company culture, however. Many get defensive when subordinates question even the simplest of things, no matter how much they encourage that you &quot;ask questions&quot;.<p>&gt; 10. We should be far more focused on avoiding 0.1x programmers than finding 10x programmers<p>Maybe, but I&#x27;ve met more 10x developers than I have 0.1x. And I&#x27;ve met exactly <i>one</i> 10x developer.<p>There was one guy who got canned at the first company that I worked for, and my bosses justified it because they thought he &quot;wasn&#x27;t doing anything&quot;. In actuality, he was directed poorly. Some people can just ignore bullshit management but others need seniors who can provide direction and some level of mentorship. That doesn&#x27;t mean they are 0.1x developers. It may mean that team leaders haven&#x27;t managed to find that developer&#x27;s particular strength.<p>The closest I&#x27;ve found to 0.1x developers were some dudebros I met during my education, but every one of them flunked out.<p>&gt; 11. One of the biggest differences between a senior engineer and a junior engineer is that they’ve formed opinions about the way things should be<p>I&#x27;ve always had opinions so I&#x27;m not sure I relate to this as a senior engineer. I have <i>more</i> opinions, and sometimes more nuanced ones, but in many ways I feel similar to how I did as a junior engineer. I&#x27;m frequently astounded by how much more I need to learn.<p>I guess the major difference I see is in the <i>kind</i> of opinions. Many juniors have opinions, but they are largely additive. Senior engineers who have been in the battle field long enough have opinions but they&#x27;re more <i>subtractive</i>, or saying &quot;you know, we don&#x27;t need to add more steps to our toolchain, and maybe we don&#x27;t need another framework&quot;.<p>&gt; 12. People don’t really want innovation<p>Innovation rocks the boat for businesses beyond a certain &quot;escape velocity&quot; and what many consider &quot;innovative&quot; is actually confusing since innovation by definition is <i>non-standard</i>.<p>&gt; 13. Your data is the most important part of your system<p>&gt; 14. Look for technological sharks<p>&gt; 15. Don’t mistake humility for ignorance<p>Yes.<p>&gt; 16. Software engineers should write regularly<p>Meh.<p>&gt; 17. Keep your processes as lean as possible<p>If I had things my way, I&#x27;d get rid of &quot;standups&quot; and &quot;retros&quot;, uninstall unadulterated bullshit like Pivotal Tracker in favor of something much simpler like Trello or even a Google spreadsheet, eliminate estimations, and only have meetings that are goal oriented.<p>&gt; 18. Software engineers, like all humans, need to feel ownership<p>&gt; 19. Interviews are almost worthless for telling how good of a team member someone will be<p>&gt; 20. Always strive to build a smaller system<p>Yes.
naruvimamaover 3 years ago
&gt; 11. ..... &gt; Nothing worries me more than a senior engineer that has no opinion of their tools or how to approach building software.<p>The more you learn the more you realise you were wrong.<p>Having an opinion has often come to mean one is a fan boy of something and will have it no other way.<p>I have heard team leads say &quot;this python code is bad because it uses no classes&quot; or &quot;we need to use EMR so we can process all customer data together&quot;<p>Bad opinions formed can be dangerous and counter productive.<p>Though I do agree that an opinion based on having a well thought out plan and experience is a sign of maturity.
评论 #28798152 未加载
评论 #28797983 未加载
评论 #28798410 未加载
评论 #28798020 未加载
评论 #28805165 未加载
评论 #28798184 未加载
jimmyvalmerover 3 years ago
Perspective by definition is something that requires time, so any top 10 list of this kind can&#x27;t be applied consciously with any rigor. I will say point 12 (everyone loves cheap wins, and hates substantive progress) is unadulterated (but unactionable) truth.
throwaway984393over 3 years ago
&gt; 20. Always strive to build a smaller system<p>K.I.S.S. is a great principle, but inexperienced devs really have no way to understand what is small&#x2F;simple and what isn&#x27;t.<p>If you find yourself doing 3 unrelated things before you can finally get to the one thing you were meant to be doing, it&#x27;s probably already too complicated. If you build it <i>really</i> simple, it can look under-designed, or inefficient, or out of date. But if you find yourself thinking, &quot;this would be better if it were a little bit more complicated&quot;, you might have just hit the sweet spot.
blindmuteover 3 years ago
&gt;The 10x programmer is a silly myth. The idea that someone can produce in 1 day what another competent, hard working, similarly experienced programmer can produce in 2 weeks is silly. It&#x27;s not a myth, or silly. It&#x27;s not even super uncommon.