Monday, January 15, 2024

AI and Oracle

A long time ago in the 1990s I was starting out in software. Going to university Computer Science and alternating with co-op work terms.

I was talking to the father of a friend. He was high up in the Coast Guard. A good man. He knew about ships and navigation. He knew enough about computers to use them. 

He asked me if I could build systems in Oracle. Not knowing much I said I could work building applications with Oracle. I added might be more suited to working on the Oracle database itself. Like I said I didn't know much at the time, and didn't realize how little I knew. Every co-op student and entry level goes through this.

Then as now, of course there are a few hundreds of people working on Oracle, DB2, Sybase (now SQL Server). Working on the database itself. This is dwarfed by the many thousands of developers working building applications on these databases, and by many DBAs administering these estates.

So the Coast Guard man was right. He understood Oracle. Oracle is the business applications that run on Oracle, and the developers who know how to build and operate the business applications.


Years ago where I work now. We brought in this scaled agile SAFe consultant. We were in a big conference room at a local hotel for a few days. He described software development as unchanged since the 1950s. Chiselling out code line by line. I've been paid good money in software chiselling out source code line by line for over 25 years now.


So now there's this new, more recent thing around AI. It seems AI can be made to do more of the work, including writing the code. Like computers, AI is powerful. Computers are powerful but to be useful they need people, developers to write code for the applications that run on the computers.

AI and LLM are also powerful. Even in these early stages they have demonstrated some powerful capabilities, impressive possibilities. The AI requires humans to direct it, to provide inputs, tasks to perform with detailed instructions. The term prompt engineer has emerged as a new job category.

So with AI it may unfold similar to Oracle. There will be jobs at OpenAI, Google, Microsoft, Facebook etc. building and tuning the large language models, innovating in AI itself. Most of the jobs will be people who are able to work with AI, getting the AI to produce valuable business applications. 

AI may create a challenge of displacing some or perhaps most traditional coding positions. There may also be opportunity in AI around prompt engineering. This should be well suited to people capable of getting paid to write code.

Tuesday, January 09, 2024

The top of the heap pulls back

There have been some changes in the recruiting landscape. Back in 2021 I noticed a lot of reaching out on LinkedIn. Even recruiters from top of the heap FAANG were reaching out sending unsolicited messages.

That is no longer the case. At the peak I was being contacted by some recruiter around once a week on LinkedIn. In 2023 this slowed to around once a month.

The top firms went from hiring to shrinking. Microsoft, Facebook, Amazon, etc. all shed thousands of employees. An recruiter from Facebook who had contacted me updated her LinkedIn to no longer with Facebook, and the dreaded green Open for work badge. I deleted her from my contacts. 

A guy I know from wayback was at AWS. He seemed to survive the first Amazon round. At an end of year lunch another individual from back then mentioned he's no longer at AWS. I checked LinkedIn and it seems he got caught in the second big Amazon layoff wave. As of mid 2023 his time at AWS seemed to abruptly end.

And so it goes. I'm sure the top firms are still hiring exceptionals for key roles. You can get on there but it's hard now, like historically it was hard to get on at Google.The indiscriminate growth and hiring, and them reaching out first era has ended for now.

There was a lot of swirl for those like me who stayed where they were during the great resignation of 2020-2022. We lost people to Microsoft and AWS. It was disruptive. I do hope for a balanced market where there are good jobs available to those who are seeking new work, and quality candidates available for employers who want to hire.

Friday, June 16, 2023

The New IBM Fungibles

IBM has announced they are going to replace 7,800 jobs with AI. That is quite a few people. IBM is vast though at around 260,000 employees. 

Ah the IBM fungibles. First they were laid off and replaced with other fungibles. Now they are laid off to be replaced by AI and bots. Still there, and will be in great numbers. There are many thousands of them remaining. Still going to work at IBM, still grinding, still getting paid. At IBM and through tech.

