0

In my formal employment in software engineering/development, I've noticed a pattern. When I understand the domain reasonably well for what I am developing for, I can be much more effective by at least one order of magnitude. For example, I recently worked on some SQL database systems and simply having used databases when writing backend code¹ before was enough to be able to take over a part of this project myself and produce code that got very positive feedback. It wasn't too hard to fill in the rest of the details that I needed.

But, when I was later assigned to work on some code relating to cryptocurrencies², I found myself completely lost. I tried to find materials to learn the domain, but becoming competent in a new domain like that can not be accomplished quickly. All of the material that I found was either uselessly non-technical marketing nonsense or far too advanced for me to understand at that point. As such, I was very unsure if the changes that I was making were correct as I did not understand the context that they were situated in. I often did not even know what changes I should be making, let alone if they were correct! Before either of these examples, I also had a similar situation with development in another area that I knew nothing about.

Surely I am not the first programmer to encounter this sort of problem, however, so, I ask, how can I deal with being assigned to work on projects in a domain that I am unfamiliar with? Are there any standard techniques here? This is partly partly a genuine knowledge issue (knowing what changes to make) and confidence issue (begin reasonably certain that I'm not mistaken/missing something/that those changes are the right ones). Ideally, in each new job/project/team I'd be able to quickly deliver useful results as I was able to do in the SQL example.

Also, I want to clarify that this question is not about understanding the code base of a new project, but about the domain that that code base is supposed to serve. I have found that not understanding the domain can make understanding the code to my personal standards essentially impossible, though.

Lastly, I would like to point out that although this questions is written from a job/career/employment perspective it is on-topic for this stack exchange as it is directly related to how to make myself more effective at writing software.

1: This means designing a schema then writing SQL queries to use this schema.

2: Not my choice, but I still tried. Don't focus too much on cryptocurrencies in particular as this questions is about any new domain that one might need to write software for and cryptocurrencies are simply an example that I experienced recently.

7
  • Re the close vote, this asks one question: how do I deal with this? An answer to a question like this is needed in order to ask less broad questions. Thus, a single specific question is being asked.
    – john01dav
    Apr 26, 2022 at 22:49
  • 4
    I often did not even know what changes I should be making, let alone if they were correct! This sounds like a management failure. Developers should be provided enough context to make the requested code changes.
    – Dan Wilson
    Apr 27, 2022 at 1:27
  • "it is on-topic for this stack exchange as it is directly related to how to make myself more effective at writing software." - this makes it a question about educational advice, which is equally off-topic on this site as career advice. Please look into our help center.
    – Doc Brown
    Apr 27, 2022 at 5:52
  • 1
    ... but FWIW: some domains are harder to learn than others, so I think you have to change your expectations. Cryptocurrencies involve a lot of math far beyond of what they teach you at high school. For such a topic, you should have a mathematician on board who has some knowledge in that field. When you are expecting to dive into such a deep field by yourself in a few weeks, you are expecting too much from yourself.
    – Doc Brown
    Apr 27, 2022 at 5:57
  • Congratulations, you've reached the boss level. Apr 27, 2022 at 6:39

1 Answer 1

5

Learn.

I know more about flying a plane than anyone who has never held a pilots license has any right to know. Why? I programmed for a flight school.

Yes, knowing the domain already helps. But if you aren’t willing to learn new domains this isn’t the field for you.

Yes, learning a new domain takes time. Spend time talking to domain experts. Add one to your team. Make them part of planning and tasking even if they don’t code. Make sure the vision for the product makes sense to them.

Yes, this means talking to people. Not what us code monkeys are good at. But it’s the best way to not end up a one trick pony.

Not the answer you're looking for? Browse other questions tagged or ask your own question.