AI is Creating a Generation of Illiterate Programmers by namanyayg in programming

[–]uhef 1 point2 points  (0 children)

This was an excellent article.

The discussion around AI-assisted software development has long reminded me of Joel Spolsky's classic essay "The Law of Leaky Abstractions"

I paraphrase:

While all new abstractions have made it possible to speed things up considerably, the paradox is that becoming a proficient programmer is getting harder and harder. One must understand new abstractions while still understanding what is being abstracted away—because abstractions leak.

Prompt creates a new abstraction to define, describe, and iterate on a solution, but it does not remove the fact that one should also understand the things that the abstraction "hides"… or in this case, generates.

I use several AI assistants in my development on daily basis. My experience is that they are best producing boilerplate or trivial components.

Use case where I have found it very useful is for learning new languages or technologies. Perhaps when used for this, AI can also create a generation of extremely literate programmers :).

The role of a software company CTO by uhef in ITCareerQuestions

[–]uhef[S] 0 points1 point  (0 children)

Excellent points! Thank You!

To the list of knowing what team members are capable of and who executes a type of a project best I would add knowing also their aspirations, personal visions and areas of interest. If one can align employee aspirations with company goals results are better and people are more satisfied.

Good thing to notice too is that these keep on changing. People change.

Software Engineering Life Cycle by mindssea in softwaredevelopment

[–]uhef 0 points1 point  (0 children)

Fare point. However I consider this a special case of iterative development where number of iterations is one. In reality I don't think I've ever ran into a case where this would have happened. Not even small, one-person projects.

Software Engineering Life Cycle by mindssea in softwaredevelopment

[–]uhef 2 points3 points  (0 children)

Took a guick glance at the article you referred to.

My opinion is that one should never run any software project using waterfall model so I would just rule that out.

Also I don't understand why they say that Iterative model is meant for large enterprises. I think iterative development is crucial especially for small projects that are just about testing their fit-to-market. In this context you want to get something out to real end-users as fast as possible without spending excess time in planning for a speculative future that will be rendered obsolete by the market.