Life on the 80 side of the 80/20 rule. Under the Pareto principle, the top 20% of contributors generate 80% of the end user value. The fungibles are the other 80% of contributors. Still useful, able to generate billable hours, can complete many tasks and make real contributions to delivery, in great numbers. Always under that bit of pressure though. The outsourcing craze of the early 2000s, seen as interchangeable and replaceable with each other, now the AI craze for this decade.

Thursday, July 22, 2021

The top of the heap reaches out

If you made a list of the most prestigious software companies, the best, most desirable places to be. At this time in July 2021 the top of the software heap might look like

Google
Facebook
Microsoft
Apple
Amazon
Netflix

and right up there, not far behind I might include

Zoom
Uber
Twitter

now your list might be a bit different. maybe add or remove a couple here and there. but in general, these are considered the top, the biggest and most successful companies, the most sought after jobs. some use FAANG which is basically the same list.

what's interesting is that in the last few months two of these companies have reached out to me unsolicited from LinkedIn. I've been contacted by Amazon and Facebook. asking me if I might be interested in applying for something. I told them polite thanks, I'm not looking to make a change at this time.

I've been on LinkedIn for a long time but this had never happened before. So it's a bit unusual for me to be hearing from them. I haven't really made any meaningful changes to my LinkedIn profile that might be drawing extra interest from the search queries the elite companies presumably use to assemble lists of people to reach out to. But somehow I've now appeared on these queries twice in the last few months.

I'd think historically they have had plenty of high quality applicants to choose from. I'm basically a regular software developer in Nova Scotia with north of 25 years experience. It's a bit flattering to hear from them. Still I understand how rigorous their recruiting process is. I don't have any more illusions now than in the past about being able to successfully navigate that notorious process. It's a long way from sending an unsolicited email on LinkedIn to extending an actual job offer.

I got thinking about why they now seem to be reaching out further to find candidates. I suspect part of it is just how successful these companies have been, and how much they have grown. They may have outgrown the ability of traditional recruiting sources such as Stanford, CMU, MIT, Concordia, Harvard, other companies in Silicon Valley, to generate employees. So they have to be more creative to search further afield to find quality new employees to hire. Then there's Price's Law. It takes 1 million programmers to generate 1,000 exceptionals, the people Google wants. It takes 4 million developers to generate 2,000 exceptionals.

The 1 in 1,000 exceptionalism. These people are great of course and highly sought after, but are very rare. There could only be a few thousand in all of North America. Many are already onboard at Google and Facebook anyway. Of the rest, many have great situations in academia or the companies where they are at. They can't be lured to Silicon Valley or Seattle. I'm guessing the target for elite tech hiring is more around the Pareto principle. Under Pareto, 20% of developers generate 80% of the software progress. If we accept my speculation that the 20% Pareto group is a fractal, it's also Pareto distributed. Then 4% of developers create 64% of value in software. It's these 4%, the 1 in 25, who big tech is reaching out further to identify and recruit.

One factor which may be influencing big tech to reach further out is the increase in work from home. If there is some guy in Cape Breton who is outstanding, and would do fine in California. He is happy living in Cape Breton and not interested in moving. With work from home, big tech might be able to still recruit him, which would not have been possible in the past.

It's a big challenge for the elite firms. How to continue to grow and increase the head count, while maintaining the extremely high recruiting and hiring standards that have made them so successful. Reaching out further, to less familiar candidate pools, may increase this challenge further. Though there are outstanding people "out there" to be found. I've had the pleasure to work with a few over the years.

Thursday, January 28, 2021

25 years in software development


A few months ago, in 2020, I realized something. I started my first job in software in 1995. I've now been a computer programmer for 25 years.

My first job was with PRIOR Data Sciences in January 1995. I was a co-op student from the Technical University of Nova Scotia (TUNS) on a four-month term with PRIOR in the Halifax office. The pay was based on annualized $25,000 a year. it was the highest pay I'd received anywhere. yay good start. Working in software has always paid well with good benefits.

