Leading indicators in software projects – 1

As the inception of a new project takes place, it is crucial to establish whether the set deadline is feasible. This constant evaluation serves a dual purpose: it allows me to decide if the teams need to extend their working hours, or if we require additional resources from senior management. The keyword here is “early” — incorporating extra resources at a later stage in the project might not significantly influence the end date. Hence, leading indicators are critical early on in a project.

A simple, yet efficient, way to stay ahead is by regularly tracking the projected completion date. This process commences with a preliminary assessment of the duration needed for the team to wrap up the development. The next step involves dividing the outstanding work by the team’s velocity, measured by the quantum of work completed in a day/week/iteration. This gives us a broad idea of the anticipated date for development completion.

Though this calculation appears straightforward, real-life projects entail subtleties. One, team velocity varies from one iteration to another, influenced by factors like holidays, leaves of absence, changes in team composition due to joining or departures, etc. While dealing with this, we can either resort to the average or moving average of team velocity or rely on experience to set a benchmark.

Two, the scope of a software project tends to expand over time as we unearth new tasks or requirements during development. Assessing the remaining quantum of work at any given point in the development cycle can pose a challenge. We can either total all the active work items (requirements, user stories, and tasks) or estimate the final size based on the initial size and deduct the completed work from the estimated final size. The choice of the method depends on how work items are managed and updated.

By doing so, we can gauge the days needed to complete the development. Adding this to the current day gives us the projected development completion date. If the projected date falls later than anticipated, it’s time to spring into action. This may entail extending the team’s working hours or strategically adding more resources early on to meet the project deadline!Regenerate response

 276 total views

AI tools

10web.io: Generate your website 
in minutes with AI

https://gooey.ai/: Generate video from prompts


Meta GPT: https://picoapps.xyz/metagpt. Build apps in natural language

elevenlab or play HT to train on your voice

chatpdf.com

chat with code using Adrenaline

Triple8: adds captions and subtitles

Cere, : Your All-in-One Guide to Knowledge, Creativity and Fun

Pragma: company knowledgebase assistant

Vizologi: business strategy tool to create new startups in 1 minute

Chatbase: Quickly train your chatbot with any online or offline data

Animated Drawings: create drawing to animation experiences or products

MidJourney: AI to generate art

Channel: Use natural language to ask questions and get visualization.

Usechannel.com: Ask any data question, in plain English.

10 workplace AI tools

1. VoicePen AI:Convert audio content into blog posts, using AI.
https://voicepen.ai

2. Krisp: AI tool for removing background voices, noises, and echo from calls.
https://krisp.ai/

3. Beatoven: AI tool for creating custom royalty-free music.
https://www.beatoven.ai/

4. Cleanvoice: AI tool for automatically editing podcast episodes.
https://cleanvoice.ai/

5. Podcastle: AI tool for studio-quality recording from your computer.
https://podcastle.ai/

6. Vidyo: AI tool for making short-form videos from long-form content.
https://vidyo.ai/

7. Maverick: AI tool for generating personalized videos at scale.
https://lnkd.in/eptCVijb

8. Soundraw: AI tool for creating original music.
https://soundraw.io/

9. Otter: AI tool for capturing and sharing insights from meetings.
https://otter.ai/

Design AI Tools:
——————-
1. Flair: AI tool for designing branded content.
https://flair.ai/

2. Illustroke: AI tool for creating vector images from text prompts.
https://illustroke.com/

3. Stockimg: AI tool for generating the perfect stock photo.
https://stockimg.ai/

4. Looka: AI tool for designing your brand.
https://looka.com/

Copy and Content AI Tools:
—————————
1. Copy: AI tool for generating copy that increases conversions.
https://www.copy.ai/

2. CopyMonkey: AI tool for creating Amazon listings in seconds.
http://copymonkey.ai/

3. Ocoya: AI tool for creating and scheduling social media content.
https://www.ocoya.com/

