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

科技回声

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

GitHubTwitter

首页

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

资源链接

HackerNews API原版 HackerNewsNext.js

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

Ask HN: Maybe I kind of suck as a programmer – how do I supercharge my work?

328 点作者 tastyface超过 8 年前
I&#x27;m in my late twenties and I&#x27;m having a bit of a tough time dealing with my level of programming skill.<p>Over the past 3 years, I&#x27;ve released a few apps on iOS: not bad, nothing that would amaze anyone here. The code is generally messy and horrible, rife with race conditions and barely holding together in parts. (Biggest: 30k LOC.) While I&#x27;m proud of my work — especially design-wise — I feel most of my time was spent on battling stupid bugs. I haven&#x27;t gained any specialist knowledge — just bloggable API experience. There&#x27;s nothing I could write a book about.<p>Meanwhile, when I compulsively dig through one-man frameworks like YapDatabase, Audiobus, or AudioKit, I am left in awe! They&#x27;re brimming with specialist knowledge. They&#x27;re incredibly documented and organized. Major features were added over the course of weeks! People have written books <i>about</i> these frameworks, and they were created by my peers — probably alongside other work. Same with one-man apps like Editorial, Ulysses, or GoodNotes.<p>I am utterly baffled by how knowledgeable and productive these programmers are. If I&#x27;m dealing with a new topic, it can take weeks to get a lay of the land, figure out codebase interactions, consider all the edge cases, etc. etc. But the commits for these frameworks show that the devs basically worked through their problems over mere days — to say nothing of getting the overall architecture right from the start. An object cache layer for SQL? Automatic code gen via YAML? MIDI over Wi-Fi? Audio destuttering? Pff, it took me like a month to add copy&#x2F;paste to my app!<p>I&#x27;m in need of some recalibration. Am I missing something? Is this quality of work the norm, or are these just exceptional programmers? And even if they are, how can I get closer to where they&#x27;re standing? I don&#x27;t want to wallow in my mediocrity, but the mountain looks almost insurmountable from here! No matter the financial cost or effort, I want to make amazing things that sustain me financially; but I can&#x27;t do that if it takes me ten times as long to make a polished product as another dev. How do I get good enough to consistently do work worth writing books about?

64 条评论