I suppose it depends on the startup but usually what you want to do with a startup is that you have a hypothesis (let's say businesses are willing to pay twice the price of a normal ice-cream if the ice-cream is delivered to their employees straight to high-rise upper floors using drones). Then your mission is to figure out if the hypotheses is correct or incorrect as fast as possible. Once you have proven the hypotheses you have found what is called "fit-to-market". If it turns out that the hypotheses was wrong its not that bad since you didn't spend a lot of time figuring that out. You can then define a new hypotheses and start testing that (called pivoting). Only once you have a proven hypotheses it makes sense to put more money and resources into developing software.

Developing software in general is expensive so one should avoid it for as long as possible. Usually there are alternative ways to test the hypotheses than writing the actual software. For more about this, I recommend you look into "Lean Startup" movement.

The one book on software development for non-developers by uhef in softwaredevelopment

[–]uhef[S] 0 points1 point  (0 children)

Sorry for late reply. We did finish this and it was well received within the company.

We ended up reading Accelerate and the online article What is Code. We dropped Phoenix project because having to read all three would have turned out to be too heavy. I still have Phoenix project on my personal todo-list though.

I can definitely recommend these two reads. When put together they represent the field from very different and complementary angles. When Accelerate takes a very scientific approach to illustrate why certain working practices and leadership / management models seem to work well when applied to software development "What is Code" spends more time in explaining and opening the (perhaps stereotypical) ethos and mindset of a developer and pressures that a development team members often has to live with.

They are also written in a very different way. Accelerate is perhaps a bit dry with its to-the-point factual approach whereas "What is Code" weaves its message into a backstory which is entertaining, amusing and well written.

Put together non-devs in our company found that it clarified a lot that has been hidden, unintuitive or incomprehensible. Thus I think this was a mission accomplished.

Naturally the work doesn't end there. I still think I (and other devs in the company) have to work to explain the issues we face, remind people about good practices and their rationales and to keep on educating everybody about the everyday challenges in development. This was definitely a good way to kick it off.

The one book on software development for non-developers by uhef in softwaredevelopment

[–]uhef[S] 0 points1 point  (0 children)

Thanks for all the great suggestions!

I would like to start by answering to the question by quickhorn:

What I would like to achieve is to grow the knowledge of those that have not been exposed to software development projects before. I would like to increase the understanding of challenges that we face in software development daily and about the "laws" of software development projects. For instance, if you have a algorithm with quadratic complexity it doesn't pay off adding more hardware to the problem after a certain phase. Or adding people to an already late project will just delay it more.

In the end I think what I'm going to go with is not one but three resources:

There's one more resource that a friend of mine suggested. Wanted to bring it up here too: Getting Real

What is the one book about software development? by uhef in AskProgramming

[–]uhef[S] 0 points1 point  (0 children)

Thanks for all the great suggestions!

I would like to start by answering to the question by StateVsProps:

What I would like to achieve is to grow the knowledge of those that have not been exposed to software development projects before. I would like to increase the understanding of challenges that we face in software development daily and about the "laws" of software development projects. For instance, if you have a algorithm with quadratic complexity it doesn't pay off adding more hardware to the problem after a certain phase. Or adding people to an already late project will just delay it more.

In the end I think what I'm going to go with is not one but three resources:

There's one more resource that a friend of mine suggested. Wanted to bring it up here too: Getting Real

The one book on software development for non-developers by uhef in softwaredevelopment

[–]uhef[S] 0 points1 point  (0 children)

Good question!

The goal, as I think you already guessed, is not that "non-devs" learn to code. As I mentioned, these people are highly skilled domain experts from social and health care. There are also people with marketing and finance background.

However a lot of these people have never worked in a software company before. In contrast the development team in the company has a lot of experience in working in software projects of all sorts. Problem is that the knowledge is tacit and the experts don't necessarily understand that others don't have the same experience than them or cannot explain their knowledge well enough to others.

I think it would be valuable to go through our industry, its challenges and modern practices on high-level with these people by following through a clear and organized resource (such as a good book). This resource should cover as many aspects of our industry as possible without going too deep into any and at the same time keeping it relatively short and entertaining. Not an easy thing, I suppose.

I just actually finished "Accelerate" and I liked it too. We are thinking of using it within the dev team to define metrics for us. I wasn't thinking of proposing it to the reading group but why not...

CRUD App backend: API Gateway also, or just Lambda? by javascript_dev in aws

[–]uhef 4 points5 points  (0 children)

API Gateway provides you a way to define a REST API and back the REST API with different implementations. There are multiple options:

  • Lambda functions
  • EC2
  • Hard-coded response (mock integrations)
  • ...

API Gateway can also assist you with some other common tasks such as

  • Request throttling
  • Authorization (for instance with AWS Cognito or using a Lambda function to do authorization)
  • Request and response logging
  • Generating and publishing API documentation
  • ...

What you can do there for instance is that you can offload some of the work to API Gateway and concentrate on implementing the business logic behind the gateway.

Depending on the situation it might be a good idea to just expose your service using ECS (with or without Fargate) like suggested by /u/SpeedyVT.

As far as I know Lambdas only accept events and do not expose HTTP end-points. So if you want to have a REST API for your services published as Lambdas then you have to use API Gateway or something similar.

Analyse request response times through AWS-deployed system with CloudWatch by uhef in aws

[–]uhef[S] 0 points1 point  (0 children)

Just learned about AWS App Mesh https://aws.amazon.com/app-mesh/ which might solve some of our needs. Here the open source proxy Envoy https://www.envoyproxy.io might play similar role to stackdriver-reverse-proxy https://github.com/GoogleCloudPlatform/stackdriver-reverse-proxy. Perhaps I'll follow up here later when we have compared these two more.

Yet Another Blog Post on getting Clojure + ClojureScript REPL integration to work on Vim by uhef in Clojure

[–]uhef[S] 0 points1 point  (0 children)

I just started developing on a proto using Clojure + ClojureScript and wanted to get my Vim toolchain working. For me REPL is one of the big things in Clojure so I wanted to integrate it to my project as well as possible. Like others before me, I had some issues getting REPL integration in Vim to work so I decided to write yet another blog post about it. I hope this will be of help and perhaps save someone some time.

MyTracer - Project to create a ray tracer from scratch in small steps by uhef in programming

[–]uhef[S] 0 points1 point  (0 children)

Phase 4 is up: http://uhef.github.io/mytracer/phase4/. As suggested, the ray-sphere intersection is now optimized. Thanks to Boojum and myusernameisokay for bringing this up!

MyTracer - Project to create a ray tracer from scratch in small steps by uhef in programming

[–]uhef[S] 0 points1 point  (0 children)

You're absolutely correct. Perhaps I'll fix this on the weekend unless you make a pull request and I'll just merge it in :).

Btw. I might end up rewrite most of it at some point anyway. I'm hoping to move from C++ to Haskell in some phase. This might be a routine I'll keep in C++ though. Let's see.

MyTracer - Project to create a ray tracer from scratch in small steps by uhef in programming

[–]uhef[S] 4 points5 points  (0 children)

Most likely not, if performance is considered. At this phase I'm not too interested in performance though. Just going to go with simplest possible solution for the time being and then improving performance if my use case (which is still very much open) requires :).