The Tools I Use to Write Books - <AUTHOR> https://thorstenball.com/blog/2018/09/04/the-tools-i-use-to-write-books/ <comment><USER3> The most important quote here for me:

 _" What kept me from [writing my own tool] was a calm voice in my head telling me that I'm here to write a book, not a preprocessor. [...] Now I have written two books and zero tools, which I consider a success."_

<comment><USER4> It's a crazy important quote and everyone should really keep it in mind when they set out to do something.

Many people have problems focusing on the task they set out to do. It's a type of procrastination. Insert that famous gif from Malcolm in the Middle.

This is relevant to startups as well (and business in general): Being able to decide whether something is in scope of a project or not. You are encountering a roadblock, how do you react? Do you set out to solve it perfectly or do you work around it (or even, do you give up)?

The quote you pasted is the perfect way to put it into words. Another common theme I hear about is people asking: "How do I become a successful [profession here]?" (eg. "streamer", "youtuber", "musician", "programmer", "writer", ...). The answer is always the same: "Start".

<comment><USER5> > It's a crazy important quote and everyone should really keep it in mind when > they set out to do something.

I don't agree at all. It seems to me that the most interesting advances of mankind have happened precisely when people were trying to do something else, and had to invent new tools. The tools turn out to be more important than the final result because they can be used by other people.

<comment><AUTHOR> > when people were trying to do something else, and had to invent new tools.

(Author here.) My point was not that you shouldn't invent tools if you need them. By all means, go ahead. My heart beats for creating tools (especially tools to create other tools...).

What I wanted to express was this: if you want to write _a book_, first write the book and only then worry about the tools. If you then notice that you need a custom toolchain to get the book in exactly the shape you need it to be, do it.

I've had people tell me that they would love to write a book, but, well, the existing tools are not sufficient enough. And I think that's the wrong approach to writing a book: write something and you'll quickly realize that the tooling is not your biggest hurdle.

<comment><USER6> > I've had people tell me that they would love to write a book, but, well, the > existing tools are not sufficient enough.

That's hilarious. Humans were hand writing books on paper and giving them to other humans to hand write copies. A good craftsman never blames his tools.

<comment><USER7> > Humans were hand writing books on paper and giving them to other humans to > hand write copies.

Not very many were, and a big reason for that was the available tooling.

> A good craftsman never blames his tools

Someone who writes a book by blames the available tooling support for the low quality of its content is a craftsman (but, per the saying, not a good one) blaming his tools.

A person who chooses not to write a book at all because the anticipated opportunity cost given the existing tooling support and that person's personal utility function is not.

</comment></comment></comment></comment></comment></comment><comment><USER8> I settled on something similar for my needs, and I'm really happy with it.

1\. Book is entirely written in LaTeX, every chapter in it's own file, master doc with everything combined. I really like having different gutters for left and right pages, ultimate control over formatting, fancy things like Lettrine, header layout and design etc. When I want to do something across the entire doc I write a new command and can use it anywhere.

I Create perfectly formatted print-ready pdf to go to printers directly from this.

2\. Run LaTeX file through pandoc to create an ePub.

A little known trick that is now supported by pandoc is conditionals in the LaTeX doc, so when formatting gets hairy I declare commands like this in the master LaTeX document:

      \iftoggle{ebook}{
        \newcommand{\textbreak}{\newline\hrule\newline}
      }{
        \newcommand{\textbreak}{\begin{center}\LARGE{$\Psi\quad\Psi\quad\Psi$}\end{center}}
      }

So I can use \textbreak{} anywhere I want, and I know it will be formatted perfectly in both output formats.

3\. Un-pack the ePub and tune some of the html/css to my personal taste, then pack it back together. I run it through kindlegen to make sure it's valid, and I have an epub/mobi ready to upload to stores.

I like this workflow so much I'm using it again for my next book

<comment><USER9> I've never been able to get a good LaTeX -> epub pipeline working. There are too many issues with things like tables and splitting code listings across pages -- epubs are just optimized for fiction. I find it's better just to ship a PDF.

<comment><USER8> I agree epub are painful when you have complicated layouts like tables and code listings.. it's just how the format is.

My book was a non-fiction novel, so that made life much easier, I only had some tricky image layouts to deal with.

</comment></comment></comment><comment><USER10> I'm writing a sci-fi book at the moment. Somehow I've come much further than any of my other book writing attempts, including one that I actually (self)-published.

I use Sublime Text, sometimes in distraction free mode, but usually not because I often want to Google sciencey things.

I have a single file called "story.txt" that has all the important notes - <USER2> names, ages and visual descriptions of the main characters, a detailed (historical) timeline, and chapter outlines I wrote before I started when I knew roughly what the overall plot was going to be. The chapter numbering has changed drastically but the overall outline has stayed pretty true to the original idea.

I really like this system. Keep it simple and focus on writing!

</comment><comment><USER11> If anyone is curious this open source tool will convert markdown (with support for images) into pdf, epub, mobi and html:

