Organization is the hardest part for me personally in getting better as a developer. How to build a structure that is easy to change and extend. Any tips where to find good books or online sources?
Structure and Interpretation of Computer Programs. This famous book emphasized controlling complexity and how to build a structure that is easy to extend.
Organizing complexity is the most important skill in software development
151–160 of 286 posts
Re: Organizing complexity is the most important skill in software development
#152Earlier quoted context omitted.
It would be actually interesting to look at the commits of a candidate's any online project repository from the very start and observe how the candidate made the progress with respect to the structure of code and improvement in coding practice. To check whether the candidate optimizes and refactors the code during the development of the project leading to a stable release.
that assumes the candidate has an online repo somewhere. I think this is quite a discriminating practice - what if i don't do public projects?
Re: Organizing complexity is the most important skill in software development
#153Earlier quoted context omitted.
How'd you do it if the keyboard wasn't working?
Our main product was developed on a keyboard that was missing a "w". It's not a big deal, though - you can use a for(;;) loop instead of a while loop without hurting performance. And it's easy to just avoid "w" words in the view templates by being clever with word choice. Of course, that's not true at all. But giving someone a defective-but-not-entirely-broken tool can be a clever way of seeing how they work around p…
Unless you're from a very poor country there is no excuse for not having a working keyboard.
I don't know if that was part of the test, but if it was, it's worse than the big blue chip corps asking about the number of piano tuners. Which actually can be valuable at understanding how one reasons about unknown problems/areas.
About the server being slow, well I don't know the magnitude of the slowness or the anger, but unless you're a ramen fueled startup there is no excuse for having slow machines. It's management failure. It's a waste of developer time. Instead of coding the dev is having to deal with stress inducing constant 5 second hiccups or similar things.
Put yourself in the interviewee's shoes. Do you really want to work in a company that can't conduct a proper interview and has broken/slow hardware?
And yes, I do use vim and I do like w very much.
Re: Organizing complexity is the most important skill in software development
#154Earlier quoted context omitted.
Compilers aren't real-time, distributed, multi-user, ... basically anything that is hard from a software engineering perspective which includes deployment and testing. Compilers have reproducible test cases (if they don't, that is a bug in itself). You can catch regressions in a compiler with an automated test suite, and bisect their version history to see where it was introduced. Bug reports from the field tend to b…
If the point is looking for organizational skills, i think compilers are legitimate. They're big complicated beasts. Sure, some people in isolation can make amazing things with a few thousand lines of code - I think most people would be happy employing Fabrice Bellard. Writing a C compiler seems like one of those standard undergrad activities. If a programmer can make that work, they probably have sufficient organiza…
Re: Organizing complexity is the most important skill in software development
#155Earlier quoted context omitted.
Why's that? I've been thinking about starting my own side company. It is a lot of work!
In my case, it's the "lot of work" issue that is the problem. It's really easy for me to ignore the work I don't understand very well (marketing) or don't enjoy very much (which is largely a function of not understanding very well) for raw programming. I have a couple of friends doing a startup in the same space in which I'm writing some software, and their software is nowhere near as far along as mine, yet I don't h…
Re: Organizing complexity is the most important skill in software development
#156I agree that most complexity in software systems comes from managing state. So here is a simple solution - stop doing it. Stop managing state. Use the right tools for the job. Most mainstream programming languages are ridiculously inadequate for building any production software of any significant complexity without introducing more problems than you are trying to solve. Use a mature functional programming language th…
There's gotta be performance drawbacks to immutable state.
Re: Organizing complexity is the most important skill in software development
#157Earlier quoted context omitted.
How'd you do it if the keyboard wasn't working?
Our main product was developed on a keyboard that was missing a "w". It's not a big deal, though - you can use a for(;;) loop instead of a while loop without hurting performance. And it's easy to just avoid "w" words in the view templates by being clever with word choice. Of course, that's not true at all. But giving someone a defective-but-not-entirely-broken tool can be a clever way of seeing how they work around p…
If the "w" key weren't working I'd copy-paste "w" characters from elsewhere in the document, or bring up the on-screen keyboard. Writing bastardized code -- for (;;), really?! -- would be a huge negative against a candidate. And, of course, if a company really didn't have a working keyboard to provide me with, I'd never work there in the first place, because if they can't even provide working peripherals there's no limit to what else they might skimp on.
I actually have three keyboards at my desk right now -- one with Cherry MX blues, one with Cherry MX browns, and a Model M. No way in hell would I ever write code without "w"s.
Re: Organizing complexity is the most important skill in software development
#158There is a term for it. It's called managing scope. I'm surprised the article didn't mention this.
No, that's a totally different thing. The scope (requirements) of the software might be huge but the software could be designed and implemented cleanly and with maintainability in mind. Yet the scope might be tiny and the implementation a mess. This article discusses the skill of taking a mess and turning it into something clean.
Re: Organizing complexity is the most important skill in software development
#159Mirror since the site is currently down: The most important skill in software development Posted on 18 June 2015 by John Here’s an insightful paragraph from James Hague’s blog post Organization skills beat algorithmic wizardry: When it comes to writing code, the number one most important skill is how to keep a tangle of features from collapsing under the weight of its own complexity. I’ve worked on large telecommunic…
Re: Organizing complexity is the most important skill in software development
#160Earlier quoted context omitted.
It would be actually interesting to look at the commits of a candidate's any online project repository from the very start and observe how the candidate made the progress with respect to the structure of code and improvement in coding practice. To check whether the candidate optimizes and refactors the code during the development of the project leading to a stable release.
that assumes the candidate has an online repo somewhere. I think this is quite a discriminating practice - what if i don't do public projects?
If you don't do public projects, then you start a few steps behind the other candidates. This isn't insurmountable, but the error bars are wider, making you a somewhat greater risk.