Skip to main content


Showing posts from 2017

The Iterative Startup

You don't have to get yourself into debt for the things you need to launch a startup. You can start from zero and get off the ground organically. Divide the journey into phases, and use the successful completion of each phase to bootstrap the next.
I. Write a Roadmap Start by envisioning where you want to end up, then plan what you need in order to get there. For example, you might want to end up with a registered trademark, employees, a legal corporation, and your own office building. You don't need to run out and try to obtain all four of these things on day one. Consider which things depend on others. For example, you could hypothetically get a registered trademark and employees before you form a legal corporation, but you might want to form the corporation before you purchase a building. II. Align Phases with Milestones Set a specific goal that you intend to accomplish with each phase. For example: You might start in January, and set milestone in your roadmap, to raise $270…

Why Shared Projects Would Work

We recently described a proposed paradigm shift in managing knowledge work. This generated a few questions, which we endeavor to answer below. In summary, we explain why shared projects would work.
I. Why Would Marketing Work? Because Many People Value Software Supposing shared projects could facilitate the development of better could that software be marketed to customers? Shared projects would work because they would not need to deal directly with marketing. We anticipate that there will continue to be a high demand for the development of valuable software. We simply propose a better way to manage that software development. As the software is developed through shared projects, it could be brought to market through similar channels as today.
For example, if a company wanted to provide XYZ software to its customers, an employee at the company could launch an XYZ project on the market. That employee could represent the company as the admin, and the company could maintain…

The Ultimate Startup in the Cloud

Minimizing overhead by doing everything online Have you ever thought about launching your own small business? You can take advantage of technology to reduce costs and streamline the process. Promote Through Online Ads Online advertising offers the opportunity to drive relevant customers straight to your company's web presence. For example, Google AdWords offers the ability to place ads containing links beside search results and other content based on relevant terms. You can bid against other advertisers for the same terms to compete for higher placement, and they offer an option that you only have to pay when someone actually clicks through the ad.

This is a great way to promote your offerings, because you will get people who clicked on your ad when they were already interested in, and actively search for, the related terms. With a platform that is so far above other promotion methods, you could possibly focus all of your promotion efforts on this platform, without worrying about…

7 Things Development Managers Know in 2017

Here is a list of 7 things you need to know, in order to be a manager of software developers, within any significant modern company. See how many you already know. Beauty = ValueFunctionality = QualityQuantity = UsefulnessPhysical Labor = KnowledgeGenetic Makeup = Technical LiteracyHype = SkillResults = Magic Details: Beauty = ValueTechnical competence is not necessary to judge software qualityAlways attribute inherent value to software with a cosmetically appealing presentationApplying hype makes software more valuableIf hype is present, so is the associated valueFunctionality = QualityIf it seems to work how it should, then it really doesPeople who have been doing it longer must be better at itQuantity = UsefulnessUsefulness can be measured by quantity of outputThe more people working on software development, the faster it will get donePhysical Labor = KnowledgeExpect workers to create a comprehensive, accurate, detailed plan before beginning any workExpect workers to estimate the am…

Assessing Software Development

How to Measure the Quality of Software Development Work ...Without Being a Software Developer (Or, "3 Things a Developer Wishes His Manager Understood") There's a great difficulty in managing software. This is because many organizations call on non-developers to make decisions impacting software development. But non-developers do not have the qualifications to understand the underlying software.
So, if you do not understand software, how can you make a good decision related to it? The easy answer is--you can't. But, if you don't like easy answers... You need to break through the masked complexity and gain a shared understanding. Masked Complexity The challenge is in the masked complexity. The great thing about software is that it masks complexity. The terrible thing about software is that it masks complexity.

Software is made of stuff that is not readily understood by most people. Yet, to be useful, it is always applied to things that are understood by people. S…

The Difficulty of Managing Software

The Need For a Better WayIt's a real problem. It happens in governments, non-profits, and in the powerful enterprises that control our private industries. Every day, authority figures are forced to make decisions that directly impact software development. These authorities include leaders, managers, and business people, many of whom are clearly not qualified to understand how computer software works.
To make things worse, many workers rush in purporting to understand software, yet have, at best, mediocre competence in it. How can non-developers, or mediocre or poor developers, successfully make good decisions that impact development?
Many workers with a mediocre or poor understanding of software even end up holding positions directly responsible for software development. An admitted non-developer may look to a purported developer to help inform their decision. This includes decisions about what worker should be in what role. But how can the non-developer tell which of those advisi…

Start Starting a Startup

Seven Steps to Prepare to Launch I. First Things First Before you dive in to creating a startup company, you should determine what is really important. And one of your first priorities should probably be: setting priorities. You don't want to register a trademark of a name you will change, hire an employee you'll need to fire soon, or rent an office space then decide it's more efficient to send the workers to work from home. So what do you do when a number of factors seem a bit like the chicken or the egg? You might think, "we need all of them to be in place before we can start, but we need to start before we can get any of them into place."
I would recommend you take some time to prioritize before you put any other big things in motion that will cause significant waste if you end up needing to change them soon. After your initial priorities, you can keep refining them as you go. And, it's probably going to be a little bit different for each company.

For an …

Guiding device usage: This App makes it a Snap

If you are a parent you might desire to be aware of what your children are doing on their electronic devices, so that you can provide guidance to help them develop good habits. In that, you would not be alone: "Surveys, including by the Pew Research Center, have found that two-thirds of parents check their children’s digital footprints..."*

