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,

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 c

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 worryin

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 = Value Functionality = Quality Quantity = Usefulness Physical Labor = Knowledge Genetic Makeup = Technical Literacy Hype = Skill Results = Magic Details: Beauty = Value Technical competence is not necessary to judge software quality Always attribute inherent value to software with a cosmetically appealing presentation Applying hype makes software more valuable If hype is present, so is the associated value Functionality = Quality If it seems to work how it should, then it really does People who have been doing it longer must be better at it Quantity = Usefulness Usefulness can be measured by quantity of output The more people working on software development, the faster it will get done Physical Labor = Knowledge Expect workers to create a comprehensive, accurate, detailed plan befor

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 unde

The Difficulty of Managing Software

The Need For a Better Way It'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

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 compan

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 su

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 assumptions Exercising the unit of code Verifying the acceptance criteria Aside : 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 exer

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 name Approximate Cost: $233.82 Approximate Time: Five business days Overview of Steps Decide on a name Fill in the online form Print and sign the form - $0.10 Scan and submit the signed form - $103 Wait for confirmation email - 1 business day Contact newspaper to get notice published - $130.72 Wait for publication and affidavit from newspaper - 3 business days Submit affidavit online and wait for confirmation email - 1 business day Important Notes This 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 state I am not a lawyer. This article is not a substitute for professional legal advice This is based on how it went for me on August 14, 2017. Your "mileage" may vary When you might want to register a bu

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 * 3 2 * 6 In these examples, the factors change, but the result remains the same: 3 * 4 = 12 2 * 2 * 3 = 12 2 * 6 = 12 However, making this kind of change is not refactoring: 3 + 4 Because it changes the result: 3 * 4 = 12 3 + 4 = 7 So, that was a different kind of change. Refactoring does not m

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 f

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 name Display a message requesting the person's name Wait until the user has finished entering input Mo

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 Management Issue Tracking Version Control Unit Tests Test Coverage Code Quality Performance Optimization 1. 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 scrum ,  kanban , 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

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!