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.

Philosophies for Software Engineers

79 pointsby crablarover 9 years ago

9 comments

vinceguidryover 9 years ago
Please don&#x27;t let things like &quot;Apple makes $1.8MM per employee&quot; get to you. It leads to stupid decision-making. Yes, the company is making more money on your efforts than it is paying you. It&#x27;s called business, you take inputs and add value to them and sell them to other people who will turn around and do the same thing. If you had capital to throw into a business venture then you&#x27;d do it too.<p>I met a guy a few weeks ago who&#x27;d moved over from California. He wanted to learn how to code, and told me his story. He was a business sort who went into business with a software developer. The dev did good work, and the business guy managed to get it funded. Just when things started picking up, the dev decided he wasn&#x27;t getting enough of the pie and bailed, destroying the entire enterprise. He wanted to learn how to code so that this wouldn&#x27;t happen to him again.<p>So I&#x27;m giving him an hour or so a week to show him how web development works so that he can code a prototype himself. Then he can get funded and hire employees rather than deal with the emotional vagaries of software developers. I don&#x27;t blame him at all.<p>Business guys are typically going to make more money than the coders are, it&#x27;s pointless to fight this. The better route is to go into business yourself and capture the value yourself. The reason is that the business side is the human side, and humans are harder to deal with, ultimately, than computers are. Also, humans have money and computers do not.
评论 #11094976 未加载
评论 #11094606 未加载
评论 #11094553 未加载
评论 #11094601 未加载
评论 #11094517 未加载
评论 #11094513 未加载
评论 #11094532 未加载
评论 #11094898 未加载
评论 #11094514 未加载
评论 #11095661 未加载
评论 #11095149 未加载
评论 #11094620 未加载
评论 #11094554 未加载
评论 #11095326 未加载
评论 #11095689 未加载
评论 #11094939 未加载
评论 #11095327 未加载
dasil003over 9 years ago
&gt; <i>After you have spent enough time in the first tier of the intellectual strip mine, we will make you an SDE 2, where you can do slightly higher level refactoring for $150k a year, which will make the giant company $5 million. This is what is called an arbitrage.</i><p>I&#x27;ve been a programmer my entire career, and so my interests align with this ideology, but quite frankly it is offensive to call junior software dev work an &quot;intellectual strip mine&quot;, and to assume a priori that your salary will return 10-20x multiples in value to the company.<p>The reality is that it is highly non-trivial to derive economic value from programming. You have to be able to sell <i>something</i> in significant volumes. That is the value the company is bringing to the software engineer. How much value any particular employee brings to the organization is impossible to calculate. Certainly the engineers will bring efficiencies that are impossible to get any other way, and perhaps they enable the entire business. But you can say the same about the sales people, the biz people, the product people; even the much-maligned marketing people may be essential to keep the revenue flowing.<p>There&#x27;s a huge bias in any industry to overvalue your own work over that of other disciplines, simply because by definition you know more about it than what those other departments do. There&#x27;s something I find really off-putting about a lot of abstract whining about how underpaid developers are. Sure, some are underpaid, also some are overpaid NNPPs, but as a whole we are doing way better than the vast majority of careers in the world right now.<p>All this is not by way of saying you should be satisfied with what you&#x27;re given, but rather that you should pull your head out of the sand and recognize how the world works: you don&#x27;t get paid what you <i>deserve</i>, you get paid what you <i>negotiate</i>. And negotiation is a skill you have to learn. If you don&#x27;t want to learn anything about business and you just want to write code, then you should expect to be taken advantage of. If you want to capture more value you create, the first step is defining that value, and you can&#x27;t do that unless you understand the business. From there you can have honest conversations with your employer on more equal footing, and decide to either stay or leave. This business knowledge will also enable you to start your own company with a much greater chance of success than the majority of startups with purely technical founders who start with a build-it-and-they-will-come mentality.
评论 #11094978 未加载
评论 #11095166 未加载
MCRedover 9 years ago
As an old guy, let me share with you which of these I think was the biggest lesson for me:<p>-- We do not need to be lead by business people.<p>MY new rule for startups - the big engineer should be the CEO. You can have a CTO and other engineers. You can have a VP of bizdev or sales. But the big fish needs to be an engineer if you are a tech company. If you are making biotech the big fish needs to have biotech engineering. If you are manufacturing, then the big fish needs to be a manufacturing engineer.<p>The number one mistake I see startups make (especially when they are started by younger people) is taking some type-A business school graduate and making him the CEO.<p>This is the cause, ultimately, of most of the failures of startups I&#x27;ve experienced (and I&#x27;ve worked for, founded or worked with a couple dozen.)<p>Or, as a second order function, type-A business school graduates who have never started a company or worked a real job but do instead work for a VC firm, forcing bad decisions on your company.<p>Most of the fights between founders are because business guys are forcing bad decisions on the company.<p>The problem is, business school doesn&#x27;t teach YOUR business. It teaches general business concepts. These are not difficult for engineers to master.<p>IT&#x27;s impossible for these business guys to master engineering. (Yes, 30 years, still haven&#x27;t seen that- the best ones just find an engineer they trust and get out of the way.)<p>As an angel investor, if your CEO isn&#x27;t a geek, I&#x27;m not putting my money in. And if you look at the &quot;successes&quot; where this is the case, it&#x27;s usually an arbitrage opportunity (Eg: somewhere just piling a bunch of money behind a halfway competent business model with half way competent employees is going to make money because the situation is the result of a structural inefficiency, usually caused by government: uber for example.)
评论 #11094894 未加载
评论 #11094927 未加载
评论 #11095000 未加载
评论 #11094933 未加载
sjclemmyover 9 years ago
&quot;If we aren’t in control, it doesn’t change anything whether or not we assume that we are in control. But if we are in control, it would be very hazardous to our well being to assume that we are not in control&quot;<p>I love the logic of this argument - it has so many applications - think about applying it to the climate change debate.
评论 #11094879 未加载
lorddoigover 9 years ago
Outright rejection of the fact that life, including your career path, is in part chance-based is dangerous. A sizeable chunk of the part that isn&#x27;t isn&#x27;t in your control either, it&#x27;s controlled by your environment and the people who populate it. If an asteroid struck, and we were all made redundant, you would not have &#x27;lost&#x27; - a large example to illustrate a subtle point.<p>Believing otherwise is the kind of self delusion that leads to mid-life crises: when the religion of You crumbles and a desperate scramble for a new faith begins.<p>Life is, in part, a lottery. Failure is fine. Failure is to be expected. Don&#x27;t read in to it in the context of your self worth, but look at it objectively and see if anything is to be learned. Take risks and accept reality, and never reject the truth, especially when it&#x27;s staring you right in the face.
fennecfoxenover 9 years ago
&gt; Don’t believe the one-size-fits-all interview process with whiteboarding problems. These serve to grind away your individuality and make you feel like an assembly line worker.<p>In my experience, the interview process with whiteboarding problem can go one of two ways. One of them is the &quot;find what we think is the textbook solution to this toy problem&quot; way. The other is the &quot;communicate to us as you attack this toy problem so that we can understand your thought processes, problem-solving approaches, and your experience with these topics&quot; way. Only one of these is really objectionable.
评论 #11094581 未加载
merbover 9 years ago
11. Make Tests, really. Make automated tests, even if they are slow, make them. trust me. make them regardless what anybody says or regardless the project size. the extra time it takes will outweight the time you would need later.
JohnLeTigreover 9 years ago
These are not philosophies.
generic_userover 9 years ago
&gt; 1. You do not have to prove yourself.<p>&gt; Software is a new field and nobody knows how to do it. If someone says you are unqualified and therefore you must do maintenance work, you should question that person. We have an upside down system where the people who are paid the least do the crappiest work. They tend to be young and naive.<p>Software development has been meticulously studied for over 40 years. From Dejurka, &#x27;Goto&#x27;s considered harmful&#x27; to Parnas, &#x27;On the Criteria To Be Used in Decomposing Systems into Modules&#x27;, Design patterns, academic studies, Pair Programming etc.<p>&gt; 2. You are not a commodity.<p>Your HR department has a list of &#x27;potential hires&#x27; to replace any position in your company at a moments notice. The quickest way to build a bad reputation is to think you are not replaceable and act accordingly.<p>&gt; 3. Software engineering is an art and a science but rarely both at once.<p>&gt; The planning and design process is an art, but once the requirements are in place you can proceed more deterministically.<p>No matter how brilliant you architecture and plan is there will inevitably be new requirement or changing requirements that cause you to continuously revise re-architect and re-write large part of your code base. Both design and Implementation are a messy evolving process.<p>&gt; 4. You are not your job.<p>If you do not love this then its not for you. Thats true in many professions and Programming is no different.<p>&gt; 5. The world is a distributed system.<p>I could not parse any overall point to this passage.<p>&gt; 6. You are not a lottery ticket.<p>???<p>&gt; 7. Choose action over planning. Talk is cheap and execution is scarce.<p>&gt; This is why nobody cares about your ideas, they care about seeing your prototype. John Mayer said that all he had to do to become successful is finish his songs.<p>Writing a plate of spaghetti code that does some neat thing is not what makes you an employable dependable developer. Writing clean well documented well though out efficient code that meets the specifications is what does that. That take planning and discipline.<p>&gt; 8. Software engineering is full of lies and people who will try to take advantage of you.<p>This is a bit psychotic.<p>&gt; 9. You are not your credentials nor your past.<p>You very much are. You do not necessarily have to be an Academic golden boy but you will be judged by your previous experience and projects.<p>&gt; 10. As a software engineer, you can take career risks aggressively because your downside is fundamentally capped.<p>That works out great unless you have to pay 2500$ rent each month or buy food and clothing for your children etc. Not everyone that writes software is a 19 year old trust fund baby...
评论 #11095081 未加载