Let me cut to the chase. Serafino Software™ is offering a product called Snap Screen™ which will take pictures of what is on your children's displays at somewhat random times and sends them to you to help you be aware of what they are doing so that you can provide guidance to help them develop good habits. This way, they can know that what they are doing could be observed any time Snap Screen™ is running. But, it also saves you time because you won't have to be there watching what they are doing the whole time.

Snap Screen™ does not limit the number of devices to supervise. It supports supervising from the web and currently suppor…

The Difference Between a Mock and a Stub

Context of Modeling Assumptions
As you may recall, a unit test is sequence of instructions to run an automated test against an isolated unit of software code. A unit test may be considered to have these three phases:
Modeling the assumptionsExercising the unit of codeVerifying the acceptance criteriaAside: This fits in nicely with the scrum agile framework, because a developer could theoretically develop one unit test for each user story. Each user story should already include concise details for assumptions and acceptance criteria. It is particularly critical to model the assumptions before exercising the unit of code. The assumptions are the details of external factors that influence a unit's operation. It is important to call out the external assumptions to keep those distinct from the functionality of the unit itself. If a developer tries to write a unit test without modeling the assumptions, when they attempt to exercise the unit of code, they will also be exercising other cod…

Starting a Business: Getting a Name

How to register a business name in Nebraska A business name registered with the state is also known as a DBA (Doing Business As), trade name, or fictitious nameApproximate Cost: $233.82
Approximate Time: Five business daysOverview of Steps Decide on a nameFill in the online formPrint and sign the form - $0.10Scan and submit the signed form - $103Wait for confirmation email - 1 business dayContact newspaper to get notice published - $130.72Wait for publication and affidavit from newspaper - 3 business daysSubmit affidavit online and wait for confirmation email - 1 business dayImportant NotesThis is based on my experience in Nebraska. While most of this advice may apply in other places, you should check on the process in your particular stateI am not a lawyer. This article is not a substitute for professional legal adviceThis is based on how it went for me on August 14, 2017. Your "mileage" may varyWhen you might want to register a business name: When your business is a sole pro…

The Difference Between Refactoring and Changing

The word refactoring has become popular in software development. Unfortunately, like many things in software development, not everybody uses it right. That is probably because it takes some effort to understand.

Somebody who doesn't understand refactoring might use the words "refactor" and "change" interchangeably, like synonyms. However, refactoring does not mean the same thing as changing.

Example Using Math
Refactoring means changing the factors without changing the result. Refactoring software is like refactoring a multiplication problem in arithmetic. For example, consider the math problem:
3 * 4 This can be refactored to:
2 * 2 * 32 * 6 In these examples, the factors change, but the result remains the same:
3 * 4 = 122 * 2 * 3 = 122 * 6 = 12 However, making this kind of change is not refactoring: 3 + 4 Because it changes the result: 3 * 4 = 123 + 4 = 7 So, that was a different kind of change. Refactoring does not mean the same thing as changing.Example in Softwa…

Better Software Design: Object Oriented Design

Beyond Procedural Programming
In the old days, programming languages were procedural. That means they accomplished separation of concerns through placing code for each concern in a separate procedure (sometimes called a function or a subroutine). Like many developers, I learned procedural programming before object oriented programming languages were popular. We need to be warned to avoid anti-patterns (common big software mistakes) that come from trying to program in an object oriented programming language, in a procedural way. Let's take a look.

How is Object Oriented Design Different?
Object oriented design accomplishes separation of concerns by placing code for each concern in its own class or interface. Procedures in these classes and interfaces are called methods. Some examples of object oriented programming languages include Java, Objective C, C++, and, sometimes, C#. Also, many traditionally non-object oriented programming language include some object oriented features. For …

Better Software Design: Separation of Concerns

When I first learned computer programming, I thought I was a fine computer programmer. I produced much code that kind of worked; but looking back on it now I realize that the quality could have been much better. One of the important ideas I have learned since then is separation of concerns.
"We can solve any problem by introducing an extra level of indirection...except for the problem of too many levels of indirection." -Wheeler, et al. Separation of concerns is the idea that any program that is even a little bit complicated has more than one concern, and that code for each of those concerns should be kept separate in the program. For example, we might write a program that asks a person's name, remembers it, and greets the user back by name. The naive way I would have written this when I started out might have been:
Create a variable to store a person's nameDisplay a message requesting the person's nameWait until the user has finished entering inputMove data from …

Tactics For Mastering Software Development

OK, so you already know how to program some software that kind of works. When you are ready to take your software development to the next level, we recommend to implement these tactics:
Project ManagementIssue TrackingVersion ControlUnit TestsTest CoverageCode QualityPerformance Optimization1. Project Management Before you can set out to improve your software you need an effective way to plan and organize your development work and keep it on track. Methodologies provide a way to break down tasks, prioritize them, and get them assigned to the right team members so they can get done on time. Popular methods to manage software development projects include agile methodologies including scrumkanban, and a combination of scrum and kanban called scrumban. There is much evidence that using these well known frameworks the right way can help save much time and money on software development projects.
2. Issue Tracking It's hard to efficiently resolve bugs and feature requests in the software…

Idea Site

We have launched a new blog named Idea Site™. Idea Site™ is a software aims to help technology-related businesses by facilitating communication about innovative ideas.

Idea Site™ includes ideas related to developing new technology, technology-related products, and technology-related businesses. It provides a venue for inventors to browse through interesting ideas  and collaborate to improve the ideas.

This version is a blog that contains ideas from Serafino Software™. For a future version, we plan an application that allows everyone to submit their own ideas, and to show that they are the first to claim their own ideas on the site. Check it out!