Try the custom AI to help you find products that Reddit loves.
I've mentioned this before on this subreddit, but a few years ago I was part of a small startup that had a difficult situation, similar to what you describe. We were trying to build a very cutting edge solution that used NLP (Natural Language Processing) to allow salespeople to talk directly to Salesforce. Sadly, the person we hired to be our NLP specialist was not up to the job. I worked with him for 3 months in an effort to get him to approve, but he was not highly motivated and he did not listen to my advice. The whole startup was stalled because of him. Finally, I had to recommend that he be fired. This lead to some shocking confrontations, which were very unpleasant to live through. I detailed these events in How To Destroy A Tech Startup In Three Easy Steps:
The argument that I used then was that this one person was harming the whole team. If you think it is appropriate, I'd suggest you use the same arguments when you talk to your manager. You don't want to sound selfish or mean or personal, instead you want to couch your comments as concerns for the welfare of the whole team. Your manager should respond to that, as defending the welfare of the whole team is the job of your manager.
For sure, we should talk about how many software developers are at a company. If the number is 5, you won't see much specialization. If the number is 500, we would see a lot of specialization. That much doesn't depend on the question of "cloud versus co-lo". We can only talk specifics if we talk about specific companies and how many software developers are there, and how the work was divided. When I wrote "How to destroy a tech startup in three easy steps" I describe a tiny startup I was at that only had 3 software engineers. I handled all the devops, which I ran in AWS. I kept things very simple, because managing a server was a very small part of my job. But since we only had one server, if it had been a nearby co-lo, my workload would have been the same. If you're interested in that story, I tell it here:
You should demand control over who is on the team. If someone refuses to work, then you should be able to ask "I would like this person moved to a different team. I'd like to pick someone else for this team."
I can tell you, from personal experience, it can be very difficult if you are put in charge of a small team, but you are not given control over who is on that team. If you end up with someone who refuses to work, you have no way to get rid of them, but you are still responsible for the team hitting its objectives.
I was in this difficult situation in 2015, an incident I wrote about here:
Are you a student? Your university might run a program for free. For instance, the incubator that I mention above was actually part of NYU, so it was open to all NYU students who had an interesting idea. It was free to the students, and once they were in, they all got the free 100k credit from AWS. It depends on your university, but you should certainly go ask if they run such a program. And if your interested in more details about the NYU incubator, I describe it in my book:
> masters in mathematics
By any chance, in number theory? If so, you can position yourself as an expert on crypto. (Brush up on ecliptics and primes, if you don't already know.) Then you should be able to ask for $250,000 a year, or charge $400 an hour as a consultant.
In "How To Destroy A Tech Startup" I mention that early on we hired an NLP expert for $400 an hour to each us about NLP. His background was in math, like you, he did not have a CS degree. See here:
Keep in mind that, at most, you bear 50% of the responsibility for the relationship. It is their job to get in line. If they really think you suck, they can quit. If they really think your promotion amounts to a grave injustice, they can quit. If they are in any way angry, they should direct that anger at those who promoted you, not you yourself.
They can talk to upper management. If they want to play a wider role, they can explain that to upper management. If upper management doesn't give them what they want, they can quit and find a job elsewhere.
You should make clear that you plan to treat them with respect and that you will listen to any reasonable thing they have to say. If they are not satisfied with that, then you need to remind them that they need to get themselves inline. Do not tolerate a prolonged period of them being passive aggressive.
Give them 3 months to adjust. Always be respectful to them. If they are still unhappy after 3 months, you should ask that they be fired.
I often make the point that too many managers tolerate too much passive aggressive rebellion for too long. Past a certain point, it damages the team and the organization. For details, see what I wrote in my book, How To Destroy A Tech Startup:
Thank you. You might also like my book, which is a close-up portrait of what bad leadership can look like, a true story of a badly run startup I joined in 2015. I conclude the book with some thoughts on what needs to happen to ensure more startups have better leadership:
> I maintain that the government is incredibly expensive and incredibly inefficient.
I've started businesses, and I've helped run businesses, and I've worked in businesses, and I can assure you that businesses are incredibly inefficient. I wrote a fairly popular book about one particular disaster, and the reason the book is popular is because so many people who've worked at tech startups recognize that this story is emblematic of the many problems one runs into with small businesses. Please consider How To Destroy A Tech Startup In Three Easy Steps:
This depend whether you are in a tech company or a non-tech company. Non-tech companies don't care about code quality. If you are in a big publishing firm, most of the tech work has already been outsourced to India or Vietnam or Brazil -- management wants tech work cheap and does not care about quality. Likewise, if you are working in a restaurant firm, or a construction firm, or a transportation firm. The idea that "Nowadays all companies are tech companies" is laughably untrue. Most companies are primarily not focused on tech, so they outsource it. Most management comes up through the ranks from processes that are organic to their industries, and have nothing to do with tech. For such leadership, tech will always be an afterthought.
But things are different in actual tech companies. Here the management does tend to value good engineering. Not always, but often. This is where you'll see highly paid engineers who enforce "best practices."
Of course, there are some tech startups that are just scams, possibly designed to cheat investors out of their money. I wrote of one such case in my book:
Without more details, it is difficult to say. Everything depends on the chance that the new startup will be successful. Is it well funded? Does it have a great CEO? Do you have rapport with the CEO? Does it have proven product/market fit?
If you are CTO of a successful startup, then your career is golden for the rest of your life. You will go from one CTO job to the next CTO job, or if you decide you want to start your own company, investors will be eager to invest with you.
But of course, most startups are chaotic, badly run, and more than 90% of them fail. And if you are CTO, you will get some of the blame. So what do you think the risk of failure is?
I've mentioned this before on this subreddit, but I was at a very chaotic startup in 2015, and I wrote a book about that which became fairly popular. If you're curious about one case of chaos at a startup, check out How To Destroy A Tech Startup In Three Easy Steps:
Startups can be unusually chaotic, badly managed, and sometimes a very bad experience. I've mentioned this before on this subreddit, but I was at a startup inn 2015 that was a disaster of mismanagement, and then I wrote what became a fairly popular book about it, How To Destroy A Tech Startup In Three Easy Steps:
At a small, tumultuous company, the chaos can be a double edged sword. With some effort, you can make it work for you. It sounds like you were not being heavily monitored, which suggests you had some free time where you could take the initiative on some new project of your own.
"I don't get involved in high level tech decisions."
My suggestion is that you take the initiative on this. Figure out where the company is hurting. Figure out which part of their tech is the most broken. Analyze it yourself. Write a report. Make recommendations. Explain how to fix it. Ideally, they will put you in charge of fixing it. The one advantage of small and chaotic companies is that no one has the time to do serious analysis of the deep problems, so if you do that, then you can potentially be granted the authority to move ahead. Such efforts, as writing a report, will either be greeted gratefully or suspiciously. If they get upset with you for writing a report, then you really need to move on, because that place will be bad for your career, and the damage will get worse the longer you stay. You want to find a place where you can take the initiative and be rewarded for it.
I ran my own software development shop for 3 years. I started it with the graphic designer and frontend engineer Laura Denyes. Our biggest project was the $1 million effort to build a social network specific to those dealing with drug addiction.
If you ever want to talk, I'm happy to give you an hour of my time for free, and I'll share everything I learned. I've also put most of my experiences into 2 books.
How To Destroy A Tech Startup In Three Easy Steps is a true story about a doomed startup where I lead the tech in 2015. This book has become popular with everyone who likes a counter-narrative to the idea that startups are automatically cool and agile:
The reviews on the book give you a pretty good sense of the chaos that it documents.
More recently, and perhaps more appropriate to your request, I put together a book of advice, all the main lessons I've learned from my 22 years leading teams and writing software. One On One Meetings Are Underrated; Group Meetings Waste Time:
Like I said, if you ever want to chat, I'm happy to give you an hour and share what I've learned.
That's what I did. I mostly did web development for 10 years. But then I moved into NLP/AI. I didn't know enough matrix calculus to play the lead role as our NLP expert, but I spent the next 5 years leading NLP teams, and so I picked up a lot. As team lead, at small startups, I also ended up doing a lot of devops. The first NLP startup I worked on was a bit of a disaster, but it got me into the world of NLP. I wrote about all of this in my book "How To Destroy A Tech Startup In Three Easy Steps."
I've had fights just like that. Some managers lose their temper. They scream, they throw things, and then later they apologize. They often act like this with employees who they need, because it drives them crazy to need someone. They'd actually be more comfortable if they felt you were disposable. But some managers, I think they crave power, so they are uncomfortable when they really need you. And needing you makes them angry. So they will lose their temper and scream, and then later they apologize because they really do you need you. I recorded a fight like this, and I wrote it down word for word, it amounts to the big dramatic fight that really exploded things at Celelot. I told that story in great detail here:
I wrote a book about a particular startup that was badly run and ended in disaster and this became very popular:
You read the reviews and you realize, there is a market for this kind of honesty.
In most states, NDAs are hard to enforce anyway, and only apply to strictly proprietary facts, such as financial information and the kind of technology that a company would seek a patent for. Even when you violate an NDA, the company might threaten you, but typically they don't actually do anything. When I wrote my book I was immediately contacted by company lawyers who told me they were going to sue me, but I knew they were bluffing and in the end they did nothing, even though I discuss the company's technology in some detail here:
Everyone at Celelot went on to have successful careers (even the ones who maybe did not deserve to have successful careers). I wrote about that failed startup here:
> Are there many jobs for teachers in industry? (Probably the best use of my particular skill set would be in teaching machine learning to engineers)
If you are really good, then you could set yourself up as a consultant. Or take a job for 2 years and then go off as a consultant. In my book "How To Destroy A Tech Startup" I mention that we initially hired an NLP consultant to teach us about NLP, and he charged $400 an hour and he was in much demand.
I have written elsewhere of the communication issues that come off, way too often, between computer programmers and the AI/ML consultants, so if you can learn how to talk to computer programmers, you would have a huge advantage. In particular, if a tech manager says "We need to find user behavior in this dataset" and you feel the dataset is tainted or or the questions are wrong, if you can use clear language to explain what your concerns are, that would be unusual and excellent. I've had frustrating experiences with ML experts telling me "You can't do ML with this data set" and I ask "Why not?" and they are not able to explain what their concerns are.
In my book I talk about the new dev who thought it would be funny to use lyrics from rap songs to name his functions. One morning I got to the office and the CEO said, "Hey, the site is down, can you find out what is going on?" So I ssh to the server and look at the logs and see errors about "Out of index in string, line 15, fuckBitchesGetMoney();" And I was like, uh, this violates our naming conventions. See details here:
I'm a big advocate for realism regarding software development jobs, and especially about work at startups, so, after an especially crazy and ambitious experience at a startup, I gathered up my email and Slack messages and turned them into a book. If you want a day-by-day true story that reveals exactly what software developers do at an ambitious startup do, this is one view of the situation:
Check out the reviews of that book, they also give some interesting insights into software development.
Some of my favorite jobs have been at badly run startups. The craziness of it provides a lot of perspective on what a good job would look like. My craziest experience was in 2015, which I wrote up and that story became a popular book:
As someone who has lead tech teams, my feeling is that a programmer is good so long as they are serious about improving themselves. And I'm willing to devote a month or two to trying to train them. But I need them to take instruction and show a willingness to get serious. If, after 2 months, a programmer continues in their bad habits, then I will move to fire them. But the majority of the time, I find people want to learn and they appreciate what help I can offer them.
For an extreme example, where a programmer refused to improve, and I eventually advocated for firing them, see my book:
I worked at a disaster of a startup in 2015 and on my way out I decided to write a book about it. If you go to Amazon and look at the most recent review, you'll see that Michael Burnam-fink wrote: "Most of us have been in situations that were kind of messed up. Krubner took notes, and then he took the gloriously self-destructive step of publishing this book. The names have been changed to protect the guilty, except for his own."
But the book was not actually self-destructive. Thousands of people have read it and reached out to me and shared similar stories. I then went into consulting and I picked up 2 lucrative contracts because of that book. So my advice is, if you have insights to share, go public with them. People love reading these stories.
The universe of software engineering is very broad and if you think you enjoy it then you can probably find a niche somewhere in the industry that is comfortable for you. There are games, videos, ordinary corporate dashboards, chat software from places like Facebook, Slack and Google; there is every kind of hardware programming, such as synthesizers and instruments and systems, there is workplace automation, there are robots and industrial engineering, automation of Excel spreadsheets, there is AI and NLP and speech and getting computers to respond to the human voice, and so much more.
In 2015 I was a part of a startup working on an ambitious NLP project, and though that project was cutting-edge sophisticated, we never had to think about hardware or algorithms, since all of that was handled by the libraries we were using. I wrote about that experience, the ups and the downs of it, in this book:
Uh... that's an interesting request.
Regex is often used to pull pattern of strings out of junk. Combined with a tool like sed or awk, you can do a lot to clean up the data that goes into AI models or NLP models. Most input data is dirty and needs to be cleaned up, and the clean up is tedious work. You could probably work with any data team that is working with dirty data.
You could probably get a job at a company like: https://www.datadoghq.com
But it is also important to realize when regex won't get the job done. There is a definite limit on how far you can go with, say for instance, NLP and regex. I give a specific example in my book How To Destroy A Tech Startup:
In that case we had an incompetent NLP dev who kept trying to use regex, when we really needed to use real NLP tools.
"We (people) have bias, but unlike software, no one can open me up and see what I'm thinking, therefore bias is much harder to identify in a person."
This is simply impossible. You cannot open up software and see bias. You can only examine the results of the software to see if the results have bias. Which is exactly how we also study other people. I cannot look into someone's heart and know that they are racist. But I can listen to what they say, and if they say racist things repeatedly, then I can conclude that they are racist. Likewise with software, there is no way to look at the software and see if it is biased. But we can study the results of the software and we can say the results are biased.
"By having open-source code that can only be changed by popular vote you add fairness to the system and the voters are held accountable."
I don't think you understand where the bias originates. I do give a specific example in my book How To Destroy A Tech Startup:
The example I give in the book was that we were using Google's Tensorflow as part of our NLP engine. Google's code could auto-suggest responses. A salesperson who was selling beer, might type "Mexican". Unfortunately, Google offers a few responses, one of which is "illegal". That's racist. We had to work to remove some of the racism from Google's results. But no engineer at Google hardcoded that response. They were simply using word associations that they had drawn from searches done on the Google search engine. And Tensorflow is open source software, so you can study it, but can you find the line that has the racism? Go here and look:
You can read every line of code in that repo but you won't find the racism. But the software does reinforce system's of racism.
If you want to determine if a piece of software is racist, you would do so in exactly the same way as you would if you were trying to figure out if a person was racist: you would examine the output. The software is not any more transparent than any person.
Really? Let me try again:
In terms of incompetence and stupidity, and a general lack of social skills, consider the computer programmer Sital, in this summarized review of "How To Destroy A Tech Startup In Three Easy Steps":
Krubner was hired for a pretty standard dev role, plugging an iphone app in development into an NLP model and then Saleforce's CRM database. The hard bit was the NLP model, and a quote-unquote "brilliant data scientist" Sital had been hired to build it. But Sital spent all day watching weight lifting videos on Youtube and had mediocre coding abilities. Two of the 'cofounders', including the Chief Technology Officer, vanished to Silicon Valley internships.
Krubner put in long hours, but bugs derailed demos and core pieces of the software simple didn't work. And this is where the pyschodrama began to unravel. The CEO was a young college grad named John, and his typo-ridden messages became increasingly erratic under pressure from the board of directors. It seemed that John was just the front for the most active member of the board, a man by the name of Milburn. Milburn was a middle-aged salesman who had taught himself enough Visual Basic in the 90s to claim to be a programmer. He'd had an idea, and picked the malleable John, the son of a friend and former intern, to implement it. As John failed, because the task was beyond the team's capabilities, Milburn became increasingly involved and manipulative, finally confronting Krubner in a barrage of insults and accusations that Krubner was sabotaging the company. That was the end for their relationship.
I've searched some other reviews of the book, and an older essay that had some of the same story. There is an air of incredulity from some of the commenters. There's no way Sital could be so incompetent, Milburn so Machiavellian, or Krubner such a stereotype of the stolid software engineer. I would sincerely like to have these people's blessedly competent lives, because I'm at a boring suit and tie company with good processes and stable cashflow, and I've seen everything he written about here in software development. And as for why he stuck with it. Well, apparently the incubator was really fun, and it beat the hell out of his previous job as a developer for a serially failed founder.
This little startup was likely doomed from the start, but some advice generalizes nicely. A startup has to be a radically transparent learning organization or it is dead. Lies and deception are fatal. A team is only as strong as its weakest member, and weak links have to be cut mercilessly. And the real leader has to be involved and accountable to the process, having enough strength of will to bring something new into the world while not being so caught up in ego that they're unable to admit mistakes.
[From the top review of the book]