4. Unbounce Smart Copy: AI tool for writing high-performing cold emails at scale.
https://unbounce.com/

5. Puzzle: AI tool for building a knowledge base for your team and customers.
https://www.puzzlelabs.ai/

Content Marketing: https://www.automatoravi.com/#!/home

Image and Content Clean-up AI Tools:
——————————-

1. Cleanup: AI tool for removing objects, defects, people, or text from pictures.
https://cleanup.pictures/

2. Inkforall: AI tool for content generation, optimization, and performance.
https://inkforall.com/

AI Data Presentation :
——————–
1. STORYD : It creates AI data presentations leaders love, in seconds. Beta goes live in a few weeks.
https://storyd.ai

AI Database:
—————
1. SyntheticAIdata : https://lnkd.in/efKXxUkU
2. theresanaiforthat : https://lnkd.in/esexMFzt

 267 total views

Prompt Engineering 2023-03-06

From this article.

zero-shot chain of thought: asking ChatGPT “What is the fourth word in the phrase ‘I am not what I am?’ ChatGPT: not. The author said a little of zero-shot chain of thought can help get the right answer.

ChatGPT does perform much better when you provide more context and specific examples.

In the language models developed by OpenAI, there are two primary techniques used to activate its vast store of knowledge and improve the accuracy of responses to prompts.

These techniques are known as “few-shot learning” and “fine-tuning”.

The oddly named “few-shot” learning, is where the model is trained to recognise and classify a new object or concept with a small number of training examples, typically less than 10, but numbers can vary. For learning where there is only one example, you might also hear it being called “one-shot” learning.

Few-shot learning in OpenAI models can be implemented at both the ChatGPT prompt, as well as programmatically by calling the OpenAI API (Application Programming Interface) “completion” endpoint.

The “genius in the room” mental model

Jessica recommends three best practices when constructing a prompt to extract the most relevant answers from ChatGPT, as follows:

  1. Explain the problem you want the model to solve
  2. Articulate the output you want — in what format (“ answer in a bulleted list”), in what tone/style (“answer the question as a patient math teacher…”)
  3. Provide the unique knowledge needed for the task

Zero-Shot Chain of Thought (CoT) Prompting

You may also hear people talking about “zero-shot” learning, where a model is able to classify new concepts or objects that it has not encountered before.

To use this technique, all you need do is to append the words:

let’s think step by step”, or

thinking aloud

At the end of your prompt!

Fine-tuning

A minimum of a few hundred examples should be your starting point

 318 total views,  1 views today

No-code platforms

I have always been skeptical of using the low-code or no-code platforms. In the past two weeks, two use cases came up.

AppSheet

First, our company needs a time tracking tool. Even though my company plans to use Clockify for time tracking, I thought I’d try one of the no-code platform: AppSheet.

pro: I was able to develop and deploy a basic time tracking app on my phone in about 4 hours. It reads an Excel stored on my company’s network and build a starter app in a few minutes: one view to show all the time entries in the Excel, one view to view the details of an entry and another view to edit/add an entry. I spent the rest of the few hours to customize the app by changing settings of views or data properties(enum, editable, etc.)

con: I would like to make it a bit fancier: when user starts working on a project, she hits the start button to time the project. When she is done, she simply hits the stop button. This would be straightforward to do on any mobile app development framework(Ionic, Java/Android, Objective-C/iPhone), I found it very difficult to do in AppSheet.

PowerApps

The driver to try Microsoft’s Power Apps is to view DevOps work items on my mobile phone. What I want it to do is let me select a DevOps query to run, displays the work items and detail of a selected work item. I was able to complete majority of the development on a volleyball tournament over the President Day’s weekends.

pro: PowerApps is more flexible. You write code like Visual Basic. You can add a canvas. Add controls to the canvas. Modify a control’s properties to change its user interface. Or bind an action(e.g. OnSelect) to a function call(e.g. getting data or navigating to a different canvas), like what you do in Excel(e.g. sum() or average())