The project, PLAN CSCI at the time, was part of the Iris radio program for the Canadian Army. PRIOR had this small piece of a big program, which was a big multimillion contract to PRIOR, and created a job for me. We were actually a sub-subcontractor, working for EDS in Hook, England, who were working for CDC in Calgary.

It was a good work term. I worked on Oracle Forms and some Ada. I wrote the original forms manager module which continued into the final completed system. I learned a lot.

I guess PRIOR was happy enough with my work. They invited me back for two more work terms, then when I finished at TUNS I joined as full time in January 1997. PRIOR was a fine company, a good place to work, with talented individuals throughout. In 2000, xwave bought PRIOR for $15 million as part of an acquisition spree.

I joined xwave with the acquisition. They were okay, benefits weren't as good but they treated me well and I can't say anything bad. xwave had the bad luck to hit the tech crash of the early 2000s. It was a different feel with xwave. For myself I made my first job change, joining Core Networks in July 2001. The pay was 8% higher.

business cards
business cards from over the years. developers were last issued business cards about 15 years ago

Back then, working in software development was in three broad areas
product based companies
consulting and systems integration
corporate and government IT departments

I've worked in all of these environments at different times over the years. My IT department time with the Department of Fisheries and Oceans (DFO) around Y2K for about two years was as a contractor from PRIOR/xwave. Showing that there is some overlap between them.

This is still pretty much the same today a generation later, the three areas where developers work. Some of the details are a bit different. Products then was shrink wrapped consumer, and enterprise software discs for corporate servers. Today it is websites, web-based applications, and app store apps.

Consulting has seen the rise of outsourcing and offshoring.

In enterprise IT, more servers and corporate applications have moved to the cloud and AWS.

I started as a software developer in 1995. In 2020 I am still a computer programmer. That's not entirely unusual. it's a good job, the pay and benefits are good. Indoor cubicle work (from home) with free coffee. Like everyone in tech, a good number of evenings and weekends, with a few death marches and all-nighters over the years. 

Some who started as programmers have moved on to other positions. The main areas people branch out to from development are management and architecture. as for everyone, there were opportunities where I could have moved things in those directions. meh I've always been happy enough to be a developer.

I think about it like an electrician. If someone is an electrician for 25 years that's considered good, an accomplishment, a winning career. Nobody would question why an electrician didn't seek to become some kind of manager or start his own company or whatever. He became an electrician to work as an electrician. He was good enough at it to stay employed and had a long prosperous run doing it. A success.

When I joined PRIOR full time PLAN CSCI had expanded into the Communications Management System (CMS) Segment, which included PLAN. My contribution was the Offline Storage Media (OLSM) Computer Software Unit (CSU). OLSM was a good piece, well received by the Army in testing I was told. I'm pleased to have written it and be associated with it. OLSM was written in the Ada programming language, now known as Ada 83. I was on the Ada team for CMS. That was a very strong team, certainly among the best teams I've been on over the years.

Ada is a good programming language. It can be enjoyable to work with on a good software system. At the time I thought I wouldn't mind doing Ada maintenance on a large, well-designed system for a number of years as the rest of my career. That statement remains true today.

At this point it's likely I'm closer to the end of my career than to the beginning. 25 years ago I was close to the start with years ahead as it has turned out. There's no guarantee of course I have 25 years left to live, and retirement is a real thing for some people. So who knows? Unexpected events, major upheavals for better or for worse, periods of prosperity and struggle, can and do happen. The world of professional software development has changed in the last quarter century, and I expect change to just continue. For myself I'm definitely in the "danger zone" of the middle-aged tech worker. As far back as the 1980s the unemployed 40 and 50 something technical worker was a thing, an issue in tech. I used to see articles about it in high school. We don't hear about that as much today, but I'm not sure I'd want to be out of work and seeking to get back into software.

I've worked for 7 different companies. So about 3.5 years average. That's not bad in software. Some of the changes such as PRIOR to xwave were due to my company being acquired. I switched jobs on my own three times. Luckily I was only laid off and out of work once in all these years so far. In 2014 as RIM was going from 19,000 to 2,000 employees I got severenced when the BlackBerry ID (BBID) server team in Halifax was laid off. A couple of months after RIM I caught on with CGI.

