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.

Ask HN: How does one become a better Software Engineer?

25 pointsby rxselover 4 years ago
Assume the individual wishes to build products and the underlying systems atop the web and would strive to be &quot;Fullstack&quot; and dangerous throughout the entire stack.<p>Feel free to share resources, tips, lessons learned, etc.

10 comments

dave_sidover 4 years ago
Hit the gym. The best software engineers I know can bench 60 kilos. Work on your abs and hit the protein shakes. Bill Gates used to do this and look where he is now.
评论 #25399970 未加载
robodaleover 4 years ago
Build something, from nothing, and make sure it involves a full stack and has users other than yourself...even if it is just one other person. Promise your future self that you will see this through to completion.<p>Oh, and build something small in scope. You don&#x27;t want to be working on the pre-launch 10 years from now...
评论 #25383787 未加载
matt_sover 4 years ago
Find what interests you in web app development. You mention Fullstack but that really is a recruiter term.<p>Slowly building a set of problems you have solved is experience. As you encounter similar&#x2F;same problems, iterating on those solutions makes you a better engineer. Solving those problems with increasing levels of traffic introduces&#x2F;uncovers new problems to solve across the stack.<p>Learn from others, co-workers or other companies that publish things about the problems they have solved. Some of the BigTech companies generate frameworks or have services that solve BigTech problems they have encountered. There are solutions there that could be useful. There also are problems + solutions there that no other company is going to run into but people like to emulate so they will use those solutions like a square peg in a round hole.
ukomsover 4 years ago
Progress not perfection. Which in this context should be read as willingness to getting know new solutions, new technologies and new applications; You delve into things, get some of the ideas, think about them, implement parts of them, fidget with them. BUT! Do not let them overwhelm You. It&#x27;s virtually impossible for a person who isn&#x27;t genius engineer to be fluent in all known technologies, languages, libraries and rest of the stuff. You focus on setting in your head memory anchors to different solutions, different approaches, and when the time is done You will end up with bigger knowledge and skill set. You don&#x27;t need to remember all the details, You just need to remember where to find them.<p>Second thing - constantly improve communication. Be as humble as You possibly can, because people have their own struggles we are not aware of, and those affect the way they write and speak. That&#x27;s why You need to remind your self everyday - &quot;is this what I understood really the thing the person has said?&quot;. And ask for their understanding of given information. It&#x27;s basically 70 to 80% work of good SE.<p>Finally, take care of your physical and mental health. You cannot be productive 24&#x2F;7. Your body and mind need breaks and maintenance. Treat yourself in this aspect as any other high-grade, professional, top-quality tool. Your mind, your body are your tools - take care of them, so they can perform for life.<p>Oh! And be nice to yourself. Harsh treating You will most likely get from others. If You don&#x27;t be kind to yourself, who will be?
forgotmypw17over 4 years ago
Get some historic perspective. The classic older browsers will run easily in Wine or VirtualBox. Try to build a website for Mosaic. And upgrade it for Netscape 2.0 and IE 3.0. Then upgrade it for Netscape 4 and IE 4, while retaining compatibility. And onwards to today. If you can span 25 years of it, you&#x27;ll know more than most of today&#x27;s web devs by a long margin. It is easier than it sounds, especially if you start basic.
评论 #25372834 未加载
ssteelover 4 years ago
It seems kind of obvious, but build the system you are interested in learning how to build. If you want to do it professionally, use common tools. If you want to do it to start your own company, use tools that you are most comfortable in now. Set a goal and once you start walking towards that goal, the path presents itself.
logicslaveover 4 years ago
Work with good engineers, or work with good code bases off github. Theres no way you can conceive of truly amazing software yourself, unless you are linus torvalds. There are patterns, and you need to learn them externally by writing code with others or by working with exceptional open source.
评论 #25381801 未加载
评论 #25365666 未加载
Jugurthaover 4 years ago
This reply will reproduce:<p>- A reply I wrote to a thread here at <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=25025253" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=25025253</a><p>- A Twitter thread about a few things useful for selling software to companies, discovering patterns, abstracting into a product <a href="https:&#x2F;&#x2F;twitter.com&#x2F;jugurthahadjar&#x2F;status&#x2F;1310668293305499653" rel="nofollow">https:&#x2F;&#x2F;twitter.com&#x2F;jugurthahadjar&#x2F;status&#x2F;131066829330549965...</a><p>- Added link: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=25288605" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=25288605</a><p>&lt;&lt;&lt;<p>Hi, here are a few things I wrote in here that could be useful. They are designed to improve remembering to do things, doing things, learn from doing things, make sure everyone knows what they should be doing, remember why we&#x27;re&#x2F;if we ought to be doing things in the first place, and doing the right things:<p>- <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=19924100" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=19924100</a> (understanding codebases, etc.)<p>- <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=22873103" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=22873103</a> (making the most out of meetings, leveraging your presence)<p>- <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=22827841" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=22827841</a> (product development)<p>- <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=20356222" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=20356222</a> (giving a damn)<p>- <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=25008223" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=25008223</a> (If I disappear, what will happen)<p>- <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=24972611" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=24972611</a> (about consulting and clients, but you can abstract that as &quot;stakeholders&quot;, and understanding the problem your &quot;client&quot;, who can be your manager, has.)<p>- <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=24209518" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=24209518</a> (on taking notes. When you&#x27;re told something, or receive a remark, make sure to make a note and learn from it whether it&#x27;s a mistake, or a colleague showing you something useful, or a task you must accomplish.. don&#x27;t be told things twice or worse. Be on the ball and reliable).<p>- <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=24503365" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=24503365</a> (product, architecture, and impact on the team)<p>- <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=22860716" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=22860716</a> (onboarding new hires to a codebase, what if it were you, improve code)<p>- <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=22710623" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=22710623</a> (being efficient learning from video, hacks. Subsequent reply: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=22723586" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=22723586</a>)<p>- <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=21598632" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=21598632</a> (communication with the team, and subsequent reply: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=21614372" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=21614372</a>)<p>- <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=21427886" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=21427886</a> (template for taking minutes of meetings to dispatch to the team. Notes are in GitHub&#x2F;GitLab so the team can access them, especially if they haven&#x27;t attended).<p>- <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=24177646" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=24177646</a> (communication, alignment)<p>- <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=21808439" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=21808439</a> (useful things for the team and product that add leverage)<p>- <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=20323660" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=20323660</a> (more meeting notes. Reply to a person who had trouble talking in corporate meetings)<p>- <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=22715971" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=22715971</a> (management involvement as a spectrum)<p>&gt;&gt;&gt;<p>Twitter thread:<p>0. Form:<p>0.0. It pays to provide services through a company. Companies write large checks to companies without blinking; not so large for individuals.<p>1. Contracts:<p>1.0. Get a lawyer to prepare contracts for collaborations. Someone at some point might disagree or have trouble remembering what they have agreed to pay you, make sure to have a mnemonic device in the form of a clear contract.<p>1.1. Companies have typical contracts for collaboration: don&#x27;t sign anything without legal counsel.<p>1.2. Retain intellectual property to amortize engineering and sell what you make to others.<p>1.3. Companies might ask that you do not sell to competitors: define them and contain geographic zone and duration. Get paid for the opportunity cost.<p>1.4. Split project into tranches for which you get paid. This can help cash-flow and reduce risk, especially in the beginning.<p>2. Presentation:<p>2.0. Your company solves problems and being open minded about these problems is useful; so it&#x27;s not much about finding problems for your solutions, but more like finding solutions to clients&#x27; problems.<p>2.0.0 After enough problems you built solutions for, patterns emerge and you can abstract a solution that serves several use cases. See &quot;Abstraction&quot; section.<p>2.1. General presentation with broad strokes of your capabilities, including previous work with other clients<p>2.2. Conversation with the prospect on their worries in a given space<p>2.3. Conversation with the prospect on their worries in a given space<p>2.4. Extract problems from that conversation and send a list of N problems to solve&#x2F;ideas to explore.<p>2.5. The client finds one problem urgent&#x2F;highest priority&#x2F;highest value<p>2.6. You get together and talk about &quot;desirability, fasiblity, viability&quot;.<p>2.7. Once you agree on what to do, prove the concept.<p>2.7.0. e.g: organizations give us data and ask us to predict something, say customer churn or subway car malfunction. We return predictions, they validate the predictions, and we can then start the project because they have proof we actually can predict what they want us to.<p>3. Execution:<p>3.0. Your opinion on what is valuable for the client does not matter. It doesn&#x27;t have to be valuable to you, only to the client. A client who gets excited by a functionality that took one hour to implement because it solves a real problem is a learning experience.<p>3.1. Go above and beyond. Some sectors&#x2F;clients are hard to get in, but once you&#x27;re in, you&#x27;re in.<p>3.2. Listening and assuming the client is smart goes a long, long, long way.<p>3.3. Send meeting notes to the client. It clears ambiguities during&#x2F;after the project.<p>3.4. Press to get the client&#x27;s domain experts&#x27; collaboration. They will actually use what you&#x27;re building. Get them at the table.<p>3.5. Some of the most valuable insights are gleaned after a meeting and not necessarily with your &quot;counterpart&quot;.<p>Don&#x27;t build the wrong thing.<p>4. Abstract:<p>4.0. When you solve many problems, some patterns emerge. You built custom products for your clients, but you can abstract functionality and build tooling to scale your services, and enable others to do the same.<p>4.0.0. e.g: we we built machine learning products for enterprise clients. After many projects, we built iko.ai, our own machine learning platform to &quot;Get Data Products Released&quot;.<p>4.1. One advantage of this approach is to explore the space while being profitable. Some problems exist not for lack of a nice front-end or lack of knowledge of the target audience. Coming at them from a purely &quot;webdev&quot;&#x2F;&quot;devops&quot; mindset can bring bad surprises.<p>All the best,
ironmagmaover 4 years ago
Read a wide variety of code. Think of it like reading the literary classics, it gives you a perspective on where we came from and where we’re at. Opening core OSS codebases like GTK and trying to hack on it will get you places.
giantg2over 4 years ago
Study, practice&#x2F;opportunity, and drive&#x2F;passion.