[https://github.com/softcover/softcover](https://github.com/softcover/softcover)

It was written by the same guy who created the original Rails tutorial. You'll be able to generate books that look and feel like this [https://www.railstutorial.org/book](https://www.railstutorial.org/book).

I've released a couple of PDFs using it, and it's pretty decent to work with. There's room for improvement but I haven't come across anything better.

<comment><USER12> Softcover was used for all the Learn Enough books as well. In fact, _Learn Enough Ruby_ just came out today: [https://news.ycombinator.com/item?id=17919998](https://news.ycombinator.com/item?id=17919998)

<comment><USER11> Are you going to update softcover to include that theme by default?

</comment></comment></comment><comment><USER13> I've written a couple of technical books, and then I've helped my wife grow her business as a USA Today best selling romance author.

The biggest challenge here, to me, isn't writing the book or figuring out what tools to use, but it's marketing. Email lists, FB ads, etc. are really what drive the success or failure of your book. Nathan Barry's writing on this in Authority is my bible for that.

Also, if we're talking tools, shout out to Leanpub. Love that platform, especially for developer books!

EDIT: Nathan Barry doesn't specifically talk about FB Ads, so in terms of a marketing bible, I guess courses and private FB groups have helped us the most. This guy is actually the main goto for fiction authors: [https://selfpublishingformula.com/](https://selfpublishingformula.com/)

<comment><USER14> > The biggest challenge here, to me, isn't writing the book or figuring out > what tools to use, but it's marketing. Email lists, FB ads, etc. are really > what drive the success or failure of your book.

I've looked into creating a mailing list with MailChimp and/or its competitors, since I think it'd work great for my target niche. The thing that stopped me is that you need to provide your real name and location. Though I understand the reasoning, I'm publishing under a pseudonymous identity and do not wish to tie my real identity to it. Bummer.

<comment><USER15> Have you checked out the self-hosted [https://sendy.co](https://sendy.co)?

</comment></comment></comment><comment><USER16> For project-based tutorials/books, which are centred around building a program step-by-step by following a series of human-readable diffs, I think a tool is very much needed.

For [https://viewsourcecode.org/snaptoken/kilo/02.enteringRawMode...](https://viewsourcecode.org/snaptoken/kilo/02.enteringRawMode.html) , the code is kept in a git repo where each commit is a step in the tutorial. This way steps can be modified, reordered, or split into more steps using git interactive rebase (git rebase -i).

I'm working on a tool which abstracts away git rebase, and gives you a nicer interface for manipulating the series of steps in your tutorial. For example, you can run `leg 3` to checkout step 3, make edits to it, and then run `leg amend` to apply the changes, resolving conflicts as the changes make their way through the rest of the tutorial's steps.

The tool is still in very early development, but here's a quick tutorial to get a better idea of how it works: [https://github.com/snaptoken/leg/blob/master/TUTORIAL.md](https://github.com/snaptoken/leg/blob/master/TUTORIAL.md)

Also, I'm playing around with a "literate diff" file format that might be of interest: [https://github.com/snaptoken/tgc- tutorial/blob/master/doc/02...](https://github.com/snaptoken/tgc- tutorial/blob/master/doc/02.oneFellSweep.litdiff)

<comment><AUTHOR> > I'm working on a tool which abstracts away git rebase

This is 99% of what I need! In the best case it's just files/folders I can edit manually or with the help of a CLI.

> The tool is still in very early development, but here's a quick tutorial to > get a better idea of how it works: > [https://github.com/snaptoken/leg/blob/master/TUTORIAL.md](https://github.com/snaptoken/leg/blob/master/TUTORIAL.md)

Now, if those diffs are rendered nicely and the splitting up of a step into multiples (or: explain separate parts of one step) works, I think that really is 99% of what I need. The 1% being the grouping of steps into a chapter and some other small things probably

</comment></comment><comment><USER17> From the article:

"But, most importantly, the code is also duplicated: one version lives in a Markdown file and one (or more) lives in the code folder that comes with the book. If I want to update a snippet of code presented in the book, I have to manually update every copy of it. Yes, cumbersome."

I had a similar problem in writing a book about gnuplot: keeping code samples, code in the text, and the generated plots synchronized. I decided doing it manually was too tedious and error-prone, so I wrote some Pandoc filters to do it for me: [https://lee-phillips.org/panflute-gnuplot/](https://lee- phillips.org/panflute-gnuplot/)

<comment><USER18> Nicely done.

</comment></comment><comment><USER19> I'm pretty sure that orgmode + Babel would get him a lot closer to what he wants: you could have chunks of code that edit using the natural editor mode and can join them together in an external file (tangle) in any way you want. You can even post-process right from the editor when tangling.

Orgmode Babel: [https://orgmode.org/worg/org- contrib/babel/](https://orgmode.org/worg/org-contrib/babel/)

<comment><USER20> In my experience, Org mode and babel shine at

\- "literate programming" where the output is actually commented code and the eventual documentation

\- "reproducible science" articles, where small independent snippets are executed, even piped into each other, to produce "results" in the form of tables, charts, ...

The author seems to need to highlight differences, which may not fit without hacking its own features, which he appeared to be reluctant to.

</comment></comment><comment><USER21> I use pandoc-flavored Markdown (it's a specific superset), sprinkled occasionally with LaTeX to do things like force page breaks in specific places.

I should write a blog post like this. My use case is different, since I write role-playing game books.

</comment><comment><USER22> I use a plaintext editor to write xhtml+css, and 7Zip to go directly to epub.

I made a blank epub template with 50 empty chapters in it, so when starting a new book, I copy that and write new IDs and strings to the metadata, and if I finish it, I delete the unused chapters and remove their entries from the metadata files. It's easier to delete empties than add new chapters, and doing the metadata by hand ensures there's no auto-generated cruft in my file.

For illustrations I use Paint or GIMP or Inkscape, but the template doesn't have more than just a cover image in it.

After testing various ebook readers, there's no way I would recommend xhtml+css zipped to epub for anything technical. The only reader that actually renders text they way I expect, right out of the box, is Edge. Epub is for novels, not textbooks, papers, or manuals.

</comment><comment><USER23> I use Scrivener on Mac for putting together various thoughts for game design docs. Adding references for the various things I've come across to assist with any hobby game dev is awesome, particularly when attempting historical accuracy.

</comment><comment><USER24> I'm surprised not to see any mention of AsciiDoc, I know that it is what some publishers use.

[https://en.wikipedia.org/wiki/AsciiDoc](https://en.wikipedia.org/wiki/AsciiDoc)

<comment><USER18> Yes, O'Reilly. I have another comment in the thread about using asciidoc with a solution they call snippets that more or less solves the OP problem.

</comment></comment><comment><USER18> I wrote a book for O'Reilly and they have something called O'Reilly Snippets which allows you to embed snippets from another file inside your asciidoc files. It sort-of solves the problem noted in the OP.

The problem I found with it was that I would add the snippet, then later in the chapter, I would refactor the code to better fit the story, and that worked, as long as you only needed one copy of the file. But, it didn't work if you introduced a basic version of the code and then later elaborated and expanded that code and wanted it to reside in the same file. Additionally, you have to keep the code in the same repository, which I didn't want to do since I published companion repositories (which couldn't contain the sources for the book, obviously) and I didn't want to maintain and synchronize two copies of a file.

So I wrote a little preprocessor that ingested a subtle variation on the snippets O'Reilly pioneered. Normal snippets work. But also, you could specify a file and a SHA hash, and if it saw that, it would pull the file at the commit (just using git show). Then I could update the file inside the repository as the code progressed, and still have all the sample code. And my repository always had working code, no matter what branch or point in time I had checked out.

It's here: [https://github.com/xrd/oreilly- snippets/blob/master/README.m...](https://github.com/xrd/oreilly- snippets/blob/master/README.md#special-additions-to-snippets)

</comment><comment><USER14> I wrote a free e-book tutorial for the Kitura web framework called Kitura Until Dawn [0] using an almost identical workflow: per-chapter Markdown files, pandoc, and kindlegen. Pandoc is an amazing tool. In addition to tweaking some Latex stuff to get the output I wanted, I also use a simple Lua script to rewrite internal links so that they don't break. I export to several different downloadable formats, and host an HTML version via GitBook[1] - though I may self-host at some point.

I have the entire book in a GitHub repository [2], including the export script [3], which may be of interest to those wishing to write a book a similar way.

(Pardon the new account, but my "normal" HN account is more closely tied to my IRL identity than my Nocturnal identity.)

[0]: [https://learnkitura.com](https://learnkitura.com)

[1]: [https://nocturnal.gitbook.io/kitura-until- dawn/](https://nocturnal.gitbook.io/kitura-until-dawn/)

[2]: [https://github.com/NocturnalSolutions/KituraBook](https://github.com/NocturnalSolutions/KituraBook)

[3]: [https://github.com/NocturnalSolutions/KituraBook/blob/master...](https://github.com/NocturnalSolutions/KituraBook/blob/master/export.sh)

</comment><comment><USER25> There's also this! [https://github.com/magicbookproject/magicbook](https://github.com/magicbookproject/magicbook)

</comment><comment><USER26> I find TeXmacs to be one of the few most amazing and useful pieces of software in existence.

</comment><comment><USER27> I've recently been researching this for my own needs, and this author's md -> pandoc -> etc chain is pretty much where I settled. Reading this article, I was hoping to find a way to point code blocks at a git repo (local, remote, w/e) so that as code changes, the book follows (I do mean during the formatting phase - not that an ebook would follow a remote repo to get code.) I did not find that solution in this article.

Has anyone come up with a method for doing what I want? Maybe the ```lang code blocks in md could take parameters like repo, file, line range; then an update to pandoc would fix it all right up. Thoughts?

<comment><AUTHOR> You should take a look at embedmd, which allows you to include files (or just portions of a file) in a Markdown file: [https://github.com/campoy/embedmd](https://github.com/campoy/embedmd)

As I wrote in the post, I didn't use it because it doesn't allow me to include a portion of something and then comment out a part of that, but today I got thinking: if it could include a portion of a function and also the relevant (semantic?) context, it would be 99% of what I need. But the "relevant context" is the tricky part, I guess. I like what git diff does, when it shows the signature of a changed function (does it simply use the first of the previous lines that are less intended?), but I guess it's hard to get really right...

edit: GitChapter is also a really interesting project. If it didn't use a real git repository, but something like folders that resemble single commits, I think I'd use it. [https://github.com/chrissound/GitChapter/](https://github.com/chrissound/GitChapter/)

</comment></comment><comment><USER28> Interesting, I tried to use [https://github.com/jostylr/litpro- commonmark](https://github.com/jostylr/litpro-commonmark) to do literate programming when writing a tutorial but was completely unable to go from their specific markdown flavor to a simple markdown file void of all extra macros and annotations that I could just transform to HTML. i didn't know about "pp" which looks like what I need to use.

</comment><comment><USER29> I used Libre Office to write a few short eBooks. I found the "flow" of writing in a word processor better for me and it avoided the thought of writing my own tools for the job. I've published step-by-step instructions for the document setup that worked best for me.

[https://www.amazon.com/dp/B00A4112ZM](https://www.amazon.com/dp/B00A4112ZM)

</comment><comment><USER30> The fact that Thorsten manually synchronizes the snippets in the text and external source files seems like crazy talk to me. But the fact that he's cranked out two really good books on languages while I'm still slowly lumbering through my one [1] is proof that his system works for him.

Personally, I'm too error-prone to pull that off. I change the code snippets frequently after chapters are done (often in response to bug reports from readers) and having to manually update the snippets in the text would drive me bonkers.

Also, I want to rigorously, automatically validate that the code in the book is correct and contains everything you need.

To do that, I wrote a Python script [2] that weaves the code and the Markdown together. In the Markdown files, you use a marker like (here in the chapter "Strings"):

        ^code memory-include-object (2 before, 2 after)

This means "insert the code snippet labeled "memory-include-object" here. Include 2 lines of contextual code (which is shown grayed out) before, and 2 after. In the code, the marker looks like:

        //> Strings memory-include-object
        #include "object.h"

        //< Strings memory-include-object

The "//>" begins the snippet and the "//<" ends it.

The build script reads the "^code" markers and finds the snippet of code in the sources that correspond to it, as well as any desired surrounding lines. But it can also do a lot of other useful things with the snippet markers:

* If some lines of code are marked as being part of a chapter, but that chapter doesn't have a "^code" marker to include them, it reports an error. This way I can't accidentally drop code on the floor.

* It can generate a separate copy of the entire codebase that only includes the snippets that are in a given chapter (and the preceding ones). In other words it can output "what does all the code look like by the time the reader reaches the end of chapter ___" for every chapter.

I output the code for each chapter and then compile that and run all of the tests. This way, I can ensure that by the end of each chapter, the program supports what it's supposed to support by then. I've found countless bugs doing this -- places where I inadvertently put code in a later chapter that is actually needed earlier.

However, this build script is _not_ a generic "build a book" system. It's a bespoke program that only supports this one specific book. That helps keep the complexity down and makes it much easier to put little hacks in when I run into weird edge cases my specific book has. I think that's a reasonable trade- off to keep me producing a high-quality book without too much yak shaving.

One of the days, I'll write a full blog post going through this in more detail.

Of course, none of this is a criticism of Thorsten's system. The simple most important skill in writing a book is figuring how to get those pages done. It doesn't matter if that means waking up at three in the morning and writing on parchment with a red pencil. Whatever works for you, works.

[1]: [http://www.craftinginterpreters.com/](http://www.craftinginterpreters.com/)

[2]: [https://github.com/munificent/craftinginterpreters/tree/mast...](https://github.com/munificent/craftinginterpreters/tree/master/util)

</comment><comment><USER31> Recently came across this article where it shows how easy it's to write a book using `bookdown` (an R package that uses R + markdown) and publishing on Amazong [https://blog.datascienceheroes.com/how-to-self-publish-a- boo...](https://blog.datascienceheroes.com/how-to-self-publish-a-book/)

</comment><comment><USER32> Interesting that the language is called Monkey.

Garmin's own programming language for device apps is called Monkey C.

[https://developer.garmin.com/connect-iq/programmers- guide/mo...](https://developer.garmin.com/connect-iq/programmers- guide/monkey-c/)

<comment><AUTHOR> There's also Monkey X, a dialect of BASIC: [https://en.wikipedia.org/wiki/Monkey_X](https://en.wikipedia.org/wiki/Monkey_X)

It was previously called Monkey but then changed to Monkey X, which allowed me to use Monkey. Fun fact: I originally wanted to call it Tiger, because they're my favorite animals, but not two days after I wrote that name down, I opened Appel's Modern Compiler Implementation in ML and discovered that the language implemented in the book is also called Tiger. Thus, a Tiger became a Monkey.

</comment></comment><comment><USER33> I tried md, but go back to rst again. I tried many things, but all have some disadvantages. Outline of tools tried and considered on my blog at [https://nocomplexity.com/the-next-version/](https://nocomplexity.com/the- next-version/)

</comment><comment><USER34> > After nearly two years, I'm still a happy customer and the only two features > I'd love to have are more payment methods and pricing per country, so I can > set a lower price for readers in India, for example.

I think KDP allows setting different pricing for different countries.

</comment><comment><USER35> There was an Ask HN recently on what tools to use to write a textbook - [https://news.ycombinator.com/item?id=17781569](https://news.ycombinator.com/item?id=17781569)

</comment><comment><USER36> I would love to see his Latex template for this as well as a few samples of markdown.

I wonder how well this method would work for something like an illustrated children's book?

</comment><comment><USER37> Hmm why not asciidoc or basically any other doc markup language? Most provide additional support for books.

<comment><USER38> I love AsciiDoc and I use it wherever I can. I'd bet the reason for using Markdown has more to do with mindshare than anything else. Plus, Pandoc is a great tool for converting Markdown to anything else.

What I really like about AsciiDoc is that it's right near Markdown in terms of simplicity, but with a bit more beef behind it to handle more complex things like referencing figures. If you don't need them, you can stick with the basic syntax, but the power is there when you want it.

</comment></comment><comment><USER39> _> , are written in GitHub Flavored Markdown (GFM) [...] code presented in the books is contained in the Markdown files in the form of fenced code blocks._

I understand the appeal of markdown but I avoid it for writing coding tutorials because it doesn't have an easy way to _annotate_ code with graphics like arrows and floating callouts. Here are some visual examples of code enhanced by arrows: [1][2][3]

Also, all types of text files besides programming syntax can also be explained with graphical annotations such as configuration files or log output files. E.g.[4]

Therefore, I use MS Word because it makes annotation easy. (LaTeX can also do annotation but that has its own workflow issues such as the typical programmer not knowing it which means the team can't easily update the documentation.)

IMO, annotation is important because if we performed eye-tracking and heatmap tests with people reading code tutorials, we'd see that a significant amount of time is wasted with the eyes constantly shifting back and forth between the code and the subsequent paragraphs explaining that code that's located a few inches down the page. I also think this is one reason why live coding demonstrations can sometimes be more effective than reading a book because the presenter is wiggling the mouse (or laser pointer) around the _exact_ spot of the syntax while he's talking.

This can be somewhat mitigated with adding _inline code comments_ in the example but often, it still doesn't point to the _exact_ point in the line that needs to be studied. Code comments also don't easily illustrate (because it has no spatial cues) how separate lines are related to each other.

One workaround of markdown's limitation would be to rasterize the code's text into an image and then use Photoshop to annotate. However, with MS Word, that cumbersome step isn't required.

[1] [https://introcs.cs.princeton.edu/java/11cheatsheet/](https://introcs.cs.princeton.edu/java/11cheatsheet/)

[2] [https://www.oreilly.com/library/view/head-first- python/97814...](https://www.oreilly.com/library/view/head-first- python/9781491919521/figs/web/166fig02.png.jpg)

[3] [https://i.stack.imgur.com/D8JeF.png](https://i.stack.imgur.com/D8JeF.png)

[4] [https://csharpcorner-mindcrackerinc.netdna- ssl.com/UploadFil...](https://csharpcorner-mindcrackerinc.netdna- ssl.com/UploadFile/1492b1/restful-day-sharp6-request-logging-and-exception- handingloggin/Images/dynamic%20log%20file%20name.jpg)

</comment><comment><USER40> How do people feel about Gumroad vs. Leanpub these days?

</comment><comment><USER41> Is he writing them in GitHub web interface?

</comment><comment><USER42> screw writing an entire book in markdown. You'd have better luck writing it in troff for chrissake.

</comment><comment><USER43> Not much to see here despite some self promotion. It's mostly not about writing but preparing for (self) publishing. In short: Markdown, pandoc and kindlegen.

Missing is everything about the writing process, structuring content and editing.

<comment><USER44> Did you not read the title?

</comment></comment><comment><USER45> I take umbrage with calling these technical manuals / instructional texts "books" due to the conflagration of the commonality of the term. Stephen King writes books. There's no shame in calling a piece of text by its correct name.

<comment><USER46> What about college textbooks? In your mind, is long form narrative writing a requirement for something to be called a book?</comment></comment>


Luggage found stuffed with 5,000 leeches - <AUTHOR> https://www.nationalgeographic.com/animals/2019/01/airport-luggage-stuffed-with-leeches/ <comment><USER2> What I don't get is why go to all the hassle and expense of smuggling them when they could be bred locally? Surely the raising and breeding of leeches isn't complicated?

<comment><USER3> Maybe because the cost of travel and breeding expenses were lower compared to just doing the breeding in Canada.

Could also be the sales price which might be higher there than elsewhere.

I'm by no means an expert and it's just a guesstimate.

<comment><USER4> Possibly also regulation. I don't know how/if leech breeding is regulated but if it is I suspect it's a lot easier to hide one suitcase than a breeding operation.

</comment></comment></comment><comment><USER5> I personally hate the things - was bitten under my knee once and it was itchy for three years - but they're valuable enough to smuggle. Or "import" in this case. $50k worth of product in this case.

<comment><USER6> What are they used for ?

<comment><USER7> The article explains it. They are used for getting rid of pooled blood and are used for that purpose by legitimate hospitals and doctors. Obviously quack medicine is also trying to sell them as something to use to get rid of "bad blood" which is nonsense. But they do have legitimate medical uses.

<comment><USER8> Hey, balancing the humors is important for health! Don't believe 'mainstream medicine'!

<comment><USER9> You forgot the /s mate ;)

<comment><USER10> The difference between pest and pets is often but a /s

<comment><USER5> If your humours were better balanced you might have a better more balanced sense of humour.

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> A heartwarming piece about how a police dog did it's duty and found something unexpected. Cute, right?

Let's not forget that drug-sniffing dogs are trained to give positive indicators. They don't sniff for drugs, they just give cops probable cause to search your luggage if they want to.

This piece doesn't have the typical copaganda headline, but it's copaganda for sure. Just saying.

<comment><USER12> I disagree. The dogs would help reducing random searches or mass searching. So it increases privacy. As far as I know, the dogs can't sit randomly or can't count every tenth person to indicate.

The personnel in the airport have limited searching capability. So if dogs are sending some people, it reduces your probability of getting searched.

<comment><USER13> I'm not sure about that. I've seen that police dogs are capable of picking up the bias of the officer(s) they accompany or are trained by due to body language signals and training bias[0]. This can be worked against as the article points out, but the fact that it is a problem has me uncertain that I support their usage without widespread training and protocol that prevents this issue (instead of limited training). Because the personnel in the airport have limited searching capability _that fact_ reduces your probability of being searched, the dogs then _increase_ your probability of being searched if you are a victim of bias expressed by the officer and dog.

[0]: [https://www.npr.org/2017/11/20/563889510/preventing- police-b...](https://www.npr.org/2017/11/20/563889510/preventing-police-bias- when-handling-dogs-that-bite)</comment></comment></comment>


Indian IT consultancies struggle against technological obsolescence - <AUTHOR> https://www.economist.com/business/2020/07/23/indian-it-consultancies-struggle-against-technological-obsolescence <comment><USER2> To set context, I'm Indian.

I used to work for Razorfish for about 2 years, working with our counterparts in London, Austin, and San Francisco. I ended up building a team of 50-odd Products Designers and Front-end Engineers in about a years time.

So, We used to work with lots of "engineers" from well-known other Indian Outsourcing firms. Here are few anecdotes;

Even amongst themselves, they don't respect each other individuals and teams. The Indian team in Singapore/Bangalore/San Francisco will called the Chennai/Other-Locale team as their outsource partner/team and are mis-treated. I was like, "I thought you guys were team!"

In another incident, I once lambasted a "tech-team" of a really well known India company for not even knowing how to push codes to git. I patiently explained to the team on how to work collaboratively and to push codes, send in pull request and not to email us zip files of their codes. Their head of something-something (too many senseless designations/titles) was not happy and in his mistake, sent a "Reply All" to the tune of, "Any email from Brajeshwar should not be replied immediately, call a meeting with the tech heads."

Well, I was kinda referred to someone who should be sent in when shits stars hitting the fan. ;-)

<comment><USER3> OK So this sending zip files doesn't just happen in Indian IT companies, it happens in IBM India aswell, a friend of mine tells me how she sends her code in email or use some dropbox like service. These dinosaurs are quite antiquated because of the head of something something BS manager prefers zip over git. In other instances they dont get a testing server for months and then she has to navigate the buereucracy writing emails to get access to some proprietary database or OS.

<comment><USER4> I used to work for IBM years ago. This sounded very familiar - especially the part about waiting weeks/months for a server to be physically installed and configured.

I have a distinct memory of basically begging my boss to let me expense a VM on AWS (this was probably somewhere around 2008-2009 IIRC) and we would have been up and running the samenday. Never happened - we just slipped the timelines for a few weeks and billed the client.

To be fair we did use clearcase for source control, but the outsourced teams were equally awful. There was a genuine concern that a lot of the team members out there were people's friends/family/neighbors because they never ever spoke in meetings (the lead would answer on their behalf if they were asked a question), and either we never saw any code from them or what we did was delivered slowly and was usually awful verbatim copy-paste work or simply just plain did not work.

<comment><USER5> A couple of times in the past, I saw the pattern of one person as the VCS proxy for a whole team. Eventually I realized it was not because there were team members who didn't know how to use VCS. It was because individually- tracked commits would reveal that only one or two of the people contributed 90%+ of the work.

Edited: this was _not_ exclusively from Indian IT firms.

<comment><USER3> That makes complete sense this is a scam they are pulling.

</comment></comment></comment></comment></comment><comment><USER6> It boils down to the Business Model.

Having worked extensively with the major Indian vendors, with people from India in different settings, onsite and offshore, I observed that they simply focus on labor costs in Europe and elsewhere.

Salespeople tried to sell us dozens of teams with "cheap" developers of every skillset we wanted.

But that is not how software is done. I want outcomes not masses. I need creativity to work on tools expressed through software not cheaper developers.

I felt sorry for my Indian dev friends that the true value of these folks was left off the board.

Salespeople always tried to solve a problem with another "cheap team". Enter SaaS...

<comment><USER7> I've talked with a lot of different Indian and similar 'offshore' engineers, developers and managers and most of them ended up in the place they did due to choices between being a farmer or being an IT person, being in a poor province vs. being in a less-poor province, and being able to support your parents. Almost none of them had an upbringing, background or base passion for technology or IT in general.

While you can in theory do your IT things with no passion at all, and kill all creativity and still be productive, it often ends up being just 'mass' like you describe, a transformed version of the classical western 'consultants' that usually end up being companies that focus on sales and billable hours and never really deliver what the people needed (referring to earlier HN posts about accenture and deloitte).

I get that at some point all companies converge on the same generic point of being in the business of making money at all costs, and making it 'measurable' via sales, hours and contracts. It doesn't matter if it's software, financial, legal etc. At least not to them at that point.

The bigger problem with this is that the IT systems are not as well defined or a closed system as the other examples might be. A ledger would be simple to verify in comparison: you apply a fixed set of rules to a fixed period of data and it must result in something within a known range. With software you can do a little bit of determining that the 'borders' of your 'box' of functionality would be, but to do an exhaustive verification is so far from profitable that it's only done in a few highly regulated systems like flight controllers.

So now we have a system where a lot of money and power vectors are involved that would (somewhat) work for legal and finance and the likes (i.e. the classical big ones that existed long before software did) and a constant attempt to apply it to IT and hide everything they don't like about getting the wrong results. It still eats resources like the other kinds of work, but doesn't produce the results you would expect for the resources that went in to it.

Software doesn't operate in a vacuum, disconnecting users, buyers, sellers, or stakeholders in general is bad for everyone and because of endless change and interaction the whole model of 'buying a product' hasn't been realistic since 2000, and with connected OT (think SCADA and the likes) it won't even apply to embedded systems anymore.

<comment><USER6> "I've talked with a lot of different Indian and similar 'offshore' engineers, developers and managers and most of them ended up in the place they did due to choices between being a farmer or being an IT person, being in a poor province vs. being in a less-poor province, and being able to support your parents. Almost none of them had an upbringing, background, or base passion for technology or IT in general."

This sadly happened to me many times. Since the quality of many Indian teams was extremely abysmal, I found out that many so-called developers had no IT background at all, as you wrote. They went through a 2 to 4 weeks HTML/CSS/JS Bootcamp, and, very important allegedly in India, received a certificate, that qualified them as "Middle Web Developers".

<comment><USER8> if one is looking for $10-20 hourly developer, certainly the result will likely be what you've experienced.

Big IT Indian firms usually will choose one or two highly talented developers for a project team and others just hop around them. Usually these projects aren't also very engineering-intensive and becomes boring once the base framework is created for creative folks. Good devs don't stay longer in a company at least during initial years simply they're in good demand and gets double the package with every jump. Eventually they'll make it to Indian subsidiaries of US companies like Microsoft/Google or, they'll start their own expert consultancy/product companies.

For the record I've worked out of India exclusively and have charged up to about $100 hourly rate from my US clients. I've gone through above process - my last job being at Microsoft India (2011-2016)

<comment><USER9> When developing nations that are primarily known for their cheap products start creating competitive high quality products what happens is that they start charging just as much as every other developed nation. That same dynamic plays out with Indian software developers.

If they can deliver X amount of value they can also charge X for their service. This means if you hire an Indian for $10 an hour you're going to get value equivalent to $10.

Since productivity per member drops as you increase team size you can't just hire a bigger team to get yourself out of this problem. The true number of developers that your project needs is probably constant and quite low.

If you hire cheaper but less experienced developers then it might simply take 6 times longer to finish the project than if you had hired an Indian developer that charges $60 per hour. This is usually where the project fails. Managers expect the project to be done in 6 months but this estimate is based on competent developers with 3 years of experience, not beginners who are working on their first project and first need to gather 3 years of experience to adequately finish the project.

Really the only way you can get a real bargain is by hiring someone, letting them gain experience without giving them a raise. The difference between market rate and actual developer salary is where you save the most money. The tricky part is creating a environment in which people want to stay.

<comment><USER10> India has quite a way to go to break that boundary. The IT industry in India is basically a giant demonstration of the Dead Sea effect. The most talented engineers from India have been leaving the country in droves for decades. The local industry has a deservedly terrible reputation, which motivates more local talent to leave, further degrading the local labor market, which further incentivises people to leave...

I think the most promising signs for the local industry is that it's starting to produce some rather successful home grown startups. Which are much more likely to attract local talent than the outsourcing body shops are.

</comment></comment></comment></comment></comment></comment><comment><USER11> Indian IT consultancies have been struggling against technological obsolescence for 30 years. And they will continue to struggle for many more. This is an idiotic hit piece hit written by a journalist who needs to meet his quota. This journalist has never worked for one of these consultancies, a tech company, or been in C-suite of any org.

I have worked in these "consultancies" so here is my take. There is a wide range of talent in these consultancies. Some examples are web app developers/software engineers, website people, implementation engineers/enterprise app software, supply chain, cybersecurity, etc. Yes, unfortunately, some of this talent is not familiar with basic software tooling like basic linux commands or git or setting up a path variable. This sounds really bad until you work with a Georgia Tech computer engineering grad and realize he doesn't know this either.

Many methods of sales. A sale can be considered a billion dollar deal or having a director hiring a contractor. The billion dollar deal is closer to consulting. The director hiring a contractor is closer to professional services firm.

Prior to these consultancies, the orgs would hire their own employees and train them. What changed? Contractors easier to layoff than W-2 employees. Maybe their own employees didn't have the expertise.

The truth of the matter is for most organizations, IT is a cost center along with legal and finance. It is not their money maker. They have no interest in innovative IT/software "technology" until their competitor in the same industry as them has it. Price matters. Laying off people easily matter.

"Consultancies" exist for that reason. Look past their marketing/branding and their official classification is a professional services firm.

<comment><USER12> > The truth of the matter is for most organizations, IT is a cost center along > with legal and finance. It is not their money maker. They have no interest > in innovative IT/software "technology" until their competitor in the same > industry as them has it. Price matters. Laying off people easily matter.

Accurate and poignant. Having lived in the banks for a while, this will always be the case in industries. They don't give a shit if you have a passion or about your career. They want you to be a "xyz developer with 50 years of experience". Sometimes I think we forget how the real world works when we are enamored with the cool things computers can do.

<comment><USER13> Isn't this why a variety of industries such as banking are being or will be disrupted?

For example in banking, I would love to set up income apportionment (i.e. x% here, y% there, ...) but for some reason I have to split out income deposits every once in a while via manual, external tools. Why is it again that we haven't set up two sided and payee specific authorizations so that we never hand out data that can be used to steal from us and we could be notified if a payee tries to bump the bill? I've suggested these and other things to banks and credit unions for years...

<comment><USER14> Banks aren't being "disrupted", every new fintech hotness has an old fat bank behind, so either way they win.

Like every musical chair game, some poor schmuck will sleep and lose but most of the banks will be just fine.

<comment><USER13> I agree. Banks haven't been disrupted in any serious manner yet.

You could go further and note that every angel or VC backed firm has a financier behind it.

I wouldn't claim it will be easy but I will suggest there is a large opportunity.

</comment></comment></comment></comment></comment><comment><USER15> I recently joined a company where my main task is to modernise a business critical application built and supported by Wipro over ten years ago. Everything is still on .Net 3.0 (first released in 2007), and despite hundreds of pages of documentation the developers seem to have little understanding of what the application actually does for the business.

The impression I have is that their business model is geared towards building one thing, learning one technology, and then exploiting it for as long as possible with minimal evolution. This is fine if you don't need the software to evolve, but most business applications do need to evolve even if slower than at a start-up or FAANG.

At least where I work there has been the recent realisation that outsourcing all your technology means you will struggle to iterate and improve that technology.

<comment><USER16> Adding to this. I've worked with people from Tech Mahindra. Some observations.

1\. Very green staff that have little to no coding skills/ability.

2\. Communication barriers, even when the people are local.

3\. Jobs that any other organization would do with one person being split into 3 different roles with a net result of costing more than hiring the more expensive onshore devs.

4\. Because of #3 software takes longer to deliver resulting in more money spent on people who are onshore.

Many of these efforts are akin to putting a bunch of monkeys in front of typewriters and expecting to get the next Shakespeare. The old "Mythical Man Month" book by Fred Brooks still holds true and it is truly astounding that organizations continue to make the same mistakes and not learn from history etc..

<comment><USER17> > Jobs that any other organization would do with one person being split into 3 > different roles with a net result of costing more than hiring the more > expensive onshore devs

When I first started working with an offshore team of Capgemini devs back around 2007, this really struck me too.

It was bizarre - you had "devs" who literally knew _nothing_ beyond their very limited task space. Literally.nothing.

You'd have 3 people doing nothing but creating worthless unit tests that didn't test anything, 3 people writing HTML, 3 people writing CSS, 3 people coding an API, 3 people coding a backend, 3 people whose job it was to "manage the config files", 3 testers doing basically nothing... it was... so completely and utterly inefficient! It was a running joke that there would be someone to write the opening HTML tag, someone to write the name, and someone to close the tag - it wasn't far from the truth.

Of course, not all offshore teams are this insanely inept. To some degree it comes down to how much the client is willing to pay, but outsourcers also have different groups that target different segments. Their ODC (offshore development team) groups cater to the cheap-as-possible crowd, and are invariably atrocious, but their digital/consulting groups are comprised of "real" developers.

Disclaimer: I don't mean to make sweeping assumptions etc. This post is based on around 15 years experience working with outsourced devs in Indian, across multiple companies. Plainly a country the size of India has plenty of excellent developers.

<comment><USER18> I had to deal with people who couldn't grasp the concept of bitwise masking and shifts to pack/extract fields from an integer. This was for a wire protocol that needed to conserve space to minimize server costs. Their solution was to have all booleans in their own field which ended up burning five bytes each in our serialization format. I just gave up and let them do what they wanted since nobody on my side seemed to care.

<comment><USER19> I worked desktop support for a few years in a large US based corp. My worst day deploying a new machine was a laptop to a dev who came in and didn't understand what I meant when I asked him to unlock the machine so we could log him in. He wasn't even familiar with Ctrl-Alt-Del and the rest of the deployment went just as painfully.

I get task siloing and hiring green people and giving them a chance to ramp up but that just threw me for a loop.

<comment><USER20> > I get task siloing and hiring green people and giving them a chance to ramp > up but that just threw me for a loop.

one thing i notice about a lot of companies is, they just dont invest into growing and improving the knowledge and skills of "green people" or they stop short at very basic stuff

i understand there are costs, but i think its eventually self-defeating.. maybe there is something i am missing...

</comment></comment></comment></comment></comment></comment><comment><USER21> I believe there is a bias towards the outsourcing, at least judging by the comments.

Let me tell you my side of the story. We are a software development company based in Macedonia - Emit Knowledge

From personal experience, we've refactored/rewritten code that was developed by development teams from USA, Canada, Sweden, Denmark, UK where the hourly rate is sky high compared to ours.

According to me the problem is not in the outsourcing itself, but rather in the company size and culture. Bigger companies tend to have stronger sales teams, getting whatever is in their way, closing deals without having expertise and know-how. The only driving factor is how to maximize profit. Hire less experience devs, leave the SRS so you can charge CRs and that kind of doctrine.

On the other hand, I can tell that we as a company have better processes than bigger companies: \- having our own framework: [https://signals.emitknowledge.com/](https://signals.emitknowledge.com/) soon to be open sourced; \- having multiple products, which you will find as rarity when it comes to agencies; \- having an research and development; \- before we start working with a client, the agreement is that it is a two sides stick, the client needs to be part of the development if success is expected; \- regular communication is a must; \- we discuss with the clients to reduce scopes if we identify that it will increase costs without providing a business value at the end;

The difference is in the culture. As a CEO I would like my client's business to succeed so we can work together as partners, long terms, instead of getting money from CRs and playing "you haven't specified this".

Be transparent guys. Stop playing games with your clients.

You need to give in order to get.

<comment><USER22> > The difference is in the culture. As a CEO I would like my client's business > to succeed so we can work together as partners, long terms, instead of > getting money from CRs and playing "you haven't specified this".

I think this is the part that's most important and similar to how orgs like RedHat operate.

</comment></comment><comment><USER23> I have a team of 14 engineers in Pakistan. It wasn't always easy to do this and now I always feel at odds with hiring where everyone else is hiring or paying a premium for a western passport developer when I know I can get killer talent elsewhere.

I feel the talent we have now has the ability to crush, kill, and destroy the talent in Silicon Valley "engineers" at a fraction of the price in terms of output to input ratio. We've done work on crazy levels of core infrastructure and are scaling.

The "catch" is that we have to do over-documentation, lots of screenshots, and consistent routine communications. My CTO and cofounder speaks 4 languages.

The talent has to be managed.

Within 12 months of being with us, a Pakistani developer has massively increased their value.

We also don't bring anyone into core leadership team onshore unless they speak at least 2 languages or more or they have a serious edge in terms of talent.

The developers who complain about Indian and Pakistani developers are usually:

\- Unilingual

\- have been over-resourced in every position they've ever been in

\- poorly travelled

\- are used to working with onshore talent that has context

\- find the time difference to be abhorrent

Right now, our core "mission critical" team speaks 4 languages.

I fully hope to add 10-20 languages as we expand. I'm hoping for Turkish, Arabic, Georgian, Russian, Ukrainian, Polish, Spanish, and Portuguese in that order...

You cannot expect someone who has 10-14 times less electricity/capita to suddenly have the context of an American. It takes time.

We pay for the entire floor of a building in Pakistan, have cameras, etc... remote now is a core part of our tech biz.

<comment><USER24> Forgive my skepticism

> I feel the talent we have now has the ability to crush, kill, and destroy > the talent in Silicon Valley "engineers" at a fraction of the price in terms > of output to input ratio. We've done work on crazy levels of core > infrastructure and are scaling.

SV is a hotbed for a ton of international talent, not just American. Indeed, SV pays the most out of anywhere on the planet and therefore has an incredibly strong pull for the best and brightest from across the world. I sincerely doubt that one country's local talent is strong than a clustered talent center like SV.

Is Pakistani talent flying under the radar? Are we simply not aware of the amazing research and development being made in Pakistan vs US or China?

<comment><USER25> The good ones eventually end up in SV or work for the international offices of SV or work at local superstars like flipkart and such because of the pay differential. %40 of SV staff being some form of 'asian' is a testament to that.

<comment><USER26> It's much harder immigrating to U.S. from Pakistan than from India...more likely that Pakistani dev will have to stay in Pakistan than an Indian dev.

</comment></comment></comment></comment><comment><USER27> As an Indian there are reasons you can point out for this.

Education: Engineering syllabi are pretty outdated. And due to a work-just- enough-for-month-end-salary mindset, professors are against being up-to-date. As a result, everywhere but in top notch colleges, quality of teaching is piss poor.

The "Rat Race": There is no better word to describe this. 90% of people who enter computer science / engineering courses don't have any interest in computers. They enter because they scored well in entrance exam (which can be games by studying some books relentlessly for some years), and since Software is still one of the highest paying fields. And quite some of them continue their relentless pursuit for a good "package" by grinding Hackerrank / leetcode. It is literally a rat race.

The same mindset will create an impression that being a manager is superior to being a programmer. Because you are "managing" people. These people do all kind of office politics to become manager, and spend rest of their life ruining someone else's life.

You can't expect these kind of people to love their job or even do it properly.

Hierarchy: Related to above point, in India, you don't oppose or even question an upper officer or elder's decision, because ELDERS ARE ALWAYS RIGHT HERE IN INDIA. That's why so many people want to be manager.

Lack of interest in improving education: In many Indian engineering colleges, one year is wasted teaching theoretical subjects like chemistry and physics. No computer science related subject except basic C Programming (Lol not even malloc() and free()) are taught. This appears to be purely done in order to provide jobs for people who had studied these subjects. While teaching these subjects may have marginal benefits, they are outweighed by pure rote learning oriented assesment sysem and wasting one year of CSE programme. That's a bad trade-off for someone interested in CS. All entrance exams are based on Math/Physics/Chemistry and we have learnt enough of that. STOP the old age tradition.

If the chemistry they teach in last two years of high school (called pre university here), which is quite high level, qualifies for entrance exams, Computer Science should too. No I am not telling this because it is a programmers forum. But CS taught in pre-uni (optional subject) is more essential and often more helpful than chemistry and half of physics taught to these grades. But chemistry is compulsory for some legacy reasons. There is no interest to change that.

<comment><USER28> Your generalization of Indian colleges is not right.

India has a lot of Engineering students.

There are around 60k students joining Tier 1 colleges every year in India (IITs, NITs, etc funded by the Central Government alongside some private colleges like BITS). Very few students from Tier 1 colleges join these consultancy companies. Most of them studying CS from these colleges join product companies like Flipkart, Swiggy, Paytm, Amazon, Microsoft, Uber etc.

Consultancy companies get students mostly from 2nd and 3rd tier (mostly private) colleges. Pretty much all these colleges are in a very bad shape. I think there are over half a million students enrolled in these colleges every year. Students still go to these engineering colleges since the education is not as expensive as in the USA and it's what pretty much everyone do after high school. If it was USA they would have just left college altogether instead of wasting money on a terrible college.

Sure, the quality of education of Tier 1 colleges can be improved a lot as well. But generalizing the entire Indian engineering education as the reason why these consultancy companies are doing poor is not correct either.

<comment><USER27> Yeah. Tier 1 colleges. Tell me more about NITs and IITs.

I study at a so colled top college. Where highest placement is always around 50-60 LPa. That doesn't mean teaching and other things are good (sure better than average, but that's not what I call 'good'). The highest placements are more because of students and a FEW professors who actually happen to be passionate.

But in the entire class, there are less than 15% of people who actually have interest in CS or Programming. Many came through good scores in entrance exams (myself included) and many through management quota (i.e Paying the institution heavy sums). While the first group has some people who like programming and CS, it also has more number of people who just happened to get good scores because of relentless studying and practice, then took CSE branch because placements.

I don't think NITs and IITs look much better these days. I attempted JEE but that was really hard to get an NIT without studying hard for 2-4 years. People who have money take coaching classes and study for JEE exclusively, but a rural student like me can't do that. The system is gamed like hell. With the abundance of such coaching kids, I don't think IITs and NITs can keep their previous charm.

Here is a paper on the Joint Entrance exam (JEE) tragedy:

[https://www.cse.iitk.ac.in/users/hk/jee/press/currScienceJEE...](https://www.cse.iitk.ac.in/users/hk/jee/press/currScienceJEE.pdf)

<comment><USER28> I dont't really understand what point you are trying to make. Nobody is saying all the students in top tier colleges studying CS are super passsionate into CS. Some are. A lot of them are not.

My point is that tier 1 colleges produce a lot of good programmers. The reason why they are good at programming can be because of high salary expectations, peerpressure, parents, status, passion, etc. I honestly couldn't care less as long as they do their job. The reason why companies like TCS/Infosys are bad is not because tier 1 colleges produce programmers that are not passionate about CS. It's because India has way too many Engineering colleges that is of abysmal quality. And those colleges accept students who otherwise would not have gotten into any decent engineering colleges

> Many came through good scores in entrance exams (myself included) and many > through management quota (i.e Paying the institution heavy sum

I don't think there are any tier A colleges that takes money for accepting students. Highest package is not really what is used for defining tier A. What I meant by tier A are centrally funded colleges like IITs, NITs and really good private colleges like BITS and IIIT-H(not SRM, MIT etc). None of them take students by accepting money. If the college takes students by accepting money then it is definitely not tier A.

> The system is gamed like hell. With the abundance of such coaching kids, I > don't think IITs and NITs can keep their previous charm.

Sure. The system is gamed. But it's still a fair system. The rules are same for everyone. You are measured by the number of correct answers you circle in the paper. Nobody cares about who your parents are. Nobody cares about what you wrote in your essay. Its a hard competetion. But it's a fair competetion. There is reservation at play for students from backward castes as well but lt's not get into that. Some would say it's good. Some would say it's bad.

<comment><USER27> > I dont't really understand what point you are trying to make.

That the quality of NIT and IITs are decreasing. I have seen a lot of previous generation people who studied in IITs and have stellar achievements. But I don't think the same will be true for current crop of IIT and NIT students. To be clear, I won't be judging those people who are of my own generation, but this is a disappointment about how artificial the entry to these institutions has become. How many of them will be mechanically grinding leetcode as compared to their previous generation?

Increasingly so in recent years - the year I wrote JEE mains, the paper was much more susceptible to 'tricks' and 'shortcut formulae' taught by coaching institutions, than the previous years.

At this point, I have heard IIT professors expressing discontent about the coaching center crap. I don't know how you think it is still a fair game.

> I don't think there are any tier A colleges that takes money for accepting > students. Probably explains why your batch had a lot of CS students who were > not any good.

Fine, what defines tier A? I also mentioned lot of them with high state-level entrance exam scores are not "Good Enough", too.

In what I have seen, those people who do well in exams solely due to peer pressure and high expectations, don't very well understand the concepts. I have seen so many such book-worm topper kids not properly understanding recursion or algorithm complexity.

</comment></comment></comment></comment></comment><comment><USER29> It was far much worse, now the major consultancies are on rapid re-skilling drive, also they have made significant changes to their pricing strategy to their clients and are not just based on head count.

But the criticism of technological obsolescence cannot be just levelled against these consultancies alone, much like how almost every electronics hardware was(is) is manufactured in China due to cheap labour costs, so was the reason behind extraordinary growth of Indian IT services and so it all comes down to 'What the client wants'.

But when their client suddenly wanted to catch up on the AI/ML/Analytics bandwagon, these consultancies understood the need to revamp their skilling strategy. That said, it's not like these consultancies never innovate they have dabbled with large in-house products ranging from cloud to automation and some have been fairly successful e.g. TCS ignio, their (AI in air-quotes) automation product[1].

End of the day, they get the job done for their clients which includes almost every major Bank, Retail, Pharmacy to even Aerospace industry like Boeing (Only green card holders/US citizens are employed), Automobile - Ferrari, Cyber Security etc. also saving huge amount of money for them in the process.

[1][https://digitate.com/ignio-aiops/](https://digitate.com/ignio-aiops/) (Warning: Marketing fluff).

</comment><comment><USER30> [https://archive.is/j7xRa](https://archive.is/j7xRa)

<comment><USER31> Thank you!

</comment></comment><comment> the-dude There is little substance in the article. Biggest point made is that enterprise software is easier to administer and use.

I feel they entirely missed the elephant in the room : SaaS.

<comment><USER32> Yes, SaaS and even IaaS and PaaS are the ultimate outsourcing. Outsourcing that _actually_ works since it's not simply swapping a US based high paid human for a low paid off shore human. Instead it's swapping a human for automation, that's real savings for customers, even after margin for the automation creator.

</comment></comment><comment><USER33> As a marketing person, I've learned the hard way over the years that I'm not qualified to hire outsourced development. I've hired about a dozen over the years, and only 1-2 have been a good experience. I probably gave myself too much credit for knowing HTML/CSS/WordPress and not more, thinking I was qualified enough. Only a good to great web developer has the expertise to spot high quality outsourced talent, and ignore the other 90%.

The fault is mine for thinking I had the skillset to hire in a field in which I'm not an expert. It's the same with any field, actually. Marketers bemoan all the time when companies hire a cheap, bad SEO, but you have to feel sorry for the hiring party that was making what they thought was a value decision, even though they were not a practitioner expert.

Zooming out, you can see how decisions are made at a massive scale based on the hiring party making the decision based on the sales team or personal business relationships, while not being the subject matter expert.

</comment><comment><USER34> I have been keeping my ear to the ground in the local job market (Switzerland) and personally haven't encountered any company that outsourced to India specifically.

Most popular are Eastern Europe (Serbia, Ukraine, Romania) and Asia (Vietnam).

The """savings""" multiplier is still in the order of 3-4x, but time zones work out better.

I am however, still baffled how this happened after seemingly every company made the discovery that outsourcing too much of your business doesn't tend to work out (20 years ago, during the last boom).

I also talked to several companies that were willing to trust their outsourced teams to work remotely, but not the staff located in Switzerland (who once again have to come to the office during the pandemic).

</comment><comment><USER35> It's easy to tar the entire Indian IT industry with the same brush, but it's a much richer ecosystem than just the Big Five.

For example, I work in a small product based company in a niche segment where we're among the very few people who can provide the solutions we can, and I'd happily pit my colleagues' skills against the best of SV.

Keep in mind that this article is only about the Big Five. They have a certain business model, a value proposition and a set of clients whom they service. A particular niche that's been very lucrative and productive for them. This, as the article says, may be drying up.

But that doesn't mean that Indian IT as a whole, or even most of Indian IT is in trouble.

<comment><USER36> It won't dry up that quickly.

As long as customers still use SAP and Oracle it will be a long while.

The problem with enterprise software was never the technical details - it was getting archaic, inefficient business processes in systems that didn't support those processes.

This doesn't change with SaaS. Extension tools have gotten better but the core problem still exists. So many customers still use on-prem SAP hosted in the cloud. The end result is the same requirement for everything but sysops.

</comment></comment><comment><USER37> I forget where I heard this quote but I think it summarizes the whole "outsourcing as a boondogle" scenario:

1\. A good development team in the US/Europe costs $X

2\. An equivalent team in not the US/Europe costs 75% of $X

3\. A terrible team in not the US/Europe costs 25% of $X

Most outsourcing decisions instead of stopping at Option 2 and enjoying the 25% savings, got greedy and went full bore to Option 3 and thought themselves geniuses.

</comment><comment><USER38> Cisco's IT is almost 100% Indian, and by almost 100% I mean I've only seen one or two out of thousands who weren't Indian. Cisco's Indian IT department managers having exclusive preference for Indian companies. It's so against the law for Cisco to have their IT department almost fully staffed by H1B visa holders who work for some Indian outsourcer and are themselves all Indian. The work they do is only half decent (well, not really, it's purely best effort, and depends on the individual or team doing the work it can vary dramatically)

The CEOs of many of the Indian outsourcers are so incompetent and focused so exclusively on relationship based selling that it's pointless to even bring up the topic of them falling behind the tech adoption curve. It's a giant heap of incompetence and corruption.

</comment><comment><USER39> Major IT companies in India get a lot of revenue from maintainence projects and there is usually no scope for making major changes or innovating there.

The time and material billing for these make it quite attractive from a revenue point vs fixed bid greenfield projects. I don't think that situation will change anytime time soon as along as these companies stick to services.

<comment><USER40> Yes, one word to say — JAVA.

It's pretty much, the one and only thing that keeps enterprisey software maintainance people occupied.

Thought, the Java is finally on decline on the backend. Android is pulling Java devs from enterprise, and cheaper to use languages displace Java there.

<comment><USER24> There is nothing wrong with Java. Modern Java is pretty nice to use, fairly fast, has an incredible amount of libraries and tooling to do just about anything you want to do and a vast pool of talent to draw from.

At my current job I try to stick to Java for any new services because it's a great overall language.

<comment><USER25> People don't like Java for the same reasons they don't like Jira. It's all the culture surrounding it.

<comment><USER41> The JIRA culture would be fine if the software wasn't a total piece of crap.

</comment></comment></comment></comment></comment><comment><USER42> I'm not sure I'm bought into this. I consulted at a big bank and am currently at a government department where I can see the in-house trend reversing.

10 years ago there was a big backlash against outsourcers and tech moved to "Agile" delivery and shiny AWS. Companies started investing believing they were being left behind.

We're going through a low point in the hype cycle right now. Blockchain/AI/Data science have all been a bit disappointing for Enterprise. Much of the mobile revolution passed them by too! Cloud is a bit pricier than expected and keeping on top of trends (CloudFoundry/K8S) has been exhausting for in-house staff.

Outsourcing is great for handle-crank, cheap IT and that's not going away.

Also, why is Saas being frequently mentioned as a solution here? Enterprise system complexity is not very Saas friendly.

<comment><USER43> Yes, if enterprise systems were easy SAP would have cornered the market long ago. Or Oracle for that matter.

One of the most valuable experience in my education was being forced to write a review and discuss in class 'There is no silver bullet'. Better tools will not stop the flow of new requirements. And being good enough for todays business does not stop your competitor trying to outmaneuver you.

The dynamic may change once silicon progress has slowed down but until then it will be risky to stop innovating.

</comment></comment><comment><USER44> These consultancies may also finally reap what they sow re: quality of work. I work in a major bank and some senior managers say they'd rather get the plague than a team of those guys. The managers need to deliver what they promised to their higher ups, and they've learned that these teams, however cheap they are, in practice will not help them with that. Btw these companies still manage to get some business with us, which I suspect is to some degree helped with bribes.

</comment><comment><USER45> This is still very shallow thinking. Every company that views tech as a cost rather than a way to generate revenue will invest in these contracts/offshore centres, and that is the noose round their neck.

In most cases, but not all, hiring consultants suggests you don't understand enough about your own business to manage it yourself ( _insert image of senior executive trying to work out the Zoom so they can check their staff aren 't slacking off like their damn nephew, useless kid, thinks he knows everything_). The cost advantages really aren't that large either...sure, the staff cost less but they hire 10x more staff, they are slower, and when the requirements change you are done for.

Btw, some places are very good for outsourcing (Russia, Ukraine, Poland, Belarus) but India is definitely not one of them imo...which is bizarre given how many engineers, prevalence of English, etc.

<comment><USER46> I had extremely good experiences with opening a subsidiary office in Sofia, Bulgaria (not outsourcing, but legit part of the company.) Code quality went way up compared to what was developed in the US/UK, somewhat less expensive (but not that much, like you said), and most importantly and perhaps also the most surprisingly, the attitude of the young kids working there is way more positive and well-adjusted that what we see when hiring in the US/UK (especially in the UK).

At this point it's not even about the money, it's just that they're more pleasant people to work with.

<comment><USER47> Can confirm, eastern europeans are above average regarding technical skills, though sometimes lacking on the social side. If I had to outsource, I'd go east. They've got some amazing talent. I would avoid southern europe and india. And yes, I have direct experience with all of those.

<comment><USER48> > I would avoid southern europe and india.

Were you paying good salaries?

</comment></comment></comment></comment><comment><USER49> I think you can be successful outsourcing to WITCH or other consultancies IF you have an in-house, full-context software engineer managing the project and keeping people accountable.

You have to be careful because if you ask for someone who is "an expert in X technology", you'll definitely get someone, and they might be able to describe it at a high level, but may not even know how to compile a program or how to copy a file (yes I have literally seen this firsthand). You need to give people explicit instructions and be willing to help, and the in-house software developer almost definitely needs to provide things like architecture/spec. And you need to actively fight the need to increase the staffing for the project and prevent dumb/churn processes from taking over (example: writing 40 different scripts (separately!) to do something that could just as easily be done by one script with three parameters). And you need to manage the project into a position where maintenance/ownership can be transferred.

You also need to set them up for success by having a clearly defined scope and playing towards their skills (which means, don't give them work that needs a ML PhD math genius, do give them work like "write a PHP website that does this and looks kinda like that"). This is part of what I think the article is missing but also not really a fair expectation of what an outsourcing firm is. Consultancies are not meant to come up with 'killer apps', and you can try to pay them to do so and they'll be happy to take your money, but you shouldn't.

</comment><comment><USER50> Isn't this also true of IBM? All these consulting firms have an expensive business model which is increasingly no longer useful.

<comment><USER51> I'm sure IBM and other companies get a non trivial amount of checks with a lot of zeros each year for supporting legacy applications/systems/etc with barely any work involved on their part besides maybe running Make again once in a while.

And to be fair, some companies are not even wrong because rewriting is still more expensive than just paying for maintenance.

</comment></comment><comment><USER52> Just judging from the title it sounds silly. Last I remember while working at one of the companies between 2006-2008, COBOL & mainframes was a good chunk of their work.

Obsolescence is their bread and butter. I do agree they do have a lot of wrong and toxic people running middle management along with short term thinking. But that is partly due to their business model, a business model that gave the best returns.

<comment><USER53> Nail / head I think; a lot of western devs, especially the HN crowd, has the luxury of moving to the next 'cool' thing every couple of years. But they did write code, they laid the groundwork, and it has to be developed further on.

Billions of LOC of Java are lying around and there is a need for an army of developers to look after it.

</comment></comment><comment><USER54> Pretty much what everyone in the tech industry has been doing for years. Better to have your own overseas office where you can control the hiring bar and talent vs making consultancies rich. The big consultancies are more concerned with draining value from clients and treating them like cash cows instead of delivering value.

That being said, probably the real solution is SAAS.

</comment><comment><USER55> From what I've heard, programmers that are as good as domestic (US/EU) programmers can absolutely be hired in India and lots of other places.

Problem is they are not significantly cheaper than domestic programmers once you add management overhead and then compare the result against equally skilled domestic programmers in lower cost of living places in the US/EU. It's more practical and may be no more expensive to hire someone good in West Virginia, Kentucky, or Michigan where rent or mortgage payments and many other expenses are quite a bit lower than they are in big coastal cities.

</comment><comment><USER56> Well, at least from where I sit they're still getting plenty of business as with the apparent sun-setting of the H1-B program companies are just hiring offshoring firms instead.

<comment><USER57> > with the apparent sun-setting of the H1-B program companies are just hiring > offshoring firms instead.

Are you speculating here or have seen an actual trend out there?

<comment><USER58> The article mentions that big corporate tech departments are just moving their operations to Indie - like Walmart has Walmart Labs in India, despite having no retail business there.

<comment><USER57> That has nothing to do with pandemic. Article clearly lists walmart labs specifically under "Before the pandemic.."

</comment></comment></comment></comment><comment><USER59> This feeble attempts to generalize a whole nation or group of people will not succeed. Individuals differ from one another and Indians are the most diverse group in the world. Some of the engineers are good some are bad , just like everywhere else. The sooner humanity realizes the truth about individuality and discard the stereotypes attached to groups and aggregates the better it will be for the whole world. Amen.

<comment><USER60> > and Indians are the most diverse group in the world

What metric(s) are you using to measure that diversity?

I live in Toronto, Canada, and approximately 50% of residents here were born overseas. Toronto likes to boast it is one of the most diverse cities in the world (based on that metric, at least).

<comment><USER61> They're probably using this list

[https://en.wikipedia.org/wiki/List_of_countries_ranked_by_et...](https://en.wikipedia.org/wiki/List_of_countries_ranked_by_ethnic_and_cultural_diversity_level)

And you are probably using this one

[https://en.wikipedia.org/wiki/List_of_sovereign_states_and_d...](https://en.wikipedia.org/wiki/List_of_sovereign_states_and_dependent_territories_by_immigrant_population)

So it depends what you mean by diversity

</comment></comment></comment><comment><USER62> TLDR of the article is American / European companies creating in-house Indian offices and moving away from "consultancies".

I whole heartedly agree to the huge advantages you get doing this. You have better control over hiring quality talent, more focused developers who develop institutional knowledge over time, much easier to scale up/down than the contracts with these consultancies and so on.....

Outside IT, I can confirm the same tree has been happening from my industry of Oil & Gas consultancy. Many American / European oil & gas consultancies now have Indian engineering centres employing chemical / mechanical / civil / electrical / instrumentation engineers.

It is easy to setup this over here. Everyone is welcome.

<comment><USER63> Being a part of one of these, I agree most companies have realised have a dedicated offshore team is much better than assigning work via third party consultancies.

If anyone is struggling to hire in their local market definitely try to get in touch with talented people offshore and see if they can bootstrap a small development team to help your business.

Also it's not always about cost cutting, sometimes businesses struggle to find developers working on their technology platforms or just lack the pull to attract local talent. In these cases if you invest in an offshore team and help them learn about your business needs it will pay off in the long run.

</comment></comment><comment><USER64> I run a boutique consulting studio in India. Indian outsourcing /offshore teams are beyond Infosys, TCS, Tech Mahindra, Wipro etc.

There are design & engineering teams who deliver amazing value to their clients. These teams are nimble & specialised.

</comment><comment><USER65> They should have seen this coming. The big Indian IT consultancies have existed since the 1980s and they have been swimming in billions since the early 2000s. They should have invested into actual product development at least a decade ago.

</comment><comment><USER52> You can get very good developers from these companies, and you can get it in volume, you just need to insist on it.

When you ask for Sr.managers, 2xmanagers, 2x Asst. Managers, 2x Business Analyst (with MBAs). You are quickly adding up costs for non-functional heads. The only way to remedy that is to go cheap on developers and bloat their numbers to match the overhead.

</comment><comment><USER66> I was (and currently still) working for such a company in US. Their business model is to sell you bodies. That's it.

</comment><comment><USER67> [https://archive.is/yNKSj](https://archive.is/yNKSj)

<comment><USER68> Thank you!

</comment></comment><comment><USER69> [https://www.tcs.com/business-4-0/report/behaviors-digital- tr...](https://www.tcs.com/business-4-0/report/behaviors-digital- transformation) Just read this and tell me if any of this makes sense. I read it 10 times and couldn't figure out what is the value they are bringing.

</comment><comment><USER70> Indian IT consultancies make money by selling Software Engineers, not Software to US/EU;

</comment><comment><USER70> [https://archive.is/yNKSj](https://archive.is/yNKSj)

</comment><comment><USER71> Thanks. Grammar check - its note "codes"; it is "code".

<comment><USER72> Wrong—"codes" is correct in the Indian dialect of English. This is akin to arguing over whether "color" or "colour" is the correct spelling.

<comment><USER73> While what I'll say will surely be controversial and will lead to many down votes, Indian dialect of English is not considered a "standard." As a result, the correctness of something in Indian dialect does not mean it is "proper English" or "correct English".

If you go to non-English speaking Europe, most textbooks come from the British Council, and teach British English.

If you go to China and a lot of Asian countries, a lot of their textbooks come from the USA, and will teach American English.

You might find some Aussie textbooks in Japan or China... You will not find a country that speaks Indian English outside of India.

So, "color" or "colour" are both correct because they are correct in one of the "standards" of English. "Codes" then is not correct because it is incorrect in what's considered the "standards" of English.

For the record, I personally am from neither US, UK, or any other English- speaking country. I also think correcting people's English on HNews is silly.

Just my 2c.

<comment><USER74> I see nothing wrong or nonstandard with Indian English, as a native US English speaker living in Canada myself.

Are you going to claim that Canada uses nonstandard English simply because it's a hybrid of US and UK English with a few phonetic and lexical twists of its own? Or that Scottish English is somehow less legitimate than England's English (the two are quite different) despite Scotland being part of the UK for centuries?

As well, Indian English is spoken by an estimated 125 million people, more people than the total populations of the UK and Canada combined and about a third of the US population. And this is the predominant version of English in a country of more than a billion people, which makes it standard enough there to count as a standard.

Deferring to a standard requires a context in which to say whether one is or isn't speaking standardly. Since we're discussing a topic about India on a US- centric but globally inclusive website, either we should insist that everyone uses the site's predominant US variety of English (I'm happy we don't do this) or the Indian commenter should be free to use standard Indian English in discussing this without that dialect being called wrong.

<comment><USER73> > I see nothing wrong or nonstandard with Indian English, as a native US > English speaker living in Canada myself.

I try to see it from the perspective of a non-native speaker trying to learn English.

If I know no English, and pay for teachers to teach me English, I definitely do not want to be taught Indian English.

Not because it's wrong, not because it's $whatever_adjective, but because it will sound incorrect to the majority of native English speakers that are not of Indian origin.

In a similar manner, you don't see Cockney English being taught, and you don't think of as Cockney English as "correct". It has indeed its rules, and is perfectly understandable to the speakers. I have nothing against Cockney English. That said, I wouldn't want to be taught Cockney English by professionals who claim "it is correct." It is indeed correct, but it will hurt my communication even in the most of the UK.

<comment><USER75> I want to point out your claim about 'majority of English speakers'. The number of English speakers in the Indian subcontinent is much higher than anywhere else in the world, including US.

Source : [https://en.wikipedia.org/wiki/List_of_countries_by_English-s...](https://en.wikipedia.org/wiki/List_of_countries_by_English- speaking_population)

If numbers decide what is the norm, Indian English should be it. However, I feel like there are other factors that you are using to determine the "correct" English.

<comment><USER73> > majority of English speakers

That's fair... That should have been "majority of native English speakers". Corrected.

You'll now argue who's a native speaker, won't you... :)

<comment><USER75> Of course, I would. :)

IMHO everything other than British English is a regional derivative. The software world has caught up to that fact and soon the popular language tests will follow. They would need to do the needful eventually. Lol.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER76> I wonder what GPT-3 will do to their business models

<comment><USER77> Not sure about the business models, but it might generate pseudo-translations of the same article, like this:

[https://www.news98.info/indian-it-consultancies-wrestle- towa...](https://www.news98.info/indian-it-consultancies-wrestle-towards- technological-obsolescence/)

My eyes bled trying to read that hash.

</comment></comment><comment><USER78> These obese sweatshops are getting what they deserve.</comment>