TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Absolute truths I unlearned as junior developer

1529 点作者 dcu将近 6 年前

61 条评论

beat将近 6 年前
Admittedly, my first days as a junior programmer were before some of you were born, but I&#x27;m thinking of a particular format here...<p>Learned as junior: If you report an OS bug or some other deep problem, seniors will not believe you and assume you&#x27;re making excuses for your own bugs and lack of understanding.<p>Understood as senior: If a junior programmer tells me they found a system-level bug, I won&#x27;t believe them and will tell them to go figure out what&#x27;s wrong with their code.<p>Learned as junior: Legacy code is hard to read.<p>Understood as senior: Legacy code <i>that I wrote myself</i> is hard to read.<p>Learned as junior: Technical skills matter most.<p>Understood as senior: Communication skills matter most.<p>Learned as junior: New tech solves old problems.<p>Understood as senior: New tech creates new problems.
评论 #20126034 未加载
评论 #20124807 未加载
评论 #20127232 未加载
评论 #20125231 未加载
评论 #20125806 未加载
评论 #20124880 未加载
评论 #20125250 未加载
评论 #20127405 未加载
评论 #20127941 未加载
评论 #20127822 未加载
评论 #20127328 未加载
评论 #20126945 未加载
评论 #20126411 未加载
评论 #20127202 未加载
评论 #20126275 未加载
评论 #20125660 未加载
评论 #20130203 未加载
评论 #20125877 未加载
评论 #20124632 未加载
评论 #20126818 未加载
评论 #20127310 未加载
评论 #20130575 未加载
评论 #20126954 未加载
评论 #20125157 未加载
评论 #20126787 未加载
评论 #20129366 未加载
taneq将近 6 年前
The big one for me was the realisation that <i>the code doesn&#x27;t matter</i>. I mean sure, it does, to us. It&#x27;s what we do. But really, code doesn&#x27;t matter.<p>To the end user, what matters is that we solve their problem. We let them do their job, and we make that job as easy as possible. And that&#x27;s what they pay us for.<p>And to the company we work for, what matters is that we solve the end user&#x27;s problem, and that we do so in an expedient and economical manner, so that it costs less for us to do so than the customer pays us.<p>Of course, for us to <i>continue</i> doing this, in the long term, we need to innovate and architect and uphold standards and stay on top of technical debt. And all of that put together is &quot;make the code good&quot;. But that&#x27;s an end to the means, and the customer doesn&#x27;t care what horrors awake when they click that dialog box button as long as the result they needed pops out at the end.
评论 #20125236 未加载
评论 #20126492 未加载
评论 #20125420 未加载
评论 #20125042 未加载
评论 #20124510 未加载
评论 #20126196 未加载
评论 #20125153 未加载
评论 #20125026 未加载
评论 #20126016 未加载
评论 #20125695 未加载
评论 #20130495 未加载
评论 #20125504 未加载
评论 #20125248 未加载
评论 #20125723 未加载
评论 #20126323 未加载
评论 #20125843 未加载
评论 #20126680 未加载
评论 #20124499 未加载
评论 #20125051 未加载
docker_up将近 6 年前
Overall a good article, but I completely disagree with the notion that &quot;good enough is good enough&quot;.<p>I&#x27;ve been in a lot of code reviews where developers push back because it&#x27;s &quot;good enough&quot;. You need to maintain a defined level of quality otherwise codebases go to shit very, very fast.<p>I was recently told in a code review that a Cassandra read before a write (to ensure there were no duplicates) was &quot;good enough&quot; because a duplicate &quot;probably wouldn&#x27;t happen very often&quot;. Meanwhile, the consequences of a dupe would lead to a pretty bad customer experience.<p>I pushed back hard and forced the developer to rewrite his entire code. Would &quot;good enough&quot; be okay in this situation? My bar is much higher than this developer and I stand by my decision. We have the luxury of being tasked with solving customer problems and if we only strive for &quot;good enough&quot; every time instead of &quot;the best I can do within the constraints I&#x27;m given&quot;, then in my opinion your career won&#x27;t be very successful. We always have to make the best tradeoffs when it comes to time and expense, but the best developers are the ones that come up with the best solution and the best code that fits in a particular constraint.
评论 #20125263 未加载
评论 #20127234 未加载
评论 #20125418 未加载
评论 #20127213 未加载
评论 #20125273 未加载
评论 #20125781 未加载
评论 #20130989 未加载
评论 #20129545 未加载
评论 #20126094 未加载
评论 #20126443 未加载
评论 #20125666 未加载
评论 #20128970 未加载
评论 #20125752 未加载
评论 #20127344 未加载
评论 #20127540 未加载
AdmiralAsshat将近 6 年前
&gt; So imagine my surprise when I showed up at my first day on the job at a startup and found no tests at all. No tests in the frontend. No tests in the backend. Just, no tests.<p>That one hits home. I felt like I was being so <i>helpful</i> when I, fresh-eyed after finishing some entry-level C language book, suggested that we should implement unit tests to the legacy software.<p>The product lead, to his credit, did not chew me out, but stated very reasonably, &quot;This software is old, relatively stable, and will likely be dead or sunset in five years. It&#x27;s not worth the man-hours it would take to try retrofitting unit tests onto a piece of software this old, only for the product to be killed six months after we finish writing them.&quot;
评论 #20125696 未加载
asheikh将近 6 年前
My Absolute truth I unlearned as a Senior developer. your knowledge, hard work and quality of work is not important. The relationship that you have with your boss and your bank account is what you need to focus on.
评论 #20126793 未加载
评论 #20126957 未加载
评论 #20126109 未加载
redleggedfrog将近 6 年前
What a great article.<p>Definitely goes under the heading of &quot;Truths So True They Seem Obvious.&quot;<p>As for &quot;Disorganized or messy code isn’t the same as technical debt,&quot; I can&#x27;t look at messy code without automatically cleaning it up. It&#x27;s automatic as I read and understand. In the last 5 years I&#x27;ve probably checked in hundreds of PR&#x27;s of cleanup. If this takes anymore time and&#x2F;or effort on my part I don&#x27;t notice it. The only thing is someone has to merge it.
评论 #20124468 未加载
评论 #20128568 未加载
jeremycw将近 6 年前
As a Junior: Creating the most abstract grand architecture to apply to every facet of my application will solve all my problems.<p>As a Senior: Replacing all this architecture astronaut indirection with simple linear concrete code will solve all my problems.
edw519将近 6 年前
Excellent article! Thank you, Monica. You just put into words a whole bunch of stuff that I always &quot;sensed&quot; but never &quot;said&quot;.<p>After spending 7 million years (it sure seems like it) cleaning up the most vile garbage code you could possibly imagine, I&#x27;d like to elaborate on this:<p><i>Architecture is more important than nitpicking. While a small line of code could be improved, the stuff that tends to cause bigger problems down the line are usually architectural. I should’ve focused more on the structure of the application than tiny bits of code early on.</i><p>Architecture = the sum of all those seemingly unimportant &quot;tiny bits of code&quot;.<p>It seems like every time I have to refactor or (heaven forbid) rewrite, I have to start deep down in those tiny bits. I&#x27;ve worked places with all these &quot;genius&quot; architects, but when I dive deep down into the code, I find a sewer than couldn&#x27;t possibly support software life as we know it, no matter how brilliantly it was conceived.<p>Fellow programmers, you probably know exactly what I&#x27;m talking about, all those cancerous tiny bits that kill even the strongest patients:<p><pre><code> - variables so horribly named that no one could ever interpret them - 800 line iterations surely destined to be broken by a maintenance programmer - conditionals so illogical that no one can tell if they ever worked - early exits to hell that can only be fixed by rewriting - double negative logic that could not never fail to break - 8 lines of code where 1 could do - &lt;add your own&gt; </code></pre> Great architecture comes from both directions, &quot;above&quot; and &quot;below&quot;. From my experience (unlearned as a junior developer :-) ), 90% of the problems have always seemed to come from below.<p>Get good at the trees and the forest will flourish.
评论 #20126386 未加载
评论 #20126819 未加载
alexhutcheson将近 6 年前
Multiple of these points could be grouped under the general belief that &quot;Everything is equally important&quot;. The #1 change required for growing into a senior role is to form a habit of ruthless prioritization of how you spend your time (and your team&#x27;s time, if applicable).<p>Often you end up in situations where all of the following are true:<p>1. Your teammate or colleague is designing or implementing something.<p>2. You have different ideas about how that thing should be done.<p>3. Your ideas would produce an objectively better system.<p>4. Even though (3) is true, the improvement to the system or design isn&#x27;t worth the cost in your time, team velocity, team morale&#x2F;development, etc.<p>In that case, the right move is not to intervene, and to let your teammate design&#x2F;implement the system their way. This is hard to do, because most engineers are natural maximizers[1], but for most tasks you&#x27;re much better off with a satisficing[2] approach. This isn&#x27;t to say that you should never give feedback on designs or in code reviews - you absolutely should, but always remember that you have a limited budget for your own time and for team morale, and you should spend that budget on the feedback where it will make the biggest difference.<p>[1] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Maximization_(psychology)" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Maximization_(psychology)</a><p>[2] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Satisficing" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Satisficing</a>
评论 #20221377 未加载
arvinsim将近 6 年前
&gt; I also learned that job titles don’t “make” you anything. It’s kind of like, being a CTO with a 5-person team is different than with a 50-person team or a 500-person team. The job and skills required are totally different, even if the title is identical. So just because I had a “senior” job title did not make me a senior engineer at all. Furthermore, hierarchical titles are inherently flawed, and difficult to compare cross-company. I learned it’s important not to fixate on titles, or use them as a form of external validation.<p>Unfortunately, they do matter in the real world.
评论 #20124445 未加载
评论 #20124482 未加载
评论 #20124424 未加载
iamleppert将近 6 年前
&gt; &quot;Good enough is good enough&quot;<p>+1000 to this. Please don&#x27;t be the guy that slows me down and prevents me from delivering features because you insist on everything being perfect. I can&#x27;t tell you how many times and how much money people who are obsessed with code quality waste. They spend months polishing code only to get out a feature that no one uses and doesn&#x27;t matter. But hey, the code is &quot;perfect&quot;!
评论 #20127584 未加载
SamuelAdams将近 6 年前
&gt; Documentation lies<p>This is a very true statement, especially concerning legacy codebases. I have worked on some projects that have had several developers make changes to it.<p>The original developers were great: they commented every class, had comments for all the methods, and added comments for any complex or funky logic.<p>Then the changes came. And the next developers hacked and slashed the existing code base to meet the new spec. Except they did not update any of the comments, so now what was once true and reliable is now frail and questionable.<p>Now, whenever I inherit legacy code riddled with comments, the first thing I do is delete all the comments. This helps me focus on what the code is actually doing, rather than what someone thrice-removed said it should be doing.
评论 #20125641 未加载
评论 #20131206 未加载
harel将近 6 年前
I&#x27;ve been programming professionally for well over 20 years (and many years prior as a hobby), and held &quot;senior&quot; to &quot;C-level&quot; positions. in my eyes I&#x27;m still a junior kid learning new stuff all the time. When I stop seeing myself as that, I&#x27;ll switch vocation.
lukejduncan将近 6 年前
&quot;Loads of companies and startups have little or no tests&quot; which should scare you, or at least it would scare me if I joined a team.<p>You can definitely over test, but how can you possibly know what you built works (or still works when you change it for the 50th time) if you have no tests? There&#x27;s a trade-off with testing. Early in the dev cycle, not testing can make you go super fast (supposedly, this hasn&#x27;t been my personal experience but in general it seems to be true for teams). But you&#x27;ll plateau quickly and then at iteration 1+n you&#x27;ll just come to a screeching halt because you introduce bugs or the new engineer isn&#x27;t confident that they didn&#x27;t break downstream things and needs to manually test everything. Testing early will cause you to go slower earlier (again, not my personal experience but seems to be generally true of teams) but you&#x27;ll be significantly faster at iteration 1+n.<p>I usually summarize this as: testing early will on average make your development faster over the life of your codebase. Knowing this you can make trade-offs. Not testing early is probably better called prototyping. It&#x27;s OK to prototype in production if you need to. But know what you&#x27;re getting yourself into.
评论 #20125138 未加载
评论 #20124835 未加载
评论 #20124570 未加载
评论 #20126771 未加载
评论 #20124636 未加载
评论 #20124590 未加载
tombert将近 6 年前
About two years ago, I didn&#x27;t get a promotion to &quot;senior engineer&quot; that I thought I was going to, and I had a huge temper-tantrum to my boss about it as a result (I&#x27;m still surprised to this day that I didn&#x27;t quit on the spot, to be honest).<p>I was upset, because people that seemed to be contributing less and were less-qualified (at least from my admittedly-biased perspective at the time) were promoted to a higher level than me, and I got a fairly form-letter-esque answer of &quot;we don&#x27;t have the budget to promote you this time&quot;.<p>The next cycle, they corrected it, and I was officially a &quot;senior engineer&quot; on paper, and I realized how silly my hissy-fit had been. Sure, I guess having a bit more money was nice, but it&#x27;s not like it radically changed the quality of my life, it&#x27;s not like having a fancy title changed how people really saw me, and I didn&#x27;t even bother updating the title on LinkedIn.<p>I don&#x27;t think I was &quot;wrong&quot; in what I said. I do think that I deserved the promotion over someone else, but at the same time, I also tarnished a relationship with my boss and coworkers, and I let it get me far more depressed than it should have.<p>-------<p>I guess if any &quot;junior&quot; engineers are reading this, try and remember that a title is simply that: a title. They don&#x27;t matter a lot, try to not get too upset over them, and obsessing over something so nominal is a great way to build up anxiety.<p>EDIT: Just a note, I absolutely think you should call out a company if you feel like you&#x27;re being taken for granted. I&#x27;m not advocating complacency, just make sure that your hatred is directed to the right places and try to avoid getting too depressed.
评论 #20125125 未加载
评论 #20125780 未加载
评论 #20126570 未加载
评论 #20126846 未加载
评论 #20125021 未加载
评论 #20132097 未加载
评论 #20125264 未加载
exabrial将近 6 年前
The #1 absolute truth I unlearned was: The solution to your problem is the tech stack or framework you&#x27;re not using. Everyone in this industry seems to have tech wanderlust; using the latest and greatest and unproven is seen as sexy.<p>* &quot;Oh we could do that, but we&#x27;re on python 2.7&quot;<p>* &quot;Oh we could do that, but we&#x27;re using Java&quot;<p>* &quot;Oh we could do that, but we&#x27;re using a relational database&quot;
jasonlhy将近 6 年前
1. Code and communication are the most important. If you are writing extremely bad code, you will be annoyed how much time you will need to go though to find the bug. The more you do, the more you will not like to touch the code even they are written by you. (I have seen someone with this experience) Understanding what your teammates are doing is also important in order to support each other and provide valued advices, in this case code is a communication medium.<p>2. To write good software, we cannot just be a coder, we need to understand the business and the project management<p>3. There are many seniors became senior because of their age not their ability. I am not talking about using a particular tech, I am talking about their mind. Many of them still think like junior even they are at a senior position, the way they are working didn’t scale at all.<p>4. Fundamentals is very important. <a href="https:&#x2F;&#x2F;hackernoon.com&#x2F;the-doctor-and-the-scalpel-78656f508c9a" rel="nofollow">https:&#x2F;&#x2F;hackernoon.com&#x2F;the-doctor-and-the-scalpel-78656f508c...</a>
jmull将近 6 年前
Great post. Lot&#x27;s of good stuff.<p>Just to comment on one part at random:<p>Code reviews would be more useful if review feedback was categorized:<p>1. is this a matter of personal style? 2. is this a judgement call? 3. is this something that is just wrong and has to be fixed? 4. is this in-scope or actually a separate issue?<p>(This is off the top of my head, so this is more of an example of the kind of categorization I&#x27;m talking about than a proposal.)<p>It&#x27;s useful because it helps to set the direction and expectations on what to do about an item of feedback.<p>E.g. if you have a lot of 1. then the right &quot;fix&quot; might be to spin off a task to develop a common style-guide. (Or maybe fix an out-of-date a style guide, or to enforce an existing style-guide so that these issues don&#x27;t dominate code reviews, etc.). For 4. the resolution would be to open a ticket (or whatever the process is so it gets proper consideration, prioritization, etc.)<p>Where I am currently we spend a lot of effort figuring out what to do about review feedback (and I think we too often make non-optimal decisions which sucks time as well).
评论 #20126464 未加载
jasonhansel将近 6 年前
I think another truth to unlearn is &quot;users know what they want, and can express what they want in precise technical terms.&quot;
评论 #20125684 未加载
scriptkiddy将近 6 年前
I don&#x27;t know if I can call myself a senior. (none of the companies I&#x27;ve worked for have used senior&#x2F;junior in their job titles), but one of the most important pieces of information I&#x27;ve picked up is this:<p>The Simplest way is usually the right way.<p>What I mean is that fancy algorithms, sweeping design patterns, and &quot;clever&quot; pieces of code are generally not the best approach to 99% of coding specific problems.<p>Example: Nested for-loops. Generally a bad choice. When encountering a nested for-loop, one may be tempted to try and refactor it into some sort of recursive and highly-performant function with O(n) complexity, etc. You go through all that work and then realize that the most iterations that for loop will ever see is ~10. You just wasted a ton of time writing code that is more complex, harder to debug, and generally more opaque.<p>In my experience, I&#x27;ve seen this a lot in the context of premature optimization. I&#x27;ve also been the perpetrator many times as well.
评论 #20127007 未加载
评论 #20125711 未加载
评论 #20125587 未加载
评论 #20125897 未加载
juanbyrge将近 6 年前
One thing I learned as a developer for 12+ years is that the title is meaningless and where I work, many of the highest impact developers would be considered &#x27;junior&#x27; developers. I wonder why people have such an infatuation with the title &#x27;junior&#x27; and &#x27;senior&#x27;. Seems to be more prevalent in European countries.
rb808将近 6 年前
One thing the OP mentioned but I think isn&#x27;t talked about much is that for me everyone has their own style. Some people have great abstractions, others lots of tests, some more code comments, interesting variable name choices, some like functional-style, or lots of frameworks &amp; patterns etc. From our team I can often see who wrote something just from how its written.<p>Now as a junior I just wrote how I liked and hated everyone else&#x27;s code. Then came a long awkward phase where I tried to fit in closely with other people&#x27;s styles and figure out their intent and design - this is a very difficult way to write code and I wasn&#x27;t very productive. I thought about this a lot and now I just go ahead and blaze a trail and other people can just figure out my style. Move fast and break things - or being reckless, its often hard to tell, but you wont be a 10x dev by trying to be nice and fit it.
评论 #20125647 未加载
评论 #20125362 未加载
tmaly将近 6 年前
I believe more in tests and documentation now more than ever.<p>When you have to support legacy code with no docs, no specs, no tests, you change your mind pretty about the value of tests and a good specification.<p>As a senior engineering manager, I push hard to get good requirements for my team. Its being a sales person with the business side.
typon将近 6 年前
One thing I would say about the whole &quot;good enough is good enough&quot; mentality is that if everyone has that mentality in a company, your code quality will decline so far that it will be impossible to get anything done in the future. This has happened to my company because ten years ago people had this mentality and it did work for them, getting us a lot of market share and short term success due to high profit margin. However, today we are suffering immensely due to those decisions, losing customers and new hires because no one can get anything done except put out fires due to critical customer issues.<p>I think a healthy mix of idealists and realists is necessary.. With senior developers representing a good majority of the former.
评论 #20125653 未加载
评论 #20125449 未加载
airnomad将近 6 年前
Developers are new factory workers. Pay is good now because industry is expanding and there&#x27;s not enough of us but it won&#x27;t be like that forever. And bottom line work is already being commoditized (WordPress ecosystem etc).
评论 #20126825 未加载
评论 #20125423 未加载
ademup将近 6 年前
My junior thought: spending 3 days to optimize code to make the UI faster and use fewer resources will be appreciated by managers and users, so win-win.<p>My senior thought: spend 1 day to SOLVE the problem, and 5 minutes removing the code entirely.
xupybd将近 6 年前
No offence to other developers but this is the easiest read of any article I’ve ever read by a developer. I wish I could write like that. I also wish documentation was written by people with that talent.
rq1将近 6 年前
What I learned as developper and Data Scientist is: either you know what you’re doing and can see the big picture, either you’re walking blindly to a “good enough” solution.<p>In the first case, I spend most of my time in architectural design and modelization. The implementation phase is rather quick, because everything is well defined and you can write a lot of tests upfront.<p>In the second case, you’ll discover the big picture by facing the problems while trying to find and implement a working solution.<p>While getting experienced means how fast can you figure out the big picture.
jpswade将近 6 年前
I think much of this depends what you are employed to do.<p>Sometimes it&#x27;s about making things less complex, which means good practices, code quality, clean code and testing means you can afford a bit more risk.<p>Equally, sometimes you employed to just get things done, make it work, even fake it till you make it, proof of concepts, minimum viable products, etc.<p>I&#x27;ve done both, I enjoy both, but they are two different modes of working.<p>Ultimately the answer is &quot;it depends&quot; and milage may vary.<p>Quality is a journey not a destination.<p>Yes, put delivering value above anything else, sometimes that value is quality.
vowelless将近 6 年前
Great article. Related to the “code quality” point, what I have personally realized is that it’s easy to over complicate solutions. Often, a simple solution is better (especially when it is part of a larger, more complex system).<p>When I was younger, I liked clever solutions to show off my skills. Now I cringe at that. Other people have to read my code. And more importantly, “I” have to read my code tomorrow or next week. I’ve started to really prioritize simplicity. Which is ironically quite hard!
macspoofing将近 6 年前
Good writup.<p>&gt;Imagine 50+ comments on your PR with all the semicolons you missed!<p>Depends. You should have a style guide and it should document what the expectation is. If it was decided that semicolons are mandatory, then code review should be failed. If they are optional than the code reviewer shouldn&#x27;t flag it. The alternative is to use a linter&#x2F;formatter and either auto-fail during a pull-request or have the tool fix it up.
perfunctory将近 6 年前
&gt; So imagine my surprise when I showed up at my first day on the job at a startup and found no tests at all. No tests in the frontend. No tests in the backend. Just, no tests. &gt; Nada. Zip. Null. Undefined. NaN tests.<p>On my current project I have 100% test code coverage. Which I believe is quite unusual. But I am pretty sure that if I give a talk about how I did it, most people will be horrified.
评论 #20129965 未加载
评论 #20129239 未加载
z5h将近 6 年前
Thoughtful and deserving of HN front page attention.
templ123213将近 6 年前
I agree. Title doesn&#x27;t matter. There is so much title inflation in the industry today.<p>For me, becoming a senior developer has allowed me to see code more objectively than before. Instead of following convention to the T, I can now look at code and make my own judgement whether to follow the convention. It&#x27;s great to have the sense of relieve.
seomis将近 6 年前
Over the course of my career, I&#x27;ve gone from deploying via scp, to svn-up&#x2F;git-pull, to every variety of actual deployment pipeline imaginable with dedicated dev-ops teams. Now I&#x27;m the only engineer at a tiny 501(c)(3), git-pull straight from production again, and have never felt more free.
cdevs将近 6 年前
I love the uncluttered ui for the site you work for <a href="https:&#x2F;&#x2F;sumup.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;sumup.com&#x2F;</a> sticks the message to the potential customer instead of shoving lots of blog&#x2F;jobs&#x2F;other links all over the place as in the top menu.
wanttocommentt将近 6 年前
good article, I agree with most of the things. However code reviews that only have comments about code style are kinda useless in my opinion. I rather get 50 comments about how to improve my code instead of missed formatting. (which can be also done automatically)
评论 #20127230 未加载
james_s_tayler将近 6 年前
&gt; &quot;Not everyone will become senior during their career&quot;<p>This. So much this. I didn&#x27;t realise that until a little while ago but when I did it made me realise I need to understand actually what make someone a senior. It&#x27;s not just an automatic progression.
cm2187将近 6 年前
Absolute truths passed on by my various line managers:<p>- Assumptions are the mother of all fuckups.<p>- The optimal number of people in an organisation is 3. At 4 you start losing efficiency. At 80,000....<p>- The more you progress in the hierarchy, the more you realise it is the same idiots at every level.
gastlee_za将近 6 年前
We’re so far behind everyone else (AKA “tech FOMO”)<p>This one hit strongly for me because I didn&#x27;t realize it until reading this...<p>I am sure our CTO and PM are tired of me pushing for the latest tech I read about on here all the time. I will hold back a little more from now on.
saagarjha将近 6 年前
&gt; I read “that orange website” all the damn time.<p>Yeah, don’t take the “orange website” too seriously.
评论 #20129448 未加载
chasd00将近 6 年前
A good plan violently executed now is better than a perfect plan executed next week. - Patton<p>It&#x27;s much better to get something, anything, on the screen and working than an elegant design constantly refined but never put to actual use.
评论 #20129780 未加载
mooreds将近 6 年前
&quot;It&#x27;s about the code.&quot; That is probably the biggest untruth I though when I was a new developer (I dislike the term &quot;junior&quot;).<p>The truth: &quot;It&#x27;s not about the code, it&#x27;s about the people.&quot;
himynameisdom将近 6 年前
i think now more than ever, there needs to be a bridge mindset between technical and non-technical. i learned that very early on, and even spent some time in a customer-facing, non-technical role to hone my bridge mindset. the ability to have empathy for the end user, and everyone else upstream who will touch your logic, is paramount and takes care of a lot of issues.<p>it&#x27;s up to us as technical professionals to care about both the &quot;what&quot; and the &quot;how&quot;. the ability to pan in and out on a particular need was learned early on and i cannot be more thankful of that.
评论 #20125688 未加载
sytelus将近 6 年前
As you get older, the thing you unlearn is that there are no absolute truths.
jonstewart将近 6 年前
The only thing to do when you implement a linter is fix the 800 errors it generates. It shouldn’t take long. That’s absolutely the right thing to do, and I’d happily back anyone on my team who does that.
craftoman将近 6 年前
How can you define seniors as pros? I know some senior devs that suck at programming, still coding in Perl using Notepad++ and their systems are full of bugs.
vortico将近 6 年前
Perhaps the reason for &quot;nobody writes tests&quot; in the real-world isn&#x27;t primarily because of time&#x2F;cost, but because virtually no real potential bugs are testable. If you&#x27;re writing a JPEG encoder or database model handler, yes, you can test that all day, but those things already exist and are well-tested for you. But if you&#x27;re designing retail software or a web app, there are 2^10000 things that can go wrong, so most companies ignore automated unit testing in favor of human quality control.
评论 #20126587 未加载
评论 #20134496 未加载
vonseel将近 6 年前
&gt; Early in your career, you can learn 10x more in a supportive team in 1 year, than coding on your own (or with minimal feedback) for 5 years.<p>Spot on!!!
kannanvijayan将近 6 年前
I&#x27;ve been doing dev work for 20+ odd years now, and I suppose I can relate to many of these realizations. A young developer&#x27;s framework is full of sharp polemics that soften over time as we scrape against them through experience. It&#x27;s definitely something I look for in junior devs - a few strongly held opinions and a willingness to back them up by referring to some coherent &quot;moral&quot; framework - as long as this does not descend into technical dogma or dismissal of other perspectives.<p>If I were to step back and try to characterize the growth in my understanding of software development in a single general statement, putting aside all the hard-tack technical experience, it&#x27;s this:<p>I am beginning to understand the subtle and complex delineation between _good_ and _useful_, and the role that execution plays in that - with all it&#x27;s myriad parts: prioritization, management, technical risk mitigation and hypothesis validation, consensus building on technical direction, post-hoc validation, etc. etc.<p>And usefulness has a lot of facets in execution: not just technical but social. A good project and good idea might come to nothing if you are oblivious to obtaining some organizational mandate for it, and it gets sidelined due to shifts in priorities. If this happens, it means a misstep was made earlier: either the project should never have been started at all - due to awareness of upcoming priority changes, or you should have done the organizational consensus building to ensure that the work had the runway it needed to complete.<p>The same goes for technical consensus among implementors. Sometimes this can be avoided by giving clear mandates to trusted individual leads, but come complex projects really need the input of multiple senior members.<p>I&#x27;m starting to find lately that many of the contributions I&#x27;m most proud of are the ones where I come to firm conclusions on what work _not_ to do: concluding that certain tasks that were good but not useful enough, or determining ahead of time that certain planned implementation paths are actually not going to deliver what we might have expected them to, and thus we should scrap that idea. It has saved inordinate amounts of time that would _otherwise_ have been wasted.<p>The challenge for me has been reconciling this new understanding with my old methods for evaluating my own performance. I know these days, within reasonable bounds of arrogance, how to write decently complex software and understand it. As I move on to considering these higher level concerns, I find that I&#x27;m asking myself whether that opportunity cost is worth it: &quot;I _could_ be spending time writing good code right now, instead of analysis and reports and meetings and planning. Is this new activity of mine _useful_?&quot;<p>I&#x27;m still building my internal model for measuring my effectiveness in this new domain.. but it&#x27;s clear that it&#x27;s a profoundly impactful and worthwhile multi-factor optimization problem to tackle.
jpfed将近 6 年前
But seriously, put in your damn semicolons.
BentFranklin将近 6 年前
A paean to normalization of variance.
wltprgm将近 6 年前
Most of the time legacy code and technical debt appearing on same project
patsplat将近 6 年前
Learned as a junior: results matter Learned as a senior: stories matter
icsllaf将近 6 年前
&gt;I read “that orange website” all the damn time.<p>Is she talking about HN?
评论 #20125928 未加载
saurabhnanda将近 6 年前
I must say this is a very well written blog post.
swaggyBoatswain将近 6 年前
I just started my first job as a junior-mid_level dev last week, my team is really awesome and I&#x27;ve been learning a lot. I&#x27;m the only junior dev on a team with 3 mid to senior devs, so there&#x27;s lots to learn.<p>1: A great quote from one of the most senior developers I look up to town said this: a developer who&#x27;s been developing for 1 year can have _far_ more experience than someone who&#x27;s been doing it for 3 years. I find people who introduce themselves as &quot;developer for 15 years&quot; aren&#x27;t those types, rather it&#x27;s the ones that show innovation.<p>Another quote is this - to become a better developer, you need people at the same level as you, more experienced, and less experienced. So I&#x27;ve taken it upon myself to mentor junior developers in town. Other ways I&#x27;ve learned is by talking about technical challenges from multiple developers in multiple companies in my surrounding region, doing technical &amp; lightning talks, and participating in hackathons.<p>2: I wasn&#x27;t entirely surprised by how little testing there was even at companies that have been around for a 3+ years, I had learn that most companies in my area (even the ones that have great developers) - code test coverage was poor. There is an opportunity cost in testing something that might change later. As kent dodds put it, do some tests coverage on core features, but have integration tests<p>3: I think working with legacy codebases is a great way to learn. The codebase shows a story about how the scope of the project changed, how workarounds were made to meet client expectations in short turn around time, etc. These things you don&#x27;t learn on your own. Being forced to break something down and build it into a better version is rewarding, so long as it&#x27;s not everything you do.<p>4: My first code review was more informal, it was more pointing out everything I didn&#x27;t consider when implementing a feature. E.g deleting old unused code, formatting things semantically and expressively, etc. Was still setting up my dev env so there were a few grammatical errors that didn&#x27;t match eslint styleguides, but we had test runners for those.<p>5: Documentation to me has always been important, but forcing it upon others as a way to bookmark something I avoided. I think it&#x27;s far better to just notate on a piece of paper your interpretation of how the code works, or write your own documents in Confluence&#x2F;team-wikis so your senior dev can understand your interpretation of how things work. As the new dev on my team in a year, documentation was out of date and each dev only knew specific parts of the codebase, so I&#x27;ve been updating how everything works from a eagles-eye perspective. Those notes have a lot of value to the next dev that gets hired, because they come from a clean slate like yourself.<p>I also think, documentating your pseudo-code inside of tickets is important. I&#x27;ve learned the hard way from getting fired at a previous job many years back - you need to actively show your team what you do. Documentation is the lowest hanging fruit, you need to think about what you&#x27;re going to say in your daily standup tomorrow, communication is essential<p>6: For me technical debt is really being able to identify where the debt lies. For instance, rails and laravel has well documented magic, but the path less traveled needs to be understood. My rule of thumb is if I&#x27;m going to write less-than-ideal code, it needs a comment block indicating why I did so. Don&#x27;t push code you yourself don&#x27;t want to read 6 months later<p>7: In regards to seniority, I think the best developers know they are junior in other areas and are multidisciplined in other fields besides programming. I&#x27;ve learned a lot of great wisdom from developers in my city&#x27;s slack channel just by seeing conversations unfold. I know some first year developers whom I already consider senior, and some developers who&#x27;ve been doing this longer who I do not.<p>I think the most important thing I&#x27;ve learned in these 2 weeks in my first dev role, you can be a mediocre dev who just copypastes things and still be a great asset to any team. There&#x27;s a lot of value in just documentation &amp; communication alone<p>Other things I learned - you can bother your senior dev if they just sat-down or stoodup from their desk, or if their headphones are off. But experiment with communicating asynchronously in slack and synchronously in person and see what works and what doesn&#x27;t - even if they sit right next to you.<p>At the crux of everything, it&#x27;s important to have a certain growth mindset. I embrace a japanese methodology called LEAN. Other things - being okay with self-humilation is a great way to learn. Other things - force yourself to take breaks by only using small water bottles or none at all.<p>Also, make sure you say hello to everyone in the morning, my office is 20+ mechanical&#x2F;electrical&#x2F;civil engineers&#x2F;designers, I make sure to say hi to them. I take the longer-route of walking through the frontdoor every morning, my boss makes fun of me for that. Give the gift of giving to others in the community, it reflects well on yourself, my team already had heard of me despite never meeting me b&#x2F;c of how active I am in the local tech community. Rubber duckies are good inexpensive programmer gifts.
kailuowang将近 6 年前
Epoché
m0zg将近 6 年前
Interestingly, some of these absolute truths are absolutely true at larger (50+ devs, or so) companies because forward progress can&#x27;t be made otherwise. System not documented? Might as well not exist at all. Code is not tested? Well, then nobody really knows if it works or not after even the most insignificant and peripheral changes. People don&#x27;t treat code quality as a priority? Welcome to days&#x2F;weeks&#x2F;months of yak shaving to fix even the simplest issues. Good at communication but can&#x27;t code worth a damn? Consider becoming a manager, not a &quot;senior developer&quot;.
yters将近 6 年前
I disagree with the documentation one. I really think developers need to focus a whole lot more on documentation, possibly prioritizing it over code.<p>In fact, I think there should be something like a documentation driven development, where first devs change the description of what code should do, and then change or add the tests, and then finally write the code.
trpc将近 6 年前
That&#x27;s the kind of talk I always hear from mediocre devs once they reach their first management job.