Posts

Outsourcing to the seven "C"'s

Outsourcing software development has become a very effective way to get software projects delivered in the modern fast-paced business environment. Like any approach, it has potential benefits and things to take into consideration.   Some potential benefits: separation of concerns : separate a development project from BAU activities or other projects.  hit the ground running: potentially access to "ready made" teams of developers. visibility of cost: depending on contract, cost can be tied to outcomes specialisation: outsourced organisations may have core competence in areas that you do not and do not wish to strategically attain.  Here are a few things I think are worth considering based on my experiences over the last 25 years. Context The context of why you are choosing to outsource development is fundamentally important as is the context of what you are trying to develop (in terms of complexity) and how that ties in to your long term strategic objectives. For ...

The pitfalls of share options in the technology startup

Draft 1 PLEASE NOTE: I  am a simple engineer and this document should not be taken as legal advice in any way whatsoever.  Please feel free to comment or relate your stories here. All feedback is more than welcome Over the last few weeks I have been involved in trying to get a fair outcome for some options that I have in one of the many startups I have worked with over the years. As I continue to push my case forward I thought I would write some thoughts whilst fresh in my mind.  Many of us are attracted to startups due to the promise of shares or share options in the company we are joining. Many people work at reduced rates or no pay in exchange for these contracts, with the hope that one day they will materialise into some value for us. For startup companies, options are a vital currency. Initially cash is tight and using options is a means to attract the right people to help launch the company or take it to the next stage in it's evolution.  In recent weeks, I hav...

Insights & Suggestions For Effective Software development

I decided to note a few observations on software development based on my experiences with a number of clients over a long career, this is work in progress and would appreciate any further input or comments. Topics Data science needs systematic approach Without Specification you are in trouble Interview for excellence Agile does not mean "do nothing" Devops first is not always productive Too many resources is as bad, or worse than too little Design before Develop, before Deploy 1. Data Science needs a `Systematic Approach` We live in a `Data Science` age, it's a buzz word. We have always had data science in some form or another, it's just that the availability, techniques, compute power and volume has exploded over the last few years. Principles are not new, they are standard engineering practises, however, in the new generation of `Data Science` these standard practises are often overlooked. Here are some general rules-of-thumb I have noted down : It makes no sense to...

Challenges Facing IoT Systems in 2019

Challenges Facing IoT Systems in 2019 There is no doubt that we have made significant progress in many key components of IoT systems, in recent years. These developments have in fact made IoT possible. Computer hardware has come down in cost, size and price. For many the  Raspberry Pi  and other similar devices has facilitated the ability to experiment and innovate, this coupled with the huge open-source community that has provided operating systems and tools that unlock these devices.   Mobile and other communication networks have improved driven by the demand from initially mobile phone users. This has also driven the development of mobile devices, which has driven improvements in batteries, screens, sensors and the entire software eco-system that runs on these devices.  With all this development, there are still a number of significant challenges. In order to roll out significant quantities of IoT devices, there are opportunities to improve dep...

Developing on the Move

I am constantly amazed at the rate of progress in Software Development. Years ago, I recall writing tedious scripts using PERL, TCL and EXPECT to log into Switches and issue commands to provision them. Today we have Docker, Ansible, Kubernetes and a host of other tools, we have advanced compilers, transpilers, linters, formatters and various other tools. We can provision infrastructure on the cloud in seconds and then build complex systems quickly and efficiently. Obviously this means that the systems themselves can become ever more complex. Computing power is such that AI now has practical applications, natural language processing, computer vision and other applications. It occurred to me on my lengthy, rainy bus journey home this evening that the next step in our development evolution might be the ability to develop software and systems on the fly. I would love to be able to develop systems whilst I walked in the park or sat observing a lovely view. Would it be possible to talk...

Caution: The DevOps explosion

Everything in moderation - Let's not overdo the DevOps ! Recently, working as a startup CTO and adviser, I have seen what I call a "DevOps" craze. Developers, especially younger ones seem totally swept up in the DevOps revolution. Continuous deployment, auto-scaling groups, hot back-ups, containers etc etc. Many times these implementations, whilst impressive, are unnecessary for the stage of the company or the product development. Many times, they are difficult to document, relatively expensive, difficult to maintain and can be hard to debug. In many circumstances, it would be far easier to have some old-fashioned deployment or back-up scripts until the company or product has some traction in the market and there are the resources available to properly administer the complexity of the DevOps setup.  This is somewhat of a paradox, initially it would seem that by automating many of the mundane operational tasks that the development team face, you would be saving not on...

Hire for Engineers not for Frameworks

I have been faced with hiring great engineering teams on a number of occasions, I am constantly amazed at home many hiring managers and recruiters seem to focus on particular technologies and experience in those technologies. My experience has taught me to hire engineers and I have always viewed the technology as a secondary consideration. I always focuses on a grasp of engineering fundamentals and not on information about some current or past technology. In our current world these technologies are out of date by the time the ink on the contract is dry. Recently, I was approached by a leading company for a very senior role. The in-house recruiter laid on his wonderful resume with world leading software companies before affording me the chance to explain my career-to-date. He then proceeded to ask me a number of questions on specific Java libraries and how they were used. This is all information that is readily available on reference sites and in API documentation and does not ...