lapel pins
lapel pins from along the way. TUNS, PRIOR, and Core Networks no longer exist

Final thoughts. I've been on a number of teams with a number of companies over the years. There have been many theories and methodologies including: personal offices with doors that close, pair programming two people at one keyboard, shoulder to shoulder and across from each other at long desks, work from home, Booch notation, Unified Modelling Language (UML), stick figure men, user stories, scenarios, design patterns, Microsoft Word design documents, MS Project, Jira, waterfall, agile, scrum, SAFe, kanban, Toyota, Spotify, probably other stuff and fads I've forgotten.

What makes a successful software team? From the above, it has been thought about and many ideas have been tried. In my early years as a developer I came up with a theory. I've stuck with it ever since. My theory is there are two factors that define a successful software team

  • outstanding individual talent. exceptionals and solid individual contributors
  • stability and continuity

With those two things the team will be successful whatever current design methodology or way to organize people and work is used. Without these two things, especially talented personnel, no amount of software design or organizational fads will overcome it; the team will struggle.

That's it. twenty-five years in the books. it was a good choice for me getting into this business. hopefully I have at least a few good years left.


Monday, June 04, 2018

Is Code the Future of Test

Where I work there is increasing focus on test automation. Recent hiring around the quality assurance area has focused on those who can create and maintain automated tests.

Test automation is about source code. So at least some programming skill and experience is now basically a requirement to be hired into QA. Of course there is still a requirement to be able to do more classic manual testing. That is, going to the website, desktop, or mobile app, executing various flows in person, observing and verifying the result is correct and the user experience is smooth. The way forward seems to be dual-hat in QA. Comfortable both in manual testing and test automation.

This tends to blur a distinction between manual and automated testing. It's all testing. The trend in my observation seems toward eliminate the separate test automation teams, the 3 teams doctrine (dev team, manual test team, test automation team).

It also tends to blur a distinction between developer and tester. Going forward it may become that QA/test automation is generally the entry level position out of tech school. From there, the individual will have the opportunity to demonstrate an ability to write clean, maintainable code that works as part of test automation. That person could if interested be offered an opportunity to switch from QA to development.

So I'd see a scenario something like this where dual-hat QA is capable both in manual testing and test automation. While manually testing a screen on the website, a tester notices a problem. The tester files a bug report in the usual way, reporting steps to reproduce, expected result, actual result, screen shots, logs, etc. While the bug goes into the development team, the tester then creates an automated test to demonstrate the defect on the website. The automated test is reviewed and checked into the repo. A couple days later the development team marks the bug as fixed and ready to verify.

The tester goes back to the screen on the website with the latest build. The defect is observed to now be fixed. The automated test case runs automatically. The automated test switches from red to green, confirming that the issue is now fixed. The defect is closed. The automated test remains in the repo and runs in the overnight regression test run to help ensure the defect does not accidentally reappear in the website.

What of the classic manual tester?
I think the traditional non-coding manual testers will be around for some time. There's plenty of work in that area. They are not yet an endangered species. Not every company has fully embraced dual-hat QA. Anyone who has a job manual testing is probably pretty safe.

Perhaps it will start to be felt in mobility if you lose your job or seek to switch jobs. For example where I work it seems all new QA hiring now requires coding and test automation ability. So by that definition any manual testers here might have a harder time getting hired by today's standards, even though they are good at their jobs and make important contributions to successful product releases. So I suspect QA hiring across tech will increasingly require the ability to fire up Eclipse, Visual Studio, whatever IDE, understand code, and write code.

To the existing manual tester there are some paths forward. Be really good at manual testing. Consider reinvent as a business analyst, product manager, project manager, or into management. Also if possible fire up the tools and learn/relearn to code and embrace test automation.

What is the future of Development?
I think that will also evolve. It's worth its own post. I should think about it some more and may come up with something.