Day 26: Write About Your Problem

Problem solving is a very individual process. Everyone has a preferred way of thinking about problems, and as a result they come up with their own methods and strategies to find solutions. Programming is similar in that there are several ways of solving any design or implementation issue. It is also a singular field in which developers spend most of their time solving problems.

This leads to the necessity of cultivating problem solving strategies in the programming field. Most programmers have a crystalized process that is used frequently for solving similar classes of problems. Many of the differences between programmers have to do with how effective their solutions processes are. That is why I think that discussing solution techniques is a very important part of becoming a better programmer.

Writing as an Exercise

One of my preferred methods for problem solution is to use the old pen and paper to write down solution possibilities. Unlike most people who like to draw diagrams, I think that writing words that convey meaning about the problem is the shortest way to understand and finally figure out a solution.

Writing has several advantages, but they are compound when it comes to software development. First, software creation is mainly a symbolic manipulation activity, in many ways similar to writing. The software creation process certainly has its peculiarities, but it  involves describing the problem at a level that can be understood not only by computers, but also by human beings.

Another of the advantages of writing in the initial phase is the opportunity to build up a vocabulary. Playing with words to explain and try to find potential solutions for a problem can help in building this vocabulary in a quick and effective way. Later on, this might be helpful in identifying key elements such as classes, methods, use cases and other components of the system.

Writing During Initial Design

The design phase is the part of the development process where writing plays an obvious role. First, when designing you will want to convince not only you, but probably your boss and other members of the group that your approach is viable. In this phase, you will be interested in creating a formal document such as a technical spec for the work that will come.

Even if a formal document is not necessary, it is a good idea to create something polished and presentable. The reason is that this will become necessary eventually. Even when working on your own projects it will come a time when you need to explain the design to someone else. Having a design document can greatly simplify this communication effort between you and other developers.

Having a technical spec can also be of great help for yourself, because it may serve to clarify issues that would not appear otherwise. For example, if two or more systems need to cooperate for your design to work, a spec can help you clarify the roles for each component of the system. This way, you can refer to the resulting documentation whenever you’re ready to work on the implementation.

Writing as an Implementation Strategy

Another good use for writing is as part of the coding process itself. During this phase, one is interested not only on what will be done, but in the exact details of how some programing task can be accomplished.

A few people have perfected this kind of coding strategy. The best known of them is professor Knuth from Stanford. He was the creator of the literate programming technique, which is based on a simple idea: first write one or more paragraphs describing whatever a section of code is supposed to do and how it will be accomplished, then present the source code that achieves the desired result.

The great advantage is that, by writing first, you are thinking about particular issues that the code will have to deal with. Once you start writing the code itself, the whole strategy will be well developed. While doing this takes some extra time, depending on the complexity of what you’re implementing it may be a net win. I wouldn’t spend this energy to write software that I already know how it is supposed to work. On the other hand, writing complex functionality may benefit from the extra care, and literate programming can be a big win in this case.

Writing for Debugging Purposes

Debugging can also benefit from good, organized writing. The typical problem during a debug session is to track the reason why some unexpected event is happening. That may include things such as a crash, or a value that is printed incorrectly. Whatever the erroneous event you are trying to debug, it is easier to trace the causes if you write down the known reasons.

It turns out that writing a few paragraphs about how a bug happens may be the key to find its solution. The reason is that by writing about the problem you need to put the known facts in a logical sequence, and that sequence is frequently the key to understand how a bug is triggered. Composing a good description of how a bug is happening may provide all the elements necessary to pinpoint where the faulty code is.

For more complicated cases, I like to add some description of the involved code and the methods in the stack trace — if one is available. Then, it is possible to write down the sequence of events happening in the application from the point of view of the code being executed. Of course, I don’t need to do this for every bug, since it is a time consuming process. But for bugs that are difficult to solve, writing seems to be better than spending my time aimlessly staring at code.

Conclusion

Writing is a great way to make concepts clear both for you as well as for other people. As a development tool, writing has been explored by several programmers. For example, it is a major part of techniques such as literate programming. However, you don’t need to change your programming strategies to benefit from writing as a planning method. Just put your thoughts on paper, giving proper names to concepts, will increase of capacity of analyzing problems and uncover bugs even before they hit your code.

Similar Posts:

Similar Posts