The issues with GraphQL

I recently wrote a little about some of the issues with a technology like GraphQL. Whenever a new technology emerges that claims to solve age old problems, one has to look closely at the assertions made. In the case of GraphQL  the following is listed on their website: Ask for what you need get exactly that Get many resources in a single request Describe what is possible with a type system Move faster with powerful developer tools Evolve you API without versions Bring your own data and code The How to GraphQL  describes GraphQL as "the better REST" No more Over and Under fetching Rapid product iterations on the frontend Insightful Analytics on the Backend Benefits of a schema and type System Whilst many of these assertions may be true, the reality is that they also can cause significant problems. Like anything in engineering, there are always trade-offs. Asking for what you need : The backend or API has to be able to generate the queries that w...

The Myth of Machine Learning

Image
Recently there has been a surge in the number of companies claiming machine learning capabilities, from startups to large organisations. The media is full of "machine learning" claims, investors seem to be dropping large amounts into startups claiming to have "machine learning" or "artificial intelligence" capabilities. From Logo design companies to delivery companies, they all claim to have implemented "machine learning". I recently saw a press release for a US based app development company that had raised a significant 7 figure sum, claiming they had developed "Human assisted machine learning" ! One has to ask, what is that ? Any machine "learning" has to be assisted by humans anyway, who would configure the algorithms, applications and hardware, not to mention the training ? Neural Networks and AI genetic algorithms have been around for a long time. So why now ? The answer is data (and to some extent computing power). ...

The CTO journey: 5 Things I have learnt

I remember hearing a quote from Herb Cohen, the respected US negotiator. It went something like "I never get called when everything is going well, I dunno who get those calls, but it ain't me !".  This is true of many startup CTO's. Usually there is some failed outsourced relationship, or a technical co-founder who takes the product to a point and then gets stuck. I have received many calls over the years and the problems are usually similar. This was indeed the case at my current position. Here are some things I have learnt .... Focus on the core product: There will be a lot of noise around the product, features that are not essential, wish lists, dreams. Stick to the basics ! Unless you get the fundamentals sorted out there is no future for the product. This requires single-mindedness, and possible a few "debates", the founders will want to get as many features in the product as possible. Don't give in ! The main role initially is knowing what ...

Shold Cloud Computing Costs be Regulated ?

I am not one for bureaucracy, in fact the contrary. I cringe at unnecessary bureaucracy and regulation. The face is that we are becoming a more highly regulated society, that being stated, I do feel there are some areas where we need regulation to protect the consumer. One such area is the regulation of costs by commodity suppliers, telecommunications, energy, fuel etc. As CTO of a emerging start-up I am responsible for ensuring that our systems run on the latest and most secure technology.  Cloud services provide that scalable infrastructure and so naturally I use them extensively. However, let me tell you a story of one warm Friday night last July. I was just about to go on paternity leave and settling down in my lovely new bath for a Friday night soak, when the phone rang. A chap was phoning from Amazon Web Services (AWS). He politely enquired if I was aware that our company had just incurred over $20 000 dollars of charges transferring some data from Glacier to S3 storage....

Implementing Product Development Methodologies across Cultures and Organizations

Image
Implementing Product Development Methodologies across Cultures and Organizations After experience at trying to bring various methodologies and ways of approaching product development to different types of organizations in different countries, and often not succeeding as well as I would like, I thought I would attempt at finding some explanations. I currently think of 3 dimensions that are the most important in terms of how they impact a generic methodology or approach. This is not an exhaustive list, however, after much thought these are what I feel are the key contributors to success or failure of putting an effective methodology or approach in place within an organization.  Communication The way that people communicate within the organization or team significantly affects the process of product or service development. Different cultures communicate in different ways, some more "open" others more "closed". Some "hierarchical" others less so. ...

Agile and Lean thinking in Japan

I have just returned from Japan, where I was involved in leading a workshop on Agile and Lean thinking. Being back in the UK, I am reflecting on how things went, what worked and what did not. The whole experience proved to be much more difficult than I could have imagined. Japanese culture does not seem to be compatible with Lean or Agile approaches. Consensus is always needed Time spent on a problem is the primary indicator of effort and success All expressions of ideas need to be well thought out (brainstorming is not natural)  It is natural to delay the commitment of an idea or an approach, so decision making is delayed to the last moment These observations are in total contrast to the Agile or Lean approaches, which value "efficient communication", "lists", "brainstorming" and rapid decision making.  This is probably why these Technics have not much of an adoption in the Japanese business world. If I were to revisit this market, in terms...

WebSockets is the way forward

