4 ms·
"Programming" is easy. You pick a language, learn a set of rules, and over time learn how to tell the machine what you want it to do in that language fairly we
by bbarn 9y ago
"Programming" is easy. You pick a language, learn a set of rules, and over time learn how to tell the machine what you want it to do in that language fairly well.
Software development is hard. Unlike many other building tasks that humans run into, software is rarely "done". Launch of software for most of us means the code we've written has just been promoted to a point where now it's important, and will likely be what we work on for the near term future.
So, what makes a good software developer? Generally, programming's the smallest part of that puzzle. Working effectively with others ranks up there. Business acumen. Communication skills, both written and verbally. Understanding release cycles, revision methods, standards, etc. All the things that developers don't want to care about because they aren't writing code, those are the things that make good software developers.
- kayoone 9y ago> "Programming" is easy That is a bold statement. All the things you list are true, but it also depends on what you are doing. For most Web/Mobile/Enterprise apps you are probably right. But then there are also some areas like graphics programming or AI were the algorithms can absolutely be the hard part. I consider myself fairly good in my domain (Fullstack but mostly backend) but when i see what some people in graphics programming (or Games in general) or AI are doing, i feel like a newbie. In my domain, i rarely have to deal with complex math, it's more about writing readable, clean and well tested code that is well designed in terms of architecture. But in some other areas you actually regularly have to face pretty complex problems where the stuff i just listed kind of becomes the easy part.
- gonzo41 9y agoEven with the algorithmic challenges, games and graphics, and most AI at the moment is short lived and in my opinion easier, because you can deprecate things quicker. A lot of the foundations of what your building on in those fields is rapidly changing and many of the products are built for a single purpose. That makes things easier because you can escape bad choices quickly. On the other hand if you're building a service for a business, like an auth layer or a payment system, the mistakes you make will live on and on and on. And usually you only get one shot at creation before it's in support for a very long time. But to be a good at programming/developer. I would say know enough too know what questions to ask and make sure you talk with people on the client side often. Focus on whats important to them, and get change management and security onside before going near prod.
- codegladiator 9y ago> "Programming" is easy. You pick a language, learn a set of rules, and over time learn how to tell the machine what you want it to do in that language fairly well. Chess is easy. You get the chess board, learn a set of rules, and over time learn how to pick the right piece to play the game fairly well. Being good at chess/programming would be totally different from knowing "whats happening programming/chess".
- bbarn 9y agoIf you want to use analogies, then winning at chess would be akin to developing software, which is the same distinction I made. Learning the rules of 6 pieces vs strategically using those rules to win are different things all together.
- platz 9y agoDo we need to remember the distinction between type I and type II programmers? it sounds like we do. what you described are the type II variant. (and there are a lot more of them). type I = kernels, database query engine/optimizers, compiler internals. type II = glue libraries together with a high level language to solve business goals. type II often rely on type I's work.
- mumphster 9y agoIs that like diabetes?
- bbarn 9y agoI don't agree with that distinction. The programming part of it is still easy - even easier, I should imagine, for what you're calling the type I programmers. The only difference is, the type I's "business" is algorithms and optimizations instead of yet another CRM or crunching some sales data. The underlying science behind what they are doing with it is difficult - just like dealing with business problems are, and most of them will succeed or fail in their efforts for the same reasons - ability to communicate and work with others.