con: the action only allows one function call. You can’t write more than one line. It is by design so that PowerApps developer don’t need to write(and debug) a lot of code.

Conclusion

By no means, this is a thorough review of both platforms. But one take away is, like all platforms, they offer convenience by taking away some complexity of coding. However, this also takes away flexibility and power of coding. IMO, PowerApps strikes good balance of convenience and flexibility. They are great to develop simple applications.

I still don’t believe no-code or low-code should be used for enterprise application development, just because of the complexity and massive size of work. I don’t see how tens or hundreds of developers can develop the software collaboratively without overwriting each other’s work. Debugging is also problematic.

 271 total views

do not use the other 24 modes

This is the best story about MVP(Minimum Viable Product). A good story for all the product managers or whoever manages scope of product releases.

If you don’t have time, watch the video around 6:30.

In short, Nvidia was running out of money. The first(?) chip RIVA 128 supports only 8 modes of the 32 blend modes specified in DirectX. Nvidia went out to all the game developers to convince them to not use the other 24 modes. “8 modes is all you need”. “if you want to make an explosion, you want to make transparent, could you do it this way? use that mode. just don’t use the other 24 modes.”

 272 total views

How to convince a software engineer

Somehow, the software developers I’ve met were very difficult to convince. Even as simple as using tabs in code for readability. I, at times, were difficult, too.

I found a script one day. It worked most of the time, if not every time.

I asked engineers to have the product send out email notifications when the product runs into an issue. As usual, they passively refused to do so. One day, at 6 pm, I found R sitting in his cube. I asked “R, shouldn’t you go home now?” He told me he was waiting for a long-running ETL script to finish. He needed to babysit the script so that if there were any errors, he could take care of it as soon as possible. I said that you should implement the email notification so that you can go home and only hop on then computer only if you got an alert.

They key is to tie the desired behavior to their benefits. Since then, I have been using the same trick.

If one is going to have a long vacation, I would ask him/her to document things like how to support the product, troubleshooting steps, etc. so that I don’t have to call him/her to be log in to fix the issue while on vacation.

 283 total views

Developer Metrics

Sports have a lot of numbers to gauge how good a player is. In baseball, there are batting average, ERA, etc. I had been wondering about software developer metrics. We can judge how good a developer is by reviewing his code, but that is very subjective. I’d like to have metrics that show how a good developer brings values to the company.

When I got my second management position, I got my chance to try to develop and implement the metric. Luckily, I also go have a great project manager to work with. He helped collect and report the numbers.

Here are the metrics:

Net Daily Burn: This is the typical velocity in Agile per developer/working days. In a typical iteration, NDB is burned/days in an iteration. However, people can get sick or take vacation. We changed it working days. So this metric tells me how much work the developer can burn per working day.

A higher ADB tells me the developer is good. It could be that the developer works hard(long hours) or is very smart and efficient. For example, if the task is to time how long all data access methods take, instead of writing system.out.println in every data access method, he/she uses AOP.

Average Daily Burn: This is ADB + other dev tasks that are not considered when the estimates were made. Our typical ‘other dev tasks’ are extra time to deal with build issues, unit testing, etc.

 425 total views

Use long variable names

My trading bot ran into a ‘undefined variable sell_strategy’ error because I removed the variable ‘sell_strategy’ as part of effort to cleaning up code. I need to find the references to the variable and remove the references.

‘sell_strategy’ is used in Single Bottom and Double Bottom. Since sell strategy is very common in trading, when I searched the variable ‘sell_strategy’ to find the references, there were quite a few found. I had to read the context to decide which referencing code to remove. I wished I had used more descriptive variable name like double_bottom_sell_strategy or single_bottom_sell_strategy.

[I know, I know. Strongly typed language like Java will give you compilation errors. This is Python]

Notes: Always use loooooong variable name so that when you search for it, you get highly relevant hits.

 271 total views