One of the great frustrations of developing any Web based software system is the request driven paradigm that the HTTP protocol demands. The user sends a request and the server responds, based on some further user interaction further requests are sent and responded to.  There are clever ways of circumventing this behaviour, but they have all been rather messy. One big problem is that a request is generated on the client side either in HTML code or in some Javascript and then handed off to a handler on the server, there maybe many such handlers for different types of request. The response is then handled on the client side somewhere. It all get`s rather messy keeping track of where the request responses are handled and maintaining state. It reminds me of the bad old days of BASIC, where the GOTO command caused execution of the program to jump around. As code grew in complexity it became very difficult to track or debug. Developers were always discouraged from using GOTO unless ab...

Client responsive design

We are no longer in control of the devices on which our media and services are being consumed. They are becoming more varied and numerous in their differences. This is not a new problem, we have been faced with this issue for some time. Previous best solutions revolved around detecting the device capabilities at the server side and making intelligent choices to render the appropriate, fit-for-purpose content on the user device. This solution requires constant updating of the server side logic to account for all the new devices, this is a complex activity, prone to error and cannot possibly account for all the possible variations. Most recently there have been changes in the capabilities of most modern devices. (1) They have sufficient computing power to work out how to render their own content (ignoring legacy devices for now) (2) Most modern devices can run client side scripts to interpret data and render this data appropriately (3) We can define all we...

Coming Soon ....

It's all about data ! Bandwidth will become more freely available at lower cost. Mobile Bandwidth will increase also with cost reduction as technology scales (4G, WiMax etc). As this is all happening the Mobile device, Tablet, Laptop, PC and TV are converging. They are currently different devices, however the operating systems (e.g Android) and the user interfaces are going to continue to converge. Cloud (or remote) storage and services will mean that devices are less dependent on physical hardware on-site and almost entirely dependent on the Internet connection and local processor (see for example Dell's USB stick PC , Rasberry Pi or BeagleBone Black ) As the operating systems converge and thus the user experiences, developers will have more incentive to develop frameworks that work across all devices. Already technologies like WebRTC are being developed to allow complete media transfer between browsers on any device. This means file sharing, video, photo's withou...

Things Entrepeneurs should not pay for ...

Following my previous post, here are a few things that I don't think entrepreneurs should pay for. Networking I do not believe that paid networking events are necessary. There are many very good, free networking opportunities, especially in big cities. There are meetups, forums and many avenues to try before one needs to pay for a networking event. It might be worthwhile joining a long term group, but my experience of one-off paid events has always been a poor one.     Pitching You should never pay to learn how to pitch, there is a world of information, examples and resources for free out there. You should use your family and friends as soundboards for your pitches. There is absolutely no reason to pay to learn how to pitch.   For that matter, I don't believe you should have to pay to pitch to investors (for example). Investors struggle more to find good opportunties than entrepreneurs struggle to find investment. As an entrepreneur you need to target the right...

Selling the Entrepreneurial Dream is not productive

There is a growing industry of consultants, incubators, accelerators, books and courses centered around the "dream" of being a successful entrepreneur. The reality is that most of the individuals or organizations making money in this space are useless. This is a sector of the economy that is unproductive and for the most part does not add economic value.  The resources that any country has can be put to use in a number of ways. If these resources are applied in a productive manner, economic growth will ensue. However, misapplying these resources can generate no growth or contraction for the economy. In a situation where young graduates are encouraged to innovate, to become entrepreneurs without the proper support, this is an un-productive use of resources.  These graduates might be better used in an existing organization (be it at a reduced rate of pay). Fueling this misappropriation of resources are a host of organizations, who make their livelihood by selling a dream, ...

The road not taken and the death of traditional retail

Fuel prices are increasing and they are unlikely to decrease in the near future. Time is valuable, in our fast paced lives it is a valuable commodity. Moreover, the amount of specialized products is also increasing and this trend is likely to continue. The true experience below illustrates why traditional retail is dying and why data overload and inaccuracy is also going to become ever more costly. We will all need to use technology in more productive ways and once implemented to maintain the data which is an integral part of digital technology. My grape vine arrived overnight in the post, ordered online and delivered by a courier company. The online instruction video insisted on planting quickly and using a "friendly" fungi applied to the roots, called "Mycorrhizal Fungi". I hopped into the car and headed down to the huge home superstore 7km from my house. Once there I headed for the gardening section and scoured the huge isle for the Fungi. There are hundr...

Define, Design, Develop, Operate

Over the last five years I have met, talked too and worked with hundreds of technology entrepreneurs. Looking back I am horrified at the number of failed software projects I have encountered. From the now ex-wife, I heard about an entrepreneur who sank the family fortune into an ill-fated software project, outsourced to India. I met with the entrepreneur who had developed a web application without ever specifying it, naturally it never worked. I consulted with the astute businessman who after eight years was still nowhere near developing his software idea, due to a lack to sound technical knowledge, a lack of specification and software developers with no methodology. Moreover, I have received more calls than I can remember from disillusioned entrepreneurs who have fallen out with software developers, have systems that they want fixed or simply cannot get their vision implemented (in software). In my view, these failed software projects are a very unproductive use ...