18 Comments

  1. Totally agree.

    In terms of design, the process of distilling ideas into a clear, concise document solidifies them in your own mind, reveals contradictions, omissions and other issues.

    I also like to use scratch paper when working through elusive bugs. I’ve been laughed at for this, but it works for me.

  2. Einige Boni aktivieren sich beispielsweise von selbst, wenn
    Sie Ihren Code eingeben, während andere möglicherweise erfordern,
    dass Sie den Kundendienst per Live-Chat kontaktieren. Das erste Mal, dass Sie einen Mystake Casino
    Gutscheincode verwenden, ist, wenn Sie Ihre nächste Einzahlung
    tätigen oder sobald Sie Ihr Konto erstellen. Das bedeutet, dass Sie sich jederzeit anmelden können, um Benachrichtigungen zu erhalten, oder auf der
    Aktionsseite nach aktiven Codes suchen können. Suchen Sie bei der Anmeldung
    nach dem Feld „Aktionscode“ und geben Sie dort Ihren Code ein, um sofort
    verschiedene Angebote zu erhalten. Um das Beste aus Ihrer Zeit dort herauszuholen, verwenden Sie Promo-Codes,
    wenn Sie sich anmelden oder eine Einzahlung tätigen. Die Belohnungen werden schnell vergeben und Sie können Ihr aktuelles Ranking in Echtzeit sehen, was den gesamten Prozess klar und unterhaltsam macht.

    Meistens wird das Geld zu Ihrem auszahlbaren Guthaben hinzugefügt, was
    bedeutet, dass Sie es je nach den Regeln des Casinos entweder in Ihre Hauptbrieftasche verschieben oder weiterspielen können. Um teilnehmen zu können, muss Ihr Konto verifiziert und aktiv sein und Sie müssen um echtes Geld spielen können, was Ihre Verluste
    erhöht. Das wöchentliche Cashback-Programm ist eine
    nützliche Möglichkeit für Deutsch Spieler, die ihre Risiken senken und
    länger bei Mystake spielen möchten, einen Teil ihrer Nettoverluste zurückzugewinnen.

    References:
    https://online-spielhallen.de/meine-umfassenden-jet-casino-erfahrungen-ein-tiefer-einblick/

  3. Doch was hat StarGames darüber hinaus zu bieten? Die
    Spiele werden von führenden Softwareanbietern entwickelt, um ein erstklassiges Spielerlebnis zu gewährleisten. Starcasino ist
    lizenziert und reguliert, um sicherzustellen, dass alle Spiele fair und
    transparent ablaufen. Die Sicherheit der Spieler hat bei
    Starcasino höchste Priorität. Zusätzlich können Freispiele angeboten werden, um ausgewählte Spielautomaten zu
    genießen. Weitere Informationen zu den Zahlungsmethoden finden Sie auf der
    Webseite von Starcasino.
    Diese können zusätzliche Match-Boni, Freispiele, StarGames 10 euro gutschein und andere spannende Angebote beinhalten, die darauf ausgelegt sind, die Spieler zu unterhalten und zu
    beschäftigen. Wenn Spieler ihre bevorzugten Wettbewerbe
    spielen, sammeln sie Punkte, die in Boni umgewandelt oder für den Kauf von Artikeln aus dem Casino-Shop verwendet werden können. Der einzahlungsfreie StarGames bonus beträgt in der Regel zwischen 5 und 10 € und kann für
    eine Reihe von Spielen verwendet werden, so dass neue Spieler
    die Chance haben, ohne finanzielles Risiko echtes Geld zu gewinnen.

    References:
    https://online-spielhallen.de/jackpot-de-slots-casino-login-dein-weg-zum-spielspas/

  4. Our user interface is designed for ease of use, ensuring that players can quickly find their favourite games and access essential features without hassle.
    New players at Wolf Winner Casino are greeted with an enticing welcome
    bonus designed to enhance your initial gaming experience.
    Each slot game comes with varying return-to-player
    (RTP) percentages, ensuring players can choose games that best
    suit their gaming style. Wolf Winner stands out
    as a premier online casino in Australia, redefining the way players engage with gaming.
    The straightforward wolf winner casino login system, coupled with a well-designed mobile app,
    means you can enjoy the thrills wherever and whenever you choose.

    The games are conveniently sorted into categories, and you can use
    a filter by provider. Members also get priority support, customized promotions
    and access to a personal manager. The higher the level, the higher the multiplier, higher cashback, withdrawal limits and
    bonuses. Alpha Wolf Club is a loyalty program for active players.

    It’s easier than you think to start playing your favorite games.
    The friendly support team is always on hand to help with any questions or issues, and the mobile site is so
    smooth, you’ll feel like you’re playing on a cloud.

    The table games section of the Wolf Winner website contains classic casino games available
    in a dealer-less format.

  5. You can get involved in this bonus by playing a
    number of different games across casino and poker.
    The best online casinos offer a wide variety of banking
    options including credit cards, prepaid cards, and e-wallets.

    Real money online casinos are only available in select states.

    Some casinos, like Sky Vegas or FanDuel Casino, relax these wagering rules for their bonuses, but often you will find you need to play through
    a specific amount before getting your hands
    on any prize money. To keep you in the loop, we have a special page dedicated to the latest casino bonuses
    and bonus codes where we publish all the new bonus offers (and their respective bonus code) as they come up on the
    gambling sites! In addition, many online casinos are quick to follow up on the welcome bonus with other promotions.
    Almost every single trusted online casino you see here on PokerNews offers
    welcome bonuses to their new customers. The uncomfortable truth about online casinos, even in 2025, is that a lot of online casino guides play
    dirty and try to sell you illegal, rogue
    casinos (sometimes called ‘black market casinos’).
    With so many alternatives to choose from, picking the right
    real money online casino (if not the best online casino altogether) can feel overwhelming.

    Online casinos in New Jersey have experienced rapid growth since
    2013 when Governor Chris Christie signed a bill legalizing
    internet gambling. Michigan’s online gambling revenue is subject to a 20%
    tiered tax that maxes out at 28%. A substantial boost to the economy, Michigan online
    casino operators set a new revenue record three months in a row.

    References:
    https://blackcoin.co/22_all-slots-casino-1500-bonus-2500-loyalty-points_rewrite_1/

  6. We believe that together we create unforgettable experiences for our guests.

    Be part of a diverse, innovative hotel company,
    and enjoy a fulfilled, life-changing career. Parking at Crown is subject to the car park terms and conditions
    (which are displayed at Crown car park entrances) and to the availability of car park spaces.

    Patrons must be 18+ to consume alcohol and not be prohibited from the casino or any Crown property for any reason. The
    Palms will open 45 minutes before the show performance time printed
    on your ticket. Discover all the finer details to make your time at Crown Melbourne seamless and enjoyable.

    Our diversity and inclusion strategy focuses
    on people and is made up of several programs including the Indigenous Employment
    Program, CROWNability, Gender Equity and Crown Pride. Gain nationally recognised qualifications through AQTF-aligned options, on-the-job training,
    and traineeships, all conveniently located in-house.
    Take your career to new heights with our diverse learning pathways,
    including on-site training at our Registered Training Organisation (RTO),
    Crown College. It’s a place where we create joy for
    the people who visit us, the cities we live in and the teams we work in. For more information on applying for Jobs and
    how to set up Job Alerts, please visit our FAQ page. Learn about the casino operator’s obligations under the Responsible Gambling Code of Conduct.

    References:
    https://blackcoin.co/overview-of-online-casino-experience-at-peppermill-reno-resort/

  7. Each live online casino offers a different set of games, all of which have
    their own winning odds. With that, rest assured that we
    dig for gambling sites that have superb bonuses ?— sometimes even no deposit perks!
    Each one of the live casinos absolutely has to have the following features included, otherwise,
    we believe it’s not suitable for you to register and play with real money.
    And as time passes, there are more and more options for a live
    dealer online casino experience. By playing games in a fast payout online casino, you’ve taken the first step
    to getting quick withdrawals when gambling.

    Yes, it is possible to get a no deposit bonus on mobile devices if a gambling platform is compatible with phones.
    With best no deposit bonuses presented on this page you can try your luck at Mechanical Clover, Elvis Frog in Vegas, Booming Bananas slots, and
    others. Unfortunately no, not every Australian casino site
    will feature a no deposit bonus. With all no deposit bonuses (unless marked as
    no-wager), the withdrawal is only possible after you complete wagering requirements.

    References:
    https://blackcoin.co/minimum-deposit-casino-sites-with-payid/

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.