pavlov超过 8 年前
For what it&#x27;s worth, you&#x27;re feeling the same combination of awe and doubt that grips almost any creative practitioner at some point.<p>Writers realize that there are other people who can write an extremely well-structured, gripping novel in a matter of months. Artists see their colleagues do live drawing and suddenly understand that something that is painful and difficult for them comes easy for these other people. (I don&#x27;t have musical talent, but I expect something similar happens there.)<p>Are they geniuses? Probably some are, but mostly they have just worked very hard and built a set of habits that lets them approach creative problems with that seeming ease.<p>Making software is really primarily a creative pursuit like these others -- it just has a bit more math and a bunch more high-tolerance engineering thrown in.<p>Personally I think of programming as a cross between architecture and writing: I&#x27;m making something that has a visual presence and which end users can &quot;live in&quot; or &quot;visit&quot; (very much like a building), but it&#x27;s also a story because the interactive medium necessarily imposes a narrative. This way of thinking helps me figure out the elements that go into software products... But probably everybody must find their own metaphors to make sense of what they want to do in this field.
评论 #13143581 未加载
评论 #13149108 未加载
评论 #13143507 未加载
endymi0n超过 8 年前
To quote Ira Glass here: &quot;Nobody tells this to people who are beginners, I wish someone told me. All of us who do creative work, we get into it because we have good taste. But there is this gap. For the first couple years you make stuff, it’s just not that good. It’s trying to be good, it has potential, but it’s not. But your taste, the thing that got you into the game, is still killer. And your taste is why your work disappoints you. A lot of people never get past this phase, they quit. Most people I know who do interesting, creative work went through years of this. We know our work doesn’t have this special thing that we want it to have. We all go through this. And if you are just starting out or you are still in this phase, you gotta know its normal and the most important thing you can do is do a lot of work. Put yourself on a deadline so that every week you will finish one story. It is only by going through a volume of work that you will close that gap, and your work will be as good as your ambitions. And I took longer to figure out how to do this than anyone I’ve ever met. It’s gonna take awhile. It’s normal to take awhile. You’ve just gotta fight your way through.&quot; Ira Glass
评论 #13145529 未加载
评论 #13146029 未加载
liquidise超过 8 年前
There are 2 things i feel correlate strongly with the best devs i know:<p>1. Quantity leads to Quality. This has been written about by a number of people and for good reason. As with any craft, quality is born from doing something in repetition and learning from your mistakes. There is a brilliant anecdote on this from a ceramics class of all things ( <a href="https:&#x2F;&#x2F;blog.codinghorror.com&#x2F;quantity-always-trumps-quality&#x2F;" rel="nofollow">https:&#x2F;&#x2F;blog.codinghorror.com&#x2F;quantity-always-trumps-quality...</a> ). So try lots of things, even if they seem silly. You&#x27;d be amazed what a throwaway project in a language you will never again use can teach you professionally.<p>2. Be passionate about both Coding and Learning. I start to look for a new job when 2 conditions are met. First is that i have been around long enough to see the consequences of my stack&#x2F;coding&#x2F;architectural decisions. Second is that i am no longer having &quot;eureka&quot; learning moments with regularity. For me, this inflection point tends to be around 3 years with a company. It will vary for others depending on role and willingness to branch out in your codebase.<p>tl;dr: Force yourself to learn regularly. Move on when you start to stagnate. Find excuses to code things, even if they are junk. Above all: have fun.
评论 #13142966 未加载
altitudinous超过 8 年前
I am in my late 40&#x27;s, I have been coding since I began uni in 1987, I have a Computer Science degree. When I got out there 25+ years ago I was all about doing things the best way, code reuse, refactor etc to get things just right. Most younger devs are. It took so much time getting the environments perfect, unit tests, etc. The customer paid for that, my managers must have been tearing their hair out watching us faffing about doing crap that ultimately didn&#x27;t lead to a better experience for the customer. I am much more experienced now and live off my own skills, I have about a dozen apps on the iOS app store the number of users is 7 figures, they bring in good coin. The code behind them is crap, has not been unit tested, there are not massive build environments or anything, I don&#x27;t write for reuse until I need to reuse, I acceptance test it myself. My users love the apps. They are bug free and reliable, and users often leave reviews to this effect. Experience is everything. I&#x27;m old school now, back in the day live fixes to production data were nothing, no-one would ever do that now. I met older gen devs than me, they did not then and do not now even use source control. Yet their releases were and still are 100% stable and bug free. They are still paid a premium for their thoroughness. As I grow older, I see more value in keeping it simple rather than miring down the work in process and the pressure of doing it perfectly. There is little value in it for the customer if the dev is experienced. And I&#x27;m happy that these premium jobs are now coming up for me.
评论 #13144007 未加载
评论 #13145616 未加载
评论 #13143198 未加载
评论 #13143182 未加载
评论 #13143199 未加载
krat0sprakhar超过 8 年前
While this doesn&#x27;t directly answer your question, but I&#x27;ve found edw519 (a fellow HNer&#x27;s) past comments on this subject highly enlightening.<p>If you&#x27;re looking for something inspiring &#x2F; actionable to read, checkout this collection by him <a href="http:&#x2F;&#x2F;v25media.s3.amazonaws.com&#x2F;edw519_mod.html" rel="nofollow">http:&#x2F;&#x2F;v25media.s3.amazonaws.com&#x2F;edw519_mod.html</a><p>One of my favorite answers -<p><i>71. How do you get good at programming?<p>I believe that there are two ways to get good at anything, &quot;push&quot; and &quot;pull&quot;.<p>Push: You learn from books, classes, mentors, and studying examples, then apply what you have learned.<p>Pull: You have a problem that you must solve, then you learn what you need, any way you can, to build the solution.<p>I suppose there are pros and cons of each method, and I imagine that many people here have used some of both.<p>For the record, I am 100% Pull. I have absolutely no formal training. It took me 2 years to find my first job and then I was thrown into the deep end. It was simultaneously frustrating and exhilarating. There were so many times I didn&#x27;t know what to do or didn&#x27;t have enough &quot;tools&quot; in my box. So I had to figure it out and find sources of learning. But I always did. Any when I got that first thing working and then saw my customer&#x27;s eyes light up, I was hooked.<p>Your CS degree may make you think that you&#x27;re a &quot;push&quot; learner, but may I suggest that you adopt a &quot;pull&quot; approach. Forget what you think you know and find a job or a project or someone who has a real need. Then build what you need. You a several advantages over me: (a) It shouldn&#x27;t take you long to find that job&#x2F;demand&#x2F;customer. Just keep looking. (b) You already have tools in your tool box, maybe not the right ones for the job, but you have &quot;something&quot;. And (c) It&#x27;s easier than ever to adopt a &quot;pull&quot; approach. Help is everywhere.<p>You may feel frustrated, but I don&#x27;t think you have a problem at all. You&#x27;re in a great (and very normal) situation. Just adjust you attitude, find something to build, and do it.</i>
评论 #13142729 未加载
评论 #13144277 未加载
评论 #13142887 未加载
评论 #13150123 未加载
lostcolony超过 8 年前
So one thing I don&#x27;t see a lot of responses calling out, that I think is worth calling out, is what you see is how long the -code- took. You don&#x27;t see how long the design took. You assume it started when the code did, but that may not actually be the case. These other developers may have had this idea in the back of their mind for months, chewing it over, thinking about how they&#x27;d approach something, doing research in their spare time, etc, before finally sitting down to code it. Same with feature extensions; they likely had a feature request, or the idea, and thought about it long before they coded it.<p>So if you&#x27;re comparing hobby projects, things that you started working on within a day or two of having the idea...well, maybe that&#x27;s part of it, too.
评论 #13144920 未加载
trustfundbaby超过 8 年前
You&#x27;re not missing anything. It starts out that (code is crap) and you just get better the more stuff you write , and even then you never quite feel like you&#x27;re writing &quot;good code&quot;.<p>The biggest thing that accelerated my growth was working with people who were much much better than I was. You&#x27;ll learn so much faster, and become so much better than you can ever by just plugging away by yourself.<p>Just remain humble and open to learning and you&#x27;ll wake up one day and realize you&#x27;re actually not bad at this programming thing ;)<p>&quot;Better than a thousand days of diligent study is one day with a great teacher&quot;<p>– Japanese Proverb
评论 #13143995 未加载
wolfspider超过 8 年前
I have a simpler explanation for this feeling- it&#x27;s just that time of year again. Judging by the other responses it&#x27;s just on everyone&#x27;s minds. We can all look back and take stock of what we accomplished throughout the year and feel like we could have done more, could have done it better. When I&#x27;m bored I like to window shop cheap used cars on CraigsList. I think to myself &quot;No one sees what I see in this beauty- if it was mine I&#x27;d be so happy&quot;. Code can be the same way and it seems like if it was yours it would be a new lease on life. The code may be found in the darkest corners of the internet so neglected but so much potential. Recognize in that moment you are creating your &quot;style&quot; your &quot;way&quot; of creating the inspiration which is really the goal. It&#x27;s not about personal worth it&#x27;s really about feeling free to create. Developers are their most creative selves when they are happy so...my first suspect in finding the path to developer enlightenment is environmental factors. Development IDE? Workspace area? Skipping breakfast? Look at these things with objective eyes then try to improve them then try again. Merging all of this with financial concerns is going to wire your brain&#x27;s reward system up for self defeat- gain the freedom first then the money.
abc_lisper超过 8 年前
You may be right. You are missing something.<p>The way to build big things is to build small things right. Small functions&#x2F;classes that work correctly, no matter the input. Next up, you wield them to build up a layer and so on. Long story short, you may be missing the concept of abstraction. I say that because you mentioned code interactions; that tells me you are looking at things so closely, the bigger picture seems much larger than it is.<p>Also, understand that people have different perspectives; that they came up because of some random events. It is a mistake to think people who do a lot of work, think a lot. They don&#x27;t - They usually have a simpler&#x2F;more powerful perspective than you have ie, they refactored the thinking required to do a job into smaller number of steps. This is what chess players or the mathematicians do.<p>Also, you may be aiming too high without background knowledge. An object cache layer for SQL? - Who said this was easy?<p>Automatic code gen via YAML? - Did you write a toy interpreter before?<p>MIDI over Wi-Fi? Audio destuttering? - I don&#x27;t even know what those mean, and Im working as a programmer for more than 10 years, and now in a &quot;big&quot; company.<p>Do you read a lot? Many of the successful people (coding or other fields) do<p>May be you can start by reading SICP. It certainly cleared a lot of cobwebs for me.
mamcx超过 8 年前
Do you know when some naive people claim that build a &quot;simple CRUD app&quot; is easy, but a OS or a Database engine or a Game engine or Language or Super-Cool-Algo_performace-magnificence or Super-Science-thingy is hard?<p>All of them are super-wrong.<p>All of them are long, hard projects. All of them requiere specific skills, that maybe are hard to know because you don&#x27;t find much info about how do them (for example, I haven&#x27;t find good enough, simple material in how build a relational engine).<p>But do it are easy. Because the &quot;science&quot; behind them is more SETTLED. Is just niche.<p>&gt; YapDatabase, Audiobus, or AudioKit<p>I don&#x27;t know them, but it look the same as the things I&#x27;m talking about. I LOVED to have the time or funding to devote to this kind of projects and living from them (ie: I want to build a relational language.)<p>IN CONTRAST<p>The most &quot;simple&quot; apps, are HARD TO DO.<p>Them are easy projects, but DO THEM is harder. The specs are unclear, you can&#x27;t rely in a cool algo that solve most of it, you can&#x27;t relly in a big, large, solid foundation, you NEED TO BUILD AND PULL from several sources in how do them.<p>Rocket Science is &quot;solved&quot;, but you can waste months trying to finally know what the hell is necessary to build that e-commerce website.<p>Just look at the madness with JS. Is now easier doing assembler than that.<p>----<p>So, I mean that the human factors are the uncertain nature of most software projects are a higher burden that the actual &quot;hard&quot; projects.
评论 #13143577 未加载
评论 #13146866 未加载
rubicon33超过 8 年前
Passion.<p>It sounds too simple, but it&#x27;s true. My best, most thoughtful, and beautiful work, has been done when I&#x27;ve been intrinsically motivated by the sheer interest and desire to do that work.<p>In some ways, I was a better, faster, smarter programmer, with 3 months of experience than I am now.<p>That&#x27;s not objectively true, but the point remains valid. If you&#x27;re struggling, you may need to re-ignite that fire. Try and remind yourself why you got into this in the first place. Stop worrying about how you compare to other people, and start building something that excites you. Flow.
评论 #13146095 未加载
westurner超过 8 年前
For identifying strengths and weaknesses: &quot;Programmer Competency Matrix&quot;:<p>- <a href="http:&#x2F;&#x2F;sijinjoseph.com&#x2F;programmer-competency-matrix&#x2F;" rel="nofollow">http:&#x2F;&#x2F;sijinjoseph.com&#x2F;programmer-competency-matrix&#x2F;</a><p>- <a href="https:&#x2F;&#x2F;competency-checklist.appspot.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;competency-checklist.appspot.com&#x2F;</a><p>- <a href="https:&#x2F;&#x2F;github.com&#x2F;hltbra&#x2F;programmer-competency-checklist" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;hltbra&#x2F;programmer-competency-checklist</a><p>... from: <a href="https:&#x2F;&#x2F;wrdrd.com&#x2F;docs&#x2F;consulting&#x2F;software-development#computer-science-curricula" rel="nofollow">https:&#x2F;&#x2F;wrdrd.com&#x2F;docs&#x2F;consulting&#x2F;software-development#compu...</a> )<p>&gt; How do I get good enough to consistently do work worth writing books about?<p>- These are great reads: &quot;The Architecture of Open Source Applications&quot; <a href="http:&#x2F;&#x2F;aosabook.org&#x2F;en&#x2F;" rel="nofollow">http:&#x2F;&#x2F;aosabook.org&#x2F;en&#x2F;</a><p>- TDD.
评论 #13145410 未加载
tpae超过 8 年前
I used to be like you, until I went back to the basics. Elon Musk once said, you must master of the basics, which becomes the foundation of which you build your knowledge. If your foundation is weak, there&#x27;s going to be hard limits to your knowledge.<p>I&#x27;ve been re-writing basic algos from scratch, and eventually more complex ones (Dijkstras, Graphs, and etc.), and understanding CS fundamentals helped me get past this hurdle.
kfrzcode超过 8 年前
Hey tastyface. I feel you. I&#x27;m here. I didn&#x27;t graduate from college, and my knowledge is ad-hoc, learned-by-doing and incomplete. I told myself I wouldn&#x27;t give up until I was making a living writing code. I&#x27;m doing that, and it&#x27;s been arduous, but I&#x27;ve never been more intellectually fulfilled.<p>It&#x27;s scary, to think there&#x27;s a whole new generation of programmers who probably can learn faster and more fully internalize algorithms and data structures and design patterns... but we can all keep learning. There&#x27;s no limit to how much you can learn in this field, so to supercharge your work the answer is simple: work 80-100 hour weeks like Elon, but make sure you&#x27;re actually producing at least 80% of those hours.. meaning, writing and creating code not just reading or consuming knowledge. I don&#x27;t know how many people I&#x27;ve met that assume poking around reddit, HN or s&#x2F;o means &quot;working.&quot; Those people will never outshine you if you continuously push your limits and are always feeling in awe. That means you&#x27;re on to something.<p>Keep it up, you&#x27;re doing exactly what you should be doing - reflecting.
评论 #13143870 未加载
Todd超过 8 年前
First, you&#x27;re comparing two different domains. App developers (whether mobile, web, or some other environment) live at the top of the stack. As such, they must wrangle many disparate frameworks and libraries to achieve their goals. Framework developers can focus on a narrower set of concerns--albeit sometimes quite deep.<p>I would suggest that you stop comparing yourself to them and their achievements. Rather, use their example as a starting point in your pursuit of improvement.<p>Many others offer good advice here, but one of the cornerstones is to look at what others are doing--often and deeply. Many have asked, &quot;How do I become a great writer?&quot; The answer invariably is, you must be a great reader. You need to read A LOT.<p>The same goes for math. You must solve problems. That&#x27;s the other half of the coin. You need to do. So pick a problem that hasn&#x27;t been addressed. Maybe there&#x27;s something you haven&#x27;t found a library or framework for. Take the opportunity to build it, package it, and open source it. You&#x27;ll see that the set of concerns is different from that of an app developer.<p>Edit: typo
Kaizyn超过 8 年前
See Norvig&#x27;s Teach Yourself Programming in Ten Years: <a href="http:&#x2F;&#x2F;norvig.com&#x2F;21-days.html" rel="nofollow">http:&#x2F;&#x2F;norvig.com&#x2F;21-days.html</a><p>Keep in mind also there&#x27;s a difference between a full stack app and a focused framework. With the end-to-end app, you have to solve many different kinds of problems spanning many domains. Therefore your learning curve to start is going to be a bit higher due simply to there being more ground to cover.<p>To get better, you need to write more code and to study architecture of other systems. The collection Architecture of Open Source Applications is a good place to start reading.<p>With all this said, don&#x27;t beat yourself up too badly. Facebook has been making changes to mercurial version control to make it scale to work for their whole organization. They chose the less popular vcs because the code of git isn&#x27;t organised very well and it was too difficult for them to extend&#x2F;modify it.
jakobegger超过 8 年前
&gt; The code is generally messy and horrible, rife with race conditions and barely holding together in parts.<p>Writing robust asynchronous code is very, very hard. My biggest mistake as as a beginner was that in the early days I just made up all my multithreading stuff on the spot. I made a synchronous prototype, and thought, perfect, now I just need to make it asynchronous.<p>Now I understand that &quot;making it asynchronous&quot; is more work than coming up with the initial implementation, and spend a lot more time on that.<p>I spend a lot more time on planning in general. I sometimes think about features for weeks or months before I start programming. I&#x27;ll read all the relevant API docs, search Google to see if other people have implemented similar things before, etc.<p>Only then, when I&#x27;m well-prepared, I actually start coding. And the actual writing is usually pretty quick, but it needed a lot of (invisible) preparation time to get there...
manmal超过 8 年前
I also do iOS apps, and I think the reason for bugs and low maintainability in our domain (i.e. programs that have to power a GUI and all its states) is convoluted state. You stack feature upon feature, and once the system gets big enough, it&#x27;s getting hard to get a proper grip of what is actually happening. So you start monkey patching, and you start to regret not having written any integration tests that would tell you when you introduce regressions.<p>State has to be managed rigidly. If you cannot deduce what semantic state your app is in while you debug, then chances are things will go wrong.<p>I have found two approaches that work for me: Reactive programming, and good old state machines. The former is needed when there is so much state that the latter would be too complex (too many possible permutations &gt; too many states to grasp).<p>Every property that your screen has (element A is hidden, element B has this text, animation C is in flight...) should be derived from the current screen&#x27;s state machine or stream of values. Meaning, state 1 will set A to hidden, B has no text, and C is stopped; state 2 will set A to not-hidden, B has text &quot;xyz&quot; and C is still stopped, etc. It&#x27;s kind of like React, but on a lower level - properties are overridden or methods are called when transitioning between states. One could call this state machine &quot;ViewModel&quot; :) Swift brought us Enums with attached values, so they are perfect for modeling a state machine. IMO Optionals also prevent some state sloppiness we had with Obj-C&#x27;s nil behavior.<p>I&#x27;m not saying state machines or Reactive programming are a panacea, but they have solved the problem for me. I&#x27;m confident in my code now, and have the feeling that I do solid work (which is good as I&#x27;m huge on feeling like an imposter). As long as I use Swift and RAC or state machines, the very most bugs I cause are of semantic nature - e.g. a button text is wrong in such and such state. But crashes or unreproducible behavior are really rare now.
Jach超过 8 年前
Work with other people. Preferably a mix of people who seem less&#x2F;equal&#x2F;more capable than you are, but if you have to pick one, go with working with people that are above your level. Look at how they work, how they approach problems. Get code reviews from them, and review their code.<p>Don&#x27;t get set in your ways (or the ways of those better than you), be willing to try new things and see if it fits your style.<p>Go slow before you go fast. It took you a month to add copy&#x2F;paste -- so what? Next time, put in extra effort to try new ways of working, playing with the code, writing invisible support code no one else will see, writing tests perhaps, writing English before code, getting feedback, etc., instead of what I assume your normal approach is of &quot;need to get this out quickly!&quot;, and it&#x27;ll probably take two months, but so what? Eventually you&#x27;ll get faster as enough experiences have taught you what goes well and what doesn&#x27;t, but you need to slow down to get those experiences first.<p>Of course, some people are just super-geniuses. Measuring yourself against them is just a recipe for depression. To quote &#x27;Eliezer:<p>&quot;...if you have difficulty with any programming concept, you must not be a supergenius. You&#x27;re just an ordinary genius at best. The sad truth is that there are some people for whom programming comes as naturally as thinking, with code formed as easily as thoughts; and if it takes an effort to understand any aspect of programming, you have just learned that you are not one of those people. Alas.&quot;
评论 #13144484 未加载
codr4life超过 8 年前
Write more code. Learn different languages. Reinvent wheels. Stop following the herd. Most of the people who&#x27;s code you&#x27;re admiring have been blazing their own trails for decades. There are no short cuts to experience. Good luck!
评论 #13143364 未加载
评论 #13142576 未加载
seanwilson超过 8 年前
&gt; Over the past 3 years, I&#x27;ve released a few apps on iOS: not bad, nothing that would amaze anyone here. The code is generally messy and horrible, rife with race conditions and barely holding together in parts. (Biggest: 30k LOC.) While I&#x27;m proud of my work — especially design-wise — I feel most of my time was spent on battling stupid bugs. I haven&#x27;t gained any specialist knowledge — just bloggable API experience. There&#x27;s nothing I could write a book about.<p>Why do you feel you&#x27;re doing anything wrong..? If you&#x27;ve released multiple apps (30K LOC is a lot!) you&#x27;re way ahead of most people who never release anything. Comparing yourself to the most prolific developers is a recipe to make you feel bad about yourself.<p>Writing 30K LOC with minimal bugs is a massive undertaking by the way. Maybe look into using languages with stronger type systems along with automated tests to help. Also, you could rely on third party libraries to do more of the heavy lifting or just remove&#x2F;simplify features you don&#x27;t really need. Either way it just takes a lot of work and time.
itamarst超过 8 年前
It sounds like you&#x27;re working alone? Getting feedback is key to learning, and it&#x27;s hard to do that on your own.<p>1. If you have skilled coworkers doing code reviews (or contribute to an open source project that does code reviews) you will get a lot more feedback.<p>2. Writing unit tests will provide some level of feedback, but it&#x27;s not as good for learning as human feedback.
JamesBarney超过 8 年前
Learn how to write. This is something I&#x27;m working on slowly. But seriously, documentation can separate successful open source projects from unsuccessful ones.<p>Also when you&#x27;re working for a client ability to communicate and make sure you&#x27;re building the right thing will trump building the thing right.
heisenbit超过 8 年前
There are several aspects I see<p>- Writing 30KLOC yourself is a real lot<p>- Maybe it is too much? Try at times to refactor to make it denser<p>- Good libraries come from re-use. Either a genius came up with something reusable from scratch or someone got better at solving a problem until a piece emerged that was worth sharing.<p>- Good libraries come from discussion and exchange of ideas. There is a lead but there are contributors too.<p>- There is a difference between apps and frameworks. The code and not the app is the product and customers are devs. Has implications e.g. how to do marketing.<p>- Are you made for this? Some solve problems really fast and good enough, then move on. Some others solve problems really well and stick with problems for a long time. Both types have value. Look at your life outside coding for clues.
codecamper超过 8 年前
First off, you can spend a lot of time adding amazing features that are never used.<p>Second, many successful products weren&#x27;t all that complex. (though I&#x27;m not sure if these days still exist)<p>Third, realize that most stuff that gets created disappears into the infinity of time &amp; just gets replaced with other stuff.<p>Fourth... do you love your grandparents? (or parents, or friends) I hope you still have them. If so, then be sure you call them on their birthdays &amp; on holidays. Maybe even send a card. Spend as much time with them as possible. They are truly the most important things to your life. The rest is just icing.
analog31超过 8 年前
Maybe you need to get yourself into an environment where there are other people around who can critique your work, and from whom you can learn better habits through observation. This may work better in an environment where you are in physical proximity with co-workers, i.e., a traditional software shop kind of job. Even if this kind of work isn&#x27;t your ultimate dream.<p>Also, maybe some people are better suited to solo work, and others to group work where there is some rigor imposed by the team or by the employer. You may be in the latter camp.
gaelow超过 8 年前
Coding ability wise, elite coders are usually already well above the average professional senior programmer level while still in their teens (emphasis on coding ability wise).<p>But,<p>- They are a tiny fraction of the collective. Pretty much everyone else sucks at programming.<p>- Coding is like working out. Even if you are not elite, you can improve a lot if you persevere. All the way through your entire career, no matter how long.<p>- It is not all about coding skills. Maybe for those 40k LOC one-man app guys it is, but that&#x27;s not even the most common scenario anymore. You can compensate with other skills such as being inspirational, having good insights, ability to QA a product&#x2F;design and identify its weak spots and potential on the early stages, ability to break down a problem into smaller ones and prioritize your tasks, ability to evaluate, understand and communicate with team mates and clients (social skills with coding skills is always a winning combination)... The list goes on and on. Even though it&#x27;s not all related to programming, it is stuff you&#x27;ll eventually have to deal with as a professional programmer, specially in the startup world.<p>Code is reusable. You don&#x27;t have to be a genius coder to put together a slick and successful app. Even for the most innovative software, the code of every part is most likely already there, written by experts in a clean, efficient, robust and well-documented module you can use free of charge, even commercially. So go on and use it. (I know it&#x27;s actually not that easy, but mostly piles of crap until you find something useful and learn to use it properly. You get better at that too).
blablabla123超过 8 年前
It&#x27;s all a matter of perspective but if you want to work on it, these things can be learned.<p>Around 5-7 years ago I didn&#x27;t consider my code exactly high quality, especially when building things from scratch. So I tried to understand what makes good code good, and actually how to spot it. Mostly through reading blog articles, reading actual code and thinking about code. I also got books but only 5 in these years in total. I read only 2 of them through.<p>So Google is your friend... Have problems with race conditions? There are solutions to that CSP (Golang), Reactor pattern, using 0mq or even STM.<p>Also don&#x27;t forget that one things is skill&#x2F;experience, the other is choosing proper tools. Are you using a simple editor or a heavy-weight IDE? When trying MIDI over Wifi do you Google and try to reproduce the first blog entry you find about. Or do you rather choose high quality components&#x2F;libraries? # Github stars are a nice indicator for good libs with concise APIs.<p>But yeah, on the other hand you also need to ask yourself is it worth it? Do you want to be mega focussed and productive? Or do you want to create various things? Being super productive in some place sometimes feels for me a bit Zen-like but on the other hand also a bit boring.
SixSigma超过 8 年前
Lots of programmers like me, started when they were kids - I was 11 when I started writing code. 36 years later I&#x27;m still learning and I don&#x27;t mean &quot;learning to use such and such API&quot;.<p>I&#x27;ve hung around awesome programmers too, much better than I. Some you will even have heard of.<p>Specialists knowledge didn&#x27;t just fall out of the sky. It takes research &amp; patience.<p>Some people will always be better than you.<p>Your focus should be on being better than you were yesterday.
codetoon超过 8 年前
It is important to realize our current situation before we can upgrade yourself, so it is good you know that and are willing to do that.<p>Personally I believe that everyone has some natural strengths in one domain or another, that gives them an edge to do things a lot faster and can learn and understand things lot faster. For example I can understand technical stuff lot better and can learn new programming stuff lot faster, than I could ever learn playing a guitar or designing :) I believe that the people you mentioned above are excellent programmers&#x2F;architects and beyond that they have seen and dealt with more situations than any one doing regular programming. They might have built complex stuffs, they have read a lot - books and open source code, cleared the concepts, they have grown their knowledge and they have implemented it where they could. Basically your programming skills improve by doing complex stuff. Applying what you have learn&#x27;t whenever you get a chance (no matter how simple or complex the product could be). Implementing elegant solutions to problems that can have N possible solutions and no compromises.<p>I don&#x27;t say that being a programmer I cannot become a good musician but I think that the music I produce won&#x27;t match the quality of the code or program that I would write, and even if I could do it - it requires a great deal of effort time and dedication which I wouldn&#x27;t have required at that scale for coding. I am a programmer first and then may be a musician second. Someone would realize their own strength and work to polish it further, or may be someone would choose to become someone that interests them but it is not their core strength. It&#x27;s a personal choice.<p>My comment might be felt negative but I wrote this because I see a burning desire in you to do something and you have been trying it past 3 years, It might be worth to stop and point you to other perspective instead of giving you any standard advice. However if you are determined to take your level up than no one can stop you - all you would require is to rewire your brain - a great deal of effort and strong dedication. Personally I found books and reading open source code to be a good source of improving your programming knowledge and like any art I think the more you do it the better you become. You may also find some job&#x2F;freelance in some decent company where there could be challenging work&#x2F;projects - that can help you grow your knowledge rapidly.
blt超过 8 年前
There is lots of good advice in this thread. I would like to focus on your comment about race conditions. It&#x27;s very good that you have identified this weakness in your code. Writing concurrent code is hard, but it&#x27;s also valuable experience because there is no room for shortcuts. If you don&#x27;t do it right, your code <i>will</i> fail eventually. Therefore writing concurrent code, identifying bugs, and fixing them will train you to think rigorously about your code.<p>Diagnosing bugs often comes down an exploration of every possible sequence of events, trying to identify the pattern of sequences that triggers the bug, and figuring out how to fix it. In single-threaded code the debugger can make this task easy, but attaching a debugger (or even building in debug mode) often makes concurrency bugs go away, so you are forced to solve the problem in your head by analyzing the system. This experience is like strength training for programmers. I would suggest putting extra effort in the concurrent parts of your code, really try to make them correct. In the end, the practice will improve the quality of your non-concurrent code too.
20andup超过 8 年前
Judging from what you said. You need to learn to read the language rather than simply understanding the syntax. You need to understand what is going on under the hood.<p>Programming languages are just a bunch of random symbols and letters; each language has different syntax. But underlying them all is the same foundation of how languages are created. Learn to read your code like an essay rather than simply focusing on the sentence.
faitswulff超过 8 年前
Well, you could start with similar previous posts:<p><a href="https:&#x2F;&#x2F;hn.algolia.com&#x2F;?query=better%20programmer" rel="nofollow">https:&#x2F;&#x2F;hn.algolia.com&#x2F;?query=better%20programmer</a><p>I&#x27;m particularly interested in this thread, &quot;Ask HN: What habits made you a better programmer?&quot;:<p><a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=1674103" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=1674103</a>
shakkhar超过 8 年前
A bit late to the party, but I will chime in.<p>- Every developer out there at some point in his &#x2F; her life felt the same way as you do. Likely more than once.<p>- There aren&#x27;t many developer who can look at their own code written 5 years ago and be proud of it; may be if you are John Karmack.<p>- Being able to write beautiful code is definitely valuable, but being able to make a product is even more valuable.<p>- The programmers you mentioned are kind of by definition exceptional. Otherwise they wouldn&#x27;t get your attention.<p>You are not missing anything. You are just like the remaining 99% of us. And it looks like you are already trying to get better - so you WILL get better. Every piece of code you read, every book you read, every time you get a code review - you will improve a little.<p>Sadly, there is no formula to turn an average person into a prodigy. So don&#x27;t beat yourself up.
deepaksurti超过 8 年前
&gt;&gt; Major features were added over the course of weeks! &gt;&gt; — to say nothing of getting the overall architecture right from the start.<p>[Most likely] it is not that they got it right, right from the start. These &#x27;awesome&#x27; programmers would have spent weeks before getting it right. These classify as throw away experiments and they keep at it till it satisfies their own internal target of what the solution should be like till it is right.<p>The best parameter of that right could be say the simplicity of the overall internal implementation and the exposed external API.<p>Now I am not saying that there are not geniuses around, but even if they are getting it right, it will still be backed by countless hours of hard work and practice.<p>Most likely asking these awesome programmers how they are getting it right, will throw some more light.
bitwize超过 8 年前
There are no shortcuts to &quot;supercharging&quot; your work. Git gud, bro. Put in the effort. When you see exemplary code, study the principles behind it and seek to emulate it. I&#x27;m a better C programmer now than I was, for instance, because I read a lot of BSD source.
partycoder超过 8 年前
Some time ago I worked porting software. The software we ported was very successful financially. It also looked very polished from a user perspective.<p>But when I read the code I saw the code was really suboptimal (tech debt, and sometimes more convoluted than it strictly needed to be). That changed my perspective on code a bit. That did not change my programming rigor though.<p>My point is that sometimes excellent products are not necessarily excellent from an engineering perspective.<p>Now, to assess your engineering skills there&#x27;s a book called the IEEE SWEBOK (Software engineering body of knowledge), that is an index of the different areas of software engineering. You can go through each one and assess your strength and work on some of the imbalances this assessment would reveal.
spotman超过 8 年前
The fact your even asking this means your ahead of a lot of your peers.<p>None of this comes overnight. Many of us start out incredibly messy, and there is nothing wrong with that.<p>In fact it might give you an edge over folks that start out very elegant and by-the-book because you are used to dealing with things like race conditions and they expect none.<p>Remember this, the best code is never written the best it can be the first time around, and in a lot of cases never.<p>Code is a moving target, stay light on you feet, avoid religion of certain methodology ( to an extent ) and paddle towards things that you are proud of.<p>You will be fine and likely do great if you stick with it.<p>Finally, there will always, always be someone who knows more to you. There is no end to what you don&#x27;t know. The sooner you make peace with this the better!
ared38超过 8 年前
If you want to become a domain expert, become a domain expert. You won&#x27;t learn the intricacies of the newest structure from motion algorithms by writing user-facing apps. you have to specialize, possibly for years, until the domain is second nature and the code is just putting your knowledge into text, if you want to singlehandedly write a world-class library.<p>But for heavens sake, why? Do you actually care about how audio destuttering works, or do you just want your app to work well? Do you want to spend every waking moment thinking about a problem, or take time out to deconstruct Marvel tropes?<p>And yes, the programmers your talking about are the 1%. Do you think every good dev has books written about their work?
评论 #13142745 未加载
harigov超过 8 年前
You should do some data analysis on where you are spending most of your time when building software and see if there is a way to do it faster. You can read books and follow someone&#x27;s advice but nothing can be more useful to yourself than trying to navigate your own mind space in search of answers that you are looking for. If you figure out that you are spending most of your time deliberating how to name variables, you should spend time reading about programming styles. If you spend time debugging, identify what sort of bugs you are creating and try to go over books that cover most common programming bugs and try to incorporate them during programming time itself.
rjblackman超过 8 年前
read clean code <a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Clean-Code-Handbook-Software-Craftsmanship&#x2F;dp&#x2F;0132350882?_encoding=UTF8&amp;redirect=true" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Clean-Code-Handbook-Software-Craftsma...</a><p>and clean coder <a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;exec&#x2F;obidos&#x2F;ASIN&#x2F;0137081073&#x2F;metafilter-20&#x2F;ref=nosim&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;exec&#x2F;obidos&#x2F;ASIN&#x2F;0137081073&#x2F;metafilte...</a><p>If you follow the (admittedly pretty extreme) advice in these books you will be in the top 10% at least.
lmm超过 8 年前
The secret is to use good libraries and especially good languages. That you were chasing race conditions at all implies that you were programming at far too low a level (unless you really did need some super-tuned thing, which it sounds like you didn&#x27;t).<p>I&#x27;ll guess that you&#x27;re self-taught, and learnt one of these low-level languages that makes you spend most of your time dealing with irrelevant concerns? I&#x27;d recommend going back to basics, learning ML or a similar functional language, and rediscover how to program from the ground up but doing it right this time.
hyperpallium超过 8 年前
Actually typing code doesn&#x27;t take much time. Understanding the problem is the difficult bit.<p>If these developers are already familar with an area (perhaps even implemented it once or twice before), they can do it very quickly. Or have an office&#x2F;community of people who have, or seen other solutions, or are good at researching&#x2F;asking online (eg Larry Page asking for help with his java spider; you now).<p>Consider: how long would it take you to add cut-and-paste to your next app?<p>Race conditions are a nightmare for just about everyone. Change your architecture to minimize cross-thread communication, and use queues when you can&#x27;t avoid it.<p>APIs also can be a nightmare, difficult to understand, don&#x27;t do what you need, under-documented and of course have their own bugs and required workarounds.<p>Finally, if you&#x27;re still spending too much time debugging, you might need to change your approach in other ways. e.g. code only a bit at a time, testing it immediately, so you know what has introduced the bug; write modules that you understand, so once they are debugged, you don&#x27;t have to worry about them; unit tests can help but aren&#x27;t essential. It can be helpful to trace through their source code, so you know what&#x27;s happening.<p>If you understand what you&#x27;re doing, bugs are usually easy to diagnose and fix. It&#x27;s gaining the understanding that takes the time - and, I would claim, <i>is</i> programming.<p>Maybe there are programmers who, due to prior experience, concentration powers, talent, memory or raw intelligence, <i>are</i> ten times faster than you (or more!). That shouldn&#x27;t discourage you from creating something worthwhile. Time spent doesn&#x27;t alter its worth. Provided it doesn&#x27;t take <i>too</i> long to complete, does this pride in competitive efficiency really matter?<p>BTW: Worth, popularity and usefulness are functions of the problem solved - not of the solution. A polished solution to a problem no one cares about has doesn&#x27;t help anyone nor get much attention.<p>Whereas an ugly solution to a huge problem will change the world. Even mathematicians and theoretical physicists sometimes start with inelegant solutions, though they get polished over time.
LiweiZ超过 8 年前
I&#x27;ll be 35 next year and started writing code when I was 30. I have very similar experience. This year, I focused on how to write better code instead of designing and building. I&#x27;m slowly getting better this year. My biggest code base for one of my prototype was around 25k LOC. I mainly wrote iOS app, too. I spent more than one year to take care of my kids so there was a long gap. And it has been difficult for me to find a job. There are always meaningful ideas and having the ability to bring some of them to life is my biggest motivation.
hellofunk超过 8 年前
&gt; The code is generally messy and horrible, rife with race conditions and barely holding together in parts.<p>It&#x27;s very good that you&#x27;ve had the experience of writing bad code, and recognizing that. It will make you expect more from yourself next time. And the process repeats. After many iterations you will be much better. And also more nimble. Writing 1000 lines is a lot for someone who has never done that before, but natural for someone who has a million lines under their belt.
zznneezznnee超过 8 年前
Before you compare your work to that of others you really need to know how much time was spent on both and normalize accordingly.<p>Additionally, many individuals in our industry have zero life outside of hacking on their software. It&#x27;s difficult if not impossible to be competitive with someone spending every waking hour practicing their craft without doing the same.
pmyjavec超过 8 年前
Don&#x27;t worry about it, enjoy your life, spend time in nature and cook yourself some nice food for dinner :)
评论 #13144211 未加载
评论 #13143368 未加载
mcheshier超过 8 年前
Don&#x27;t be too hard on yourself.<p>If you&#x27;re looking at other people&#x27;s code and finding new insights you can apply to your own work, you&#x27;re doing it right.<p>When you look at your old code and wonder:<p>How did this ever work? What idiot wrote <i>this</i>? WTF was I thinking?!?<p>You&#x27;re doing it right. It&#x27;s a sign of growth and improvement.
satyajeet23超过 8 年前
Reminds me of Developaralysis (<a href="https:&#x2F;&#x2F;techcrunch.com&#x2F;2014&#x2F;10&#x2F;18&#x2F;you-too-may-be-a-victim-of-developaralysis&#x2F;" rel="nofollow">https:&#x2F;&#x2F;techcrunch.com&#x2F;2014&#x2F;10&#x2F;18&#x2F;you-too-may-be-a-victim-of...</a>)
marmaduke超过 8 年前
I think the first few years of programming are the most difficult. You have to go through this process of building and throwing away. Only with that experience you learn to anticipate things should be put together. That makes thing go more quickly.
boon超过 8 年前
At least when you talk about reviewing code that &quot;someone wrote in a month&quot;, note that a quick `rm -rf .git; git init; git add *; git commit` works wonders for others&#x27; perception of how quickly you can produce code. :)
olalonde超过 8 年前
Having spent an embarrassingly large amount of time working on small libraries or side projects, I&#x27;d say you are probably underestimating the amount of time that was spent on those frameworks.
syngrog66超过 8 年前
this rings as very fake and&#x2F;or blatantly self-promotional. I wish HN had less of this type of post. I feel like a certain percentage of HN posters have learned how to push enough of the buttons of the rest of you to make it a net win for them. just nauseating.<p>And now come the downvotes, because I know I am effectively &quot;not allowed&quot; to express this kind of opinion without penalty -- yet I don&#x27;t care, let&#x27;s burn it up.
评论 #13147911 未加载
评论 #13144871 未加载
kornakiewicz超过 8 年前
If you compare yourself with others, you may become vain or bitter, for always there will be greater and lesser persons than yourself.
cammil超过 8 年前
Do you think you might have a confidence problem? Does this feeling or thought occur much in other aspects of your life?
socmag超过 8 年前
Hi<p>I just realized, I&#x27;m pretty sure I&#x27;m just passing my 40th anniversary of programming this month. Jeez I feel old.<p>How I made it this far I have no idea, but here I am still plugging away.<p>My eyes are going, I get tired easily, and my productivity is a hundredth of what it once was...<p>I look around here and don&#x27;t know what half of the posts are even about most of the time :-) In supposed to keep up with recurrent neural networks, the language of the month, algorithms research, which HTML template framework is or is not in vogue, whatever...<p>Over the years I&#x27;ve written a couple of books, built some pretty cool shit and had the pleasure to work with some of the best, but you know I&#x27;m really pretty damn dumb, and the only thing that has saved me is persistence.<p>I&#x27;ve felt like you many many times on occasion over the years.<p>Computer Science is a huge subject, and growing by the day, immeasurably larger than when I started. There is no way to keep up in all avenues... and that is fine.<p>It&#x27;s pretty normal and healthy to have a bit of a low self esteem about our work as software engineers because it is literally true that every piece of work can be better. Please try not to take that attitude a bit too far though.<p>You know, I got into this because when I was a kid I wanted to understand how computers work. They were a magical box of wires to me and still are.<p>I wrote code for fun, my own personal pleasure, and the hope that along the way maybe some of it is of some use to someone else. Maybe even make them smile. That&#x27;s what drives me and keeps me going.<p>I think my advice is just program because you enjoy it. Everything else will come.<p>Financial reward is a side effect, not a cause.<p>There is no huge race here. Programming is a very personal creative past time that takes an incredible amount of effort for all of us and a lot of patience.<p>I know it might seem at times looking around hacker news that everyone is way ahead. I can understand that, it&#x27;s a pretty elite set out here. But... I think deep down, the dirty little secret is everyone feels a bit crap compared to everyone else on here more often than we all let on. Fake it &#x27;til you make it. ;)<p>Like others said, you have so much to be proud of. Shipping multiple projects on iOS, wow!<p>The fact you are even looking into audio algorithms and things like MIDI over WiFi is great! Sounds like a lot of specialist knowledge you are building there. I&#x27;m impressed!<p>Maybe one pointer. Step back and stop, take some time and think about the machine instead of the problem at hand. I say that because you mention race conditions. Understanding why they are occurring will be of enormous help. Then when you figure it out, explain it to someone else.<p>But meh, stop whinning, It takes me weeks to do what I could once do in an afternoon :)<p>You are doing great.<p>Keep it up man, it&#x27;s a really fun road.<p>Nice you are here.. let it flow.
jedanbik超过 8 年前
Do you need a mentor? What kind of teams do you work on?
auspex超过 8 年前
You probably should learn design patterns
known超过 8 年前
&quot;You are a product of your environment.&quot; --Clement Stone
buzzybee超过 8 年前
Programming is a practice that can be kind of deceptive in its valuation. To analogize to weightlifting, one of my favorite things to analogize against, you can see that someone lifted a lot, and you see that they did in fact lift it all by themselves, but you don&#x27;t see how they get to that point, and you can&#x27;t simply put on the same number of plates on the bar and hope to succeed.<p>A likewise naive path is to copy example code, do something slightly different from it, and then wonder why it&#x27;s broken. You can&#x27;t be really great at programming by doing that, because you&#x27;re abdicating so much control to wishful thinking: &quot;I hope this example author considered my use case!&quot;<p>What you can do - and you probably have the guts to do it, if you&#x27;re writing 30 KLOC apps on your own time - is to attack things one technique at a time, and to attack the hardest, most lasting stuff first before you get into more specialized and ephemeral knowledge like API calls. It&#x27;s the adjustment of what you care about that leads you to direct your coding towards unfamiliar yet profitable roads, where you have to envision very big ideas that aren&#x27;t in place yet, struggle with them for days or weeks, and ultimately find a great technique that you can reuse in the future.<p>To take one example, UI code is wonderful stuff for adding end-user value. But if you want extreme leverage in your code it can&#x27;t be the first priority, because it&#x27;s also stuff that tends to be thrown out frequently - because other features change, or you&#x27;re on a new toolkit, or you found a slicker design. You have to instead allow the UI to be too crude at first, and think about application features as a layer apart from the UI. And then only as you come towards the end, confident that the core features are correct and will be robust against a partially-working UI, can you go back and invest in a great presentation.<p>Likewise, it&#x27;s tempting to make code that is clever in-the-small, at the moment you first dip into making a new feature; to invent class hierarchies and configuration objects and generics and other nifty things. But what you need most at that moment where it&#x27;s new is the most boring, plain code possible, because if you don&#x27;t know the problem space yet, anything clever that might add structure or allude to generalizing the problem along any one axis is likely to do so wrongly, and the most flexible you can be is to assume it&#x27;s all disposable and should be extended with copy-paste-modify. Fancy language features were made to break through problems with the crude techniques, so if you follow with that grain and only add the features after you feel pain, everything tends to go much more smoothly.<p>Most of all, it&#x27;s scary to take on seemingly big problems, but it&#x27;s scary in a way that should not influence your decision whether or not to attack them. These problems feel big mostly because they aren&#x27;t well understood to <i>you</i>. In the same way that math students are prompted to take on gradually more ambitious levels of abstraction, you have to do the same with your code. You start with your bad assumptions and knock them out with a dash of computer science knowledge, and a lot more trial and error. There will be bugs and bad decisions along the way, but you can also learn defensive techniques against them. Some attempts to defend your code may just make it harder to write or more brittle; others will succeed dramatically. You won&#x27;t know these things until you try(or get very good advice from someone who solved a similar problem to yours) because every problem domain in programming has a unique solution profile, where some things matter more than others.
评论 #13151480 未加载
reality_czech超过 8 年前
Two words: Ballmer Peak.
InfiniteStyles超过 8 年前
practice.
sean_patel超过 8 年前
&gt; Over the past 3 years, I&#x27;ve released a few apps on iOS.<p>Wow. That alone puts you in the Top 1 to 5% of your peers. Even many experienced programmers have trouble shipping code. They (we) wait for it to be &quot;Perfect&quot;. The code ends up languishing in some repo and never sees the light of the day.<p>1-man frameworks are the wrong things to look at. Don&#x27;t compare yourself with them. Of course you&#x27;ll feel bad and inadequate.<p>Maybe you need to shore up your self-esteem. I say this because your feelings about your own abilities will show through in job interviews, and when having discussions with your peers, and you will get short changed (salary, promotions etc).<p>So I would say, just keep at it, and try to improve everyday. And don&#x27;t compete with others, compete with yourself.
gragas超过 8 年前
&gt;the code is generally messy and horrible, rife with race conditions and barely holding together in parts.<p>immediately followed by<p>&gt;I&#x27;m proud of my work — especially design-wise<p>ummmmm.... what?
评论 #13144029 未加载