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: Desktop Application – how does your team develop it?

19 pointsby valandalmost 4 years ago
I am curious how desktop application development done out there, especially those with relatively large amount of intertwining features. I&#x27;m looking for insight from experienced developers in HN about it. Complex desktop application in this context can be anything: Slack, Figma, Spotify, Word processors, CAD software (SketchUp, AutoCAD), 3D software (Blender, Maya), Digital Audio Workstation (Cubase, Ableton), Browsers, Video Games (especially those with custom a game engine) and Game Engines, etc.<p>Here are the questions that I have about those, but if you have more anything that comes to your mind other than what are asked by the questions, please do share.<p>- How big is your team?<p>- What are the essential roles need to be in the team?<p>- From feature inception to release, how long does a feature takes? What are the process needed along the way?<p>- How does your team prevent regressions?<p>- How does your team share knowledge effectively?<p>- What is the testing strategy?<p>- What are the methods and tools used to design the application architecture?<p>- Absolutely, anything else that comes to your mind.<p>Thanks!

5 comments

grizzlyenglishalmost 4 years ago
- How big is your team?<p>4 Dev, 2 BA&#x2F;QA, 1 Product, 2 Administrators<p>- What are the essential roles need to be in the team?<p>Pretty much the listed above, but with the added separation of build target for developer.<p>- From feature inception to release, how long does a feature takes? What are the process needed along the way?<p>Depends on the UI&#x2F;UX due to the fact that we target so many platforms, if there is any platform specific UI&#x2F;UX then that will add to the till release. However, most of the time this is not the case and we have quarterly releases. In order to go from inception to release we have to follow the normal BA -&gt; SWAG -&gt; Development -&gt; QA -&gt; Release<p>- How does your team prevent regressions?<p>Code review and automated testing<p>- How does your team share knowledge effectively?<p>Domain knowledge? Not so well, our BA&#x2F;QA&#x27;s are always available to help understand any domain knowledge that is needed to implement a feature or fix a bug.<p>- What is the testing strategy?<p>TDD with smoke tests via katalon<p>- What are the methods and tools used to design the application architecture?<p>iDesign methodology with Azure<p>I recently just switched from the web world to the application world, and it has been a bit of a pain due to the necessary understanding of platform specifics, installers, apk, ect. But, I think moving forward application development will only get easier with things like .NET MAUI, Flutter, ect.
yarcobalmost 4 years ago
- team size 2-3 people<p>- someone with a &quot;vision&quot; who decides what to build, and someone who keeps track of what to do next. (Can be the same person)<p>- mostly depends on how complicated the UI is. If you need to do a couple of revisions, a feature will easily take 6 months. Minor features take two or three weeks. Some features we talk about for years before we implement them.<p>- automatic tests and a lots of beta testers<p>- Github issues, commit messages, code comments, and lots of video calls<p>- we write automatic tests for most of the business logic, and do manual tests for UI things. And we make it easy for beta testers to contact us, because stuff always slips through.<p>- we try to stick to platform best practices, so a lot of decisions come down to &quot;what&#x27;s the most natural way to solve the problem in this framework&quot;. Lots of whiteboarding, diagrams, and design documents are created when starting with a new feature. We don&#x27;t follow a specific method.<p>- Start with the bare minimum and make sure you get people to use it as soon as possible. Watch people use your software -- what you find intuitive might not be intuitive for your users. Users will send feedback only when they want something. Don&#x27;t build everything people ask for, make sure it&#x27;s actually a good fit for the app first.
throaway9384729almost 4 years ago
- Team has 5-10 members - Company has 450-700 employees.<p>- Most important roles are Architect + Manager<p>- A feature will take months or years from analysis (planning) to backlog to implementation to testing to release.<p>- Regressions : see testing<p>- A lot of important knowledge resides in people&#x27;s head even though we have high internal documentation standards.<p>- Testing: Manual tests are performed on whole application before yearly release by all team members. Automated ui tests run everyday. We are beginning to use automated unit testing.<p>- Architecture : We have a very old but flexible internal application structure with a set of tools and an internal language - too long to describe here. Most design occurs in word documents.
评论 #27607571 未加载
olvy0almost 4 years ago
Medium size in-house desktop application, not a commercial product.<p>Has about 100 internal users.<p>Dev team is 8 people, only 4 full time, and 2 QA engineers who are also part time, since they also test other applications. In addition there&#x27;s a large support&#x2F;integration team of around 30 people who occasionally contribute new code and bug fixes.<p>The essential roles are team lead, technical lead, and a slightly less essential PM.<p>I&#x27;m the technical lead, which is a sort of role that was tailored for me. I don&#x27;t make roadmap decisions, but I&#x27;m usually consulted before each decision is made.<p>I also help everyone on the team with tough debugging problem, and I also design each new big feature, or at least influence its design, and I also participate in all code reviews. I&#x27;m also an IC (individual contributor) myself, implementing new features and fixing bugs, and sending weekly status reports.<p>Everyone on the team does support. Sometimes we just assist the bigger support&#x2F;integration team, sometimes we work directly with the users. There&#x27;s a rotating roster of support in the core team, which officially doesn&#x27;t include me, but I&#x27;m always on hand to help with any tricky issues. Roughly 50%-70% of my time I either support my team or the users.<p>The team lead is similar but less technical (although she&#x27;s very good). She decides who does what, fills up Gantt charts for upper management, manages our tasks, and does one on ones with the team and deals with crises and complaining customers. She is also an IC, and working on her own allotted features, albeit slowly.<p>Both me and the team lead are former users &#x2F; support&#x2F;integration engineers of this product who transitioned into the team. The team has changed twice around us since we came on board. This helps a lot since we know what our users are going through and we speak their language.<p>I can&#x27;t stress that enough – it helps that both me and the team lead were essentially former support staff &#x2F; users of this product, and we have stayed with the organization and with this product even though we have many bad things to say about both of them.<p>We also spent many years in the company but had slightly different roles. Between us we know many people who started with us, many of whom are now in upper management. We both command some internal respect (sometimes it doesn&#x27;t help though).<p>Our PM … doesn&#x27;t do what usually is done in other companies. He does his job once in a week (he also has many other hats, in one of his other hats he&#x27;s also our direct manager), mostly protects us well from upper management shenanigans, and when necessary acts as a judge when we can&#x27;t reach a decision on our own.<p>The development team is split to small groups, we work on different features &#x2F; bugs, in teams of one or two at most. Each of us has ownership of a specific part of the application, me and the team lead together are familiar with all the parts.<p>A release takes about a year, although we aspire to bring it down to 6 months (so far unsuccessfully) and typically includes 2 big features and 2 small ones. We release alpha and beta versions to users. Our PM goes through a process of finding internal users who are early adopters and are willing to put up with a (mohre than usual) buggy software. It takes so long since like I said we aren&#x27;t dedicated to greenfield development, we also do a lot of support, bug fixes, documentation and presentations. We do the greenfield development in tandem with this.<p>Working on a new feature involves me and&#x2F;or the team lead sitting with the users and talking with them, then I go over the existing code, and flesh out a design, do a quick prototype, show it to the team. After an internal discussion we also show it to potential users, and for some visual changes we request feedback through an internal website. Then we open a new item in our work-tracking system with the details, name of the users who requested it, and for a big feature also document it in a document.<p>Backwards compatibility is huge for me personally, we try to never ever break anything, and deprecate things very slowly, if at all. Some of our users are non-technical and require hand-holding, and yell at us if we move things around without a good reason.<p>Regressions are a big problem, since historically the team was even smaller, and the team lead didn&#x27;t believe in QA at the time (unfortunately) so when I came aboard there were hardly any tests for the application. Over the last 8 years we&#x27;ve added many unit tests, integration tests, and our QA team has added a lot of automated GUI tests, but they are not enough since there are many small features and they often interact with each other. Most serious bugs appear while interacting with the GUI and several things start running in the background, and these are very hard to isolate and test.<p>Testing: Our QA team has a very detailed manual testing document for the application&#x27;s GUI which they run through before each major release. This catches some regressions each time. Some parts of it are automated, but by no means all. Currently the automated part is slowly being migrated to Ranorex.<p>I personally dogfood a lot when developing the application, while developing I pay attention to each small deviation from what I know, stop what I&#x27;m doing, document it, and either fix it or open a bug that will be triaged later. I&#x27;m a former QA myself so I find that natural, but other people in the team find it difficult.<p>A combination of these things (unit test, manual testing, dogfooding) prevent many regressions, but definitely not all.<p>Knowledge sharing – we share through code reviews, and informal chats. Usually when someone calls on me to help them with some tricky bug or design problem I also take the opportunity to teach them a bit more about that area of the code. So does the team lead. We don&#x27;t use any special tools to design. Most design happens in Word documents.
ghiaadevalmost 4 years ago
Electron all the way