12 ms·
That shipping stable software that works and meets requirements is what people really want. In other words, what the non-tech business people want, or your cust
by rhubarbcustard 9y ago
That shipping stable software that works and meets requirements is what people really want. In other words, what the non-tech business people want, or your customers want, is software that fixes their problems, makes their lives easier or makes them more money.
It's easy for us programmers to become fixated on using a newer JS framework, a slightly tighter Java loop or the latest cool language. Took me a few years to realise that even though I care a lot about those things, other people do not. They are interested in the outcomes, not how it got built.
I'm running my own business and building things for myself these days. I use vannilla JS on the front-end and Java 8 on the back. Since I gave up chasing the new cool tech I have built a bunch of stable systems that have been great, well received, products.
If you become someone who has a history of shipping things that work, you will do a lot better than someone who knows how to write hello world in every JS framework.
- Tinned_Tuna 9y agoThis. Make your _business_ case, not a technical case. This applies to software engineering, security engineering, etc. The above comment does not absolve you from doing cool things, it's just that the cool things should align with business interests. No yak shaving. Sometimes writing a one-off script will take 30 minutes, and doing it by hand will take 10. Do it by hand.
- jerven 9y agoThis! and know why you are building what you are building.
- i336_ 9y agoHere's my problem. I'm not particularly prolific, so the number of ideas I have far outweighs my execution so far. This is mostly due to ADHD and other issues which I'm working on fixing, and while contextually relevant is not my point. This lack of prolific-ness means that I have a literal tower (it's rather intimidating) of wanting to build cute but objectively not so useful routines simply for the sake of building them. I realize this is essentially the foundation of creativity, but I have a hard time justifying doing these things as I take a very long time to execute anything. So, the ideas file themselves away - and surface when I'm trying to design actual things I'd like to build. And I get horribly distracted with doing X or Y a certain way, or I get carried away with how I can build Z out like this or that idea I had two years ago... My problem is focus, I think, and mental partitioning, which I'm not good at. Does anyone have any suggestions for how I can do that?
- qaid 9y agoYour "problem" sounds different the one I currently deal with. My current solution is to have a backlog and spending time to prioritize them. I'd focus on my top priority, and continue writing down new ideas as they come into my mind. When I finish with the top priority, I re-evaluate to find out where the recent ideas fit in. I'd also look into reading about the agile methodology. If you're like me, ideas come in very frequently. Embrace your creativity and ambitions by logging them. But try and shift your mindset to thinking about what is actually necessary for the final product.
- gm-conspiracy 9y agoAlso, "freeze" your "features" at versioned levels for each project. If you want to add or alter something, that would be a new project. Otherwise, you will never finish a project.
- antoniuschan99 9y agoeg. "Sprints" in Agile
- antoniuschan99 9y agoLike the work you deliver to your boss or client, there is a Final Product. And yes, Agile is the best, because it's of the mindset that the Product is iterative!
- TheLegace 9y agoYour completely right, and it's something only someone with ADHD can understand. Depending on how bad your ADHD is, mental partitioning will be incredibly difficult thing to do and that has everything do with lack of attention/focus regulation. You will have to find a way to develop the capabilities of your brain(working memory, long term memory, task execution and completion, focus and accuracy). You will have to do something that you have been evolved to do which is to have a creative outlet (Dancing, Music, Art) to develop those abilities. There has to be a task where you have infinite focus/hyperfocus, that builds a higher ability. In a sense you don't have to do something that is hard, but something that comes natural and something that grows. The sequence of steps and motions that are required for dance, movement of muscles to precisely line up with the notes of a song, to reproduce the form of a drawing/painting all require some sort of mental partitioning. These things are all interrelated. I personally have only scratched the surface, because things become infinitely complex I have to decide what is the most important develop. If your lucky enough to be creative and logical these abilities will bleed into each other.
- e28eta 9y agoI printed this XKCD specifically to remind myself that some things aren't worth automating! https://xkcd.com/1205/ https://xkcd.com/1205/ On the other hand, sometimes you're automating for reasons other than time savings. Maybe reproducibility or auditability.
- tronbabylove 9y agoGreat point - the benefits of automation can't always be reduced to time saved per operation. I wrote a blog post [1] about this in response to that xkcd. [1] https://andrewstahlman.com/posts/IsItWorthTheTime.html https://andrewstahlman.com/posts/IsItWorthTheTime.html
- nocman 9y agoOr the fact that the task is so mundane/boring/annoying/irritating (pick an applicable adjective) that it's worth it to you to spend a day automating it so you never have to do it again.
- theandrewbailey 9y agoalso keep in mind: https://xkcd.com/1319/ https://xkcd.com/1319/
- collyw 9y agoThe problem with that is if you make a mistake the first time, then redo it by hand, you have used up 20 minutes. Made a second mistake, and you are even with automating it.
- arethuza 9y agoI strongly agree. However, there are special cases where you are exposed to a new technology which enables new outcomes. I was fortunate enough to blunder into using the Web in '92 and Java in early '95 and they were tools where the "how" did matter quite a lot... [NB I haven't touched Java in a dozen years or so]
- inlineint 9y agoAlso there are differences in further employment perspectives. I mean if you have a problem to solve and you have a choice to use some old tech that you already know, but it is going out fashion, and some new one, then the choice of the newer one improves your employability in the future. For example, I guess in 2000 there was not that much people with 5 years of experience of using Java in production, but those who had it, had to have pretty good chances to easily find decent job. Of course there is a risk to bet on wrong technology, but at least you keep learning instead of just using ageing tools and becoming more and more disconnected from the current state of the art. It can be as scary as this https://news.ycombinator.com/item?id=11886753 https://news.ycombinator.com/item?id=11886753, a story of a guy who successfully solved business problems and delivered products with jQuery for a long time and then eventually found that he was out of demand because businesses started looking for people with experience of using React and he didn't have it.
- rhubarbcustard 9y agoThat is true and can be a problem when recruiters just keyword match technologies from your CV. When I've recruited I've always tried to assess the candidate on ability to get things done rather than knowing a specific framework. I'd look at how deep their knowledge goes and see if they can ship stuff - if they've been using jQuery but I need React then I'm not too fussed if they've shipped quality products using jQuery and have taken the time to learn pretty deeply how it works, the keenness to learn and ability to build things should easily translate to React and I'd rather have this person that someone who has skimmed the top of React for a few Hello Worlds. I would hope and prey that interviewers would take a similar approach, if they are just ticking off keywords from your CV then it's a pain.
- Slaul 9y agoAre you using a java framework on the backend? Something like Spring maybe? I'm just curious, I've been thinking about using Java for the backend of my own projects.
- rhubarbcustard 9y agoI have used Spring before and I like it quite a bit. I have tended to use vanilla Servlets for most of my projects recently and use libraries like Gson, Apache Commons, PdfBox etc etc where appropriate. I think if anyone wants to go down the route of using Spring, Play or similar then you MUST spend the time learning it in pretty deep detail. I've seen so many people with "Spring experience" on their CV who can make a webpage appear using the tech but as soon as something goes wrong or they are asked to do something a little different they are screwed as they don't know the framework well enough. I only use vanilla Servlets and my own stuff because I have been building up my own libraries and ways of doing things over time and I've been burnt enough times with old-school frameworks (like JSF and Seam) that just add so much unnecessary work and ball-ache. I like to write the fewest lines of code possible and also use the fewest dependencies possible. I find that plain ol' Servlets gives me that for most of the stuff I do.
- Slaul 9y agoI appreciate the reply, thanks! Perhaps I will try to use vanilla servlets for one of my personal projects. I'll have to start reading the docs!
- agentgt 9y agoI have to agree with parent heavily and I used to be a long time Spring advocate since version 1.0. The thing you will find using Java for a long time at any company is you eventually end up with your own framework / stack.... Yeah sure there is some underlying DI or Web framework but a majority of it becomes your framework and workarounds/plugins/extensions for whatever DI/Framework you choose. I used to to think this was a terrible thing but these days I think using less dependencies, autoconfigure magic, and even using older technologies such as the Servlet API are just easier to maintain, understand, debug, stable and surprisingly easier to train new folks on.
- lcfcjs 9y agoIt took you 10 years to understand this?
- gm-conspiracy 9y agoWhat application server do you use for the backend? Tomcat?
- pjmlp 9y agoThis is why I always ask what is the business value of doing cool thing X on a project. Using your words if "using a newer JS framework, a slightly tighter Java loop or the latest cool language." doesn't improve the business value of what the customer is getting out of the product, it gets a very big NO. I became very much against "cv building driven programming".
- dangero 9y agoAlong those lines I'm always surprised at how many SUCCESSFUL tech companies even today are built with PHP. Tech stack is often not the driver of success or failure in a company.
- spdionis 9y agoBesides, PHP is a mature and very well working technology. Not shiny, but otherwise very good.
- eropple 9y agoThere's a balance to be struck there, though, and pejoratively referring to the seeking out of ways to improve as "CV driven programming" probably isn't the healthiest attitude out there. If you're not doing new things, you run a very great risk of sitting in a weak local maximum. Don't fix what isn't broken--but you need to be stretching out, too. Not doing so induces a sense of stagnation to a team and can chase off developers with ambition (which you can and should harness) and a sense of quality.
- pjmlp 9y agoI agree there is a balance to be met. For greenfield applications, chose whatever the customer ask for on their Request For Proposals, or suggest modern solutions if they leave it open to proposal reply. On existing solutions, deployed for several years on the field, actually measure what it brings in regarding business value. Either in terms of reducing project costs thus improving profit, or improving customer UI/UX thus improving the value the customers get out of the product, specially if it helps them to improve their profits. What I am against is just adopting tech that doesn't improve anything, sometimes even causes products to be abandoned or removed from the market, just for the benefit of a few devs improving their CVs. I have taken part in a couple of projects where it actually happened. Architects were busy chasing the new shinny instead of delivering what customers actually cared about. In the end the product was canned.
- rubicon33 9y agoI agree completely with this post but want to provide some additional insight that I've gained: Learn to enjoy your work as that's the only way you'll make it long term. If that means spending a little extra time to write an efficient algorithm or structure your code efficiently v.s. just "getting it done", then do so for your mental health, not for the company. You see, we're craftsman at the end of the day. We all want to feel like we are contributing quality work, and often that conflicts with the business's priorities. Take pride in your work and you will find it easier to show up at the desk each day.
- tsul 9y ago“A reminder that the goal of a given computer program is first of all to meet some business requirement may come across as a platitude. In practice, the excitement of technological challenges often slowly causes attention to drift from the end to the means…” —Stephane Faroult, “The Art of SQL”