Close Menu
    DevStackTipsDevStackTips
    • Home
    • News & Updates
      1. Tech & Work
      2. View All

      Sunshine And March Vibes (2025 Wallpapers Edition)

      May 20, 2025

      The Case For Minimal WordPress Setups: A Contrarian View On Theme Frameworks

      May 20, 2025

      How To Fix Largest Contentful Paint Issues With Subpart Analysis

      May 20, 2025

      How To Prevent WordPress SQL Injection Attacks

      May 20, 2025

      Helldivers 2: Heart of Democracy update is live, and you need to jump in to save Super Earth from the Illuminate

      May 20, 2025

      Qualcomm’s new Adreno Control Panel will let you fine-tune the GPU for certain games on Snapdragon X Elite devices

      May 20, 2025

      Samsung takes on LG’s best gaming TVs — adds NVIDIA G-SYNC support to 2025 flagship

      May 20, 2025

      The biggest unanswered questions about Xbox’s next-gen consoles

      May 20, 2025
    • Development
      1. Algorithms & Data Structures
      2. Artificial Intelligence
      3. Back-End Development
      4. Databases
      5. Front-End Development
      6. Libraries & Frameworks
      7. Machine Learning
      8. Security
      9. Software Engineering
      10. Tools & IDEs
      11. Web Design
      12. Web Development
      13. Web Security
      14. Programming Languages
        • PHP
        • JavaScript
      Featured

      HCL Commerce V9.1 – The Power of HCL Commerce Search

      May 20, 2025
      Recent

      HCL Commerce V9.1 – The Power of HCL Commerce Search

      May 20, 2025

      Community News: Latest PECL Releases (05.20.2025)

      May 20, 2025

      Getting Started with Personalization in Sitecore XM Cloud: Enable, Extend, and Execute

      May 20, 2025
    • Operating Systems
      1. Windows
      2. Linux
      3. macOS
      Featured

      Helldivers 2: Heart of Democracy update is live, and you need to jump in to save Super Earth from the Illuminate

      May 20, 2025
      Recent

      Helldivers 2: Heart of Democracy update is live, and you need to jump in to save Super Earth from the Illuminate

      May 20, 2025

      Qualcomm’s new Adreno Control Panel will let you fine-tune the GPU for certain games on Snapdragon X Elite devices

      May 20, 2025

      Samsung takes on LG’s best gaming TVs — adds NVIDIA G-SYNC support to 2025 flagship

      May 20, 2025
    • Learning Resources
      • Books
      • Cheatsheets
      • Tutorials & Guides
    Home»News & Updates»Tracking Time

    Tracking Time

    December 24, 2024

    Mihail was excited when, many years ago, he was invited to work for a local company. At the time, he was in college, so getting real-world experience (and a real-world paycheck) sounded great. It was a small company, with only a handful of developers.

    The excitement didn’t last long, as Mihail quickly learned what the project was: parsing commit messages in source control and generating a report of how many hours a developer worked on any given task. It was a timesheet tracking application, but built on commit messages.

    “This… seems like a bad idea?” Mihail told his supervisor. “Couldn’t we just do this in a timesheet tool? Or heck, a spreadsheet? Accounting would probably prefer a spreadsheet.”

    “If we did that, people could edit their numbers,” the supervisor responded.

    Apparently they hadn’t heard about amending commits. Or just… lying in the commit message?

    Now, Mihail wasn’t allowed to start working. A design document needed to be crafted first. So several senior developers went into a room, and hammered out the design. Three weeks later, they had a basic structure of five classes: components, which were made up of milestones, which were made up of tickets, which had contributors, which made commits. It wasn’t a complicated design, so it was mystifying as to why it took three weeks to write. More problematic- the project had only budgeted a month, so Mihail was left with a single week for implementation.

    One frantic week later, Mihail handed in his work. It was insufficiently tested, but more or less worked according to the design. He had to take a week off of work for exams, and when he returned from those exams, the senior devs had some good news and bad news. The good news: they were happy with his work! The bad news: during the week the design had been completely changed and needed to be rewritten.

    So the rewrite began, with a new design, and once again, too little time left to do the work. Tests went out the window first, but “basic coding practices” quickly followed. The second version was less reliable and usable than the first. Then the Big Boss sent down an edict: this whole system should get its data from their bug tracker, which had SQL integration options.

    Once again, it was all thrown away, and a new version began. Mihail started writing queries for the database, starting by joining the three key tables to produce the data they wanted. Then he read the new version of the design doc, published while he was working, and joined the five tables together they’d need. After combining the six tables the design doc called for, Mihail was starting to think the code he was writing was bad.

    The workflow that the design called for offered it’s own challenges. After writing the query which joined eight tables together, with a nest of subqueries and summaries, the query itself weighed in at 2,000kb. And that was just for one report- there were a dozen reports that were part of the project, all similarly messy, and all subject to rapidly changing design documents. The queries were all hard-coded directly in a Python script, and the design was explicit: don’t slow down developers by using prepared statements, just use string concatenation (aka SQL injection) because we can trust our inputs! This Python script would run its reporting queries, and then dump the results into tables in the application’s database. Then a web UI would pick up the data from the tables and show it to the user.

    The only thing we can say about the results is that the web UI looked nice. The underlying horror that was the code was hidden.

    With the project finally done, it was time to show it off to upper management. Mihail’s supervisor starts demoing their system, and after a minute, the Big Boss pipes up: “Why do we need this?”

    “Oh, well, it’s a more flexible-“

    “No. Why do we need this?”

    “Time tracking is fundamental to our billing-“

    “Right, but why do we need this? You know what, never mind. Do whatever you want with this, just make sure that all the data ends up in an Excel spreadsheet at the end of the month. That’s what we send to accounting.”

    All in all, Mihail spent six months working on this project. Once complete, it was never used by anyone.

    [Advertisement]
    BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!

    Source: Read More 

    Facebook Twitter Reddit Email Copy Link
    Previous ArticleAbsolute Essentials You Need to Know to Survive Vi Editor
    Next Article 7 Steps for Setting Goals in a New Year (Free Download)

    Related Posts

    News & Updates

    Helldivers 2: Heart of Democracy update is live, and you need to jump in to save Super Earth from the Illuminate

    May 20, 2025
    News & Updates

    Qualcomm’s new Adreno Control Panel will let you fine-tune the GPU for certain games on Snapdragon X Elite devices

    May 20, 2025
    Leave A Reply Cancel Reply

    Hostinger

    Continue Reading

    Top 10 AI Trends You Should Know Before 2025

    Development

    Microsoft Research Introduces AutoGen Studio: A Low-Code Interface for Rapidly Prototyping AI Agents

    Development

    Microsoft added iPhone pairing right from the Windows 11 Start menu

    Operating Systems

    How to go full-on Renaissance Man mode in 2025 with Vaughn Gene [Podcast #161]

    Development

    Highlights

    AI models face collapse when trained on AI-generated data, study finds

    July 28, 2024

    A new study published in Nature reveals that AI models, including large language models (LLMs),…

    Digigram PYKO-OUT AoIP Devices Exposed to Attacks Due to Missing Default Password

    May 5, 2025

    Tired of traditional social media? Here are 4 reasons why Substack is my go-to social media app

    March 20, 2025

    IBM Research Introduced Conversational Prompt Engineering (CPE): A GroundBreaking Tool that Simplifies Prompt Creation with 67% Improved Iterative Refinements in Just 32 Interaction Turns

    August 12, 2024
    © DevStackTips 2025. All rights reserved.
    • Contact
    • Privacy Policy

    Type above and press Enter to search. Press Esc to cancel.